From 36b3faf2d14bf174545d437705a17d3c2917c643 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 31 Jul 2025 00:21:35 +0200 Subject: [PATCH 1/9] Fix: split values for tag2link --- src/UI/Popup/AllTagsPanel/TagLink.svelte | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/UI/Popup/AllTagsPanel/TagLink.svelte b/src/UI/Popup/AllTagsPanel/TagLink.svelte index a90c8b174..453a4f6a3 100644 --- a/src/UI/Popup/AllTagsPanel/TagLink.svelte +++ b/src/UI/Popup/AllTagsPanel/TagLink.svelte @@ -5,6 +5,8 @@ export let tags: UIEventSource> export let key: string + const values = $tags[key].split(";").map((v) => v.trim()) + const tag2linkData = tag2link as Tag2LinkElement[] interface Tag2LinkElement { @@ -33,14 +35,14 @@ {#if url} - - {$tags[key]} - + {#each values as value, index} + + {#if index > 0}; {/if} + + {value} + + + {/each} {:else} {$tags[key]} {/if} From 40bd564f864a73e4b9f476e3347c22134cf3f79b Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 30 Jul 2025 23:53:18 +0200 Subject: [PATCH 2/9] Themes(zhv): fix broken import --- assets/themes/zhv/zhv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/themes/zhv/zhv.json b/assets/themes/zhv/zhv.json index e6807a037..2629288f4 100644 --- a/assets/themes/zhv/zhv.json +++ b/assets/themes/zhv/zhv.json @@ -49,7 +49,7 @@ "render": { "special": { "type": "import_button", - "targetLayer": "transit_stops", + "targetLayer": "all_transit_stops", "tags": "_tags", "text": { "en": "Add this stop" From ccab070938066e763ba71fec6868989576939868 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 29 Jul 2025 10:18:52 +0200 Subject: [PATCH 3/9] Chore: Enable file nesting --- .vscode/settings.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b607ae0fc..a0e2c3e54 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,5 +60,10 @@ "type": "Gitea", "name": "MapComplete Forgejo" } - ] + ], + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "*": "${capture}.license" + }, + "explorer.fileNesting.expand": false } From c0ee578df1b0db3c9670b6c8f722787e6a9b72f3 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 12 Aug 2025 23:54:01 +0200 Subject: [PATCH 4/9] Themes(parkings): Add charge points --- assets/themes/parkings/parkings.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/assets/themes/parkings/parkings.json b/assets/themes/parkings/parkings.json index 0e3480033..bb1ec8692 100644 --- a/assets/themes/parkings/parkings.json +++ b/assets/themes/parkings/parkings.json @@ -65,7 +65,10 @@ "parking_spaces", "parking_ticket_machine", { - "builtin": "charging_station", + "builtin": [ + "charging_station", + "charge_point" + ], "override": { "minzoom": 18 } From 2cf0bc1866cd8df4bc7006b29a5f49210761ccb3 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 13 Aug 2025 01:32:34 +0200 Subject: [PATCH 5/9] Themes(shops): Add self_checkout question --- assets/layers/filters/filters.json | 19 ++++++- assets/layers/questions/questions.json | 75 ++++++++++++++++++++++++++ assets/layers/shops/shops.json | 5 +- 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/assets/layers/filters/filters.json b/assets/layers/filters/filters.json index 40270aea1..fa436162b 100644 --- a/assets/layers/filters/filters.json +++ b/assets/layers/filters/filters.json @@ -545,7 +545,24 @@ "osmTags": "kids_area!=no" } ] + }, + { + "id": "self_checkout", + "options": [ + { + "question": { + "en": "Has self-checkout", + "nl": "Heeft zelfscan" + }, + "osmTags": { + "or": [ + "self_checkout=yes", + "self_checkout=only" + ] + } + } + ] } ], "allowMove": false -} +} \ No newline at end of file diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json index a6ccc291a..a5c92897f 100644 --- a/assets/layers/questions/questions.json +++ b/assets/layers/questions/questions.json @@ -3543,6 +3543,81 @@ "filter": [ "filters.kids_area" ] + }, + { + "id": "self_checkout", + "labels": [ + "self_checkout_questions" + ], + "question": { + "en": "Does this place offer self-checkout?", + "nl": "Biedt deze plaats zelfscannen aan?" + }, + "questionHint": { + "en": "e.g. handheld scanners or a self-checkout kiosk", + "nl": "bijv. handscanners of een zelfscankassa" + }, + "mappings": [ + { + "if": "self_checkout=yes", + "then": { + "en": "This place offers self-checkout", + "nl": "Deze plaats biedt zelfscannen aan" + } + }, + { + "if": "self_checkout=no", + "then": { + "en": "This place does not offer self-checkout", + "nl": "Deze plaats biedt geen zelfscannen aan" + } + }, + { + "if": "self_checkout=only", + "then": { + "en": "This place only offers self-checkout", + "nl": "Deze plaats biedt enkel zelfscannen aan" + } + } + ], + "filter": [ + "filters.self_checkout" + ] + }, + { + "id": "self_checkout_type", + "labels": [ + "self_checkout_questions" + ], + "question": { + "en": "What kind of self-checkout does this place offer?", + "nl": "Wat voor soort zelfscannen biedt deze plaats aan?" + }, + "mappings": [ + { + "if": "self_checkout:handheld=yes", + "ifnot": "self_checkout:handheld=no", + "then": { + "en": "This place offers self-checkout using a handheld scanner", + "nl": "Deze plaats biedt zelfscannen met een handscanner aan" + } + }, + { + "if": "self_checkout:self_scan=yes", + "ifnot": "self_checkout:self_scan=no", + "then": { + "en": "This place offers self-checkout using a self-checkout kiosk", + "nl": "Deze plaats biedt zelfscannen met een zelfscankassa aan" + } + } + ], + "condition": { + "or": [ + "self_checkout=yes", + "self_checkout=only" + ] + }, + "multiAnswer": true } ], "allowMove": false, diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index a17a015ed..cb835446e 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -1644,7 +1644,8 @@ } }, "description", - "toilet_at_amenity_lib.all" + "toilet_at_amenity_lib.all", + "self_checkout_questions" ], "filter": [ { @@ -1715,4 +1716,4 @@ ] }, "allowMove": true -} +} \ No newline at end of file From bd3c266a4d1ce344b613431e5704a91207347b8c Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 13 Aug 2025 01:54:38 +0200 Subject: [PATCH 6/9] Fix: check for type in TagLink --- src/UI/Popup/AllTagsPanel/TagLink.svelte | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/UI/Popup/AllTagsPanel/TagLink.svelte b/src/UI/Popup/AllTagsPanel/TagLink.svelte index 453a4f6a3..1af12f757 100644 --- a/src/UI/Popup/AllTagsPanel/TagLink.svelte +++ b/src/UI/Popup/AllTagsPanel/TagLink.svelte @@ -1,12 +1,11 @@ -{#if url} +{#if url && values.length > 0} {#each values as value, index} {#if index > 0}; {/if} From 427cbb30063e1791ce0940681b9ee7315c117edb Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 17 Aug 2025 13:29:12 +0200 Subject: [PATCH 7/9] Chore: reset translations --- assets/layers/diets/diets.json | 6 +- .../historic_rolling_stock.json | 14 ++- assets/layers/railway/railway.json | 3 - assets/themes/grb/grb.json | 92 ++++++++++--------- langs/layers/cs.json | 4 +- langs/layers/en.json | 45 ++++++++- langs/layers/nl.json | 37 +++++++- langs/themes/en.json | 7 ++ 8 files changed, 151 insertions(+), 57 deletions(-) diff --git a/assets/layers/diets/diets.json b/assets/layers/diets/diets.json index cac1388a3..e5acaef47 100644 --- a/assets/layers/diets/diets.json +++ b/assets/layers/diets/diets.json @@ -13,9 +13,9 @@ ], "render": { "special": { - "type": "show_icons", + "class": "inline-flex float-right", "labels": "diets_content", - "class": "inline-flex float-right" + "type": "show_icons" }, "before": { "en": "Dietary options", @@ -692,4 +692,4 @@ } } ] -} +} \ No newline at end of file diff --git a/assets/layers/historic_rolling_stock/historic_rolling_stock.json b/assets/layers/historic_rolling_stock/historic_rolling_stock.json index 21eb1633f..4d453c6fc 100644 --- a/assets/layers/historic_rolling_stock/historic_rolling_stock.json +++ b/assets/layers/historic_rolling_stock/historic_rolling_stock.json @@ -132,7 +132,9 @@ "tags": [ "historic=locomotive" ], - "snapToLayer": ["railway"] + "snapToLayer": [ + "railway" + ] }, { "title": { @@ -146,8 +148,9 @@ "tags": [ "historic=railway_car" ], - "snapToLayer": ["railway"] - + "snapToLayer": [ + "railway" + ] }, { "title": { @@ -161,8 +164,9 @@ "tags": [ "historic=minecart" ], - "snapToLayer": ["railway"] - + "snapToLayer": [ + "railway" + ] } ], "tagRenderings": [ diff --git a/assets/layers/railway/railway.json b/assets/layers/railway/railway.json index 50ddecf0b..fce3773bf 100644 --- a/assets/layers/railway/railway.json +++ b/assets/layers/railway/railway.json @@ -13,14 +13,11 @@ "railway=tram", "railway=subway", "railway=light_rail", - "railway=disused", - "disused:railway=rail", "disused:railway=tram", "disused:railway=subway", "disused:railway=light_rail", - "abandoned:railway=rail", "abandoned:railway=tram", "abandoned:railway=subway", diff --git a/assets/themes/grb/grb.json b/assets/themes/grb/grb.json index 256070bca..14f70e18e 100644 --- a/assets/themes/grb/grb.json +++ b/assets/themes/grb/grb.json @@ -45,7 +45,7 @@ }, { "or": [ - "building~*", + "building~*", "building:part~*" ] } @@ -54,12 +54,14 @@ }, "title": { "render": "OSM-building", - "mappings": [{ - "if": "building:part~*", - "then": { - "en": "Building part" + "mappings": [ + { + "if": "building:part~*", + "then": { + "en": "Building part" + } } - }] + ] }, "tagRenderings": [ { @@ -166,7 +168,7 @@ ] }, { - "condition": "building:part=", + "condition": "building:part=", "id": "grb-street", "render": { "nl": "De straat is {addr:street}" @@ -261,44 +263,48 @@ ], "pointRendering": [ { - "marker": [{ - "icon": "circle", - "color": { - "render": "#00c", - "mappings": [ - { - "if": "fixme~*", - "then": "#ff00ff" - }, - { - "if": "building=house", - "then": "#a00" - }, - { - "if": "building=shed", - "then": "#563e02" - }, - { - "if": { - "or": [ - "building=garage", - "building=garages" - ] + "marker": [ + { + "icon": "circle", + "color": { + "render": "#00c", + "mappings": [ + { + "if": "fixme~*", + "then": "#ff00ff" }, - "then": "#f9bfbb" - }, - { - "if": "building=yes", - "then": "#0774f2" - }, - { - "if": "building:part~*", - "then": "#f8fc25" - } - ] + { + "if": "building=house", + "then": "#a00" + }, + { + "if": "building=shed", + "then": "#563e02" + }, + { + "if": { + "or": [ + "building=garage", + "building=garages" + ] + }, + "then": "#f9bfbb" + }, + { + "if": "building=yes", + "then": "#0774f2" + }, + { + "if": "building:part~*", + "then": "#f8fc25" + } + ] + } } - }], - "location": ["centroid"], + ], + "location": [ + "centroid" + ], "iconSize": "10,10" } ], diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 067e08c2a..2b661de30 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -4751,7 +4751,9 @@ "diets": { "tagRenderings": { "diets_title": { - "render": "Dietní možnosti" + "render": { + "before": "Dietní možnosti" + } }, "gluten_free": { "mappings": { diff --git a/langs/layers/en.json b/langs/layers/en.json index f6476e968..ee422ee16 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -4768,7 +4768,9 @@ "diets": { "tagRenderings": { "diets_title": { - "render": "Dietary options" + "render": { + "before": "Dietary options" + } }, "gluten_free": { "mappings": { @@ -5839,6 +5841,13 @@ } } }, + "22": { + "options": { + "0": { + "question": "Has self-checkout" + } + } + }, "3": { "options": { "0": { @@ -9976,6 +9985,32 @@ }, "question": "What kind of seating does {title()} have?" }, + "self_checkout": { + "mappings": { + "0": { + "then": "This place offers self-checkout" + }, + "1": { + "then": "This place does not offer self-checkout" + }, + "2": { + "then": "This place only offers self-checkout" + } + }, + "question": "Does this place offer self-checkout?", + "questionHint": "e.g. handheld scanners or a self-checkout kiosk" + }, + "self_checkout_type": { + "mappings": { + "0": { + "then": "This place offers self-checkout using a handheld scanner" + }, + "1": { + "then": "This place offers self-checkout using a self-checkout kiosk" + } + }, + "question": "What kind of self-checkout does this place offer?" + }, "service:electricity": { "mappings": { "0": { @@ -10092,6 +10127,14 @@ } } }, + "railway": { + "description": "Railways and disused railways", + "name": "Railway", + "snapName": "railway track", + "title": { + "render": "Railway" + } + }, "railway_platforms": { "description": "Find every platform in the station, and the train routes that use them.", "name": "Railway Platforms", diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 03ff99a8e..bac059917 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -4561,7 +4561,9 @@ "diets": { "tagRenderings": { "diets_title": { - "render": "Dieetopties" + "render": { + "before": "Dieetopties" + } }, "gluten_free": { "mappings": { @@ -5517,6 +5519,13 @@ } } }, + "22": { + "options": { + "0": { + "question": "Heeft zelfscan" + } + } + }, "5": { "options": { "0": { @@ -8653,6 +8662,32 @@ }, "question": "Wat voor zitplaatsen heeft {title()}?" }, + "self_checkout": { + "mappings": { + "0": { + "then": "Deze plaats biedt zelfscannen aan" + }, + "1": { + "then": "Deze plaats biedt geen zelfscannen aan" + }, + "2": { + "then": "Deze plaats biedt enkel zelfscannen aan" + } + }, + "question": "Biedt deze plaats zelfscannen aan?", + "questionHint": "bijv. handscanners of een zelfscankassa" + }, + "self_checkout_type": { + "mappings": { + "0": { + "then": "Deze plaats biedt zelfscannen met een handscanner aan" + }, + "1": { + "then": "Deze plaats biedt zelfscannen met een zelfscankassa aan" + } + }, + "question": "Wat voor soort zelfscannen biedt deze plaats aan?" + }, "service:electricity": { "mappings": { "0": { diff --git a/langs/themes/en.json b/langs/themes/en.json index a23dea472..c2dd87052 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -646,6 +646,13 @@ "grb-reference": { "render": "Has been imported from GRB, reference number is {source:geometry:ref}" } + }, + "title": { + "mappings": { + "0": { + "then": "Building part" + } + } } }, "1": { From aecc36dfbe0972eec5f76d11a5b526a1992ecb2c Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 17 Aug 2025 14:37:54 +0200 Subject: [PATCH 8/9] Themes(shops): change conditions for self_checkout question --- assets/layers/shops/shops.json | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 39523b933..17f1ed37f 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -1665,9 +1665,30 @@ } } }, + { + "builtin": "self_checkout", + "override": { + "+mappings": [ + { + "if": { + "and": [ + "self_checkout=", + "shop!=supermarket", + "shop!=convenience", + "shop!=chemist" + ] + }, + "then": { + "en": "This shop (probably) does not offer self-checkout" + }, + "hideInAnswer": true + } + ] + } + }, + "self_checkout_type", "description", - "toilet_at_amenity_lib.all", - "self_checkout_questions" + "toilet_at_amenity_lib.all" ], "filter": [ { From 6967196ade6467eff7b58fc462b5bed04031d427 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 17 Aug 2025 14:43:08 +0200 Subject: [PATCH 9/9] Chore: remove old import --- src/UI/Popup/AllTagsPanel/TagLink.svelte | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/UI/Popup/AllTagsPanel/TagLink.svelte b/src/UI/Popup/AllTagsPanel/TagLink.svelte index 1af12f757..bc41ddb1b 100644 --- a/src/UI/Popup/AllTagsPanel/TagLink.svelte +++ b/src/UI/Popup/AllTagsPanel/TagLink.svelte @@ -1,7 +1,6 @@ {#if url && values.length > 0}