From 748eccba5903c55c17e5995b747065a3d6835036 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 9 Mar 2025 23:51:56 +0100 Subject: [PATCH 1/8] Themes: winter_service theme, split off all_streets from street_lighting --- assets/layers/all_streets/all_streets.json | 86 ++++++ assets/svg/license_info.json | 17 +- assets/svg/snowflake.svg | 41 +++ assets/svg/snowflake.svg.license | 2 + .../mapcomplete-changes.json | 4 + .../street_lighting/street_lighting.json | 265 +++++++----------- .../themes/winter_service/winter_service.json | 112 ++++++++ langs/themes/ca.json | 38 ++- langs/themes/cs.json | 38 ++- langs/themes/da.json | 38 ++- langs/themes/de.json | 38 ++- langs/themes/en.json | 69 +++-- langs/themes/es.json | 38 ++- langs/themes/eu.json | 9 - langs/themes/fr.json | 38 ++- langs/themes/hu.json | 38 ++- langs/themes/it.json | 38 ++- langs/themes/ko.json | 38 ++- langs/themes/nb_NO.json | 38 ++- langs/themes/nl.json | 38 ++- langs/themes/pa_PK.json | 6 - langs/themes/pl.json | 38 ++- langs/themes/ru.json | 8 - langs/themes/zh_Hant.json | 38 ++- src/Models/Constants.ts | 1 + src/assets/svg/Snowflake.svelte | 4 + 26 files changed, 639 insertions(+), 479 deletions(-) create mode 100644 assets/layers/all_streets/all_streets.json create mode 100644 assets/svg/snowflake.svg create mode 100644 assets/svg/snowflake.svg.license create mode 100644 assets/themes/winter_service/winter_service.json create mode 100644 src/assets/svg/Snowflake.svelte diff --git a/assets/layers/all_streets/all_streets.json b/assets/layers/all_streets/all_streets.json new file mode 100644 index 000000000..9d1d18443 --- /dev/null +++ b/assets/layers/all_streets/all_streets.json @@ -0,0 +1,86 @@ +{ + "id": "all_streets", + "isCounted": false, + "name": { + "en": "All streets", + "nl": "Alle straten", + "ru": "Все улицы", + "zh_Hant": "所有道路", + "hu": "Minden utca", + "de": "Alle Straßen", + "ca": "Tots els carrers", + "es": "Todas las calles", + "fr": "Toutes les rues", + "nb_NO": "Alle gater", + "da": "Alle gader", + "pa_PK": "ساریاں سڑکاں", + "cs": "Všechny ulice", + "it": "Tutte le strade", + "pl": "Wszystkie ulice", + "ko": "모든 거리" + }, + "description": { + "en": "Layer with (almost) all streets", + "nl": "Laag met (bijna) alle straten" + }, + "source": { + "osmTags": { + "and": [ + "highway!=", + "service!=driveway", + "highway!=platform" + ] + } + }, + "minzoom": 18, + "title": { + "render": { + "en": "Street", + "nl": "Straat", + "ru": "Улица", + "zh_Hant": "照明", + "hu": "Utca", + "de": "Straße", + "ca": "Carrer", + "nb_NO": "Gate", + "fr": "Rue", + "da": "Gade", + "pa_PK": "سڑک", + "es": "Calle", + "cs": "Ulice", + "eu": "Kalea", + "it": "Strada", + "pl": "Ulica", + "ko": "거리" + }, + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } + ] + }, + "tagRenderings": [ + "images" + ], + "allowSplit": true, + "pointRendering": null, + "lineRendering": [ + { + "color": { + "render": "#a9a9a9", + "mappings": [ + { + "if": "lit=no", + "then": "#303030" + }, + { + "if": "lit=yes", + "then": "#ff0" + } + ] + } + } + ], + "allowMove": false +} \ No newline at end of file diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index 06bc3869d..e94c29d51 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -451,12 +451,6 @@ "authors": [], "sources": [] }, - { - "path": "gear.svg", - "license": "TRIVIAL", - "authors": [], - "sources": [] - }, { "path": "gender_bi.svg", "license": "CC0-1.0", @@ -1103,6 +1097,17 @@ ], "sources": [] }, + { + "path": "snowflake.svg", + "license": "CC0-1.0", + "authors": [ + "Schnouf25", + "Razorbliss" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Snow_flake.svg" + ] + }, { "path": "speech_bubble.svg", "license": "CC-BY-4.0", diff --git a/assets/svg/snowflake.svg b/assets/svg/snowflake.svg new file mode 100644 index 000000000..f90eb6ca1 --- /dev/null +++ b/assets/svg/snowflake.svg @@ -0,0 +1,41 @@ + + + + + + diff --git a/assets/svg/snowflake.svg.license b/assets/svg/snowflake.svg.license new file mode 100644 index 000000000..9d7689318 --- /dev/null +++ b/assets/svg/snowflake.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Schnouf25; Razorbliss +SPDX-License-Identifier: CC0-1.0 \ 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 8bc4511d3..5090a5fc8 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -605,6 +605,10 @@ { "if": "theme=width", "then": "./assets/themes/width/icon.svg" + }, + { + "if": "theme=winter_service", + "then": "./assets/svg/snowflake.svg" } ] } diff --git a/assets/themes/street_lighting/street_lighting.json b/assets/themes/street_lighting/street_lighting.json index a181a6e1c..133d3536f 100644 --- a/assets/themes/street_lighting/street_lighting.json +++ b/assets/themes/street_lighting/street_lighting.json @@ -211,184 +211,109 @@ "allowMove": false }, { - "id": "all_streets", - "isCounted": false, - "name": { - "en": "All streets", - "nl": "Alle straten", - "ru": "Все улицы", - "zh_Hant": "所有道路", - "hu": "Minden utca", - "de": "Alle Straßen", - "ca": "Tots els carrers", - "es": "Todas las calles", - "fr": "Toutes les rues", - "nb_NO": "Alle gater", - "da": "Alle gader", - "pa_PK": "ساریاں سڑکاں", - "cs": "Všechny ulice", - "it": "Tutte le strade", - "pl": "Wszystkie ulice", - "ko": "모든 거리" - }, - "source": { - "osmTags": { - "and": [ - "highway!=", - "service!=driveway", - "highway!=platform" - ] - } - }, - "minzoom": 18, - "title": { - "render": { - "en": "Street", - "nl": "Straat", - "ru": "Улица", - "zh_Hant": "照明", - "hu": "Utca", - "de": "Straße", - "ca": "Carrer", - "nb_NO": "Gate", - "fr": "Rue", - "da": "Gade", - "pa_PK": "سڑک", - "es": "Calle", - "cs": "Ulice", - "eu": "Kalea", - "it": "Strada", - "pl": "Ulica", - "ko": "거리" - }, - "mappings": [ + "builtin": "all_streets", + "override": { + "tagRenderings+": [ { - "if": "name~*", - "then": "{name}" - } - ] - }, - "tagRenderings": [ - "images", - { - "id": "lit", - "question": { - "en": "Is this street lit?", - "nl": "Is deze straat verlicht?", - "zh_Hant": "這道路有照明嗎?", - "hu": "Ki van-e világítva ez az utca?", - "de": "Ist diese Straße beleuchtet?", - "nb_NO": "Er denne gaten belyst?", - "fr": "Cette rue est-elle éclairée ?", - "da": "Er denne gade oplyst?", - "ca": "Aquest carrer està il·luminat?", - "es": "¿Está iluminada esta calle?", - "cs": "Je tato ulice osvětlená?", - "it": "Questa strada è illuminata?", - "pl": "Czy ta ulica jest oświetlona?", - "ko": "이 거리는 밝나요?" - }, - "mappings": [ - { - "if": "lit=yes", - "then": { - "en": "This street is lit", - "nl": "Deze straat is verlicht", - "zh_Hant": "這道路有照明", - "hu": "Ez az utca ki van világítva", - "de": "Diese Straße ist beleuchtet", - "es": "Esta calle está iluminada", - "nb_NO": "Denne gaten er belyst", - "fr": "Cette rue est éclairée", - "da": "Denne gade er oplyst", - "ca": "Aquest carrer està il·luminat", - "cs": "Tato ulice je osvětlená", - "it": "Questa strada è illuminata", - "pl": "Ta ulica jest oświetlona", - "ko": "이 거리는 밝습니다" - } + "id": "lit", + "question": { + "en": "Is this street lit?", + "nl": "Is deze straat verlicht?", + "zh_Hant": "這道路有照明嗎?", + "hu": "Ki van-e világítva ez az utca?", + "de": "Ist diese Straße beleuchtet?", + "nb_NO": "Er denne gaten belyst?", + "fr": "Cette rue est-elle éclairée ?", + "da": "Er denne gade oplyst?", + "ca": "Aquest carrer està il·luminat?", + "es": "¿Está iluminada esta calle?", + "cs": "Je tato ulice osvětlená?", + "it": "Questa strada è illuminata?", + "pl": "Czy ta ulica jest oświetlona?", + "ko": "이 거리는 밝나요?" }, - { - "if": "lit=no", - "then": { - "en": "This street is not lit", - "nl": "Deze straat is niet verlicht", - "zh_Hant": "這道路沒有照明", - "hu": "Ez az utca nincs kivilágítva", - "de": "Diese Straße ist nicht beleuchtet", - "es": "Esta calle no está iluminada", - "nb_NO": "Denne gaten er ikke belyst", - "fr": "Cette rue n’est pas éclairée", - "da": "Denne gade er ikke oplyst", - "ca": "Aquest carrer no està il·luminat", - "cs": "Tato ulice není osvětlená", - "it": "Questa strada non è illuminata", - "pl": "Ta ulica nie jest oświetlona", - "ko": "이 거리는 밝지 않습니다" - } - }, - { - "if": "lit=sunset-sunrise", - "then": { - "en": "This street is lit at night", - "nl": "Deze straat is 's nachts verlicht", - "zh_Hant": "這道路晚上有照明", - "hu": "Ez az utca éjjel ki van világítva", - "de": "Diese Straße ist nachts beleuchtet", - "nb_NO": "Denne gaten er belyst nattestid", - "fr": "Cette rue est éclairée la nuit", - "da": "Denne gade er oplyst om natten", - "ca": "Aquest carrer està il·luminat per la nit", - "es": "Esta calle está iluminada por la noche", - "cs": "Tato ulice je v noci osvětlená", - "it": "Questa strada è illuminata di sera", - "pl": "Ta ulica jest oświetlona w nocy", - "ko": "이 거리는 밤에 밝습니다" - }, - "hideInAnswer": true - }, - { - "if": "lit=24/7", - "then": { - "en": "This street is lit 24/7", - "nl": "Deze straat is 24/7 verlicht", - "zh_Hant": "這道路 24/7 有照明", - "hu": "Ez az utca éjjel-nappal ki van világítva", - "de": "Diese Straße ist durchgehend beleuchtet", - "nb_NO": "Denne gaten er belyst døgnet rundt", - "fr": "Cette rue est éclairée en permanence", - "da": "Denne gade er oplyst 24/7", - "ca": "Aquest carrer està il·luminat 24/7", - "es": "Esta calle está iluminada 24/7", - "cs": "Tato ulice je osvětlena 24/7", - "it": "Questa strada è illuminata 24 ore su 24", - "pl": "Ta ulica jest oświetlona 24/7", - "ko": "이 거리는 24시간 밝습니다" - } - } - ] - } - ], - "allowSplit": true, - "pointRendering": null, - "lineRendering": [ - { - "color": { - "render": "#a9a9a9", "mappings": [ { - "if": "lit=no", - "then": "#303030" + "if": "lit=yes", + "then": { + "en": "This street is lit", + "nl": "Deze straat is verlicht", + "zh_Hant": "這道路有照明", + "hu": "Ez az utca ki van világítva", + "de": "Diese Straße ist beleuchtet", + "es": "Esta calle está iluminada", + "nb_NO": "Denne gaten er belyst", + "fr": "Cette rue est éclairée", + "da": "Denne gade er oplyst", + "ca": "Aquest carrer està il·luminat", + "cs": "Tato ulice je osvětlená", + "it": "Questa strada è illuminata", + "pl": "Ta ulica jest oświetlona", + "ko": "이 거리는 밝습니다" + } }, { - "if": "lit=yes", - "then": "#ff0" + "if": "lit=no", + "then": { + "en": "This street is not lit", + "nl": "Deze straat is niet verlicht", + "zh_Hant": "這道路沒有照明", + "hu": "Ez az utca nincs kivilágítva", + "de": "Diese Straße ist nicht beleuchtet", + "es": "Esta calle no está iluminada", + "nb_NO": "Denne gaten er ikke belyst", + "fr": "Cette rue n’est pas éclairée", + "da": "Denne gade er ikke oplyst", + "ca": "Aquest carrer no està il·luminat", + "cs": "Tato ulice není osvětlená", + "it": "Questa strada non è illuminata", + "pl": "Ta ulica nie jest oświetlona", + "ko": "이 거리는 밝지 않습니다" + } + }, + { + "if": "lit=sunset-sunrise", + "then": { + "en": "This street is lit at night", + "nl": "Deze straat is 's nachts verlicht", + "zh_Hant": "這道路晚上有照明", + "hu": "Ez az utca éjjel ki van világítva", + "de": "Diese Straße ist nachts beleuchtet", + "nb_NO": "Denne gaten er belyst nattestid", + "fr": "Cette rue est éclairée la nuit", + "da": "Denne gade er oplyst om natten", + "ca": "Aquest carrer està il·luminat per la nit", + "es": "Esta calle está iluminada por la noche", + "cs": "Tato ulice je v noci osvětlená", + "it": "Questa strada è illuminata di sera", + "pl": "Ta ulica jest oświetlona w nocy", + "ko": "이 거리는 밤에 밝습니다" + }, + "hideInAnswer": true + }, + { + "if": "lit=24/7", + "then": { + "en": "This street is lit 24/7", + "nl": "Deze straat is 24/7 verlicht", + "zh_Hant": "這道路 24/7 有照明", + "hu": "Ez az utca éjjel-nappal ki van világítva", + "de": "Diese Straße ist durchgehend beleuchtet", + "nb_NO": "Denne gaten er belyst døgnet rundt", + "fr": "Cette rue est éclairée en permanence", + "da": "Denne gade er oplyst 24/7", + "ca": "Aquest carrer està il·luminat 24/7", + "es": "Esta calle está iluminada 24/7", + "cs": "Tato ulice je osvětlena 24/7", + "it": "Questa strada è illuminata 24 ore su 24", + "pl": "Ta ulica jest oświetlona 24/7", + "ko": "이 거리는 24시간 밝습니다" + } } ] } - } - ], - "allowMove": false + ] + } } ] -} +} \ No newline at end of file diff --git a/assets/themes/winter_service/winter_service.json b/assets/themes/winter_service/winter_service.json new file mode 100644 index 000000000..cda079ef8 --- /dev/null +++ b/assets/themes/winter_service/winter_service.json @@ -0,0 +1,112 @@ +{ + "credits": "Robin van der Linde", + "credits:uid": 5093765, + "id": "winter_service", + "title": { + "en": "Winter Service" + }, + "icon": "./assets/svg/snowflake.svg", + "layers": [ + { + "id": "serviced_streets", + "name": { + "en": "Serviced streets" + }, + "description": { + "en": "Streets that have some form of winter service" + }, + "source": { + "osmTags": { + "and": [ + "highway!=", + "service!=driveway", + "highway!=platform", + "winter_service=yes" + ] + } + }, + "minzoom": 16, + "title": { + "render": { + "en": "Serviced street" + }, + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } + ] + }, + "lineRendering": [ + { + "color": "#00ff00" + } + ], + "pointRendering": null, + "allowMove": false, + "tagRenderings": [] + }, + { + "builtin": "all_streets", + "override": { + "lineRendering": [ + { + "color": { + "mappings": [ + { + "if": "winter_service=yes", + "then": "#00ff00" + }, + { + "if": "winter_service=limited", + "then": "#ffff00" + }, + { + "if": "winter_service=no", + "then": "#ff0000" + } + ] + } + } + ] + } + } + ], + "description": { + "en": "A map showing roads and whether they're cleared in winter" + }, + "overrideAll": { + "tagRenderings+": [ + { + "id": "winter_service", + "question": { + "en": "Is this road serviced (e.g. cleared of snow) in winter?" + }, + "mappings": [ + { + "if": "winter_service=yes", + "then": { + "en": "This road is serviced in winter" + }, + "icon": "snowflake:green" + }, + { + "if": "winter_service=limited", + "then": { + "en": "This road is serviced in winter, but only to a limited extent. This is often signposted as well." + }, + "icon": "snowflake:yellow" + }, + { + "if": "winter_service=no", + "then": { + "en": "This road is not serviced in winter" + }, + "icon": "snowflake:red" + } + ] + } + ] + }, + "hideFromOverview": true +} \ No newline at end of file diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 89f271919..07c9ec19f 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -876,28 +876,26 @@ } }, "2": { - "name": "Tots els carrers", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Aquest carrer està il·luminat" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Aquest carrer està il·luminat" + }, + "1": { + "then": "Aquest carrer no està il·luminat" + }, + "2": { + "then": "Aquest carrer està il·luminat per la nit" + }, + "3": { + "then": "Aquest carrer està il·luminat 24/7" + } }, - "1": { - "then": "Aquest carrer no està il·luminat" - }, - "2": { - "then": "Aquest carrer està il·luminat per la nit" - }, - "3": { - "then": "Aquest carrer està il·luminat 24/7" - } - }, - "question": "Aquest carrer està il·luminat?" + "question": "Aquest carrer està il·luminat?" + } } - }, - "title": { - "render": "Carrer" } } }, diff --git a/langs/themes/cs.json b/langs/themes/cs.json index 0ab985cb7..c0224d033 100644 --- a/langs/themes/cs.json +++ b/langs/themes/cs.json @@ -1168,28 +1168,26 @@ } }, "2": { - "name": "Všechny ulice", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Tato ulice je osvětlená" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Tato ulice je osvětlená" + }, + "1": { + "then": "Tato ulice není osvětlená" + }, + "2": { + "then": "Tato ulice je v noci osvětlená" + }, + "3": { + "then": "Tato ulice je osvětlena 24/7" + } }, - "1": { - "then": "Tato ulice není osvětlená" - }, - "2": { - "then": "Tato ulice je v noci osvětlená" - }, - "3": { - "then": "Tato ulice je osvětlena 24/7" - } - }, - "question": "Je tato ulice osvětlená?" + "question": "Je tato ulice osvětlená?" + } } - }, - "title": { - "render": "Ulice" } } }, diff --git a/langs/themes/da.json b/langs/themes/da.json index 0552ecf66..80ba8b292 100644 --- a/langs/themes/da.json +++ b/langs/themes/da.json @@ -687,28 +687,26 @@ } }, "2": { - "name": "Alle gader", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Denne gade er oplyst" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Denne gade er oplyst" + }, + "1": { + "then": "Denne gade er ikke oplyst" + }, + "2": { + "then": "Denne gade er oplyst om natten" + }, + "3": { + "then": "Denne gade er oplyst 24/7" + } }, - "1": { - "then": "Denne gade er ikke oplyst" - }, - "2": { - "then": "Denne gade er oplyst om natten" - }, - "3": { - "then": "Denne gade er oplyst 24/7" - } - }, - "question": "Er denne gade oplyst?" + "question": "Er denne gade oplyst?" + } } - }, - "title": { - "render": "Gade" } } }, diff --git a/langs/themes/de.json b/langs/themes/de.json index e82d5d44a..f43f16d7f 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -1202,28 +1202,26 @@ } }, "2": { - "name": "Alle Straßen", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Diese Straße ist beleuchtet" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Diese Straße ist beleuchtet" + }, + "1": { + "then": "Diese Straße ist nicht beleuchtet" + }, + "2": { + "then": "Diese Straße ist nachts beleuchtet" + }, + "3": { + "then": "Diese Straße ist durchgehend beleuchtet" + } }, - "1": { - "then": "Diese Straße ist nicht beleuchtet" - }, - "2": { - "then": "Diese Straße ist nachts beleuchtet" - }, - "3": { - "then": "Diese Straße ist durchgehend beleuchtet" - } - }, - "question": "Ist diese Straße beleuchtet?" + "question": "Ist diese Straße beleuchtet?" + } } - }, - "title": { - "render": "Straße" } } }, diff --git a/langs/themes/en.json b/langs/themes/en.json index 729c671b4..0fa5aeda9 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -1234,28 +1234,26 @@ } }, "2": { - "name": "All streets", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "This street is lit" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "This street is lit" + }, + "1": { + "then": "This street is not lit" + }, + "2": { + "then": "This street is lit at night" + }, + "3": { + "then": "This street is lit 24/7" + } }, - "1": { - "then": "This street is not lit" - }, - "2": { - "then": "This street is lit at night" - }, - "3": { - "then": "This street is lit 24/7" - } - }, - "question": "Is this street lit?" + "question": "Is this street lit?" + } } - }, - "title": { - "render": "Street" } } }, @@ -1378,5 +1376,36 @@ "description": "On this map, you'll find waste baskets near you. If a waste basket is missing on this map, you can add it yourself.", "shortDescription": "A map with waste baskets", "title": "Waste Baskets" + }, + "winter_service": { + "description": "A map showing roads and whether they're cleared in winter", + "layers": { + "0": { + "description": "Streets that have some form of winter service", + "name": "Serviced streets", + "title": { + "render": "Serviced street" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "This road is serviced in winter" + }, + "1": { + "then": "This road is serviced in winter, but only to a limited extent. This is often signposted as well." + }, + "2": { + "then": "This road is not serviced in winter" + } + }, + "question": "Is this road serviced (e.g. cleared of snow) in winter?" + } + } + }, + "title": "Winter Service" } } \ No newline at end of file diff --git a/langs/themes/es.json b/langs/themes/es.json index 3ca061dae..9b673c1f6 100644 --- a/langs/themes/es.json +++ b/langs/themes/es.json @@ -1159,28 +1159,26 @@ } }, "2": { - "name": "Todas las calles", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Esta calle está iluminada" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Esta calle está iluminada" + }, + "1": { + "then": "Esta calle no está iluminada" + }, + "2": { + "then": "Esta calle está iluminada por la noche" + }, + "3": { + "then": "Esta calle está iluminada 24/7" + } }, - "1": { - "then": "Esta calle no está iluminada" - }, - "2": { - "then": "Esta calle está iluminada por la noche" - }, - "3": { - "then": "Esta calle está iluminada 24/7" - } - }, - "question": "¿Está iluminada esta calle?" + "question": "¿Está iluminada esta calle?" + } } - }, - "title": { - "render": "Calle" } } }, diff --git a/langs/themes/eu.json b/langs/themes/eu.json index c35244843..a940a77a8 100644 --- a/langs/themes/eu.json +++ b/langs/themes/eu.json @@ -178,15 +178,6 @@ "sports": { "title": "Kirolak" }, - "street_lighting": { - "layers": { - "2": { - "title": { - "render": "Kalea" - } - } - } - }, "trees": { "title": "Zuhaitzak" }, diff --git a/langs/themes/fr.json b/langs/themes/fr.json index 7d88aba22..0686170e0 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -982,28 +982,26 @@ } }, "2": { - "name": "Toutes les rues", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Cette rue est éclairée" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Cette rue est éclairée" + }, + "1": { + "then": "Cette rue n’est pas éclairée" + }, + "2": { + "then": "Cette rue est éclairée la nuit" + }, + "3": { + "then": "Cette rue est éclairée en permanence" + } }, - "1": { - "then": "Cette rue n’est pas éclairée" - }, - "2": { - "then": "Cette rue est éclairée la nuit" - }, - "3": { - "then": "Cette rue est éclairée en permanence" - } - }, - "question": "Cette rue est-elle éclairée ?" + "question": "Cette rue est-elle éclairée ?" + } } - }, - "title": { - "render": "Rue" } } }, diff --git a/langs/themes/hu.json b/langs/themes/hu.json index 5f4ae6bc2..c4e89bb5c 100644 --- a/langs/themes/hu.json +++ b/langs/themes/hu.json @@ -431,28 +431,26 @@ } }, "2": { - "name": "Minden utca", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Ez az utca ki van világítva" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Ez az utca ki van világítva" + }, + "1": { + "then": "Ez az utca nincs kivilágítva" + }, + "2": { + "then": "Ez az utca éjjel ki van világítva" + }, + "3": { + "then": "Ez az utca éjjel-nappal ki van világítva" + } }, - "1": { - "then": "Ez az utca nincs kivilágítva" - }, - "2": { - "then": "Ez az utca éjjel ki van világítva" - }, - "3": { - "then": "Ez az utca éjjel-nappal ki van világítva" - } - }, - "question": "Ki van-e világítva ez az utca?" + "question": "Ki van-e világítva ez az utca?" + } } - }, - "title": { - "render": "Utca" } } }, diff --git a/langs/themes/it.json b/langs/themes/it.json index 7e549ebb3..fc77a0106 100644 --- a/langs/themes/it.json +++ b/langs/themes/it.json @@ -566,28 +566,26 @@ } }, "2": { - "name": "Tutte le strade", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Questa strada è illuminata" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Questa strada è illuminata" + }, + "1": { + "then": "Questa strada non è illuminata" + }, + "2": { + "then": "Questa strada è illuminata di sera" + }, + "3": { + "then": "Questa strada è illuminata 24 ore su 24" + } }, - "1": { - "then": "Questa strada non è illuminata" - }, - "2": { - "then": "Questa strada è illuminata di sera" - }, - "3": { - "then": "Questa strada è illuminata 24 ore su 24" - } - }, - "question": "Questa strada è illuminata?" + "question": "Questa strada è illuminata?" + } } - }, - "title": { - "render": "Strada" } } }, diff --git a/langs/themes/ko.json b/langs/themes/ko.json index 076fff142..1e1e49476 100644 --- a/langs/themes/ko.json +++ b/langs/themes/ko.json @@ -1168,28 +1168,26 @@ } }, "2": { - "name": "모든 거리", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "이 거리는 밝습니다" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "이 거리는 밝습니다" + }, + "1": { + "then": "이 거리는 밝지 않습니다" + }, + "2": { + "then": "이 거리는 밤에 밝습니다" + }, + "3": { + "then": "이 거리는 24시간 밝습니다" + } }, - "1": { - "then": "이 거리는 밝지 않습니다" - }, - "2": { - "then": "이 거리는 밤에 밝습니다" - }, - "3": { - "then": "이 거리는 24시간 밝습니다" - } - }, - "question": "이 거리는 밝나요?" + "question": "이 거리는 밝나요?" + } } - }, - "title": { - "render": "거리" } } }, diff --git a/langs/themes/nb_NO.json b/langs/themes/nb_NO.json index e602bac9e..46055c0f6 100644 --- a/langs/themes/nb_NO.json +++ b/langs/themes/nb_NO.json @@ -440,28 +440,26 @@ } }, "2": { - "name": "Alle gater", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Denne gaten er belyst" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Denne gaten er belyst" + }, + "1": { + "then": "Denne gaten er ikke belyst" + }, + "2": { + "then": "Denne gaten er belyst nattestid" + }, + "3": { + "then": "Denne gaten er belyst døgnet rundt" + } }, - "1": { - "then": "Denne gaten er ikke belyst" - }, - "2": { - "then": "Denne gaten er belyst nattestid" - }, - "3": { - "then": "Denne gaten er belyst døgnet rundt" - } - }, - "question": "Er denne gaten belyst?" + "question": "Er denne gaten belyst?" + } } - }, - "title": { - "render": "Gate" } } }, diff --git a/langs/themes/nl.json b/langs/themes/nl.json index 61dea1ffa..c512a1de1 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -1270,28 +1270,26 @@ } }, "2": { - "name": "Alle straten", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Deze straat is verlicht" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Deze straat is verlicht" + }, + "1": { + "then": "Deze straat is niet verlicht" + }, + "2": { + "then": "Deze straat is 's nachts verlicht" + }, + "3": { + "then": "Deze straat is 24/7 verlicht" + } }, - "1": { - "then": "Deze straat is niet verlicht" - }, - "2": { - "then": "Deze straat is 's nachts verlicht" - }, - "3": { - "then": "Deze straat is 24/7 verlicht" - } - }, - "question": "Is deze straat verlicht?" + "question": "Is deze straat verlicht?" + } } - }, - "title": { - "render": "Straat" } } }, diff --git a/langs/themes/pa_PK.json b/langs/themes/pa_PK.json index aefe3545f..c5879317a 100644 --- a/langs/themes/pa_PK.json +++ b/langs/themes/pa_PK.json @@ -158,12 +158,6 @@ "title": { "render": "روشنی والی سڑک" } - }, - "2": { - "name": "ساریاں سڑکاں", - "title": { - "render": "سڑک" - } } }, "title": "سڑک دیاں روشنیاں" diff --git a/langs/themes/pl.json b/langs/themes/pl.json index 56809ae40..adc045a15 100644 --- a/langs/themes/pl.json +++ b/langs/themes/pl.json @@ -855,28 +855,26 @@ } }, "2": { - "name": "Wszystkie ulice", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Ta ulica jest oświetlona" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Ta ulica jest oświetlona" + }, + "1": { + "then": "Ta ulica nie jest oświetlona" + }, + "2": { + "then": "Ta ulica jest oświetlona w nocy" + }, + "3": { + "then": "Ta ulica jest oświetlona 24/7" + } }, - "1": { - "then": "Ta ulica nie jest oświetlona" - }, - "2": { - "then": "Ta ulica jest oświetlona w nocy" - }, - "3": { - "then": "Ta ulica jest oświetlona 24/7" - } - }, - "question": "Czy ta ulica jest oświetlona?" + "question": "Czy ta ulica jest oświetlona?" + } } - }, - "title": { - "render": "Ulica" } } }, diff --git a/langs/themes/ru.json b/langs/themes/ru.json index d865e05a0..5292a9bd3 100644 --- a/langs/themes/ru.json +++ b/langs/themes/ru.json @@ -236,14 +236,6 @@ "title": "Спортивные объекты" }, "street_lighting": { - "layers": { - "2": { - "name": "Все улицы", - "title": { - "render": "Улица" - } - } - }, "title": "Уличное освещение" }, "surveillance": { diff --git a/langs/themes/zh_Hant.json b/langs/themes/zh_Hant.json index adcb07626..3278776d8 100644 --- a/langs/themes/zh_Hant.json +++ b/langs/themes/zh_Hant.json @@ -807,28 +807,26 @@ } }, "2": { - "name": "所有道路", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "這道路有照明" + "override": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "這道路有照明" + }, + "1": { + "then": "這道路沒有照明" + }, + "2": { + "then": "這道路晚上有照明" + }, + "3": { + "then": "這道路 24/7 有照明" + } }, - "1": { - "then": "這道路沒有照明" - }, - "2": { - "then": "這道路晚上有照明" - }, - "3": { - "then": "這道路 24/7 有照明" - } - }, - "question": "這道路有照明嗎?" + "question": "這道路有照明嗎?" + } } - }, - "title": { - "render": "照明" } } }, diff --git a/src/Models/Constants.ts b/src/Models/Constants.ts index 8eb298467..cad980136 100644 --- a/src/Models/Constants.ts +++ b/src/Models/Constants.ts @@ -191,6 +191,7 @@ export default class Constants { "resolved", "ring", "scissors", + "snowflake", "square", "square_rounded", "teardrop", diff --git a/src/assets/svg/Snowflake.svelte b/src/assets/svg/Snowflake.svelte new file mode 100644 index 000000000..cce4078a2 --- /dev/null +++ b/src/assets/svg/Snowflake.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file From cf1ae2f354a63bbec87325cbebe249f92158891a Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 9 Mar 2025 23:52:36 +0100 Subject: [PATCH 2/8] Themes(postboxes): Drop old tagging, add returns_only as option --- .../layers/parcel_lockers/parcel_lockers.json | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/assets/layers/parcel_lockers/parcel_lockers.json b/assets/layers/parcel_lockers/parcel_lockers.json index c82c8cfc1..5b51a38fa 100644 --- a/assets/layers/parcel_lockers/parcel_lockers.json +++ b/assets/layers/parcel_lockers/parcel_lockers.json @@ -21,17 +21,7 @@ "es": "Capa que muestra taquillas para recoger y enviar paquetes." }, "source": { - "osmTags": { - "or": [ - "amenity=parcel_locker", - { - "and": [ - "amenity=vending_machine", - "vending=parcel_pickup;parcel_mail_in" - ] - } - ] - } + "osmTags": "amenity=parcel_locker" }, "minzoom": 12, "title": { @@ -259,9 +249,15 @@ "cs": "Z této schránky na balíky nemůžete posílat balíky", "es": "No puedes enviar paquetes desde esta taquilla" } + }, + { + "if": "parcel_mail_in=returns_only", + "then": { + "en": "You can send packages from this parcel locker, but only for returns", + "nl": "Je kan pakk etten versturen vanuit deze pakketautomaat, maar alleen voor retouren" + } } - ], - "condition": "amenity=parcel_locker" + ] }, { "id": "pickup", @@ -302,8 +298,7 @@ "es": "No puedes recoger paquetes de esta taquilla" } } - ], - "condition": "amenity=parcel_locker" + ] } ], "filter": [ @@ -313,4 +308,4 @@ "allowMove": { "enableImproveAccuracy": true } -} +} \ No newline at end of file From 4a23fb87a16e00bef7566c70200b38637b92d76b Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 10 Mar 2025 00:03:22 +0100 Subject: [PATCH 3/8] Themes(guideposts): Add question for name, ref and elevation (#2326) --- assets/layers/guidepost/guidepost.json | 50 +++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/assets/layers/guidepost/guidepost.json b/assets/layers/guidepost/guidepost.json index 18b8f6c40..407e8fc3f 100644 --- a/assets/layers/guidepost/guidepost.json +++ b/assets/layers/guidepost/guidepost.json @@ -133,6 +133,54 @@ } } ] + }, + { + "id": "name", + "question": { + "en": "What is the name noted on this guidepost?" + }, + "freeform": { + "key": "name", + "type": "string", + "placeholder": { + "en": "Name on the guidepost" + } + }, + "render": { + "en": "Name noted on the guidepost: {name}" + } + }, + { + "id": "ref", + "question": { + "en": "What is the reference number of this guidepost?" + }, + "freeform": { + "key": "ref", + "type": "string", + "placeholder": { + "en": "Reference number of the guidepost" + } + }, + "render": { + "en": "Reference number of the guidepost: {ref}" + } + }, + { + "id": "ele", + "question": { + "en": "What is the elevation noted on this guidepost?" + }, + "freeform": { + "key": "ele", + "type": "float", + "placeholder": { + "en": "Elevation on the guidepost (in meters)" + } + }, + "render": { + "en": "Elevation noted on the guidepost: {ele} m" + } } ], "deletion": true, @@ -140,4 +188,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file From 19189edbc03b41ebe835f77dc3ef3121129f135f Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 13 Mar 2025 19:11:09 +0100 Subject: [PATCH 4/8] Chore: Gitlens settings --- .vscode/settings.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index aa73d8edf..b607ae0fc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -53,5 +53,12 @@ "[svelte]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "editor.formatOnSave": true + "editor.formatOnSave": true, + "gitlens.remotes": [ + { + "domain": "source.mapcomplete.org", + "type": "Gitea", + "name": "MapComplete Forgejo" + } + ] } From 5c7246766eb4d5dcbc3ad42b75ed6a93358baf07 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 13 Mar 2025 20:35:53 +0100 Subject: [PATCH 5/8] Themes(kerbs and crossings): Remove crossing type, add tactile_paving=partial, invalid values --- assets/layers/crossings/crossings.json | 86 ++++----- langs/layers/ca.json | 42 +---- langs/layers/cs.json | 42 +---- langs/layers/da.json | 25 +-- langs/layers/de.json | 42 +---- langs/layers/en.json | 244 +++++++++++++++++++++---- langs/layers/es.json | 42 +---- langs/layers/fr.json | 23 +-- langs/layers/nl.json | 63 +++---- 9 files changed, 306 insertions(+), 303 deletions(-) diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index 354c455cd..77c56e9dd 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -166,69 +166,44 @@ "tagRenderings": [ "images", { - "id": "crossing-type", + "id": "signals", "question": { - "en": "What kind of crossing is this?", - "nl": "Wat voor oversteekplaats is dit?", - "de": "Was ist das für eine Kreuzung?", - "es": "¿Qué tipo de cruce es este?", - "fr": "Quel type de passage piéton est-ce ?", - "ca": "Quin tipus de creuament és aquest?", - "cs": "Co je to za přechod?" + "en": "Are there traffic signals at this crossing?", + "nl": "Zijn er verkeerslichten bij deze oversteekplaats?" }, - "condition": "highway=crossing", "mappings": [ { - "if": "crossing=uncontrolled", + "if": "crossing:signals=no", "then": { - "en": "Crossing, without traffic lights", - "nl": "Oversteekplaats, zonder verkeerslichten", - "de": "Kreuzungen ohne Ampeln", - "es": "Cruce, sin semáforos", - "fr": "Passage piéton, sans feux de signalisation", - "ca": "Creuament, sense semàfors", - "cs": "Přechod bez světelné signalizace" + "en": "There are no traffic signals at this crossing", + "nl": "Er zijn geen verkeerslichten bij deze oversteekplaats" + } + }, + { + "if": "crossing:signals=yes", + "then": { + "en": "There are traffic signals at this crossing", + "nl": "Er zijn verkeerslichten bij deze oversteekplaats" + }, + "icon": { + "class": "small", + "path": "./assets/layers/crossings/traffic_lights.svg" } }, { "if": "crossing=traffic_signals", "then": { - "en": "Crossing with traffic signals", - "nl": "Oversteekplaats met verkeerslichten", - "de": "Kreuzungen mit Ampeln", - "es": "Cruce con semáforos", - "fr": "Passage piéton avec des feux de signalisation", - "ca": "Creuament amb semàfors", - "cs": "Přechod se světelnou signalizací" - } - }, - { - "if": "crossing=zebra", - "then": { - "en": "Zebra crossing", - "nl": "Zebrapad", - "de": "Zebrastreifen", - "ca": "Pas de zebra", - "es": "Paso de peatones", - "fr": "Passage piéton", - "cs": "Zebra přechod" + "en": "There are traffic signals at this crossing", + "nl": "Er zijn verkeerslichten bij deze oversteekplaats" }, - "hideInAnswer": true - }, - { - "if": "crossing=unmarked", - "then": { - "en": "Crossing without crossing markings", - "nl": "Oversteekplaats zonder kruispuntmarkeringen", - "de": "Kreuzung ohne Kreuzungsmarkierungen", - "es": "Cruce sin marcas de cruce", - "fr": "Passage piéton sans marquages", - "ca": "Creuament sense senyalitzar", - "cs": "Přechod bez označení přechodu" + "icon": { + "class": "small", + "path": "./assets/layers/crossings/traffic_lights.svg" }, "hideInAnswer": true } - ] + ], + "condition": "highway=crossing" }, { "id": "markings", @@ -467,7 +442,9 @@ "fixme=Free-form value used in MapComplete for crossing:markings" ] }, - "multiAnswer": true + "multiAnswer": true, + "condition": "highway=crossing", + "invalidValues": "crossing:markings=yes" }, { "id": "crossing-bicycle-allowed", @@ -599,6 +576,13 @@ "cs": "Tento přechod má hmatovou dlažbu, ale ne správně" }, "hideInAnswer": true + }, + { + "if": "tactile_paving=partial", + "then": { + "en": "This crrosing has tactile paving, but only on one side", + "nl": "Deze oversteekplaats heeft een geleidelijn, maar slechts aan één kant" + } } ] }, @@ -949,4 +933,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file diff --git a/langs/layers/ca.json b/langs/layers/ca.json index a558af062..41646be4f 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -357,6 +357,12 @@ "render": "Telefèric {name}" } }, + "all_streets": { + "name": "Tots els carrers", + "title": { + "render": "Carrer" + } + }, "ambulancestation": { "description": "Una estició d'abulàncies és una àrea per a emmagatzemar ambulàncies, equipament mèdic, equips de protecció personal i altres subministraments mèdics.", "name": "Mapa d'estacions d'ambulàncies", @@ -3796,23 +3802,6 @@ }, "question": "Aquest creuament té superfície podotàctil?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Creuament, sense semàfors" - }, - "1": { - "then": "Creuament amb semàfors" - }, - "2": { - "then": "Pas de zebra" - }, - "3": { - "then": "Creuament sense senyalitzar" - } - }, - "question": "Quin tipus de creuament és aquest?" - }, "crossing-vibration": { "mappings": { "0": { @@ -13569,25 +13558,6 @@ "walls_and_buildings": { "description": "Capa construïda especial que proporciona totes les parets i edificis. Aquesta capa és útil als predefinits per a objectes que es poden col·locar a les parets (p. ex. DEA, bústies de correus, entrades, adreces, càmeres de vigilància, ...). Aquesta capa és invisible per defecte i no es pot activar per l'usuari.", "snapName": "un mur o edifici", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "No s'ha senyalitzat cap entrada" - }, - "1": { - "then": "Cap de les {_entrance_count} entrades té informació d'amplada encara" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} entrades encara no tenen informació d'amplada", - "before": "

Entrades

Aquest edifici té {_entrances_count} entrades:", - "special": { - "tagrendering": "Una entrada de {canonical(width)}" - } - } - } - }, "title": { "render": "Paret o edifici" } diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 96b9af798..8411a69b9 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -357,6 +357,12 @@ "render": "Dráha {name}" } }, + "all_streets": { + "name": "Všechny ulice", + "title": { + "render": "Ulice" + } + }, "ambulancestation": { "description": "Stanice záchranné služby je prostor pro umístění sanitních vozidel, zdravotnického vybavení, osobních ochranných prostředků a dalšího zdravotnického materiálu.", "name": "Mapa stanic rychlé záchranné služby", @@ -3835,23 +3841,6 @@ }, "question": "Má tento přechod hmatovou dlažbu?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Přechod bez světelné signalizace" - }, - "1": { - "then": "Přechod se světelnou signalizací" - }, - "2": { - "then": "Zebra přechod" - }, - "3": { - "then": "Přechod bez označení přechodu" - } - }, - "question": "Co je to za přechod?" - }, "crossing-vibration": { "mappings": { "0": { @@ -11230,25 +11219,6 @@ "walls_and_buildings": { "description": "Speciální zabudovaná vrstva poskytující všechny stěny a budovy. Tato vrstva je užitečná v předvolbách pro objekty, které lze umístit ke stěnám (např. AED, poštovní schránky, vchody, adresy, bezpečnostní kamery, …). Tato vrstva je ve výchozím nastavení neviditelná a uživatel ji nemůže přepínat.", "snapName": "zeď nebo budova", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "Nebyl označen žádný vchod" - }, - "1": { - "then": "Žádný z {_entrance_count} vchodů zatím nemá informace o šířce" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} vchody zatím nemají informace o šířce", - "before": "

Vchody

Tato budova má {_entrances_count} vchodů:", - "special": { - "tagrendering": "vchod {canonical(width)}" - } - } - } - }, "title": { "render": "Zeď nebo budova" } diff --git a/langs/layers/da.json b/langs/layers/da.json index 08ace7831..2642b6788 100644 --- a/langs/layers/da.json +++ b/langs/layers/da.json @@ -24,6 +24,12 @@ "render": "Kendt adresse" } }, + "all_streets": { + "name": "Alle gader", + "title": { + "render": "Gade" + } + }, "ambulancestation": { "description": "En ambulancestation er et område til opbevaring af ambulancekøretøjer, medicinsk udstyr, personlige værnemidler og andre medicinske forsyninger.", "name": "Kort over ambulancestationer", @@ -2898,25 +2904,6 @@ }, "walls_and_buildings": { "description": "Specielt indbygget lag giver alle vægge og bygninger. Dette lag er nyttigt i forudindstillinger til objekter, der kan placeres mod vægge (f.eks. AED'er, postkasser, indgange, adresser, overvågningskameraer, …). Dette lag er usynligt som standard og kan ikke skiftes af brugeren.", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "Der er ikke markeret nogen indgang" - }, - "1": { - "then": "Ingen af {_entrance_count}-indgangene har oplysninger om bredde endnu" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} indgange har endnu ikke oplysninger om bredde", - "before": "

Indgange

Denne bygning har {_entrances_count} indgange:", - "special": { - "tagrendering": "En indgang på {canonical(width)}" - } - } - } - }, "title": { "render": "Mur eller bygning" } diff --git a/langs/layers/de.json b/langs/layers/de.json index 510eefac7..04da9b073 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -357,6 +357,12 @@ "render": "Seilbahn {name}" } }, + "all_streets": { + "name": "Alle Straßen", + "title": { + "render": "Straße" + } + }, "ambulancestation": { "description": "Eine Rettungswache ist ein Ort, an dem Rettungsfahrzeuge, medizinische Ausrüstung, persönliche Schutzausrüstung und anderes medizinisches Material untergebracht sind.", "name": "Rettungswachen", @@ -3766,23 +3772,6 @@ }, "question": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Kreuzungen ohne Ampeln" - }, - "1": { - "then": "Kreuzungen mit Ampeln" - }, - "2": { - "then": "Zebrastreifen" - }, - "3": { - "then": "Kreuzung ohne Kreuzungsmarkierungen" - } - }, - "question": "Was ist das für eine Kreuzung?" - }, "crossing-vibration": { "mappings": { "0": { @@ -13545,25 +13534,6 @@ "walls_and_buildings": { "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", "snapName": "eine Wand oder ein Gebäude", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "Es wurde kein Eingang markiert" - }, - "1": { - "then": "Keiner der {_entrance_count} Eingänge hat bisher Angaben zur Breite" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} Eingänge haben keine Angaben zur Breite", - "before": "

Eingänge

Das Gebäude hat {_entrances_count} Eingänge:", - "special": { - "tagrendering": "Ein Eingang von {canonical(width)}" - } - } - } - }, "title": { "render": "Wand oder Gebäude" } diff --git a/langs/layers/en.json b/langs/layers/en.json index d8ea29115..70b2cc6b8 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -357,6 +357,13 @@ "render": "Aerialway {name}" } }, + "all_streets": { + "description": "Layer with (almost) all streets", + "name": "All streets", + "title": { + "render": "Street" + } + }, "ambulancestation": { "description": "An ambulance station is an area for storage of ambulance vehicles, medical equipment, personal protective equipment, and other medical supplies.", "name": "Map of ambulance stations", @@ -565,6 +572,17 @@ } }, "question": "Does this artwork serve as a memorial?" + }, + "doubles_as_wayside_shrine": { + "mappings": { + "0": { + "then": "This artwork acts as a wayside shrine" + }, + "1": { + "then": "This artwork does not act as a wayside shrine" + } + }, + "question": "Does this artwork also double as wayside shrine?" } }, "title": { @@ -3874,27 +3892,13 @@ }, "2": { "then": "This crossing has tactile paving, but is not correct" + }, + "3": { + "then": "This crrosing has tactile paving, but only on one side" } }, "question": "Does this crossing have tactile paving?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Crossing, without traffic lights" - }, - "1": { - "then": "Crossing with traffic signals" - }, - "2": { - "then": "Zebra crossing" - }, - "3": { - "then": "Crossing without crossing markings" - } - }, - "question": "What kind of crossing is this?" - }, "crossing-vibration": { "mappings": { "0": { @@ -3956,6 +3960,20 @@ }, "question": "What kind of markings does this crossing have?", "render": "This crossing has {crossing:markings} markings" + }, + "signals": { + "mappings": { + "0": { + "then": "There are no traffic signals at this crossing" + }, + "1": { + "then": "There are traffic signals at this crossing" + }, + "2": { + "then": "There are traffic signals at this crossing" + } + }, + "question": "Are there traffic signals at this crossing?" } }, "title": { @@ -6374,6 +6392,27 @@ } }, "tagRenderings": { + "ele": { + "freeform": { + "placeholder": "Elevation on the guidepost (in meters)" + }, + "question": "What is the elevation noted on this guidepost?", + "render": "Elevation noted on the guidepost: {ele} m" + }, + "name": { + "freeform": { + "placeholder": "Name on the guidepost" + }, + "question": "What is the name noted on this guidepost?", + "render": "Name noted on the guidepost: {name}" + }, + "ref": { + "freeform": { + "placeholder": "Reference number of the guidepost" + }, + "question": "What is the reference number of this guidepost?", + "render": "Reference number of the guidepost: {ref}" + }, "type": { "mappings": { "0": { @@ -7926,6 +7965,9 @@ }, "1": { "then": "You can't send packages from this parcel locker" + }, + "2": { + "then": "You can send packages from this parcel locker, but only for returns" } }, "question": "Can you send packages from this parcel locker?" @@ -10086,6 +10128,15 @@ }, "scouting_group": { "description": "A map showing scouting groups.", + "filter": { + "1": { + "options": { + "0": { + "question": "Search for brand: {search}" + } + } + } + }, "name": "Scouting groups", "presets": { "0": { @@ -13715,25 +13766,6 @@ "walls_and_buildings": { "description": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, …). This layer is invisible by default and not toggleable by the user.", "snapName": "a wall or building", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "No entrance has been marked" - }, - "1": { - "then": "None of the {_entrance_count} entrances have width information yet" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} entrances don't have width information yet", - "before": "

Entrances

This building has {_entrances_count} entrances:", - "special": { - "tagrendering": "An entrance of {canonical(width)}" - } - } - } - }, "title": { "render": "Wall or building" } @@ -13902,6 +13934,146 @@ "render": "Waste Disposal" } }, + "wayside_shrine": { + "description": "Shrines are religious places that are dedicated to specific deities, saints and other figures of religious importance. Typically, the contain religious depictions and people frequently leave offerings at those places. Wayside shrines are small shrines that can be found next to a road or pathway and are frequented by travellers passing by.", + "name": "Wayside Shrines", + "presets": { + "0": { + "description": "A wayside shrine typically shows a religious depiction, usually placed by a road or pathway. ", + "title": "a wayside shrine" + }, + "1": { + "description": "A wayside shrine typically shows a religious depiction, usually placed by a road or pathway. This shrine is mounted on a wall", + "title": "a wayside shrine mounted on a wall" + } + }, + "tagRenderings": { + "denomination_christian": { + "mappings": { + "0": { + "then": "The religious subdenomination is Catholic" + }, + "1": { + "then": "The religious subdenomination is Roman Catholic" + }, + "2": { + "then": "The religious subdenomination is Orthodox" + }, + "3": { + "then": "The religious subdenomination is Greek-Orthodox" + }, + "4": { + "then": "The religious subdenomination is Russian-Orthodox" + }, + "5": { + "then": "The religious subdenomination is Serbian Orthodox" + }, + "6": { + "then": "The religious subdenomination is Protestant" + }, + "7": { + "then": "The religious subdenomination is Anglican" + }, + "8": { + "then": "The religious subdenomination is Adventist" + }, + "9": { + "then": "The religious subdenomination is evangelical" + } + }, + "question": "What's the Christian denomination of the shrine?", + "render": "The religious denomination is {denomination}" + }, + "denomination_jewish": { + "mappings": { + "0": { + "then": "The religious subdenomination is Conservative" + }, + "1": { + "then": "The religious subdenomination is Orthodox" + }, + "2": { + "then": "The religious subdenomination is Hasidic" + }, + "3": { + "then": "The religious subdenomination is Reform" + } + }, + "question": "What's the Jewish denomination of this shrine?", + "render": "The religious subdenomination is {denomination}" + }, + "denomination_muslim": { + "mappings": { + "0": { + "then": "The religious subdenomination is Shia" + }, + "1": { + "then": "The religious subdenomination is Sunni" + }, + "2": { + "then": "The religious subdenomination is Sufi" + } + }, + "question": "What's the Muslim denomination of this shrine?", + "render": "The religious subdenomination is {denomination}" + }, + "denomination_other": { + "question": "What's the denomination of this shrine?", + "render": "The denomination of this shrine is {denomination}" + }, + "religion": { + "mappings": { + "0": { + "then": "This is a Christian shrine" + }, + "1": { + "then": "This is a Buddhist shrine" + }, + "10": { + "then": "This is a Zoroastrian shrine" + }, + "2": { + "then": "This is a Hindu shrine" + }, + "3": { + "then": "This is a Jain shrine" + }, + "4": { + "then": "This is a Jewish shrine" + }, + "5": { + "then": "This is an Islamic shrine" + }, + "6": { + "then": "This is a Pagan shrine" + }, + "7": { + "then": "This is a Shinto shrine" + }, + "8": { + "then": "This is a Sikh shrine" + }, + "9": { + "then": "This is a Taoist shrine" + } + }, + "question": "To which religion is this shrine dedicated?", + "render": "This shrine is {religion}" + }, + "shrine_name": { + "mappings": { + "0": { + "then": "This shrine does not have a name" + } + }, + "question": "What's the name of this shrine?", + "render": "The name of this shrine is {name}" + } + }, + "title": { + "render": "Wayside Shrine {name}" + } + }, "windturbine": { "description": "Modern windmills generating electricity", "name": "wind turbine", diff --git a/langs/layers/es.json b/langs/layers/es.json index c7875c70a..a7943852b 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -339,6 +339,12 @@ "render": "Teleférico {name}" } }, + "all_streets": { + "name": "Todas las calles", + "title": { + "render": "Calle" + } + }, "ambulancestation": { "description": "Una estación de ambulancias es un área para el almacenamiento de vehículos de ambulancia, equipo médico, equipo de protección personal y otros suministros médicos.", "name": "Mapa de estaciones de ambulancias", @@ -3537,23 +3543,6 @@ }, "question": "¿Este cruce tiene pavimento táctil?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Cruce, sin semáforos" - }, - "1": { - "then": "Cruce con semáforos" - }, - "2": { - "then": "Paso de peatones" - }, - "3": { - "then": "Cruce sin marcas de cruce" - } - }, - "question": "¿Qué tipo de cruce es este?" - }, "crossing-vibration": { "mappings": { "0": { @@ -12433,25 +12422,6 @@ "walls_and_buildings": { "description": "Capa incorporada especial que proporciona todas las paredes y edificios. Esta capa es útil en los ajustes preestablecidos para objetos que se pueden colocar contra las paredes (por ejemplo, DEA, buzones, entradas, direcciones, cámaras de vigilancia, etc.). Esta capa es invisible de forma predeterminada y el usuario no puede activarla.", "snapName": "una pared o edificio", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "No se ha marcado ninguna entrada" - }, - "1": { - "then": "Ninguna de las {_entrance_count} entradas tiene información de ancho todavía" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} entradas aún no tienen información de ancho", - "before": "

Entradas

Este edificio tiene {_entrances_count} entradas:", - "special": { - "tagrendering": "Una entrada de {canonical(width)}" - } - } - } - }, "title": { "render": "Pared o edificio" } diff --git a/langs/layers/fr.json b/langs/layers/fr.json index fa7aace69..e9562cce7 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -262,6 +262,12 @@ } } }, + "all_streets": { + "name": "Toutes les rues", + "title": { + "render": "Rue" + } + }, "ambulancestation": { "description": "Une station d’ambulance est un lieu où sont stockés les véhicules d’urgence ainsi que de l’équipement médical.", "name": "Couche des ambulances", @@ -2528,23 +2534,6 @@ }, "question": "Est-ce que ce passage piéton a une surface podotactile ?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Passage piéton, sans feux de signalisation" - }, - "1": { - "then": "Passage piéton avec des feux de signalisation" - }, - "2": { - "then": "Passage piéton" - }, - "3": { - "then": "Passage piéton sans marquages" - } - }, - "question": "Quel type de passage piéton est-ce ?" - }, "crossing-vibration": { "mappings": { "0": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 63684eeb8..7d06009de 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -343,6 +343,13 @@ "render": "Kabelbaan {name}" } }, + "all_streets": { + "description": "Laag met (bijna) alle straten", + "name": "Alle straten", + "title": { + "render": "Straat" + } + }, "ambulancestation": { "description": "Een ambulancestation is een plaats waar ambulances, medisch materiaal, persoonlijk beschermingsmateriaal en aanverwanten worden bewaard.", "name": "Kaart van ambulancestations", @@ -3693,27 +3700,13 @@ }, "2": { "then": "Deze oversteekplaats heeft een geleidelijn, die incorrect is." + }, + "3": { + "then": "Deze oversteekplaats heeft een geleidelijn, maar slechts aan één kant" } }, "question": "Heeft deze oversteekplaats een geleidelijn?" }, - "crossing-type": { - "mappings": { - "0": { - "then": "Oversteekplaats, zonder verkeerslichten" - }, - "1": { - "then": "Oversteekplaats met verkeerslichten" - }, - "2": { - "then": "Zebrapad" - }, - "3": { - "then": "Oversteekplaats zonder kruispuntmarkeringen" - } - }, - "question": "Wat voor oversteekplaats is dit?" - }, "crossing-vibration": { "mappings": { "0": { @@ -3775,6 +3768,20 @@ }, "question": "Wat voor markering heeft deze oversteekplaats?", "render": "Deze oversteekplaats heeft {crossing:markings} markeringen" + }, + "signals": { + "mappings": { + "0": { + "then": "Er zijn geen verkeerslichten bij deze oversteekplaats" + }, + "1": { + "then": "Er zijn verkeerslichten bij deze oversteekplaats" + }, + "2": { + "then": "Er zijn verkeerslichten bij deze oversteekplaats" + } + }, + "question": "Zijn er verkeerslichten bij deze oversteekplaats?" } }, "title": { @@ -6834,6 +6841,9 @@ }, "1": { "then": "Je kan geen pakketten versturen vanuit deze pakketautomaat" + }, + "2": { + "then": "Je kan pakk etten versturen vanuit deze pakketautomaat, maar alleen voor retouren" } }, "question": "Kan je pakketten versturen vanuit deze pakketautomaat?" @@ -11032,25 +11042,6 @@ "walls_and_buildings": { "description": "Speciale ingebouwde laag voor alle muren en gebouwen. Deze laag is nuttig in voorkeuzen voor objecten die tegen muren geplaatst kunnen worden (bv. AEDs, brievenbussen, ingangen, adressen, beveiligingscamera's,…). Deze laag is standaard onzichtbaar en niet in te schakelen door de gebruiker.", "snapName": "een muur of gebouw", - "tagRenderings": { - "entrance_info": { - "mappings": { - "0": { - "then": "Geen ingang is gemarkeerd" - }, - "1": { - "then": "Geen van de {_entrance_count} ingangen hebben al informatie over de breedte" - } - }, - "render": { - "after": "{_entrances_count_without_width_count} ingangen hebben nog geen informatie over de breedte", - "before": "

Ingangen

Dit gebouw heeft {_entrances_count} ingangen:", - "special": { - "tagrendering": "Een ingang van {canonical(width)}" - } - } - } - }, "title": { "render": "Muur of gebouw" } From 455f540cbdd28062578129e66945f0693328b290 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 13 Mar 2025 21:33:07 +0100 Subject: [PATCH 6/8] Themes(guideposts): Add mappings for empty ref, name and elevation --- assets/layers/guidepost/guidepost.json | 30 +++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/assets/layers/guidepost/guidepost.json b/assets/layers/guidepost/guidepost.json index 407e8fc3f..a13341ea5 100644 --- a/assets/layers/guidepost/guidepost.json +++ b/assets/layers/guidepost/guidepost.json @@ -148,7 +148,15 @@ }, "render": { "en": "Name noted on the guidepost: {name}" - } + }, + "mappings": [ + { + "if": "noname=yes", + "then": { + "en": "There is no name noted on this guidepost" + } + } + ] }, { "id": "ref", @@ -164,7 +172,15 @@ }, "render": { "en": "Reference number of the guidepost: {ref}" - } + }, + "mappings": [ + { + "if": "noref=yes", + "then": { + "en": "There is no reference number noted on this guidepost" + } + } + ] }, { "id": "ele", @@ -180,7 +196,15 @@ }, "render": { "en": "Elevation noted on the guidepost: {ele} m" - } + }, + "mappings": [ + { + "if": "noele=yes", + "then": { + "en": "There is no elevation noted on this guidepost" + } + } + ] } ], "deletion": true, From d2ed83972fe4f19572729e0169594b88f691bcb8 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 13 Mar 2025 21:49:23 +0100 Subject: [PATCH 7/8] Themes(winter_service): add colour to serviced_streets, also show winter_service=limited --- .../themes/winter_service/winter_service.json | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/assets/themes/winter_service/winter_service.json b/assets/themes/winter_service/winter_service.json index cda079ef8..52dc08a6f 100644 --- a/assets/themes/winter_service/winter_service.json +++ b/assets/themes/winter_service/winter_service.json @@ -21,7 +21,12 @@ "highway!=", "service!=driveway", "highway!=platform", - "winter_service=yes" + { + "or": [ + "winter_service=yes", + "winter_service=limited" + ] + } ] } }, @@ -39,7 +44,22 @@ }, "lineRendering": [ { - "color": "#00ff00" + "color": { + "mappings": [ + { + "if": "winter_service=yes", + "then": "#00ff00" + }, + { + "if": "winter_service=limited", + "then": "#ffff00" + }, + { + "if": "winter_service=no", + "then": "#ff0000" + } + ] + } } ], "pointRendering": null, From c465f756d610566375f28a123fc2f8cc8e6f95cc Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 13 Mar 2025 22:19:42 +0100 Subject: [PATCH 8/8] Themes(guideposts): Clean tags when changing --- assets/layers/guidepost/guidepost.json | 30 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/assets/layers/guidepost/guidepost.json b/assets/layers/guidepost/guidepost.json index a13341ea5..1d69cabb9 100644 --- a/assets/layers/guidepost/guidepost.json +++ b/assets/layers/guidepost/guidepost.json @@ -144,7 +144,10 @@ "type": "string", "placeholder": { "en": "Name on the guidepost" - } + }, + "addExtraTags": [ + "noname=" + ] }, "render": { "en": "Name noted on the guidepost: {name}" @@ -155,6 +158,11 @@ "then": { "en": "There is no name noted on this guidepost" } + }, + { + "addExtraTags": [ + "name=" + ] } ] }, @@ -168,7 +176,10 @@ "type": "string", "placeholder": { "en": "Reference number of the guidepost" - } + }, + "addExtraTags": [ + "noref=" + ] }, "render": { "en": "Reference number of the guidepost: {ref}" @@ -178,7 +189,10 @@ "if": "noref=yes", "then": { "en": "There is no reference number noted on this guidepost" - } + }, + "addExtraTags": [ + "ref=" + ] } ] }, @@ -192,7 +206,10 @@ "type": "float", "placeholder": { "en": "Elevation on the guidepost (in meters)" - } + }, + "addExtraTags": [ + "noele=" + ] }, "render": { "en": "Elevation noted on the guidepost: {ele} m" @@ -202,7 +219,10 @@ "if": "noele=yes", "then": { "en": "There is no elevation noted on this guidepost" - } + }, + "addExtraTags": [ + "ele=" + ] } ] }