From 90869a1c985d992063656d89fe0d95b73184304a Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Tue, 18 Jul 2023 01:26:31 +0200 Subject: [PATCH] Fix: etymology theme now supports multi-apply again, uses lower zoom level for multiselect --- assets/layers/etymology/etymology.json | 2 +- assets/themes/etymology/etymology.json | 5 +- .../mapcomplete-changes.json | 97 +++++-------------- src/Logic/MetaTagging.ts | 29 ++++-- src/UI/Popup/MinimapViz.ts | 8 +- src/UI/Popup/MultiApplyViz.ts | 5 +- src/UI/SpecialVisualization.ts | 1 + 7 files changed, 65 insertions(+), 82 deletions(-) diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json index 08118e1e14..1fcceab33a 100644 --- a/assets/layers/etymology/etymology.json +++ b/assets/layers/etymology/etymology.json @@ -33,7 +33,7 @@ "fr": "Tous les objets dont l’étymologie est connue" }, "calculatedTags": [ - "_same_name_ids=closestn(feat)('*', 250, undefined, 2500)?.filter(f => f.feat.properties.name === feat.properties.name)?.map(f => f.feat.properties.id)??[]" + "_same_name_ids=closestn(feat)('*', 250, undefined, 5000)?.filter(f => f.feat.properties.name === feat.properties.name)?.map(f => f.feat.properties.id)??[]" ], "tagRenderings": [ { diff --git a/assets/themes/etymology/etymology.json b/assets/themes/etymology/etymology.json index ad9f470308..c6e7a55779 100644 --- a/assets/themes/etymology/etymology.json +++ b/assets/themes/etymology/etymology.json @@ -46,6 +46,7 @@ "startLon": 0, "startZoom": 1, "widenFactor": 2, + "clustering": { "maxZoom": 14, "minNeededElements": 250 @@ -70,7 +71,7 @@ "nb_NO": "Gater uten etymologi-info", "cs": "Ulice bez etymologických informací" }, - "minzoom": 18, + "minzoom": 15, "source": { "=osmTags": { "and": [ @@ -283,4 +284,4 @@ } ], "hideFromOverview": false -} \ No newline at end of file +} diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index dc837ebc1b..56555e8719 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,19 +1,13 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete", - "de": "Mit MapComplete erstellte Änderungen", - "nl": "Wijzigingen gemaakt met MapComplete" + "en": "Changes made with MapComplete" }, "shortDescription": { - "en": "Show changes made with MapComplete", - "de": "Mit MapComplete erstellte Änderungen anzeigen", - "nl": "Toon wijzigingen gemaakt met MapComplete" + "en": "Shows changes made by MapComplete" }, "description": { - "en": "This maps shows all the changes made with MapComplete", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", - "nl": "Deze kaart toont alle wijzigingen die met MapComplete gemaakt werden" + "en": "This maps shows all the changes made with MapComplete" }, "icon": "./assets/svg/logo.svg", "hideFromOverview": true, @@ -26,9 +20,7 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers", - "de": "Zentrum der Änderungssätze", - "nl": "Centerpunt van changeset" + "en": "Changeset centers" }, "minzoom": 0, "source": { @@ -39,51 +31,41 @@ }, "title": { "render": { - "en": "Changeset for {theme}", - "de": "Änderungssatz für {theme}" + "en": "Changeset for {theme}" } }, "description": { - "en": "Show all MapComplete changes", - "de": "Alle MapComplete-Änderungen anzeigen", - "nl": "Toon alle MapComplete wijzigingen" + "en": "Shows all MapComplete changes" }, "tagRenderings": [ { "id": "show_changeset_id", "render": { - "en": "Changeset {id}", - "de": "Änderungssatz {id}" + "en": "Changeset {id}" } }, { "id": "contributor", "question": { - "en": "Which contributor made this change?", - "de": "Welcher Mitwirkende hat diese Änderung vorgenommen?", - "nl": "Welke bijdrager maakte deze wijziging?" + "en": "What contributor did make this change?" }, "freeform": { "key": "user" }, "render": { - "en": "Change made by {user}", - "de": "Änderung gemacht von {user}", - "nl": "Wijziging gemaakt door {user}" + "en": "Change made by {user}" } }, { "id": "theme-id", "question": { - "en": "What theme was used to make this change?", - "de": "Welches Thema wurde für diese Änderung verwendet?\"" + "en": "What theme was used to make this change?" }, "freeform": { "key": "theme" }, "render": { - "en": "Change with theme {theme}", - "de": "Geändert mit Thema {theme}" + "en": "Change with theme {theme}" } }, { @@ -92,27 +74,19 @@ "key": "locale" }, "question": { - "en": "What locale (language) was this change made in?", - "de": "In welcher Sprache wurde diese Änderung vorgenommen?", - "nl": "In welke locale (taal) werd deze wijziging gemaakt?" + "en": "What locale (language) was this change made in?" }, "render": { - "en": "User locale is {locale}", - "de": "Usersprache ist {locale}", - "nl": "De gebruikerstaal is {locale}" + "en": "User locale is {locale}" } }, { "id": "host", "render": { - "en": "Change made with {host}", - "de": "Änderung vorgenommen mit {host}", - "nl": "Wijziging gemaakt met {host}" + "en": "Change with with {host}" }, "question": { - "en": "What host (website) was this change made with?", - "de": "Mit welchem Host / welcher Website wurde diese Änderung gemacht?", - "nl": "Met welke host (website) werd deze wijziging gemaakt?" + "en": "What host (website) was this change made with?" }, "freeform": { "key": "host" @@ -133,12 +107,10 @@ { "id": "version", "question": { - "en": "What version of MapComplete was used to make this change?", - "de": "Mit welcher Version von MapComplete wurde diese Änderung gemacht?" + "en": "What version of MapComplete was used to make this change?" }, "render": { - "en": "Made with {editor}", - "de": "Erstellt mit {editor}" + "en": "Made with {editor}" }, "freeform": { "key": "editor" @@ -480,9 +452,7 @@ } ], "question": { - "en": "Theme name contains {search}", - "de": "Themenname enthält {search}", - "nl": "Themenaam bevat {search}" + "en": "Themename contains {search}" } } ] @@ -498,9 +468,7 @@ } ], "question": { - "en": "Made by contributor {search}", - "de": "Erstellt von {search}", - "nl": "Gemaakt door bijdrager {search}" + "en": "Made by contributor {search}" } } ] @@ -516,9 +484,7 @@ } ], "question": { - "en": "Not made by contributor {search}", - "de": "Nicht erstellt von {search}", - "nl": "Niet gemaakt door bijdrager {search}" + "en": "Not made by contributor {search}" } } ] @@ -535,9 +501,7 @@ } ], "question": { - "en": "Made before {search}", - "de": "Erstellt vor {search}", - "nl": "Gemaakt voor {search}" + "en": "Made before {search}" } } ] @@ -554,9 +518,7 @@ } ], "question": { - "en": "Made after {search}", - "de": "Erstellt nach {search}", - "nl": "Gemaakt na {search}" + "en": "Made after {search}" } } ] @@ -572,9 +534,7 @@ } ], "question": { - "en": "User language (iso-code) {search}", - "de": "Benutzersprache (ISO-Code) {search}", - "nl": "De taal van de bijdrager is {search}" + "en": "User language (iso-code) {search}" } } ] @@ -590,9 +550,7 @@ } ], "question": { - "en": "Made with host {search}", - "de": "Erstellt mit Host {search}", - "nl": "Gemaakt met host {search}" + "en": "Made with host {search}" } } ] @@ -603,9 +561,7 @@ { "osmTags": "add-image>0", "question": { - "en": "Changeset added at least one image", - "de": "Changeset fügte mindestens ein Bild hinzu", - "nl": "Changeset bevat minstens één afbeelding" + "en": "Changeset added at least one image" } } ] @@ -620,8 +576,7 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here", - "de": "Mehr Statistiken gibt es hier" + "en": "More statistics can be found here" } }, { diff --git a/src/Logic/MetaTagging.ts b/src/Logic/MetaTagging.ts index 68ec0022fa..b9524b9675 100644 --- a/src/Logic/MetaTagging.ts +++ b/src/Logic/MetaTagging.ts @@ -8,7 +8,8 @@ import { GeoIndexedStoreForLayer } from "./FeatureSource/Actors/GeoIndexedStore" import { IndexedFeatureSource } from "./FeatureSource/FeatureSource" import OsmObjectDownloader from "./Osm/OsmObjectDownloader" import { Utils } from "../Utils" -import { UIEventSource } from "./UIEventSource" +import { Store, UIEventSource } from "./UIEventSource" +import { SpecialVisualizationState } from "../UI/SpecialVisualization" /** * Metatagging adds various tags to the elements, e.g. lat, lon, surface area, ... @@ -24,11 +25,12 @@ export default class MetaTagging { >() constructor(state: { - layout: LayoutConfig - osmObjectDownloader: OsmObjectDownloader - perLayer: ReadonlyMap - indexedFeatures: IndexedFeatureSource - featureProperties: FeaturePropertiesStore + readonly selectedElementAndLayer: Store<{ feature: Feature; layer: LayerConfig }> + readonly layout: LayoutConfig + readonly osmObjectDownloader: OsmObjectDownloader + readonly perLayer: ReadonlyMap + readonly indexedFeatures: IndexedFeatureSource + readonly featureProperties: FeaturePropertiesStore }) { const params = MetaTagging.createExtraFuncParams(state) for (const layer of state.layout.layers) { @@ -58,6 +60,21 @@ export default class MetaTagging { ) }) } + + state.selectedElementAndLayer.addCallbackAndRunD(({ feature, layer }) => { + // Force update the tags of the currently selected element + MetaTagging.addMetatags( + [feature], + params, + layer, + state.layout, + state.osmObjectDownloader, + state.featureProperties, + { + evaluateStrict: true, + } + ) + }) } /** diff --git a/src/UI/Popup/MinimapViz.ts b/src/UI/Popup/MinimapViz.ts index 4fd344c67d..556157537c 100644 --- a/src/UI/Popup/MinimapViz.ts +++ b/src/UI/Popup/MinimapViz.ts @@ -53,7 +53,13 @@ export class MinimapViz implements SpecialVisualization { } let idList = [value] - if (key !== "id" && value.startsWith("[")) { + if (Array.isArray(value)) { + idList = value + } else if ( + key !== "id" && + typeof value === "string" && + value?.startsWith("[") + ) { // This is a list of values idList = JSON.parse(value) } diff --git a/src/UI/Popup/MultiApplyViz.ts b/src/UI/Popup/MultiApplyViz.ts index ad9357f22d..876678cb81 100644 --- a/src/UI/Popup/MultiApplyViz.ts +++ b/src/UI/Popup/MultiApplyViz.ts @@ -47,7 +47,10 @@ export class MultiApplyViz implements SpecialVisualization { if (ids === undefined) { return [] } - return JSON.parse(ids) + if (typeof ids === "string" && ids.startsWith("[")) { + return JSON.parse(ids) + } + return ids } catch (e) { console.warn( "Could not parse ", diff --git a/src/UI/SpecialVisualization.ts b/src/UI/SpecialVisualization.ts index e996d683bb..4cb3aeb02b 100644 --- a/src/UI/SpecialVisualization.ts +++ b/src/UI/SpecialVisualization.ts @@ -52,6 +52,7 @@ export interface SpecialVisualizationState { * Works together with 'selectedElement' to indicate what properties should be displayed */ readonly selectedLayer: UIEventSource + readonly selectedElementAndLayer: Store<{ feature: Feature; layer: LayerConfig }> /** * If data is currently being fetched from external sources