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 } diff --git a/assets/layers/diets/diets.json b/assets/layers/diets/diets.json index 7b82778bf..e5acaef47 100644 --- a/assets/layers/diets/diets.json +++ b/assets/layers/diets/diets.json @@ -692,4 +692,4 @@ } } ] -} +} \ No newline at end of file diff --git a/assets/layers/filters/filters.json b/assets/layers/filters/filters.json index 591e40305..67556c5e1 100644 --- a/assets/layers/filters/filters.json +++ b/assets/layers/filters/filters.json @@ -554,7 +554,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 fb3d90a5a..6b56671d2 100644 --- a/assets/layers/questions/questions.json +++ b/assets/layers/questions/questions.json @@ -3562,6 +3562,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 8023ad251..17f1ed37f 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -1665,6 +1665,28 @@ } } }, + { + "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" ], @@ -1738,4 +1760,4 @@ ] }, "allowMove": true -} +} \ No newline at end of file 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 } 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" diff --git a/langs/layers/en.json b/langs/layers/en.json index 6365bf5d6..ee422ee16 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -5841,6 +5841,13 @@ } } }, + "22": { + "options": { + "0": { + "question": "Has self-checkout" + } + } + }, "3": { "options": { "0": { @@ -9978,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": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 6e47acc32..bac059917 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -5519,6 +5519,13 @@ } } }, + "22": { + "options": { + "0": { + "question": "Heeft zelfscan" + } + } + }, "5": { "options": { "0": { @@ -8655,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/src/UI/Popup/AllTagsPanel/TagLink.svelte b/src/UI/Popup/AllTagsPanel/TagLink.svelte index a90c8b174..bc41ddb1b 100644 --- a/src/UI/Popup/AllTagsPanel/TagLink.svelte +++ b/src/UI/Popup/AllTagsPanel/TagLink.svelte @@ -30,17 +30,20 @@ } const url = tag2linkData.find((item) => item.key === `Key:${key}`)?.url + + const values: string[] = + typeof $tags[key] === "string" ? $tags[key].split(";").map((v: string) => v.trim()) : [] -{#if url} - - {$tags[key]} - +{#if url && values.length > 0} + {#each values as value, index} + + {#if index > 0}; {/if} + + {value} + + + {/each} {:else} {$tags[key]} {/if}