From c4930a6d22647ae44fcfa9cc89e7a171d18bc113 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 21 Jul 2025 19:54:21 +0200 Subject: [PATCH 01/18] Fix: create target directory if it doesn't exist --- scripts/generateNsiStats.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/generateNsiStats.ts b/scripts/generateNsiStats.ts index 720eac34d..abe1378ae 100644 --- a/scripts/generateNsiStats.ts +++ b/scripts/generateNsiStats.ts @@ -2,7 +2,7 @@ import known_layers from "../src/assets/generated/known_layers.json" import { LayerConfigJson } from "../src/Models/ThemeConfig/Json/LayerConfigJson" import { TagUtils } from "../src/Logic/Tags/TagUtils" import { Utils } from "../src/Utils" -import { copyFileSync, existsSync, readFileSync, writeFileSync } from "fs" +import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs" import ScriptUtils from "./ScriptUtils" import TagRenderingConfig from "../src/Models/ThemeConfig/TagRenderingConfig" import { And } from "../src/Logic/Tags/And" @@ -188,6 +188,12 @@ class GenerateNsiStats extends Script { const src = "./node_modules/name-suggestion-index/dist/" const files = ["featureCollection.min.json", "nsi.min.json", "wikidata.min.json"] console.log(process.cwd()) + + // Ensure the target directory exists + if (!existsSync(target + "stats")) { + mkdirSync(target + "stats", { recursive: true }) + } + for (const file of files) { console.log("Copying ", src + file, target + "/" + file) copyFileSync(src + file, target + file) From 318b7671c0314d396a4c854769011904be387ee0 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 22 Jul 2025 10:50:57 +0200 Subject: [PATCH 02/18] Themes(infrastructure): Add street cabinet layer --- .../layers/street_cabinet/license_info.json | 17 +++ .../layers/street_cabinet/street_cabinet.json | 108 ++++++++++++++++++ .../layers/street_cabinet/street_cabinet.svg | 1 + .../street_cabinet/street_cabinet.svg.license | 2 + assets/layers/utility_pole/utility_pole.json | 66 ++++++++++- .../themes/infrastructure/infrastructure.json | 21 ++++ 6 files changed, 214 insertions(+), 1 deletion(-) create mode 100644 assets/layers/street_cabinet/license_info.json create mode 100644 assets/layers/street_cabinet/street_cabinet.json create mode 100644 assets/layers/street_cabinet/street_cabinet.svg create mode 100644 assets/layers/street_cabinet/street_cabinet.svg.license create mode 100644 assets/themes/infrastructure/infrastructure.json diff --git a/assets/layers/street_cabinet/license_info.json b/assets/layers/street_cabinet/license_info.json new file mode 100644 index 000000000..af56e2bdf --- /dev/null +++ b/assets/layers/street_cabinet/license_info.json @@ -0,0 +1,17 @@ +[ + { + "path": "street_cabinet.svg", + "license": "CC0-1.0", + "authors": [ + "Abu Badali", + "FontAwesome", + "Pieter Vander Vennet", + "Robin van der Linde" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Phoneicon.svg", + "https://commons.wikimedia.org/wiki/File:Power-lightning_icon-icons.com_74466.svg", + "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/assets/svg/teardrop.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/street_cabinet/street_cabinet.json b/assets/layers/street_cabinet/street_cabinet.json new file mode 100644 index 000000000..ef2e26f64 --- /dev/null +++ b/assets/layers/street_cabinet/street_cabinet.json @@ -0,0 +1,108 @@ +{ + "id": "street_cabinet", + "name": { + "en": "Street Cabinets" + }, + "description": { + "en": "Layer showing street cabinets for various utilities." + }, + "source": { + "osmTags": "man_made=street_cabinet" + }, + "minzoom": 15, + "title": { + "render": { + "en": "Street Cabinet" + } + }, + "pointRendering": [ + { + "marker": [ + { + "icon": "./assets/layers/street_cabinet/street_cabinet.svg" + } + ], + "location": [ + "point", + "centroid" + ], + "anchor": "bottom" + } + ], + "presets": [ + { + "title": { + "en": "a street cabinet" + }, + "tags": [ + "man_made=street_cabinet" + ] + } + ], + "tagRenderings": [ + "images", + { + "id": "utility", + "question": { + "en": "What type of utility is this street cabinet for?" + }, + "mappings": [ + { + "if": "utility=power", + "then": { + "en": "This street cabinet is for power distribution." + } + }, + { + "if": "utility=telecom", + "then": { + "en": "This street cabinet is for telecommunications." + } + }, + { + "if": "utility=gas", + "then": { + "en": "This street cabinet is for gas utilities." + } + }, + { + "if": "utility=street_lighting", + "then": { + "en": "This street cabinet is for street lighting." + } + } + ] + }, + { + "builtin": "ref", + "override": { + "question": { + "en": "What is the reference number of this street cabinet?" + }, + "render": { + "en": "The reference number of this street cabinet is {ref}." + } + } + }, + { + "id": "operator", + "question": { + "en": "Who is the operator of this street cabinet?" + }, + "render": { + "en": "This street cabinet is operated by {operator}." + }, + "freeform": { + "key": "operator", + "type": "string", + "placeholder": { + "en": "Operator name" + } + } + } + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": false + } +} \ No newline at end of file diff --git a/assets/layers/street_cabinet/street_cabinet.svg b/assets/layers/street_cabinet/street_cabinet.svg new file mode 100644 index 000000000..a3f24264b --- /dev/null +++ b/assets/layers/street_cabinet/street_cabinet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/street_cabinet/street_cabinet.svg.license b/assets/layers/street_cabinet/street_cabinet.svg.license new file mode 100644 index 000000000..535ad0380 --- /dev/null +++ b/assets/layers/street_cabinet/street_cabinet.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Abu Badali; FontAwesome; Pieter Vander Vennet; Robin van der Linde +SPDX-License-Identifier: CC0-1.0 \ No newline at end of file diff --git a/assets/layers/utility_pole/utility_pole.json b/assets/layers/utility_pole/utility_pole.json index f5caa5691..4b2ccfd99 100644 --- a/assets/layers/utility_pole/utility_pole.json +++ b/assets/layers/utility_pole/utility_pole.json @@ -70,10 +70,74 @@ } } ] + }, + { + "id": "utility", + "question": { + "en": "What type of utility is this pole used for?" + }, + "mappings": [ + { + "if": "utility=power", + "then": { + "en": "This utility pole carries power lines." + } + }, + { + "if": "utility=telecom", + "then": { + "en": "This utility pole carries telecommunications lines." + } + }, + { + "if": "utility=street_lighting", + "then": { + "en": "This utility pole is used for street lighting." + } + } + ], + "multiAnswer": true + }, + { + "id": "material", + "question": { + "en": "What material is this utility pole made of?" + }, + "render": { + "en": "This utility pole is made of {material}." + }, + "freeform": { + "key": "material", + "type": "text", + "placeholder": { + "en": "Material type" + }, + "inline": true + }, + "mappings": [ + { + "if": "material=wood", + "then": { + "en": "This utility pole is made of wood." + } + }, + { + "if": "material=steel", + "then": { + "en": "This utility pole is made of steel." + } + }, + { + "if": "material=concrete", + "then": { + "en": "This utility pole is made of concrete." + } + } + ] } ], "allowMove": { "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file diff --git a/assets/themes/infrastructure/infrastructure.json b/assets/themes/infrastructure/infrastructure.json new file mode 100644 index 000000000..674def81e --- /dev/null +++ b/assets/themes/infrastructure/infrastructure.json @@ -0,0 +1,21 @@ +{ + "id": "infrastructure", + "title": { + "en": "Infrastructure", + "nl": "Infrastructuur" + }, + "description": { + "en": "Map showing all kinds of infrastructure like cables, pipelines, and other utilities.", + "nl": "Kaart met alle soorten infrastructuur zoals kabels, leidingen en andere nutsvoorzieningen." + }, + "icon": "./assets/layers/street_cabinet/street_cabinet.svg", + "layers": [ + { + "builtin": "utility_pole", + "override": { + "minzoom": 17 + } + }, + "street_cabinet" + ] +} \ No newline at end of file From a168f67ccbef1e3143da927f61f656da2ac0585f Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 22 Jul 2025 13:04:57 +0200 Subject: [PATCH 03/18] Themes: add operator question, use it in a few layers --- assets/layers/atm/atm.json | 87 ++++++-------- .../fitness_station/fitness_station.json | 62 +++++----- .../layers/parcel_lockers/parcel_lockers.json | 64 ++++------ assets/layers/postboxes/postboxes.json | 39 +++--- .../public_bookcase/public_bookcase.json | 56 +++++---- assets/layers/questions/questions.json | 31 ++++- assets/layers/recycling/recycling.json | 48 ++++---- .../layers/ticket_machine/ticket_machine.json | 91 +++++++------- .../ticket_validator/ticket_validator.json | 67 +++-------- .../layers/transit_routes/transit_routes.json | 52 ++++---- .../vending_machine/vending_machine.json | 59 ++++------ langs/layers/ca.json | 109 +++++++++-------- langs/layers/cs.json | 109 +++++++++-------- langs/layers/cy.json | 21 ++-- langs/layers/da.json | 16 ++- langs/layers/de.json | 109 +++++++++-------- langs/layers/en.json | 111 ++++++++++-------- langs/layers/es.json | 109 +++++++++-------- langs/layers/eu.json | 16 +-- langs/layers/fr.json | 52 ++++---- langs/layers/he.json | 18 ++- langs/layers/hu.json | 10 +- langs/layers/it.json | 109 +++++++++-------- langs/layers/nb_NO.json | 6 +- langs/layers/nl.json | 99 ++++++++-------- langs/layers/pl.json | 18 ++- langs/layers/pt.json | 14 ++- langs/layers/pt_BR.json | 14 ++- langs/layers/sl.json | 4 +- langs/layers/uk.json | 16 ++- 30 files changed, 814 insertions(+), 802 deletions(-) diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index 34ed9f194..95aedebe5 100644 --- a/assets/layers/atm/atm.json +++ b/assets/layers/atm/atm.json @@ -192,58 +192,41 @@ } }, { - "id": "operator", - "question": { - "en": "What company operates this ATM?", - "de": "Welches Unternehmen betreibt den Geldautomaten?", - "fr": "Quelle société exploite ce DAB ?", - "nl": "Welk bedrijf beheert deze geldautomaat?", - "nb_NO": "Hvilket selskap driver denne minibanken?", - "ca": "Quina companyia opera aquest caixer?", - "cs": "Která společnost provozuje tento bankomat?", - "he": "איזו חברה מפעילה את הכספומט הזה?", - "pl": "Jaka firma obsługuje ten bankomat?", - "pt_BR": "Qual companhia opera esse caixa eletrônico?", - "es": "¿Qué empresa opera este cajero automático?", - "pt": "Qual companhia opera este multibanco?", - "it": "Quale azienda gestisce questo sportello bancomat?" - }, - "render": { - "en": "The ATM is operated by {operator}", - "de": "Der Geldautomat wird betrieben von {operator}", - "fr": "Ce DAB est exploité par {operator}", - "nl": "Deze geldautomaat wordt beheerd door {operator}", - "nb_NO": "Minibanken drives av {operator}", - "ca": "{operator} opera aquest caixer", - "cs": "Bankomat provozuje {operator}", - "he": "הכספומט מופעל על ידי {operator}", - "pl": "Ten bankomat jest obsługiwany przez {operator}", - "pt_BR": "O caixa eletrônico é operado por {operator}", - "es": "El cajero automático es operado por {operator}", - "pt": "O multibanco é operado por {operator}", - "sl": "Ta bankomat upravlja {operator}", - "it": "Lo sportello bancomat è gestito da {operator}" - }, - "freeform": { - "key": "operator", - "type": "string", - "placeholder": { - "en": "Operator", - "de": "Betreiber", - "fr": "Opérateur", - "nl": "Beheerder", - "ca": "Operador", - "cs": "Operátor", - "he": "מפעיל", - "eu": "Operadorea", - "pt_BR": "Operador", - "es": "Operador", - "pt": "Operador", - "it": "Operatore", - "cy": "Gweithredwr" + "builtin": "operator", + "override": { + "condition": "amenity!=bank", + "question": { + "en": "What company operates this ATM?", + "de": "Welches Unternehmen betreibt den Geldautomaten?", + "fr": "Quelle société exploite ce DAB ?", + "nl": "Welk bedrijf beheert deze geldautomaat?", + "nb_NO": "Hvilket selskap driver denne minibanken?", + "ca": "Quina companyia opera aquest caixer?", + "cs": "Která společnost provozuje tento bankomat?", + "he": "איזו חברה מפעילה את הכספומט הזה?", + "pl": "Jaka firma obsługuje ten bankomat?", + "pt_BR": "Qual companhia opera esse caixa eletrônico?", + "es": "¿Qué empresa opera este cajero automático?", + "pt": "Qual companhia opera este multibanco?", + "it": "Quale azienda gestisce questo sportello bancomat?" + }, + "render": { + "en": "The ATM is operated by {operator}", + "de": "Der Geldautomat wird betrieben von {operator}", + "fr": "Ce DAB est exploité par {operator}", + "nl": "Deze geldautomaat wordt beheerd door {operator}", + "nb_NO": "Minibanken drives av {operator}", + "ca": "{operator} opera aquest caixer", + "cs": "Bankomat provozuje {operator}", + "he": "הכספומט מופעל על ידי {operator}", + "pl": "Ten bankomat jest obsługiwany przez {operator}", + "pt_BR": "O caixa eletrônico é operado por {operator}", + "es": "El cajero automático es operado por {operator}", + "pt": "O multibanco é operado por {operator}", + "sl": "Ta bankomat upravlja {operator}", + "it": "Lo sportello bancomat è gestito da {operator}" } - }, - "condition": "amenity!=bank" + } }, "opening_hours_24_7", { @@ -692,4 +675,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file diff --git a/assets/layers/fitness_station/fitness_station.json b/assets/layers/fitness_station/fitness_station.json index 72db0d200..ba87844aa 100644 --- a/assets/layers/fitness_station/fitness_station.json +++ b/assets/layers/fitness_station/fitness_station.json @@ -535,37 +535,37 @@ "multiAnswer": true }, { - "id": "operator", - "question": { - "en": "Who maintains this fitness station?", - "de": "Wer betreibt die Fitness-Station?", - "nl": "Wie beheert dit fitness-toestel?", - "ca": "Qui manté l'estació de fitness?", - "cs": "Kdo spravuje tuto fitness stanici?", - "es": "¿Quién mantiene esta estación de fitness?", - "it": "Chi mantiene questa stazione fitness?" - }, - "render": { - "en": "The fitness station is maintained by {operator}.", - "de": "Die Fitness-Station wird betrieben von {operator}.", - "nl": "Dit fitness-toestel wordt beheerd door {operator}", - "ca": "{operator} manté l'estació de fitness.", - "cs": "Fitness stanici spravuje {operator}.", - "es": "La estación de fitness es mantenida por {operator}.", - "it": "La stazione fitness è mantenuta da {operator}." - }, - "freeform": { - "key": "operator", - "placeholder": { - "en": "Operator of the fitness station", - "de": "Betreiber der Fitness-Station", - "nl": "Beheerder van het fitness-toestel", - "cs": "Provozovatel fitness stanice", - "es": "Operador de la estación de fitness", - "ca": "Operador de l'estació de fitness", - "it": "Gestore della stazione fitness" + "builtin": "operator", + "override": { + "question": { + "en": "Who maintains this fitness station?", + "de": "Wer betreibt die Fitness-Station?", + "nl": "Wie beheert dit fitness-toestel?", + "ca": "Qui manté l'estació de fitness?", + "cs": "Kdo spravuje tuto fitness stanici?", + "es": "¿Quién mantiene esta estación de fitness?", + "it": "Chi mantiene questa stazione fitness?" }, - "type": "string" + "render": { + "en": "The fitness station is maintained by {operator}.", + "de": "Die Fitness-Station wird betrieben von {operator}.", + "nl": "Dit fitness-toestel wordt beheerd door {operator}", + "ca": "{operator} manté l'estació de fitness.", + "cs": "Fitness stanici spravuje {operator}.", + "es": "La estación de fitness es mantenida por {operator}.", + "it": "La stazione fitness è mantenuta da {operator}." + }, + "freeform": { + "placeholder": { + "en": "Operator of the fitness station", + "de": "Betreiber der Fitness-Station", + "nl": "Beheerder van het fitness-toestel", + "cs": "Provozovatel fitness stanice", + "es": "Operador de la estación de fitness", + "ca": "Operador de l'estació de fitness", + "it": "Gestore della stazione fitness" + } + } } }, "opening_hours_24_7" @@ -578,4 +578,4 @@ "enableImproveAccuracy": true }, "allowCopy": true -} +} \ No newline at end of file diff --git a/assets/layers/parcel_lockers/parcel_lockers.json b/assets/layers/parcel_lockers/parcel_lockers.json index 903aec5de..d34eccaa6 100644 --- a/assets/layers/parcel_lockers/parcel_lockers.json +++ b/assets/layers/parcel_lockers/parcel_lockers.json @@ -146,44 +146,30 @@ } }, { - "id": "operator", - "question": { - "en": "What is the operator of the parcel locker?", - "de": "Was ist der Betreiber des Paketschließfachs?", - "nl": "Wie is de beheerder van deze pakketautomaat?", - "ca": "Qui gestiona aquesta bústia intel·ligent?", - "fr": "Quel est l'exploitant de ce casier à colis ?", - "cs": "Kdo je provozovatelem schránky na balíky?", - "es": "¿Cuál es el operador de la taquilla de paquetes?", - "it": "Chi è l'operatore dell'armadietto per pacchi?", - "uk": "Який оператор поштомату?" - }, - "render": { - "en": "This parcel locker is operated by {operator}", - "de": "Dieses Paketschließfach wird von {operator} betrieben", - "nl": "Deze pakketautomaat wordt beheerd door {operator}", - "ca": "Aquesta bústia intel·ligent la gestiona {operator}", - "fr": "Ce casier à colis est exploité par {operator}", - "pl": "Ten paczkomat jest obsługiwany przez {operator}", - "cs": "Tuto schránku na balíky provozuje {operator}", - "es": "Esta taquilla de paquetes es operada por {operator}", - "it": "Questo armadietto per pacchi è gestito da {operator}", - "uk": "Цей посилкова шафка обслуговується компанією {operator}" - }, - "freeform": { - "key": "operator", - "type": "string", - "placeholder": { - "en": "Operator", - "de": "Betreiber", - "nl": "Beheerder", - "ca": "Gestor", - "fr": "Exploitant", - "pl": "Operator", - "cs": "Operátor", - "es": "Operador", - "cy": "Gweithredwr", - "it": "Operatore" + "builtin": "operator", + "override": { + "question": { + "en": "What is the operator of the parcel locker?", + "de": "Was ist der Betreiber des Paketschließfachs?", + "nl": "Wie is de beheerder van deze pakketautomaat?", + "ca": "Qui gestiona aquesta bústia intel·ligent?", + "fr": "Quel est l'exploitant de ce casier à colis ?", + "cs": "Kdo je provozovatelem schránky na balíky?", + "es": "¿Cuál es el operador de la taquilla de paquetes?", + "it": "Chi è l'operatore dell'armadietto per pacchi?", + "uk": "Який оператор поштомату?" + }, + "render": { + "en": "This parcel locker is operated by {operator}", + "de": "Dieses Paketschließfach wird von {operator} betrieben", + "nl": "Deze pakketautomaat wordt beheerd door {operator}", + "ca": "Aquesta bústia intel·ligent la gestiona {operator}", + "fr": "Ce casier à colis est exploité par {operator}", + "pl": "Ten paczkomat jest obsługiwany przez {operator}", + "cs": "Tuto schránku na balíky provozuje {operator}", + "es": "Esta taquilla de paquetes es operada por {operator}", + "it": "Questo armadietto per pacchi è gestito da {operator}", + "uk": "Цей посилкова шафка обслуговується компанією {operator}" } } }, @@ -339,4 +325,4 @@ "enableImproveAccuracy": true }, "allowCopy": true -} +} \ No newline at end of file diff --git a/assets/layers/postboxes/postboxes.json b/assets/layers/postboxes/postboxes.json index 32f746676..6a1894de4 100644 --- a/assets/layers/postboxes/postboxes.json +++ b/assets/layers/postboxes/postboxes.json @@ -145,25 +145,24 @@ "render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }" }, { - "id": "operator", - "question": { - "en": "Who operates this postbox?", - "de": "Wer betreibt diesen Briefkasten?", - "es": "¿Quién gestiona este buzón?", - "ca": "Qui opera aquesta bústia?", - "cs": "Kdo provozuje tuto poštovní schránku?", - "it": "Chi gestisce questa cassetta postale?" - }, - "render": { - "en": "This postbox is operated by {operator}", - "de": "Dieser Briefkasten wird von {operator} betrieben", - "es": "Este buzón es operado por {operator}.", - "ca": "Aquesta bústia està operada per {operator}", - "cs": "Tuto poštovní schránku provozuje {operator}", - "it": "Questa cassetta postale è gestita da {operator}" - }, - "freeform": { - "key": "operator" + "builtin": "operator", + "override": { + "question": { + "en": "Who operates this postbox?", + "de": "Wer betreibt diesen Briefkasten?", + "es": "¿Quién gestiona este buzón?", + "ca": "Qui opera aquesta bústia?", + "cs": "Kdo provozuje tuto poštovní schránku?", + "it": "Chi gestisce questa cassetta postale?" + }, + "render": { + "en": "This postbox is operated by {operator}", + "de": "Dieser Briefkasten wird von {operator} betrieben", + "es": "Este buzón es operado por {operator}.", + "ca": "Aquesta bústia està operada per {operator}", + "cs": "Tuto poštovní schránku provozuje {operator}", + "it": "Questa cassetta postale è gestita da {operator}" + } } } ], @@ -194,4 +193,4 @@ "pakjes" ] } -} +} \ No newline at end of file diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json index 404d51060..84f3e2b2e 100644 --- a/assets/layers/public_bookcase/public_bookcase.json +++ b/assets/layers/public_bookcase/public_bookcase.json @@ -410,34 +410,32 @@ "condition": "indoor=yes" }, { - "id": "public_bookcase-operator", - "question": { - "en": "Who maintains this public bookcase?", - "nl": "Wie is verantwoordelijk voor dit boekenruilkastje?", - "de": "Wer betreibt den Bücherschrank?", - "fr": "Qui entretien cette microbibliothèque ?", - "it": "Chi mantiene questa libreria pubblica?", - "hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?", - "ca": "Qui gestiona aquesta prestatgeria pública?", - "cs": "Kdo tuto veřejnou knihobudku spravuje?", - "es": "¿Quién mantiene este librero público?", - "da": "Hvem står for at vedligeholde dette bogbytteskab?" - }, - "render": { - "en": "Operated by {operator}", - "nl": "Onderhouden door {operator}", - "de": "Betrieben von {operator}", - "fr": "Entretenue par {operator}", - "it": "Gestita da {operator}", - "hu": "Üzemeltető: {operator}", - "ca": "Gestionant per {operator}", - "cs": "Provozuje {operator}", - "es": "Operado por {operator}", - "da": "Drevet af {operator}" - }, - "freeform": { - "type": "string", - "key": "operator" + "builtin": "operator", + "override": { + "question": { + "en": "Who maintains this public bookcase?", + "nl": "Wie is verantwoordelijk voor dit boekenruilkastje?", + "de": "Wer betreibt den Bücherschrank?", + "fr": "Qui entretien cette microbibliothèque ?", + "it": "Chi mantiene questa libreria pubblica?", + "hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?", + "ca": "Qui gestiona aquesta prestatgeria pública?", + "cs": "Kdo tuto veřejnou knihobudku spravuje?", + "es": "¿Quién mantiene este librero público?", + "da": "Hvem står for at vedligeholde dette bogbytteskab?" + }, + "render": { + "en": "This public bookcase is operated by {operator}", + "nl": "Onderhouden door {operator}", + "de": "Betrieben von {operator}", + "fr": "Entretenue par {operator}", + "it": "Gestita da {operator}", + "hu": "Üzemeltető: {operator}", + "ca": "Gestionant per {operator}", + "cs": "Provozuje {operator}", + "es": "Operado por {operator}", + "da": "Drevet af {operator}" + } } }, { @@ -735,4 +733,4 @@ "neededChangesets": 5 }, "allowMove": true -} +} \ No newline at end of file diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json index d52140615..93eca0fc0 100644 --- a/assets/layers/questions/questions.json +++ b/assets/layers/questions/questions.json @@ -3390,6 +3390,35 @@ "key": "ref" } }, + { + "id": "operator", + "question": { + "en": "What company operates this place?" + }, + "render": { + "en": "This place is operated by {operator}" + }, + "freeform": { + "key": "operator", + "type": "string", + "placeholder": { + "en": "Operator", + "de": "Betreiber", + "fr": "Opérateur", + "nl": "Beheerder", + "ca": "Operador", + "cs": "Operátor", + "he": "מפעיל", + "eu": "Operadorea", + "pt_BR": "Operador", + "pl": "Operator", + "es": "Operador", + "pt": "Operador", + "it": "Operatore", + "cy": "Gweithredwr" + } + } + }, { "id": "child_highchair", "question": { @@ -3529,4 +3558,4 @@ } } ] -} +} \ No newline at end of file diff --git a/assets/layers/recycling/recycling.json b/assets/layers/recycling/recycling.json index 52758d5c6..6348f4a92 100644 --- a/assets/layers/recycling/recycling.json +++ b/assets/layers/recycling/recycling.json @@ -1328,30 +1328,28 @@ "multiAnswer": true }, { - "id": "operator", - "question": { - "en": "What company operates this recycling facility?", - "nl": "Wat is de beheerder van deze recyclingfaciliteit?", - "de": "Welches Unternehmen betreibt diese Recyclinganlage?", - "es": "¿Qué empresa opera esta instalación de reciclaje?", - "it": "Quale azienda gestisce questa struttura di riciclaggio?", - "ca": "Quina empresa opera aquesta infraestructura de reciclatge?", - "fr": "Quelle entreprise gère ce point de recyclage ?", - "cs": "Jaká společnost provozuje toto recyklační zařízení?" - }, - "render": { - "en": "This recycling facility is operated by {operator}", - "nl": "Deze recyclingfaciliteit wordt beheerd door {operator}", - "de": "Die Recyclingeinrichtung wird betrieben von {operator}", - "es": "Esta instalación de reciclaje está operada por {operator}", - "it": "Questa struttura di riciclaggio è gestita da {operator}", - "ca": "Aquesta infraestuctura de reciclatge està operada per {operator}", - "fr": "Ce point de recyclage est géré par {operator}", - "cs": "Toto recyklační zařízení provozuje {operator}" - }, - "freeform": { - "key": "operator", - "type": "string" + "builtin": "operator", + "override": { + "question": { + "en": "What company operates this recycling facility?", + "nl": "Wat is de beheerder van deze recyclingfaciliteit?", + "de": "Welches Unternehmen betreibt diese Recyclinganlage?", + "es": "¿Qué empresa opera esta instalación de reciclaje?", + "it": "Quale azienda gestisce questa struttura di riciclaggio?", + "ca": "Quina empresa opera aquesta infraestructura de reciclatge?", + "fr": "Quelle entreprise gère ce point de recyclage ?", + "cs": "Jaká společnost provozuje toto recyklační zařízení?" + }, + "render": { + "en": "This recycling facility is operated by {operator}", + "nl": "Deze recyclingfaciliteit wordt beheerd door {operator}", + "de": "Die Recyclingeinrichtung wird betrieben von {operator}", + "es": "Esta instalación de reciclaje está operada por {operator}", + "it": "Questa struttura di riciclaggio è gestita da {operator}", + "ca": "Aquesta infraestuctura de reciclatge està operada per {operator}", + "fr": "Ce point de recyclage est géré par {operator}", + "cs": "Toto recyklační zařízení provozuje {operator}" + } } }, { @@ -1906,4 +1904,4 @@ "enableRelocation": true, "enableImproveAccuracy": true } -} +} \ No newline at end of file diff --git a/assets/layers/ticket_machine/ticket_machine.json b/assets/layers/ticket_machine/ticket_machine.json index f1eee9173..339a9d4ae 100644 --- a/assets/layers/ticket_machine/ticket_machine.json +++ b/assets/layers/ticket_machine/ticket_machine.json @@ -79,56 +79,45 @@ "images", "level", { - "id": "operator", - "question": { - "en": "Who is the operator of this ticket machine?", - "de": "Wer ist der Betreiber dieses Fahrkartenautomaten?", - "nl": "Wie is de beheerder van deze kaartautomaat?", - "ca": "Qui és l'operador d'aquesta màquina de venda de bitllets?", - "cs": "Kdo je provozovatelem tohoto automatu na jízdenky?", - "es": "¿Quién es el operador de esta máquina expendedora de billetes?", - "it": "Chi è l'operatore di questa biglietteria automatica?" - }, - "render": { - "en": "This ticket machine is operated by {operator}", - "de": "Dieser Fahrkartenautomat wird betrieben von {operator}", - "nl": "Deze kaartautomaat wordt beheerd door {operator}", - "ca": "{operator} opera aquesta màquina de bitllets", - "cs": "Tento automat na jízdenky provozuje {operator}", - "es": "Esta máquina expendedora de billetes está operada por {operator}", - "it": "Questa biglietteria automatica è gestita da {operator}" - }, - "freeform": { - "key": "operator", - "type": "string", - "placeholder": { - "en": "Name of the operator", - "de": "Name des Betreibers", - "nl": "Naam van de beheerder", - "ca": "Nom de l'operador", - "cs": "Jméno operátora", - "es": "Nombre del operador", - "it": "Nome dell'operatore" - } - }, - "mappings": [ - { - "if": "operator=Nederlandse Spoorwegen", - "then": { - "en": "Dutch Railways (NS)", - "nl": "Nederlandse Spoorwegen (NS)", - "de": "Niederländische Eisenbahn (NS)", - "ca": "Ferrocarrils holandesos (NS)", - "cs": "Nizozemské dráhy (NS)", - "es": "Ferrocarriles Holandeses (NS)", - "it": "Ferrovie Olandesi (NS)" - }, - "addExtraTags": [ - "operator:wikidata=Q23076" - ], - "hideInAnswer": "_country!=nl" - } - ] + "builtin": "operator", + "override": { + "question": { + "en": "Who is the operator of this ticket machine?", + "de": "Wer ist der Betreiber dieses Fahrkartenautomaten?", + "nl": "Wie is de beheerder van deze kaartautomaat?", + "ca": "Qui és l'operador d'aquesta màquina de venda de bitllets?", + "cs": "Kdo je provozovatelem tohoto automatu na jízdenky?", + "es": "¿Quién es el operador de esta máquina expendedora de billetes?", + "it": "Chi è l'operatore di questa biglietteria automatica?" + }, + "render": { + "en": "This ticket machine is operated by {operator}", + "de": "Dieser Fahrkartenautomat wird betrieben von {operator}", + "nl": "Deze kaartautomaat wordt beheerd door {operator}", + "ca": "{operator} opera aquesta màquina de bitllets", + "cs": "Tento automat na jízdenky provozuje {operator}", + "es": "Esta máquina expendedora de billetes está operada por {operator}", + "it": "Questa biglietteria automatica è gestita da {operator}" + }, + "mappings+": [ + { + "if": "operator=Nederlandse Spoorwegen", + "then": { + "en": "Dutch Railways (NS)", + "nl": "Nederlandse Spoorwegen (NS)", + "de": "Niederländische Eisenbahn (NS)", + "ca": "Ferrocarrils holandesos (NS)", + "cs": "Nizozemské dráhy (NS)", + "es": "Ferrocarriles Holandeses (NS)", + "it": "Ferrovie Olandesi (NS)" + }, + "addExtraTags": [ + "operator:wikidata=Q23076" + ], + "hideInAnswer": "_country!=nl" + } + ] + } }, "payment-options-split", "denominations-coins", @@ -136,4 +125,4 @@ ], "deletion": true, "allowMove": true -} +} \ No newline at end of file diff --git a/assets/layers/ticket_validator/ticket_validator.json b/assets/layers/ticket_validator/ticket_validator.json index 18daf5aa5..78f802ebd 100644 --- a/assets/layers/ticket_validator/ticket_validator.json +++ b/assets/layers/ticket_validator/ticket_validator.json @@ -104,54 +104,25 @@ "condition": "barrier~*" }, { - "id": "validator-operator", - "question": { - "en": "Who is the operator of this ticket validator?", - "de": "Wer ist der Betreiber dieses Fahrkartenentwerters?", - "ca": "Qui és l'operador d'aquest validador de bitllets?", - "cs": "Kdo je provozovatelem tohoto validátoru jízdenek?", - "es": "¿Quién es el operador de este validador de billetes?", - "it": "Chi è l'operatore di questo validatore di biglietti?" - }, - "render": { - "en": "This ticket validator is operated by {operator}", - "de": "Dieser Fahrkartenentwerter wird betrieben von {operator}", - "ca": "{operator} opera aquest validador de bitllets", - "cs": "Tento validátor jízdenek provozuje {operator}", - "es": "Este validador de billetes está operado por {operator}", - "it": "Questo validatore di biglietti è gestito da {operator}" - }, - "freeform": { - "key": "operator", - "type": "string", - "placeholder": { - "en": "Name of the operator", - "de": "Name des Betreibers", - "nl": "Naam van de beheerder", - "ca": "Nom de l'operador", - "cs": "Jméno operátora", - "es": "Nombre del operador", - "it": "Nome dell'operatore" + "builtin": "operator", + "override": { + "question": { + "en": "Who is the operator of this ticket validator?", + "de": "Wer ist der Betreiber dieses Fahrkartenentwerters?", + "ca": "Qui és l'operador d'aquest validador de bitllets?", + "cs": "Kdo je provozovatelem tohoto validátoru jízdenek?", + "es": "¿Quién es el operador de este validador de billetes?", + "it": "Chi è l'operatore di questo validatore di biglietti?" + }, + "render": { + "en": "This ticket validator is operated by {operator}", + "de": "Dieser Fahrkartenentwerter wird betrieben von {operator}", + "ca": "{operator} opera aquest validador de bitllets", + "cs": "Tento validátor jízdenek provozuje {operator}", + "es": "Este validador de billetes está operado por {operator}", + "it": "Questo validatore di biglietti è gestito da {operator}" } - }, - "mappings": [ - { - "if": "operator=Nederlandse Spoorwegen", - "then": { - "en": "Dutch Railways (NS)", - "nl": "Nederlandse Spoorwegen (NS)", - "de": "Niederländische Eisenbahn (NS)", - "ca": "Ferrocarrils holandesos (NS)", - "cs": "Nizozemské dráhy (NS)", - "es": "Ferrocarriles Holandeses (NS)", - "it": "Ferrovie Olandesi (NS)" - }, - "addExtraTags": [ - "operator:wikidata=Q23076" - ], - "hideInAnswer": "_country!=nl" - } - ] + } }, { "builtin": "payment-options", @@ -189,4 +160,4 @@ ], "deletion": true, "allowMove": true -} +} \ No newline at end of file diff --git a/assets/layers/transit_routes/transit_routes.json b/assets/layers/transit_routes/transit_routes.json index c756272cb..2d1b1ca77 100644 --- a/assets/layers/transit_routes/transit_routes.json +++ b/assets/layers/transit_routes/transit_routes.json @@ -251,32 +251,30 @@ } }, { - "id": "operator", - "question": { - "en": "What company operates this bus line?", - "de": "Welches Unternehmen betreibt die Buslinie?", - "nl": "Welk bedrijf exploiteert deze buslijn?", - "da": "Hvilket selskab driver denne buslinje?", - "ca": "Quina companyia opera aquesta línia d'autobús?", - "cs": "Jaká společnost provozuje tuto autobusovou linku?", - "es": "¿Qué compañía opera esta línea de autobús?", - "it": "Quale azienda gestisce questa linea di autobus?" - }, - "render": { - "en": "This bus line is operated by {operator}", - "de": "Die Buslinie wird betrieben von {operator}", - "nl": "Deze buslijn wordt geëxploiteerd door {operator}", - "da": "Denne buslinje drives af {operator}", - "ca": "{operator} opera aquesta línea d'autobús", - "fr": "Cette ligne de bus est gérée par {operator}", - "cs": "Tuto autobusovou linku provozuje {operator}", - "es": "Esta línea de autobús es operada por {operator}", - "it": "Questa linea di autobus è gestita da {operator}", - "uk": "Ця автобусна лінія обслуговується {operator}" - }, - "freeform": { - "key": "operator", - "type": "string" + "builtin": "operator", + "override": { + "question": { + "en": "What company operates this bus line?", + "de": "Welches Unternehmen betreibt die Buslinie?", + "nl": "Welk bedrijf exploiteert deze buslijn?", + "da": "Hvilket selskab driver denne buslinje?", + "ca": "Quina companyia opera aquesta línia d'autobús?", + "cs": "Jaká společnost provozuje tuto autobusovou linku?", + "es": "¿Qué compañía opera esta línea de autobús?", + "it": "Quale azienda gestisce questa linea di autobus?" + }, + "render": { + "en": "This bus line is operated by {operator}", + "de": "Die Buslinie wird betrieben von {operator}", + "nl": "Deze buslijn wordt geëxploiteerd door {operator}", + "da": "Denne buslinje drives af {operator}", + "ca": "{operator} opera aquesta línea d'autobús", + "fr": "Cette ligne de bus est gérée par {operator}", + "cs": "Tuto autobusovou linku provozuje {operator}", + "es": "Esta línea de autobús es operada por {operator}", + "it": "Questa linea di autobus è gestita da {operator}", + "uk": "Ця автобусна лінія обслуговується {operator}" + } } } ], @@ -288,4 +286,4 @@ } } } -} +} \ No newline at end of file diff --git a/assets/layers/vending_machine/vending_machine.json b/assets/layers/vending_machine/vending_machine.json index e237571be..1ba7341ea 100644 --- a/assets/layers/vending_machine/vending_machine.json +++ b/assets/layers/vending_machine/vending_machine.json @@ -908,40 +908,29 @@ "denominations-coins", "denominations-notes", { - "id": "operator", - "question": { - "en": "Who operates this vending machine?", - "nl": "Wie beheert deze verkoopautomaat?", - "de": "Wer betreibt diesen Verkaufsautomaten?", - "fr": "Qui exploite ce distributeur ?", - "ca": "Qui opera aquesta màquina expenedora?", - "cs": "Kdo provozuje tento automat?", - "es": "¿Quién opera esta máquina expendedora?", - "uk": "Хто керує цим автоматом?", - "it": "Chi gestisce questo distributore automatico?" - }, - "render": { - "en": "This vending machine is operated by {operator}", - "nl": "Deze verkoopautomaat wordt beheerd door {operator}", - "de": "Dieser Verkaufsautomat wird betrieben von {operator}", - "fr": "Ce distributeur est exploité par {operator}", - "ca": "{operator} gestiona aquesta màquina expenedora", - "cs": "Tento prodejní automat provozuje {operator}", - "es": "Esta máquina expendedora es operada por {operator}", - "uk": "Цим торговим автоматом керує {operator}", - "it": "Questo distributore automatico è gestito da {operator}" - }, - "freeform": { - "key": "operator", - "placeholder": { - "en": "Name of operator", - "nl": "Naam van beheerder", - "de": "Name des Betreibers", - "fr": "Nom de l'exploitant", - "ca": "Nom de l'operadora", - "cs": "Jméno provozovatele", - "es": "Nombre del operador", - "it": "Nome dell'operatore" + "builtin": "operator", + "override": { + "question": { + "en": "Who operates this vending machine?", + "nl": "Wie beheert deze verkoopautomaat?", + "de": "Wer betreibt diesen Verkaufsautomaten?", + "fr": "Qui exploite ce distributeur ?", + "ca": "Qui opera aquesta màquina expenedora?", + "cs": "Kdo provozuje tento automat?", + "es": "¿Quién opera esta máquina expendedora?", + "uk": "Хто керує цим автоматом?", + "it": "Chi gestisce questo distributore automatico?" + }, + "render": { + "en": "This vending machine is operated by {operator}", + "nl": "Deze verkoopautomaat wordt beheerd door {operator}", + "de": "Dieser Verkaufsautomat wird betrieben von {operator}", + "fr": "Ce distributeur est exploité par {operator}", + "ca": "{operator} gestiona aquesta màquina expenedora", + "cs": "Tento prodejní automat provozuje {operator}", + "es": "Esta máquina expendedora es operada por {operator}", + "uk": "Цим торговим автоматом керує {operator}", + "it": "Questo distributore automatico è gestito da {operator}" } } }, @@ -1598,4 +1587,4 @@ "enableRelocation": true }, "allowCopy": true -} +} \ No newline at end of file diff --git a/langs/layers/ca.json b/langs/layers/ca.json index cf8c4a6dc..54dd593b5 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -751,11 +751,10 @@ "render": "El nom d'aquest caixer és {name}" }, "operator": { - "freeform": { - "placeholder": "Operador" - }, - "question": "Quina companyia opera aquest caixer?", - "render": "{operator} opera aquest caixer" + "override": { + "question": "Quina companyia opera aquest caixer?", + "render": "{operator} opera aquest caixer" + } }, "speech_output": { "mappings": { @@ -5732,11 +5731,13 @@ "render": "L'estació de fitness es diu {name}" }, "operator": { - "freeform": { - "placeholder": "Operador de l'estació de fitness" - }, - "question": "Qui manté l'estació de fitness?", - "render": "{operator} manté l'estació de fitness." + "override": { + "freeform": { + "placeholder": "Operador de l'estació de fitness" + }, + "question": "Qui manté l'estació de fitness?", + "render": "{operator} manté l'estació de fitness." + } }, "type": { "mappings": { @@ -7890,11 +7891,10 @@ "question": "Pots enviar paquets des d'aquesta bústia intel·ligent?" }, "operator": { - "freeform": { - "placeholder": "Gestor" - }, - "question": "Qui gestiona aquesta bústia intel·ligent?", - "render": "Aquesta bústia intel·ligent la gestiona {operator}" + "override": { + "question": "Qui gestiona aquesta bústia intel·ligent?", + "render": "Aquesta bústia intel·ligent la gestiona {operator}" + } }, "pickup": { "mappings": { @@ -8501,8 +8501,10 @@ }, "tagRenderings": { "operator": { - "question": "Qui opera aquesta bústia?", - "render": "Aquesta bústia està operada per {operator}" + "override": { + "question": "Qui opera aquesta bústia?", + "render": "Aquesta bústia està operada per {operator}" + } } }, "title": { @@ -8770,6 +8772,12 @@ }, "question": "Aquesta prestatgeria es troba a l'exterior?" }, + "operator": { + "override": { + "question": "Qui gestiona aquesta prestatgeria pública?", + "render": "Gestionant per {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Nom de la xarxa" @@ -8795,10 +8803,6 @@ "question": "Com es diu aquesta prestatgeria pública?", "render": "El nom d'aquesta prestatgeria és {name}" }, - "public_bookcase-operator": { - "question": "Qui gestiona aquesta prestatgeria pública?", - "render": "Gestionant per {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -9140,6 +9144,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operador" + } + }, "payment-options": { "mappings": { "0": { @@ -9561,8 +9570,10 @@ } }, "operator": { - "question": "Quina empresa opera aquesta infraestructura de reciclatge?", - "render": "Aquesta infraestuctura de reciclatge està operada per {operator}" + "override": { + "question": "Quina empresa opera aquesta infraestructura de reciclatge?", + "render": "Aquesta infraestuctura de reciclatge està operada per {operator}" + } }, "recycling-accepts": { "mappings": { @@ -11854,16 +11865,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Nom de l'operador" - }, - "mappings": { - "0": { - "then": "Ferrocarrils holandesos (NS)" - } - }, - "question": "Qui és l'operador d'aquesta màquina de venda de bitllets?", - "render": "{operator} opera aquesta màquina de bitllets" + "override": { + "mappings+": { + "0": { + "then": "Ferrocarrils holandesos (NS)" + } + }, + "question": "Qui és l'operador d'aquesta màquina de venda de bitllets?", + "render": "{operator} opera aquesta màquina de bitllets" + } } }, "title": { @@ -11888,6 +11898,12 @@ }, "render": "Aquest validador de bitllets forma part d'una barrera de tipus {barrier}" }, + "operator": { + "override": { + "question": "Qui és l'operador d'aquest validador de bitllets?", + "render": "{operator} opera aquest validador de bitllets" + } + }, "payment-options": { "override": { "mappings+": { @@ -11899,18 +11915,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Nom de l'operador" - }, - "mappings": { - "0": { - "then": "Ferrocarrils holandesos (NS)" - } - }, - "question": "Qui és l'operador d'aquest validador de bitllets?", - "render": "{operator} opera aquest validador de bitllets" } }, "title": { @@ -12419,8 +12423,10 @@ "render": "Aquesta línea d'autobús és part de la xarxa {network}" }, "operator": { - "question": "Quina companyia opera aquesta línia d'autobús?", - "render": "{operator} opera aquesta línea d'autobús" + "override": { + "question": "Quina companyia opera aquesta línia d'autobús?", + "render": "{operator} opera aquesta línea d'autobús" + } }, "to": { "question": "Quin és el punt final d'aquesta línea d'autobús?", @@ -13409,11 +13415,10 @@ "question": "Aquesta màquina expenedora encara funciona?" }, "operator": { - "freeform": { - "placeholder": "Nom de l'operadora" - }, - "question": "Qui opera aquesta màquina expenedora?", - "render": "{operator} gestiona aquesta màquina expenedora" + "override": { + "question": "Qui opera aquesta màquina expenedora?", + "render": "{operator} gestiona aquesta màquina expenedora" + } }, "phone": { "override": { diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 2327a1146..319fb8195 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -836,11 +836,10 @@ "render": "Název tohoto bankomatu je {name}" }, "operator": { - "freeform": { - "placeholder": "Operátor" - }, - "question": "Která společnost provozuje tento bankomat?", - "render": "Bankomat provozuje {operator}" + "override": { + "question": "Která společnost provozuje tento bankomat?", + "render": "Bankomat provozuje {operator}" + } }, "speech_output": { "mappings": { @@ -5994,11 +5993,13 @@ "render": "Tato fitness stanice se jmenuje {name}" }, "operator": { - "freeform": { - "placeholder": "Provozovatel fitness stanice" - }, - "question": "Kdo spravuje tuto fitness stanici?", - "render": "Fitness stanici spravuje {operator}." + "override": { + "freeform": { + "placeholder": "Provozovatel fitness stanice" + }, + "question": "Kdo spravuje tuto fitness stanici?", + "render": "Fitness stanici spravuje {operator}." + } }, "type": { "mappings": { @@ -8426,11 +8427,10 @@ "question": "Lze z této schránky na balíky odesílat balíky?" }, "operator": { - "freeform": { - "placeholder": "Operátor" - }, - "question": "Kdo je provozovatelem schránky na balíky?", - "render": "Tuto schránku na balíky provozuje {operator}" + "override": { + "question": "Kdo je provozovatelem schránky na balíky?", + "render": "Tuto schránku na balíky provozuje {operator}" + } }, "pickup": { "mappings": { @@ -9037,8 +9037,10 @@ }, "tagRenderings": { "operator": { - "question": "Kdo provozuje tuto poštovní schránku?", - "render": "Tuto poštovní schránku provozuje {operator}" + "override": { + "question": "Kdo provozuje tuto poštovní schránku?", + "render": "Tuto poštovní schránku provozuje {operator}" + } } }, "title": { @@ -9309,6 +9311,12 @@ }, "question": "Je tato knihobudka umístěna venku?" }, + "operator": { + "override": { + "question": "Kdo tuto veřejnou knihobudku spravuje?", + "render": "Provozuje {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Název sítě" @@ -9334,10 +9342,6 @@ "question": "Jak se jmenuje tato knihobudka?", "render": "Název této knihobudky je {name}" }, - "public_bookcase-operator": { - "question": "Kdo tuto veřejnou knihobudku spravuje?", - "render": "Provozuje {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -9693,6 +9697,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operátor" + } + }, "payment-options": { "mappings": { "0": { @@ -10148,8 +10157,10 @@ } }, "operator": { - "question": "Jaká společnost provozuje toto recyklační zařízení?", - "render": "Toto recyklační zařízení provozuje {operator}" + "override": { + "question": "Jaká společnost provozuje toto recyklační zařízení?", + "render": "Toto recyklační zařízení provozuje {operator}" + } }, "recycling-accepts": { "mappings": { @@ -12508,16 +12519,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Jméno operátora" - }, - "mappings": { - "0": { - "then": "Nizozemské dráhy (NS)" - } - }, - "question": "Kdo je provozovatelem tohoto automatu na jízdenky?", - "render": "Tento automat na jízdenky provozuje {operator}" + "override": { + "mappings+": { + "0": { + "then": "Nizozemské dráhy (NS)" + } + }, + "question": "Kdo je provozovatelem tohoto automatu na jízdenky?", + "render": "Tento automat na jízdenky provozuje {operator}" + } } }, "title": { @@ -12542,6 +12552,12 @@ }, "render": "Tento validátor vstupenek je součástí bariéry typu {barrier}" }, + "operator": { + "override": { + "question": "Kdo je provozovatelem tohoto validátoru jízdenek?", + "render": "Tento validátor jízdenek provozuje {operator}" + } + }, "payment-options": { "override": { "mappings+": { @@ -12553,18 +12569,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Jméno operátora" - }, - "mappings": { - "0": { - "then": "Nizozemské dráhy (NS)" - } - }, - "question": "Kdo je provozovatelem tohoto validátoru jízdenek?", - "render": "Tento validátor jízdenek provozuje {operator}" } }, "title": { @@ -13205,8 +13209,10 @@ "render": "Tato autobusová linka je součástí sítě {network}" }, "operator": { - "question": "Jaká společnost provozuje tuto autobusovou linku?", - "render": "Tuto autobusovou linku provozuje {operator}" + "override": { + "question": "Jaká společnost provozuje tuto autobusovou linku?", + "render": "Tuto autobusovou linku provozuje {operator}" + } }, "to": { "question": "Jaký je konečný bod této autobusové linky?", @@ -14247,11 +14253,10 @@ "question": "Je tento automat stále v provozu?" }, "operator": { - "freeform": { - "placeholder": "Jméno provozovatele" - }, - "question": "Kdo provozuje tento automat?", - "render": "Tento prodejní automat provozuje {operator}" + "override": { + "question": "Kdo provozuje tento automat?", + "render": "Tento prodejní automat provozuje {operator}" + } }, "phone": { "override": { diff --git a/langs/layers/cy.json b/langs/layers/cy.json index eab8ab650..54dbfc505 100644 --- a/langs/layers/cy.json +++ b/langs/layers/cy.json @@ -96,13 +96,6 @@ }, "atm": { "name": "Peiriannau Codi Arian", - "tagRenderings": { - "operator": { - "freeform": { - "placeholder": "Gweithredwr" - } - } - }, "title": { "render": "Peiriant Codi Arian" } @@ -534,11 +527,6 @@ "placeholder": "Masnach" } }, - "operator": { - "freeform": { - "placeholder": "Gweithredwr" - } - }, "ref": { "freeform": { "placeholder": "Cyfeirnod" @@ -576,6 +564,15 @@ "render": "Blwch Post" } }, + "questions": { + "tagRenderings": { + "operator": { + "freeform": { + "placeholder": "Gweithredwr" + } + } + } + }, "railway_platforms": { "title": { "render": "Platfform" diff --git a/langs/layers/da.json b/langs/layers/da.json index a069da640..d788ed127 100644 --- a/langs/layers/da.json +++ b/langs/layers/da.json @@ -2439,6 +2439,12 @@ }, "question": "Er dette bogbytteskab placeret udendørs?" }, + "operator": { + "override": { + "question": "Hvem står for at vedligeholde dette bogbytteskab?", + "render": "Drevet af {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Navn på netværket" @@ -2464,10 +2470,6 @@ "question": "Hvad er navnet på dette bogbytteskab?", "render": "Navnet på dette bogbytteskab er {name}" }, - "public_bookcase-operator": { - "question": "Hvem står for at vedligeholde dette bogbytteskab?", - "render": "Drevet af {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -3395,8 +3397,10 @@ "question": "Hvilket netværk tilhører denne buslinje?" }, "operator": { - "question": "Hvilket selskab driver denne buslinje?", - "render": "Denne buslinje drives af {operator}" + "override": { + "question": "Hvilket selskab driver denne buslinje?", + "render": "Denne buslinje drives af {operator}" + } }, "to": { "question": "Hvad er endestationen for denne buslinje?", diff --git a/langs/layers/de.json b/langs/layers/de.json index 164c09ead..7b8869eeb 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -751,11 +751,10 @@ "render": "Der Name des Geldautomaten ist {name}" }, "operator": { - "freeform": { - "placeholder": "Betreiber" - }, - "question": "Welches Unternehmen betreibt den Geldautomaten?", - "render": "Der Geldautomat wird betrieben von {operator}" + "override": { + "question": "Welches Unternehmen betreibt den Geldautomaten?", + "render": "Der Geldautomat wird betrieben von {operator}" + } }, "speech_output": { "mappings": { @@ -5710,11 +5709,13 @@ "render": "Die Fitness-Station heißt {name}" }, "operator": { - "freeform": { - "placeholder": "Betreiber der Fitness-Station" - }, - "question": "Wer betreibt die Fitness-Station?", - "render": "Die Fitness-Station wird betrieben von {operator}." + "override": { + "freeform": { + "placeholder": "Betreiber der Fitness-Station" + }, + "question": "Wer betreibt die Fitness-Station?", + "render": "Die Fitness-Station wird betrieben von {operator}." + } }, "type": { "mappings": { @@ -7854,11 +7855,10 @@ "question": "Können Sie von diesem Paketschließfach aus Pakete versenden?" }, "operator": { - "freeform": { - "placeholder": "Betreiber" - }, - "question": "Was ist der Betreiber des Paketschließfachs?", - "render": "Dieses Paketschließfach wird von {operator} betrieben" + "override": { + "question": "Was ist der Betreiber des Paketschließfachs?", + "render": "Dieses Paketschließfach wird von {operator} betrieben" + } }, "pickup": { "mappings": { @@ -8465,8 +8465,10 @@ }, "tagRenderings": { "operator": { - "question": "Wer betreibt diesen Briefkasten?", - "render": "Dieser Briefkasten wird von {operator} betrieben" + "override": { + "question": "Wer betreibt diesen Briefkasten?", + "render": "Dieser Briefkasten wird von {operator} betrieben" + } } }, "title": { @@ -8734,6 +8736,12 @@ }, "question": "Befindet sich der Bücherschrank im Freien?" }, + "operator": { + "override": { + "question": "Wer betreibt den Bücherschrank?", + "render": "Betrieben von {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Name des Netzwerks" @@ -8759,10 +8767,6 @@ "question": "Wie lautet der Name des Bücherschranks?", "render": "Der Name des Bücherschranks lautet {name}" }, - "public_bookcase-operator": { - "question": "Wer betreibt den Bücherschrank?", - "render": "Betrieben von {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -9104,6 +9108,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Betreiber" + } + }, "payment-options": { "mappings": { "0": { @@ -9525,8 +9534,10 @@ } }, "operator": { - "question": "Welches Unternehmen betreibt diese Recyclinganlage?", - "render": "Die Recyclingeinrichtung wird betrieben von {operator}" + "override": { + "question": "Welches Unternehmen betreibt diese Recyclinganlage?", + "render": "Die Recyclingeinrichtung wird betrieben von {operator}" + } }, "recycling-accepts": { "mappings": { @@ -11843,16 +11854,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Name des Betreibers" - }, - "mappings": { - "0": { - "then": "Niederländische Eisenbahn (NS)" - } - }, - "question": "Wer ist der Betreiber dieses Fahrkartenautomaten?", - "render": "Dieser Fahrkartenautomat wird betrieben von {operator}" + "override": { + "mappings+": { + "0": { + "then": "Niederländische Eisenbahn (NS)" + } + }, + "question": "Wer ist der Betreiber dieses Fahrkartenautomaten?", + "render": "Dieser Fahrkartenautomat wird betrieben von {operator}" + } } }, "title": { @@ -11877,6 +11887,12 @@ }, "render": "Dieser Fahrkartenentwerter ist Teil einer Zugangsbarriere vom Typ {barrier}" }, + "operator": { + "override": { + "question": "Wer ist der Betreiber dieses Fahrkartenentwerters?", + "render": "Dieser Fahrkartenentwerter wird betrieben von {operator}" + } + }, "payment-options": { "override": { "mappings+": { @@ -11888,18 +11904,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Name des Betreibers" - }, - "mappings": { - "0": { - "then": "Niederländische Eisenbahn (NS)" - } - }, - "question": "Wer ist der Betreiber dieses Fahrkartenentwerters?", - "render": "Dieser Fahrkartenentwerter wird betrieben von {operator}" } }, "title": { @@ -12408,8 +12412,10 @@ "render": "Die Buslinie gehört zum Verkehrsverbund {network}" }, "operator": { - "question": "Welches Unternehmen betreibt die Buslinie?", - "render": "Die Buslinie wird betrieben von {operator}" + "override": { + "question": "Welches Unternehmen betreibt die Buslinie?", + "render": "Die Buslinie wird betrieben von {operator}" + } }, "to": { "question": "Wo ist der Endpunkt der Buslinie?", @@ -13388,11 +13394,10 @@ "question": "Ist dieser Automat in Betrieb?" }, "operator": { - "freeform": { - "placeholder": "Name des Betreibers" - }, - "question": "Wer betreibt diesen Verkaufsautomaten?", - "render": "Dieser Verkaufsautomat wird betrieben von {operator}" + "override": { + "question": "Wer betreibt diesen Verkaufsautomaten?", + "render": "Dieser Verkaufsautomat wird betrieben von {operator}" + } }, "phone": { "override": { diff --git a/langs/layers/en.json b/langs/layers/en.json index ee4c83d3e..520abe13e 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -836,11 +836,10 @@ "render": "The name of this ATM is {name}" }, "operator": { - "freeform": { - "placeholder": "Operator" - }, - "question": "What company operates this ATM?", - "render": "The ATM is operated by {operator}" + "override": { + "question": "What company operates this ATM?", + "render": "The ATM is operated by {operator}" + } }, "speech_output": { "mappings": { @@ -6034,11 +6033,13 @@ "render": "This fitness station is called {name}" }, "operator": { - "freeform": { - "placeholder": "Operator of the fitness station" - }, - "question": "Who maintains this fitness station?", - "render": "The fitness station is maintained by {operator}." + "override": { + "freeform": { + "placeholder": "Operator of the fitness station" + }, + "question": "Who maintains this fitness station?", + "render": "The fitness station is maintained by {operator}." + } }, "type": { "mappings": { @@ -8498,11 +8499,10 @@ "question": "Can you send packages from this parcel locker?" }, "operator": { - "freeform": { - "placeholder": "Operator" - }, - "question": "What is the operator of the parcel locker?", - "render": "This parcel locker is operated by {operator}" + "override": { + "question": "What is the operator of the parcel locker?", + "render": "This parcel locker is operated by {operator}" + } }, "pickup": { "mappings": { @@ -9144,8 +9144,10 @@ }, "tagRenderings": { "operator": { - "question": "Who operates this postbox?", - "render": "This postbox is operated by {operator}" + "override": { + "question": "Who operates this postbox?", + "render": "This postbox is operated by {operator}" + } } }, "title": { @@ -9416,6 +9418,12 @@ }, "question": "Is this bookcase located outdoors?" }, + "operator": { + "override": { + "question": "Who maintains this public bookcase?", + "render": "This public bookcase is operated by {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Name of the network" @@ -9441,10 +9449,6 @@ "question": "What is the name of this public bookcase?", "render": "The name of this bookcase is {name}" }, - "public_bookcase-operator": { - "question": "Who maintains this public bookcase?", - "render": "Operated by {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -9838,6 +9842,13 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operator" + }, + "question": "What company operates this place?", + "render": "This place is operated by {operator}" + }, "payment-options": { "mappings": { "0": { @@ -10293,8 +10304,10 @@ } }, "operator": { - "question": "What company operates this recycling facility?", - "render": "This recycling facility is operated by {operator}" + "override": { + "question": "What company operates this recycling facility?", + "render": "This recycling facility is operated by {operator}" + } }, "recycling-accepts": { "mappings": { @@ -12767,16 +12780,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Name of the operator" - }, - "mappings": { - "0": { - "then": "Dutch Railways (NS)" - } - }, - "question": "Who is the operator of this ticket machine?", - "render": "This ticket machine is operated by {operator}" + "override": { + "mappings+": { + "0": { + "then": "Dutch Railways (NS)" + } + }, + "question": "Who is the operator of this ticket machine?", + "render": "This ticket machine is operated by {operator}" + } } }, "title": { @@ -12801,6 +12813,12 @@ }, "render": "This ticket validator is part of a barrier of type {barrier}" }, + "operator": { + "override": { + "question": "Who is the operator of this ticket validator?", + "render": "This ticket validator is operated by {operator}" + } + }, "payment-options": { "override": { "mappings+": { @@ -12812,18 +12830,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Name of the operator" - }, - "mappings": { - "0": { - "then": "Dutch Railways (NS)" - } - }, - "question": "Who is the operator of this ticket validator?", - "render": "This ticket validator is operated by {operator}" } }, "title": { @@ -13475,8 +13481,10 @@ "render": "This bus line is part of the {network} network" }, "operator": { - "question": "What company operates this bus line?", - "render": "This bus line is operated by {operator}" + "override": { + "question": "What company operates this bus line?", + "render": "This bus line is operated by {operator}" + } }, "to": { "question": "What is the ending point for this bus line?", @@ -14538,11 +14546,10 @@ "question": "Is this vending machine still operational?" }, "operator": { - "freeform": { - "placeholder": "Name of operator" - }, - "question": "Who operates this vending machine?", - "render": "This vending machine is operated by {operator}" + "override": { + "question": "Who operates this vending machine?", + "render": "This vending machine is operated by {operator}" + } }, "phone": { "override": { diff --git a/langs/layers/es.json b/langs/layers/es.json index b55f1b364..bd188f450 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -733,11 +733,10 @@ "render": "El nombre de este cajero automático es {name}" }, "operator": { - "freeform": { - "placeholder": "Operador" - }, - "question": "¿Qué empresa opera este cajero automático?", - "render": "El cajero automático es operado por {operator}" + "override": { + "question": "¿Qué empresa opera este cajero automático?", + "render": "El cajero automático es operado por {operator}" + } }, "speech_output": { "mappings": { @@ -5374,11 +5373,13 @@ "render": "Esta estación de fitness se llama {name}" }, "operator": { - "freeform": { - "placeholder": "Operador de la estación de fitness" - }, - "question": "¿Quién mantiene esta estación de fitness?", - "render": "La estación de fitness es mantenida por {operator}." + "override": { + "freeform": { + "placeholder": "Operador de la estación de fitness" + }, + "question": "¿Quién mantiene esta estación de fitness?", + "render": "La estación de fitness es mantenida por {operator}." + } }, "type": { "mappings": { @@ -7478,11 +7479,10 @@ "question": "¿Puedes enviar paquetes desde esta taquilla?" }, "operator": { - "freeform": { - "placeholder": "Operador" - }, - "question": "¿Cuál es el operador de la taquilla de paquetes?", - "render": "Esta taquilla de paquetes es operada por {operator}" + "override": { + "question": "¿Cuál es el operador de la taquilla de paquetes?", + "render": "Esta taquilla de paquetes es operada por {operator}" + } }, "pickup": { "mappings": { @@ -8089,8 +8089,10 @@ }, "tagRenderings": { "operator": { - "question": "¿Quién gestiona este buzón?", - "render": "Este buzón es operado por {operator}." + "override": { + "question": "¿Quién gestiona este buzón?", + "render": "Este buzón es operado por {operator}." + } } }, "title": { @@ -8358,6 +8360,12 @@ }, "question": "¿Está este librero situado en el exterior?" }, + "operator": { + "override": { + "question": "¿Quién mantiene este librero público?", + "render": "Operado por {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Nombre de la red" @@ -8383,10 +8391,6 @@ "question": "¿Cuál es el nombre de este librero público?", "render": "El nombre de este librero es {name}" }, - "public_bookcase-operator": { - "question": "¿Quién mantiene este librero público?", - "render": "Operado por {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -8716,6 +8720,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operador" + } + }, "payment-options": { "mappings": { "0": { @@ -9119,8 +9128,10 @@ } }, "operator": { - "question": "¿Qué empresa opera esta instalación de reciclaje?", - "render": "Esta instalación de reciclaje está operada por {operator}" + "override": { + "question": "¿Qué empresa opera esta instalación de reciclaje?", + "render": "Esta instalación de reciclaje está operada por {operator}" + } }, "recycling-accepts": { "mappings": { @@ -10740,16 +10751,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Nombre del operador" - }, - "mappings": { - "0": { - "then": "Ferrocarriles Holandeses (NS)" - } - }, - "question": "¿Quién es el operador de esta máquina expendedora de billetes?", - "render": "Esta máquina expendedora de billetes está operada por {operator}" + "override": { + "mappings+": { + "0": { + "then": "Ferrocarriles Holandeses (NS)" + } + }, + "question": "¿Quién es el operador de esta máquina expendedora de billetes?", + "render": "Esta máquina expendedora de billetes está operada por {operator}" + } } }, "title": { @@ -10774,6 +10784,12 @@ }, "render": "Este validador de billetes forma parte de una barrera de tipo {barrier}" }, + "operator": { + "override": { + "question": "¿Quién es el operador de este validador de billetes?", + "render": "Este validador de billetes está operado por {operator}" + } + }, "payment-options": { "override": { "mappings+": { @@ -10785,18 +10801,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Nombre del operador" - }, - "mappings": { - "0": { - "then": "Ferrocarriles Holandeses (NS)" - } - }, - "question": "¿Quién es el operador de este validador de billetes?", - "render": "Este validador de billetes está operado por {operator}" } }, "title": { @@ -11287,8 +11291,10 @@ "render": "Esta línea de autobús es parte de la red {network}" }, "operator": { - "question": "¿Qué compañía opera esta línea de autobús?", - "render": "Esta línea de autobús es operada por {operator}" + "override": { + "question": "¿Qué compañía opera esta línea de autobús?", + "render": "Esta línea de autobús es operada por {operator}" + } }, "to": { "question": "¿Cuál es el punto final de esta línea de autobús?", @@ -12241,11 +12247,10 @@ "question": "¿Esta máquina expendedora sigue operativa?" }, "operator": { - "freeform": { - "placeholder": "Nombre del operador" - }, - "question": "¿Quién opera esta máquina expendedora?", - "render": "Esta máquina expendedora es operada por {operator}" + "override": { + "question": "¿Quién opera esta máquina expendedora?", + "render": "Esta máquina expendedora es operada por {operator}" + } }, "phone": { "override": { diff --git a/langs/layers/eu.json b/langs/layers/eu.json index fd964cae0..30ad60b23 100644 --- a/langs/layers/eu.json +++ b/langs/layers/eu.json @@ -145,13 +145,6 @@ }, "atm": { "name": "kutxazainak", - "tagRenderings": { - "operator": { - "freeform": { - "placeholder": "Operadorea" - } - } - }, "title": { "render": "Kutxazaina" } @@ -358,6 +351,15 @@ } } }, + "questions": { + "tagRenderings": { + "operator": { + "freeform": { + "placeholder": "Operadorea" + } + } + } + }, "unit": { "units": { "3": { diff --git a/langs/layers/fr.json b/langs/layers/fr.json index b5ac4101c..7098d2a0e 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -516,11 +516,10 @@ "render": "Le nom de ce DAB est {name}" }, "operator": { - "freeform": { - "placeholder": "Opérateur" - }, - "question": "Quelle société exploite ce DAB ?", - "render": "Ce DAB est exploité par {operator}" + "override": { + "question": "Quelle société exploite ce DAB ?", + "render": "Ce DAB est exploité par {operator}" + } } }, "title": { @@ -4726,11 +4725,10 @@ "question": "Peut-on envoyer des colis depuis ce casier ?" }, "operator": { - "freeform": { - "placeholder": "Exploitant" - }, - "question": "Quel est l'exploitant de ce casier à colis ?", - "render": "Ce casier à colis est exploité par {operator}" + "override": { + "question": "Quel est l'exploitant de ce casier à colis ?", + "render": "Ce casier à colis est exploité par {operator}" + } }, "pickup": { "mappings": { @@ -5131,6 +5129,12 @@ }, "question": "Cette microbiliothèque est-elle en extérieur ?" }, + "operator": { + "override": { + "question": "Qui entretien cette microbibliothèque ?", + "render": "Entretenue par {operator}" + } + }, "public_bookcase-brand": { "mappings": { "0": { @@ -5153,10 +5157,6 @@ "question": "Quel est le nom de cette microbibliothèque ?", "render": "Le nom de cette microbibliothèque est {name}" }, - "public_bookcase-operator": { - "question": "Qui entretien cette microbibliothèque ?", - "render": "Entretenue par {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -5380,6 +5380,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Opérateur" + } + }, "payment-options": { "mappings": { "0": { @@ -5713,8 +5718,10 @@ "question": "Où ce conteneur est-il situé ?" }, "operator": { - "question": "Quelle entreprise gère ce point de recyclage ?", - "render": "Ce point de recyclage est géré par {operator}" + "override": { + "question": "Quelle entreprise gère ce point de recyclage ?", + "render": "Ce point de recyclage est géré par {operator}" + } }, "recycling-accepts": { "mappings": { @@ -6816,7 +6823,9 @@ "render": "Cette ligne de bus fait partie du réseau {network}" }, "operator": { - "render": "Cette ligne de bus est gérée par {operator}" + "override": { + "render": "Cette ligne de bus est gérée par {operator}" + } }, "to": { "render": "Cette ligne de bus termine à {to}" @@ -7394,11 +7403,10 @@ "question": "Cette machine est-elle encore opérationelle ?" }, "operator": { - "freeform": { - "placeholder": "Nom de l'exploitant" - }, - "question": "Qui exploite ce distributeur ?", - "render": "Ce distributeur est exploité par {operator}" + "override": { + "question": "Qui exploite ce distributeur ?", + "render": "Ce distributeur est exploité par {operator}" + } }, "vending": { "mappings": { diff --git a/langs/layers/he.json b/langs/layers/he.json index 4e7c4736e..b2bc753b8 100644 --- a/langs/layers/he.json +++ b/langs/layers/he.json @@ -263,11 +263,10 @@ "render": "שמו של כספומט זה הוא {name}" }, "operator": { - "freeform": { - "placeholder": "מפעיל" - }, - "question": "איזו חברה מפעילה את הכספומט הזה?", - "render": "הכספומט מופעל על ידי {operator}" + "override": { + "question": "איזו חברה מפעילה את הכספומט הזה?", + "render": "הכספומט מופעל על ידי {operator}" + } }, "speech_output": { "mappings": { @@ -486,5 +485,14 @@ } } } + }, + "questions": { + "tagRenderings": { + "operator": { + "freeform": { + "placeholder": "מפעיל" + } + } + } } } \ No newline at end of file diff --git a/langs/layers/hu.json b/langs/layers/hu.json index 764978c82..d1e1287f3 100644 --- a/langs/layers/hu.json +++ b/langs/layers/hu.json @@ -822,6 +822,12 @@ }, "question": "A szabadban van-e ez a könyvespolc?" }, + "operator": { + "override": { + "question": "Ki tartja fenn ezt a nyilvános könyvespolcot?", + "render": "Üzemeltető: {operator}" + } + }, "public_bookcase-brand": { "mappings": { "0": { @@ -844,10 +850,6 @@ "question": "Mi a neve ennek a nyilvános könyvespolcnak?", "render": "Ennek a könyvespolcnak a neve: {name}" }, - "public_bookcase-operator": { - "question": "Ki tartja fenn ezt a nyilvános könyvespolcot?", - "render": "Üzemeltető: {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { diff --git a/langs/layers/it.json b/langs/layers/it.json index c1d395f1f..d01597f11 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -836,11 +836,10 @@ "render": "Il nome di questo sportello bancomat è {name}" }, "operator": { - "freeform": { - "placeholder": "Operatore" - }, - "question": "Quale azienda gestisce questo sportello bancomat?", - "render": "Lo sportello bancomat è gestito da {operator}" + "override": { + "question": "Quale azienda gestisce questo sportello bancomat?", + "render": "Lo sportello bancomat è gestito da {operator}" + } }, "speech_output": { "mappings": { @@ -5980,11 +5979,13 @@ "render": "Questa stazione fitness si chiama {name}" }, "operator": { - "freeform": { - "placeholder": "Gestore della stazione fitness" - }, - "question": "Chi mantiene questa stazione fitness?", - "render": "La stazione fitness è mantenuta da {operator}." + "override": { + "freeform": { + "placeholder": "Gestore della stazione fitness" + }, + "question": "Chi mantiene questa stazione fitness?", + "render": "La stazione fitness è mantenuta da {operator}." + } }, "type": { "mappings": { @@ -8353,11 +8354,10 @@ "question": "Puoi inviare pacchi da questo armadietto per pacchi?" }, "operator": { - "freeform": { - "placeholder": "Operatore" - }, - "question": "Chi è l'operatore dell'armadietto per pacchi?", - "render": "Questo armadietto per pacchi è gestito da {operator}" + "override": { + "question": "Chi è l'operatore dell'armadietto per pacchi?", + "render": "Questo armadietto per pacchi è gestito da {operator}" + } }, "pickup": { "mappings": { @@ -8964,8 +8964,10 @@ }, "tagRenderings": { "operator": { - "question": "Chi gestisce questa cassetta postale?", - "render": "Questa cassetta postale è gestita da {operator}" + "override": { + "question": "Chi gestisce questa cassetta postale?", + "render": "Questa cassetta postale è gestita da {operator}" + } } }, "title": { @@ -9236,6 +9238,12 @@ }, "question": "Questa libreria pubblica si trova all'aperto?" }, + "operator": { + "override": { + "question": "Chi mantiene questa libreria pubblica?", + "render": "Gestita da {operator}" + } + }, "public_bookcase-brand": { "freeform": { "placeholder": "Nome della rete" @@ -9261,10 +9269,6 @@ "question": "Qual è il nome di questa libreria pubblica?", "render": "Il nome di questa libreria pubblica è {name}" }, - "public_bookcase-operator": { - "question": "Chi mantiene questa libreria pubblica?", - "render": "Gestita da {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -9620,6 +9624,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operatore" + } + }, "payment-options": { "mappings": { "0": { @@ -10071,8 +10080,10 @@ } }, "operator": { - "question": "Quale azienda gestisce questa struttura di riciclaggio?", - "render": "Questa struttura di riciclaggio è gestita da {operator}" + "override": { + "question": "Quale azienda gestisce questa struttura di riciclaggio?", + "render": "Questa struttura di riciclaggio è gestita da {operator}" + } }, "recycling-accepts": { "mappings": { @@ -12407,16 +12418,15 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Nome dell'operatore" - }, - "mappings": { - "0": { - "then": "Ferrovie Olandesi (NS)" - } - }, - "question": "Chi è l'operatore di questa biglietteria automatica?", - "render": "Questa biglietteria automatica è gestita da {operator}" + "override": { + "mappings+": { + "0": { + "then": "Ferrovie Olandesi (NS)" + } + }, + "question": "Chi è l'operatore di questa biglietteria automatica?", + "render": "Questa biglietteria automatica è gestita da {operator}" + } } }, "title": { @@ -12441,6 +12451,12 @@ }, "render": "Questo validatore di biglietti fa parte di una barriera di tipo {barrier}" }, + "operator": { + "override": { + "question": "Chi è l'operatore di questo validatore di biglietti?", + "render": "Questo validatore di biglietti è gestito da {operator}" + } + }, "payment-options": { "override": { "mappings+": { @@ -12452,18 +12468,6 @@ } } } - }, - "validator-operator": { - "freeform": { - "placeholder": "Nome dell'operatore" - }, - "mappings": { - "0": { - "then": "Ferrovie Olandesi (NS)" - } - }, - "question": "Chi è l'operatore di questo validatore di biglietti?", - "render": "Questo validatore di biglietti è gestito da {operator}" } }, "title": { @@ -13104,8 +13108,10 @@ "render": "Questa linea di autobus fa parte della rete {network}" }, "operator": { - "question": "Quale azienda gestisce questa linea di autobus?", - "render": "Questa linea di autobus è gestita da {operator}" + "override": { + "question": "Quale azienda gestisce questa linea di autobus?", + "render": "Questa linea di autobus è gestita da {operator}" + } }, "to": { "question": "Qual è il punto di arrivo di questa linea di autobus?", @@ -14130,11 +14136,10 @@ "question": "Questo distributore automatico è ancora operativo?" }, "operator": { - "freeform": { - "placeholder": "Nome dell'operatore" - }, - "question": "Chi gestisce questo distributore automatico?", - "render": "Questo distributore automatico è gestito da {operator}" + "override": { + "question": "Chi gestisce questo distributore automatico?", + "render": "Questo distributore automatico è gestito da {operator}" + } }, "phone": { "override": { diff --git a/langs/layers/nb_NO.json b/langs/layers/nb_NO.json index f80fc7c4f..2879f7599 100644 --- a/langs/layers/nb_NO.json +++ b/langs/layers/nb_NO.json @@ -187,8 +187,10 @@ "render": "Navnet på denne minibanken er {name}" }, "operator": { - "question": "Hvilket selskap driver denne minibanken?", - "render": "Minibanken drives av {operator}" + "override": { + "question": "Hvilket selskap driver denne minibanken?", + "render": "Minibanken drives av {operator}" + } } }, "title": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 46a9ad167..2bc4aafa8 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -814,11 +814,10 @@ "render": "De naam van deze geldautomaat is {name}" }, "operator": { - "freeform": { - "placeholder": "Beheerder" - }, - "question": "Welk bedrijf beheert deze geldautomaat?", - "render": "Deze geldautomaat wordt beheerd door {operator}" + "override": { + "question": "Welk bedrijf beheert deze geldautomaat?", + "render": "Deze geldautomaat wordt beheerd door {operator}" + } }, "speech_output": { "mappings": { @@ -5505,11 +5504,13 @@ "render": "Dit fitness-toestel heet {name}" }, "operator": { - "freeform": { - "placeholder": "Beheerder van het fitness-toestel" - }, - "question": "Wie beheert dit fitness-toestel?", - "render": "Dit fitness-toestel wordt beheerd door {operator}" + "override": { + "freeform": { + "placeholder": "Beheerder van het fitness-toestel" + }, + "question": "Wie beheert dit fitness-toestel?", + "render": "Dit fitness-toestel wordt beheerd door {operator}" + } } } }, @@ -7147,11 +7148,10 @@ "question": "Kan je pakketten versturen vanuit deze pakketautomaat?" }, "operator": { - "freeform": { - "placeholder": "Beheerder" - }, - "question": "Wie is de beheerder van deze pakketautomaat?", - "render": "Deze pakketautomaat wordt beheerd door {operator}" + "override": { + "question": "Wie is de beheerder van deze pakketautomaat?", + "render": "Deze pakketautomaat wordt beheerd door {operator}" + } }, "pickup": { "mappings": { @@ -7859,6 +7859,12 @@ }, "question": "Staat dit boekenruilkastje binnen of buiten?" }, + "operator": { + "override": { + "question": "Wie is verantwoordelijk voor dit boekenruilkastje?", + "render": "Onderhouden door {operator}" + } + }, "public_bookcase-brand": { "mappings": { "0": { @@ -7881,10 +7887,6 @@ "question": "Wat is de naam van dit boekenruilkastje?", "render": "De naam van dit boekenruilkastje is {name}" }, - "public_bookcase-operator": { - "question": "Wie is verantwoordelijk voor dit boekenruilkastje?", - "render": "Onderhouden door {operator}" - }, "public_bookcase-ref": { "mappings": { "0": { @@ -8192,6 +8194,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Beheerder" + } + }, "payment-options": { "mappings": { "0": { @@ -8573,8 +8580,10 @@ } }, "operator": { - "question": "Wat is de beheerder van deze recyclingfaciliteit?", - "render": "Deze recyclingfaciliteit wordt beheerd door {operator}" + "override": { + "question": "Wat is de beheerder van deze recyclingfaciliteit?", + "render": "Deze recyclingfaciliteit wordt beheerd door {operator}" + } }, "recycling-accepts": { "mappings": { @@ -10025,36 +10034,21 @@ }, "tagRenderings": { "operator": { - "freeform": { - "placeholder": "Naam van de beheerder" - }, - "mappings": { - "0": { - "then": "Nederlandse Spoorwegen (NS)" - } - }, - "question": "Wie is de beheerder van deze kaartautomaat?", - "render": "Deze kaartautomaat wordt beheerd door {operator}" + "override": { + "mappings+": { + "0": { + "then": "Nederlandse Spoorwegen (NS)" + } + }, + "question": "Wie is de beheerder van deze kaartautomaat?", + "render": "Deze kaartautomaat wordt beheerd door {operator}" + } } }, "title": { "render": "Kaartautomaat" } }, - "ticket_validator": { - "tagRenderings": { - "validator-operator": { - "freeform": { - "placeholder": "Naam van de beheerder" - }, - "mappings": { - "0": { - "then": "Nederlandse Spoorwegen (NS)" - } - } - } - } - }, "toilet": { "description": "Een laag die publieke toiletten toont", "filter": { @@ -10593,8 +10587,10 @@ "render": "Deze buslijn is onderdeel van het {network} netwerk" }, "operator": { - "question": "Welk bedrijf exploiteert deze buslijn?", - "render": "Deze buslijn wordt geëxploiteerd door {operator}" + "override": { + "question": "Welk bedrijf exploiteert deze buslijn?", + "render": "Deze buslijn wordt geëxploiteerd door {operator}" + } }, "to": { "question": "Wat is het eindpunt van deze buslijn?", @@ -11373,11 +11369,10 @@ "question": "Is deze verkoopsautomaat nog steeds werkende?" }, "operator": { - "freeform": { - "placeholder": "Naam van beheerder" - }, - "question": "Wie beheert deze verkoopautomaat?", - "render": "Deze verkoopautomaat wordt beheerd door {operator}" + "override": { + "question": "Wie beheert deze verkoopautomaat?", + "render": "Deze verkoopautomaat wordt beheerd door {operator}" + } }, "vending": { "mappings": { diff --git a/langs/layers/pl.json b/langs/layers/pl.json index 7ee6363ed..6622991a8 100644 --- a/langs/layers/pl.json +++ b/langs/layers/pl.json @@ -537,8 +537,10 @@ "render": "Nazwa tego bankomatu to {name}" }, "operator": { - "question": "Jaka firma obsługuje ten bankomat?", - "render": "Ten bankomat jest obsługiwany przez {operator}" + "override": { + "question": "Jaka firma obsługuje ten bankomat?", + "render": "Ten bankomat jest obsługiwany przez {operator}" + } } }, "title": { @@ -2883,10 +2885,9 @@ "question": "Czy z tego paczkomatu można wysyłać przesyłki?" }, "operator": { - "freeform": { - "placeholder": "Operator" - }, - "render": "Ten paczkomat jest obsługiwany przez {operator}" + "override": { + "render": "Ten paczkomat jest obsługiwany przez {operator}" + } }, "pickup": { "mappings": { @@ -3331,6 +3332,11 @@ } } }, + "operator": { + "freeform": { + "placeholder": "Operator" + } + }, "payment-options": { "mappings": { "0": { diff --git a/langs/layers/pt.json b/langs/layers/pt.json index bc310fff4..d3d1dace7 100644 --- a/langs/layers/pt.json +++ b/langs/layers/pt.json @@ -479,11 +479,10 @@ "render": "O nome deste multibanco é {name}" }, "operator": { - "freeform": { - "placeholder": "Operador" - }, - "question": "Qual companhia opera este multibanco?", - "render": "O multibanco é operado por {operator}" + "override": { + "question": "Qual companhia opera este multibanco?", + "render": "O multibanco é operado por {operator}" + } }, "speech_output": { "mappings": { @@ -1601,6 +1600,11 @@ "question": "Qual é o horário de funcionamento de {title()}?", "render": "

Horário de funcionamento

{opening_hours_table(opening_hours)}" }, + "operator": { + "freeform": { + "placeholder": "Operador" + } + }, "payment-options": { "mappings": { "0": { diff --git a/langs/layers/pt_BR.json b/langs/layers/pt_BR.json index c0f273d32..1bb85c215 100644 --- a/langs/layers/pt_BR.json +++ b/langs/layers/pt_BR.json @@ -468,11 +468,10 @@ "render": "O nome desse caixa eletrônico é {name}" }, "operator": { - "freeform": { - "placeholder": "Operador" - }, - "question": "Qual companhia opera esse caixa eletrônico?", - "render": "O caixa eletrônico é operado por {operator}" + "override": { + "question": "Qual companhia opera esse caixa eletrônico?", + "render": "O caixa eletrônico é operado por {operator}" + } }, "speech_output": { "mappings": { @@ -1518,6 +1517,11 @@ "question": "Qual o horário de funcionamento de {title()}?", "render": "

Horário de funcionamento

{opening_hours_table(opening_hours)}" }, + "operator": { + "freeform": { + "placeholder": "Operador" + } + }, "payment-options": { "mappings": { "0": { diff --git a/langs/layers/sl.json b/langs/layers/sl.json index e2f5d6083..daf572de1 100644 --- a/langs/layers/sl.json +++ b/langs/layers/sl.json @@ -11,7 +11,9 @@ "atm": { "tagRenderings": { "operator": { - "render": "Ta bankomat upravlja {operator}" + "override": { + "render": "Ta bankomat upravlja {operator}" + } } }, "title": { diff --git a/langs/layers/uk.json b/langs/layers/uk.json index 961b9b505..da167fd20 100644 --- a/langs/layers/uk.json +++ b/langs/layers/uk.json @@ -1805,8 +1805,10 @@ "question": "Чи можете ви відправляти посилки з цього поштомату?" }, "operator": { - "question": "Який оператор поштомату?", - "render": "Цей посилкова шафка обслуговується компанією {operator}" + "override": { + "question": "Який оператор поштомату?", + "render": "Цей посилкова шафка обслуговується компанією {operator}" + } }, "ref": { "question": "Який ідентифікаційний номер цього поштомату?", @@ -2958,7 +2960,9 @@ "render": "Ця автобусна лінія є частиною {network} мережі" }, "operator": { - "render": "Ця автобусна лінія обслуговується {operator}" + "override": { + "render": "Ця автобусна лінія обслуговується {operator}" + } }, "to": { "render": "Ця автобусна лінія закінчується в {to}" @@ -3322,8 +3326,10 @@ "question": "Чи працює цей торговий автомат досі?" }, "operator": { - "question": "Хто керує цим автоматом?", - "render": "Цим торговим автоматом керує {operator}" + "override": { + "question": "Хто керує цим автоматом?", + "render": "Цим торговим автоматом керує {operator}" + } }, "phone": { "override": { From 80953d35ac4fa018f9a597270a16c3c950bc6372 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Fri, 25 Jul 2025 01:01:16 +0200 Subject: [PATCH 04/18] Themes(infrastructure): Add telecom exchange --- .../layers/telecom_exchange/license_info.json | 15 ++++ .../telecom_exchange/telecom_exchange.json | 84 +++++++++++++++++++ .../telecom_exchange/telecom_exchange.svg | 1 + .../telecom_exchange.svg.license | 2 + .../themes/infrastructure/infrastructure.json | 3 +- .../mapcomplete-changes.json | 4 + 6 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 assets/layers/telecom_exchange/license_info.json create mode 100644 assets/layers/telecom_exchange/telecom_exchange.json create mode 100644 assets/layers/telecom_exchange/telecom_exchange.svg create mode 100644 assets/layers/telecom_exchange/telecom_exchange.svg.license diff --git a/assets/layers/telecom_exchange/license_info.json b/assets/layers/telecom_exchange/license_info.json new file mode 100644 index 000000000..11b85d644 --- /dev/null +++ b/assets/layers/telecom_exchange/license_info.json @@ -0,0 +1,15 @@ +[ + { + "path": "telecom_exchange.svg", + "license": "CC0-1.0", + "authors": [ + "Abu Badali", + "Sarang", + "Robin van der Linde" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Phoneicon.svg", + "https://commons.wikimedia.org/wiki/File:Globe_icon.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/telecom_exchange/telecom_exchange.json b/assets/layers/telecom_exchange/telecom_exchange.json new file mode 100644 index 000000000..d822e1183 --- /dev/null +++ b/assets/layers/telecom_exchange/telecom_exchange.json @@ -0,0 +1,84 @@ +{ + "id": "telecom_exchange", + "name": { + "en": "Telecom Exchanges" + }, + "description": { + "en": "Layer showing telecom exchanges, which are facilities that connect telephone lines and manage telecommunications traffic." + }, + "source": { + "osmTags": "telecom=exchange" + }, + "minzoom": 9, + "title": { + "render": { + "en": "Telecom Exchange" + } + }, + "pointRendering": [ + { + "marker": [ + { + "icon": "./assets/layers/telecom_exchange/telecom_exchange.svg" + } + ], + "location": [ + "point", + "centroid" + ] + } + ], + "presets": [ + { + "title": { + "en": "a telecom exchange" + }, + "tags": [ + "telecom=exchange" + ] + } + ], + "tagRenderings": [ + { + "builtin": "operator", + "override": { + "question": { + "en": "What is the operator of this telecom exchange?" + }, + "render": { + "en": "This telecom exchange is operated by {operator}." + } + } + }, + { + "id": "medium", + "question": { + "en": "What is the medium used by this telecom exchange?" + }, + "mappings": [ + { + "if": "telecom:medium=copper", + "then": { + "en": "The landlines connected to this telecom exchange use copper wiring." + } + }, + { + "if": "telecom:medium=fibre", + "then": { + "en": "The landlines connected to this telecom exchange use fibre optics." + } + }, + { + "if": "telecom:medium=coaxial", + "then": { + "en": "The landlines connected to this telecom exchange use coaxial cable." + } + } + ] + } + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": false + } +} \ No newline at end of file diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg b/assets/layers/telecom_exchange/telecom_exchange.svg new file mode 100644 index 000000000..561e5ad4b --- /dev/null +++ b/assets/layers/telecom_exchange/telecom_exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg.license b/assets/layers/telecom_exchange/telecom_exchange.svg.license new file mode 100644 index 000000000..9cf027354 --- /dev/null +++ b/assets/layers/telecom_exchange/telecom_exchange.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Abu Badali; Sarang; Robin van der Linde +SPDX-License-Identifier: CC0-1.0 \ No newline at end of file diff --git a/assets/themes/infrastructure/infrastructure.json b/assets/themes/infrastructure/infrastructure.json index 674def81e..4430e2d00 100644 --- a/assets/themes/infrastructure/infrastructure.json +++ b/assets/themes/infrastructure/infrastructure.json @@ -16,6 +16,7 @@ "minzoom": 17 } }, - "street_cabinet" + "street_cabinet", + "telecom_exchange" ] } \ 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 27da2318a..ba471a939 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -489,6 +489,10 @@ "if": "theme=indoors", "then": "./assets/layers/entrance/entrance.svg" }, + { + "if": "theme=infrastructure", + "then": "./assets/layers/street_cabinet/street_cabinet.svg" + }, { "if": "theme=insects", "then": "./assets/layers/insect_hotel/insect_hotel.svg" From 48a09ba7b40905cda1e17046fb5dce35d5d1ea49 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 28 Jul 2025 00:08:35 +0200 Subject: [PATCH 05/18] Chore: Update extension list --- .vscode/extensions.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 12b9494f4..4795462f8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -6,6 +6,7 @@ "bradlc.vscode-tailwindcss", "editorconfig.editorconfig", "dbaeumer.vscode-eslint", - "robin-van-der-linde.mapcompletevscode" + "robin-van-der-linde.mapcompletevscode", + "vitest.explorer" ] } From 077b77b130197c1ed8a2eb7aa7f0c0fc5450d067 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 28 Jul 2025 02:16:17 +0200 Subject: [PATCH 06/18] Themes(infrastructure): Combine telecom layers, add basic power layers --- assets/layers/power_line/power_line.json | 137 +++++++ assets/layers/power_pole/license_info.json | 102 +++++ assets/layers/power_pole/power_pole.json | 265 ++++++++++++ .../layers/power_pole/power_pole_1_level.svg | 1 + .../power_pole/power_pole_1_level.svg.license | 2 + .../layers/power_pole/power_pole_2_level.svg | 1 + .../power_pole/power_pole_2_level.svg.license | 2 + .../layers/power_pole/power_pole_3_level.svg | 1 + .../power_pole/power_pole_3_level.svg.license | 2 + .../layers/power_pole/power_pole_4_level.svg | 1 + .../power_pole/power_pole_4_level.svg.license | 2 + .../power_pole/power_pole_asymmetric.svg | 1 + .../power_pole_asymmetric.svg.license | 2 + .../power_pole_asymmetric_armless.svg | 1 + .../power_pole_asymmetric_armless.svg.license | 2 + assets/layers/power_pole/power_pole_delta.svg | 1 + .../power_pole/power_pole_delta.svg.license | 2 + assets/layers/power_pole/power_pole_flag.svg | 1 + .../power_pole/power_pole_flag.svg.license | 2 + .../layers/power_pole/power_pole_triangle.svg | 1 + .../power_pole_triangle.svg.license | 2 + .../power_pole_triangle_armless.svg | 1 + .../power_pole_triangle_armless.svg.license | 2 + assets/layers/power_tower/license_info.json | 212 ++++++++++ assets/layers/power_tower/power_tower.json | 384 ++++++++++++++++++ .../power_tower/power_tower_1_level.svg | 1 + .../power_tower_1_level.svg.license | 2 + .../power_tower/power_tower_2_level.svg | 1 + .../power_tower_2_level.svg.license | 2 + .../power_tower/power_tower_3_level.svg | 1 + .../power_tower_3_level.svg.license | 2 + .../power_tower/power_tower_4_level.svg | 1 + .../power_tower_4_level.svg.license | 2 + .../power_tower/power_tower_asymmetric.svg | 1 + .../power_tower_asymmetric.svg.license | 2 + .../layers/power_tower/power_tower_barrel.svg | 1 + .../power_tower_barrel.svg.license | 2 + .../layers/power_tower/power_tower_delta.svg | 1 + .../power_tower/power_tower_delta.svg.license | 2 + .../power_tower/power_tower_delta_2_level.svg | 1 + .../power_tower_delta_2_level.svg.license | 2 + .../power_tower/power_tower_delta_3_level.svg | 1 + .../power_tower_delta_3_level.svg.license | 2 + .../layers/power_tower/power_tower_donau.svg | 1 + .../power_tower/power_tower_donau.svg.license | 2 + .../power_tower/power_tower_donau_inverse.svg | 1 + .../power_tower_donau_inverse.svg.license | 2 + .../layers/power_tower/power_tower_flag.svg | 1 + .../power_tower/power_tower_flag.svg.license | 2 + .../power_tower/power_tower_guyed_h_frame.svg | 1 + .../power_tower_guyed_h_frame.svg.license | 2 + .../power_tower/power_tower_h_frame.svg | 1 + .../power_tower_h_frame.svg.license | 2 + .../power_tower_h_frame_2_level.svg | 1 + .../power_tower_h_frame_2_level.svg.license | 2 + .../layers/power_tower/power_tower_portal.svg | 1 + .../power_tower_portal.svg.license | 2 + .../power_tower_portal_2_level.svg | 1 + .../power_tower_portal_2_level.svg.license | 2 + .../power_tower_portal_3_level.svg | 1 + .../power_tower_portal_3_level.svg.license | 2 + .../power_tower/power_tower_triangle.svg | 1 + .../power_tower_triangle.svg.license | 2 + .../power_tower/power_tower_x_frame.svg | 1 + .../power_tower_x_frame.svg.license | 2 + .../power_tower/power_tower_y_frame.svg | 1 + .../power_tower_y_frame.svg.license | 2 + .../layers/street_cabinet/street_cabinet.json | 53 ++- .../license_info.json | 0 assets/layers/telecom/telecom.json | 162 ++++++++ .../telecom_exchange.svg | 0 .../telecom_exchange.svg.license | 0 .../telecom_exchange/telecom_exchange.json | 84 ---- assets/svg/license_info.json | 18 +- assets/svg/lightning.svg | 8 + assets/svg/lightning.svg.license | 2 + .../themes/infrastructure/infrastructure.json | 9 +- .../mapcomplete-changes.json | 4 + src/Models/Constants.ts | 1 + 79 files changed, 1435 insertions(+), 99 deletions(-) create mode 100644 assets/layers/power_line/power_line.json create mode 100644 assets/layers/power_pole/license_info.json create mode 100644 assets/layers/power_pole/power_pole.json create mode 100644 assets/layers/power_pole/power_pole_1_level.svg create mode 100644 assets/layers/power_pole/power_pole_1_level.svg.license create mode 100644 assets/layers/power_pole/power_pole_2_level.svg create mode 100644 assets/layers/power_pole/power_pole_2_level.svg.license create mode 100644 assets/layers/power_pole/power_pole_3_level.svg create mode 100644 assets/layers/power_pole/power_pole_3_level.svg.license create mode 100644 assets/layers/power_pole/power_pole_4_level.svg create mode 100644 assets/layers/power_pole/power_pole_4_level.svg.license create mode 100644 assets/layers/power_pole/power_pole_asymmetric.svg create mode 100644 assets/layers/power_pole/power_pole_asymmetric.svg.license create mode 100644 assets/layers/power_pole/power_pole_asymmetric_armless.svg create mode 100644 assets/layers/power_pole/power_pole_asymmetric_armless.svg.license create mode 100644 assets/layers/power_pole/power_pole_delta.svg create mode 100644 assets/layers/power_pole/power_pole_delta.svg.license create mode 100644 assets/layers/power_pole/power_pole_flag.svg create mode 100644 assets/layers/power_pole/power_pole_flag.svg.license create mode 100644 assets/layers/power_pole/power_pole_triangle.svg create mode 100644 assets/layers/power_pole/power_pole_triangle.svg.license create mode 100644 assets/layers/power_pole/power_pole_triangle_armless.svg create mode 100644 assets/layers/power_pole/power_pole_triangle_armless.svg.license create mode 100644 assets/layers/power_tower/license_info.json create mode 100644 assets/layers/power_tower/power_tower.json create mode 100644 assets/layers/power_tower/power_tower_1_level.svg create mode 100644 assets/layers/power_tower/power_tower_1_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_2_level.svg create mode 100644 assets/layers/power_tower/power_tower_2_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_3_level.svg create mode 100644 assets/layers/power_tower/power_tower_3_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_4_level.svg create mode 100644 assets/layers/power_tower/power_tower_4_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_asymmetric.svg create mode 100644 assets/layers/power_tower/power_tower_asymmetric.svg.license create mode 100644 assets/layers/power_tower/power_tower_barrel.svg create mode 100644 assets/layers/power_tower/power_tower_barrel.svg.license create mode 100644 assets/layers/power_tower/power_tower_delta.svg create mode 100644 assets/layers/power_tower/power_tower_delta.svg.license create mode 100644 assets/layers/power_tower/power_tower_delta_2_level.svg create mode 100644 assets/layers/power_tower/power_tower_delta_2_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_delta_3_level.svg create mode 100644 assets/layers/power_tower/power_tower_delta_3_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_donau.svg create mode 100644 assets/layers/power_tower/power_tower_donau.svg.license create mode 100644 assets/layers/power_tower/power_tower_donau_inverse.svg create mode 100644 assets/layers/power_tower/power_tower_donau_inverse.svg.license create mode 100644 assets/layers/power_tower/power_tower_flag.svg create mode 100644 assets/layers/power_tower/power_tower_flag.svg.license create mode 100644 assets/layers/power_tower/power_tower_guyed_h_frame.svg create mode 100644 assets/layers/power_tower/power_tower_guyed_h_frame.svg.license create mode 100644 assets/layers/power_tower/power_tower_h_frame.svg create mode 100644 assets/layers/power_tower/power_tower_h_frame.svg.license create mode 100644 assets/layers/power_tower/power_tower_h_frame_2_level.svg create mode 100644 assets/layers/power_tower/power_tower_h_frame_2_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_portal.svg create mode 100644 assets/layers/power_tower/power_tower_portal.svg.license create mode 100644 assets/layers/power_tower/power_tower_portal_2_level.svg create mode 100644 assets/layers/power_tower/power_tower_portal_2_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_portal_3_level.svg create mode 100644 assets/layers/power_tower/power_tower_portal_3_level.svg.license create mode 100644 assets/layers/power_tower/power_tower_triangle.svg create mode 100644 assets/layers/power_tower/power_tower_triangle.svg.license create mode 100644 assets/layers/power_tower/power_tower_x_frame.svg create mode 100644 assets/layers/power_tower/power_tower_x_frame.svg.license create mode 100644 assets/layers/power_tower/power_tower_y_frame.svg create mode 100644 assets/layers/power_tower/power_tower_y_frame.svg.license rename assets/layers/{telecom_exchange => telecom}/license_info.json (100%) create mode 100644 assets/layers/telecom/telecom.json rename assets/layers/{telecom_exchange => telecom}/telecom_exchange.svg (100%) rename assets/layers/{telecom_exchange => telecom}/telecom_exchange.svg.license (100%) delete mode 100644 assets/layers/telecom_exchange/telecom_exchange.json create mode 100644 assets/svg/lightning.svg create mode 100644 assets/svg/lightning.svg.license diff --git a/assets/layers/power_line/power_line.json b/assets/layers/power_line/power_line.json new file mode 100644 index 000000000..1c73fab0a --- /dev/null +++ b/assets/layers/power_line/power_line.json @@ -0,0 +1,137 @@ +{ + "id": "power_line", + "name": { + "en": "Power Lines", + "nl": "Elektriciteitsleidingen" + }, + "description": { + "en": "Layer showing high-voltage power lines.", + "nl": "Laag met hoogspanningsleidingen" + }, + "source": { + "osmTags": "power=line" + }, + "minzoom": 11, + "title": { + "render": { + "en": "Power Line" + } + }, + "pointRendering": [ + { + "marker": [ + { + "icon": { + "render": "bug" + } + } + ], + "location": [ + "point" + ] + } + ], + "lineRendering": [ + { + "color": "#ffcc00", + "width": 6, + "dashArray": "5 5", + "imageAlongWay": "./assets/svg/lightning.svg" + } + ], + "tagRenderings": [ + { + "builtin": "operator", + "override": { + "question": { + "en": "Who operates this power line?" + }, + "render": { + "en": "This power line is operated by {operator}." + } + } + }, + { + "id": "voltage", + "question": { + "en": "What is the voltage of this power line?" + }, + "render": { + "en": "This power line operates at {voltage} volts." + }, + "freeform": { + "key": "voltage", + "type": "pnat", + "placeholder": { + "en": "e.g., 110000" + } + }, + "mappings": [ + { + "if": "voltage=110000", + "then": { + "en": "The voltage of this power line is 110 kV." + } + }, + { + "if": "voltage=220000", + "then": { + "en": "The voltage of this power line is 220 kV." + } + } + ] + }, + { + "id": "cables", + "question": { + "en": "How many cables does this power line have?" + }, + "render": { + "en": "This power line has {cables} cables." + }, + "freeform": { + "key": "cables", + "type": "pnat", + "placeholder": { + "en": "e.g., 3" + } + } + }, + { + "id": "frequency", + "question": { + "en": "What is the frequency of this power line?" + }, + "render": { + "en": "This power line operates at a frequency of {frequency} Hz." + }, + "freeform": { + "key": "frequency", + "type": "pnat", + "placeholder": { + "en": "e.g., 50" + } + } + }, + { + "id": "circuits", + "question": { + "en": "How many circuits does this power line have?" + }, + "render": { + "en": "This power line has {circuits} circuits." + }, + "freeform": { + "key": "circuits", + "type": "pnat", + "placeholder": { + "en": "e.g., 2" + } + } + } + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": false + } +} \ No newline at end of file diff --git a/assets/layers/power_pole/license_info.json b/assets/layers/power_pole/license_info.json new file mode 100644 index 000000000..de8264125 --- /dev/null +++ b/assets/layers/power_pole/license_info.json @@ -0,0 +1,102 @@ +[ + { + "path": "power_pole_1_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_2_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_3_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_4_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_asymmetric.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_asymmetric_armless.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_delta.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_flag.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_triangle.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_pole_triangle_armless.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + } +] \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole.json b/assets/layers/power_pole/power_pole.json new file mode 100644 index 000000000..e1a8365ad --- /dev/null +++ b/assets/layers/power_pole/power_pole.json @@ -0,0 +1,265 @@ +{ + "id": "power_pole", + "name": { + "en": "Power Poles", + "nl": "Elektriciteitspalen" + }, + "description": { + "en": "Layer showing power poles.", + "nl": "Laag die elektriciteitspalen toont." + }, + "source": { + "osmTags": "power=pole" + }, + "minzoom": 16, + "title": { + "render": { + "en": "Power Pole" + } + }, + "pointRendering": [ + { + "marker": [ + { + "icon": { + "render": "./assets/layers/power_pole/power_pole_1_level.svg", + "mappings": [ + { + "if": "design=two-level", + "then": "./assets/layers/power_pole/power_pole_2_level.svg" + }, + { + "if": "design=three-level", + "then": "./assets/layers/power_pole/power_pole_3_level.svg" + }, + { + "if": "design=four-level", + "then": "./assets/layers/power_pole/power_pole_4_level.svg" + }, + { + "if": "design=asymmetric", + "then": "./assets/layers/power_pole/power_pole_asymmetric.svg" + }, + { + "if": "design=triangle", + "then": "./assets/layers/power_pole/power_pole_triangle.svg" + }, + { + "if": "design=armless_triangle", + "then": "./assets/layers/power_pole/power_pole_triangle_armless.svg" + }, + { + "if": "design=flag", + "then": "./assets/layers/power_pole/power_pole_flag.svg" + }, + { + "if": { + "or": [ + "design=delta", + "design=delta_two_level", + "design=delta_three_level" + ] + }, + "then": "./assets/layers/power_pole/power_pole_delta.svg" + } + ] + } + } + ], + "location": [ + "point", + "centroid" + ] + } + ], + "tagRenderings": [ + { + "id": "material", + "question": { + "en": "What material is this power pole made of?" + }, + "render": { + "en": "This power pole is made of {material}." + }, + "freeform": { + "key": "material", + "type": "string", + "placeholder": { + "en": "e.g. wood, concrete, steel" + } + }, + "mappings": [ + { + "if": "material=wood", + "then": { + "en": "This power pole is made of wood." + } + }, + { + "if": "material=concrete", + "then": { + "en": "This power pole is made of concrete." + } + }, + { + "if": "material=steel", + "then": { + "en": "This power pole is made of steel." + } + }, + { + "if": "material=reinforced_concrete", + "then": { + "en": "This power pole is made of reinforced concrete." + } + }, + { + "if": "material=metal", + "then": { + "en": "This power pole is made of metal." + } + } + ] + }, + { + "id": "design", + "question": { + "en": "What is the design of this power pole?" + }, + "render": { + "en": "This power pole has the design {design}." + }, + "freeform": { + "key": "design", + "type": "string", + "placeholder": { + "en": "e.g., delta, asymmetric, triangle" + } + }, + "mappings": [ + { + "if": "design=one-level", + "then": { + "en": "This power pole has a one-level design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_1_level.svg" + } + }, + { + "if": "design=two-level", + "then": { + "en": "This power pole has a two-level design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_2_level.svg" + } + }, + { + "if": "design=three-level", + "then": { + "en": "This power pole has a three-level design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_3_level.svg" + } + }, + { + "if": "design=four-level", + "then": { + "en": "This power pole has a four-level design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_4_level.svg" + } + }, + { + "if": "design=asymmetric", + "then": { + "en": "This power pole has an asymmetric design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_asymmetric.svg" + } + }, + { + "if": "design=triangle", + "then": { + "en": "This power pole has a triangle design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_triangle.svg" + } + }, + { + "if": "design=armless_triangle", + "then": { + "en": "This power pole has an armless triangle design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_triangle_armless.svg" + } + }, + { + "if": "design=flag", + "then": { + "en": "This power pole has a flag design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_flag.svg" + } + }, + { + "if": "design=delta", + "then": { + "en": "This power pole has a delta design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_delta.svg" + } + }, + { + "if": "design=delta_two_level", + "then": { + "en": "This power pole has a two-level delta design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_delta.svg" + } + }, + { + "if": "design=delta_three_level", + "then": { + "en": "This power pole has a three-level delta design." + }, + "icon": { + "path": "./assets/layers/power_pole/power_pole_delta.svg" + } + } + ] + }, + { + "builtin": "ref", + "override": { + "question": { + "en": "What is the reference number of this power pole?" + }, + "render": { + "en": "This power pole has the reference number {ref}." + } + } + }, + { + "builtin": "operator", + "override": { + "question": { + "en": "Who operates this power pole?" + }, + "render": { + "en": "This power pole is operated by {operator}." + } + } + } + ], + "allowMove": false +} \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_1_level.svg b/assets/layers/power_pole/power_pole_1_level.svg new file mode 100644 index 000000000..eb070a3cc --- /dev/null +++ b/assets/layers/power_pole/power_pole_1_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_1_level.svg.license b/assets/layers/power_pole/power_pole_1_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_1_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_2_level.svg b/assets/layers/power_pole/power_pole_2_level.svg new file mode 100644 index 000000000..27447ca25 --- /dev/null +++ b/assets/layers/power_pole/power_pole_2_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_2_level.svg.license b/assets/layers/power_pole/power_pole_2_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_2_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_3_level.svg b/assets/layers/power_pole/power_pole_3_level.svg new file mode 100644 index 000000000..3e8c90e5e --- /dev/null +++ b/assets/layers/power_pole/power_pole_3_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_3_level.svg.license b/assets/layers/power_pole/power_pole_3_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_3_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_4_level.svg b/assets/layers/power_pole/power_pole_4_level.svg new file mode 100644 index 000000000..f26c156cd --- /dev/null +++ b/assets/layers/power_pole/power_pole_4_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_4_level.svg.license b/assets/layers/power_pole/power_pole_4_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_4_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_asymmetric.svg b/assets/layers/power_pole/power_pole_asymmetric.svg new file mode 100644 index 000000000..703177670 --- /dev/null +++ b/assets/layers/power_pole/power_pole_asymmetric.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_asymmetric.svg.license b/assets/layers/power_pole/power_pole_asymmetric.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_asymmetric.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_asymmetric_armless.svg b/assets/layers/power_pole/power_pole_asymmetric_armless.svg new file mode 100644 index 000000000..3bd75ab4c --- /dev/null +++ b/assets/layers/power_pole/power_pole_asymmetric_armless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license b/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_delta.svg b/assets/layers/power_pole/power_pole_delta.svg new file mode 100644 index 000000000..189f1d6c8 --- /dev/null +++ b/assets/layers/power_pole/power_pole_delta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_delta.svg.license b/assets/layers/power_pole/power_pole_delta.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_delta.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_flag.svg b/assets/layers/power_pole/power_pole_flag.svg new file mode 100644 index 000000000..653db19da --- /dev/null +++ b/assets/layers/power_pole/power_pole_flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_flag.svg.license b/assets/layers/power_pole/power_pole_flag.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_flag.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_triangle.svg b/assets/layers/power_pole/power_pole_triangle.svg new file mode 100644 index 000000000..8d0eb81af --- /dev/null +++ b/assets/layers/power_pole/power_pole_triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_triangle.svg.license b/assets/layers/power_pole/power_pole_triangle.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_triangle.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_triangle_armless.svg b/assets/layers/power_pole/power_pole_triangle_armless.svg new file mode 100644 index 000000000..704842fc0 --- /dev/null +++ b/assets/layers/power_pole/power_pole_triangle_armless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_pole/power_pole_triangle_armless.svg.license b/assets/layers/power_pole/power_pole_triangle_armless.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_pole/power_pole_triangle_armless.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/license_info.json b/assets/layers/power_tower/license_info.json new file mode 100644 index 000000000..ad46855ef --- /dev/null +++ b/assets/layers/power_tower/license_info.json @@ -0,0 +1,212 @@ +[ + { + "path": "power_tower_1_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_2_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_3_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_4_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_asymmetric.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_barrel.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_delta.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_delta_2_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_delta_3_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_donau.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_donau_inverse.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_flag.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_guyed_h_frame.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_h_frame.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_h_frame_2_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_portal.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_portal_2_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_portal_3_level.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_triangle.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_x_frame.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + }, + { + "path": "power_tower_y_frame.svg", + "license": "CC-BY-SA-4.0", + "authors": [ + "Sergey Vartanov" + ], + "sources": [ + "https://enzet.ru/roentgen/" + ] + } +] \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower.json b/assets/layers/power_tower/power_tower.json new file mode 100644 index 000000000..9189d58af --- /dev/null +++ b/assets/layers/power_tower/power_tower.json @@ -0,0 +1,384 @@ +{ + "id": "power_tower", + "name": { + "en": "Power Towers", + "nl": "Elektriciteitsmasten" + }, + "description": { + "en": "Layer showing power towers.", + "nl": "Laag die elektriciteitsmasten toont." + }, + "source": { + "osmTags": "power=tower" + }, + "minzoom": 14, + "title": { + "render": { + "en": "Power Tower" + } + }, + "pointRendering": [ + { + "marker": [ + { + "icon": { + "render": "./assets/layers/power_tower/power_tower_1_level.svg", + "mappings": [ + { + "if": "design=two-level", + "then": "./assets/layers/power_tower/power_tower_2_level.svg" + }, + { + "if": "design=three-level", + "then": "./assets/layers/power_tower/power_tower_3_level.svg" + }, + { + "if": "design=four-level", + "then": "./assets/layers/power_tower/power_tower_4_level.svg" + }, + { + "if": "design=asymmetric", + "then": "./assets/layers/power_tower/power_tower_asymmetric.svg" + }, + { + "if": "design=triangle", + "then": "./assets/layers/power_tower/power_tower_triangle.svg" + }, + { + "if": "design=flag", + "then": "./assets/layers/power_tower/power_tower_flag.svg" + }, + { + "if": "design=delta", + "then": "./assets/layers/power_tower/power_tower_delta.svg" + }, + { + "if": "design=delta_two_level", + "then": "./assets/layers/power_tower/power_tower_delta_2_level.svg" + }, + { + "if": "design=delta_three_level", + "then": "./assets/layers/power_tower/power_tower_delta_3_level.svg" + }, + { + "if": "design=donau", + "then": "./assets/layers/power_tower/power_tower_donau.svg" + }, + { + "if": "design=donau_inverse", + "then": "./assets/layers/power_tower/power_tower_donau_inverse.svg" + }, + { + "if": "design=barrel", + "then": "./assets/layers/power_tower/power_tower_barrel.svg" + }, + { + "if": "design=y-frame", + "then": "./assets/layers/power_tower/power_tower_y_frame.svg" + }, + { + "if": "design=x-frame", + "then": "./assets/layers/power_tower/power_tower_x_frame.svg" + }, + { + "if": "design=h-frame", + "then": "./assets/layers/power_tower/power_tower_h_frame.svg" + }, + { + "if": "design=guyed_h_frame", + "then": "./assets/layers/power_tower/power_tower_guyed_h_frame.svg" + }, + { + "if": "design=portal", + "then": "./assets/layers/power_tower/power_tower_portal.svg" + }, + { + "if": "design=portal-two-level", + "then": "./assets/layers/power_tower/power_tower_portal_2_level.svg" + }, + { + "if": "design=portal-three-level", + "then": "./assets/layers/power_tower/power_tower_portal_3_level.svg" + } + ] + } + } + ], + "location": [ + "point", + "centroid" + ] + } + ], + "tagRenderings": [ + { + "id": "material", + "question": { + "en": "What material is this power tower made of?" + }, + "render": { + "en": "This power tower is made of {material}." + }, + "freeform": { + "key": "material", + "type": "string", + "placeholder": { + "en": "e.g. wood, concrete, steel" + } + }, + "mappings": [ + { + "if": "material=steel", + "then": { + "en": "This power tower is made of steel." + } + }, + { + "if": "material=wood", + "then": { + "en": "This power tower is made of wood." + } + }, + { + "if": "material=metal", + "then": { + "en": "This power tower is made of metal." + } + }, + { + "if": "material=concrete", + "then": { + "en": "This power tower is made of concrete." + } + }, + { + "if": "material=reinforced_concrete", + "then": { + "en": "This power tower is made of reinforced concrete." + } + } + ] + }, + { + "id": "design", + "question": { + "en": "What is the design of this power tower?" + }, + "render": { + "en": "This power tower has the design {design}." + }, + "freeform": { + "key": "design", + "type": "string", + "placeholder": { + "en": "e.g., delta, donau, h-frame" + } + }, + "mappings": [ + { + "if": "design=one-level", + "then": { + "en": "This power tower has a one-level design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_1_level.svg" + } + }, + { + "if": "design=two-level", + "then": { + "en": "This power tower has a two-level design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_2_level.svg" + } + }, + { + "if": "design=three-level", + "then": { + "en": "This power tower has a three-level design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_3_level.svg" + } + }, + { + "if": "design=four-level", + "then": { + "en": "This power tower has a four-level design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_4_level.svg" + } + }, + { + "if": "design=asymmetric", + "then": { + "en": "This power tower has an asymmetric design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_asymmetric.svg" + } + }, + { + "if": "design=triangle", + "then": { + "en": "This power tower has a triangle design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_triangle.svg" + } + }, + { + "if": "design=flag", + "then": { + "en": "This power tower has a flag design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_flag.svg" + } + }, + { + "if": "design=delta", + "then": { + "en": "This power tower has a delta design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_delta.svg" + } + }, + { + "if": "design=delta_two_level", + "then": { + "en": "This power tower has a two-level delta design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_delta_2_level.svg" + } + }, + { + "if": "design=delta_three_level", + "then": { + "en": "This power tower has a three-level delta design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_delta_3_level.svg" + } + }, + { + "if": "design=donau", + "then": { + "en": "This power tower has a Donau design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_donau.svg" + } + }, + { + "if": "design=donau_inverse", + "then": { + "en": "This power tower has an inverse Donau design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_donau_inverse.svg" + } + }, + { + "if": "design=barrel", + "then": { + "en": "This power tower has a barrel design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_barrel.svg" + } + }, + { + "if": "design=y-frame", + "then": { + "en": "This power tower has a Y-frame design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_y_frame.svg" + } + }, + { + "if": "design=x-frame", + "then": { + "en": "This power tower has an X-frame design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_x_frame.svg" + } + }, + { + "if": "design=h-frame", + "then": { + "en": "This power tower has an H-frame design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_h_frame.svg" + } + }, + { + "if": "design=guyed_h-frame", + "then": { + "en": "This power tower has a guyed H-frame design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_guyed_h_frame.svg" + } + }, + { + "if": "design=portal", + "then": { + "en": "This power tower has a portal design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_portal.svg" + } + }, + { + "if": "design=portal-two-level", + "then": { + "en": "This power tower has a two-level portal design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_portal_2_level.svg" + } + }, + { + "if": "design=portal-three-level", + "then": { + "en": "This power tower has a three-level portal design." + }, + "icon": { + "path": "./assets/layers/power_tower/power_tower_portal_3_level.svg" + } + } + ] + }, + { + "builtin": "ref", + "override": { + "question": { + "en": "What is the reference number of this power tower?" + }, + "render": { + "en": "This power tower has the reference number {ref}." + } + } + }, + { + "builtin": "operator", + "override": { + "question": { + "en": "Who operates this power tower?" + }, + "render": { + "en": "This power tower is operated by {operator}." + } + } + } + ], + "allowMove": false +} \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_1_level.svg b/assets/layers/power_tower/power_tower_1_level.svg new file mode 100644 index 000000000..f3cee997e --- /dev/null +++ b/assets/layers/power_tower/power_tower_1_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_1_level.svg.license b/assets/layers/power_tower/power_tower_1_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_1_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_2_level.svg b/assets/layers/power_tower/power_tower_2_level.svg new file mode 100644 index 000000000..296ee3b0f --- /dev/null +++ b/assets/layers/power_tower/power_tower_2_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_2_level.svg.license b/assets/layers/power_tower/power_tower_2_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_2_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_3_level.svg b/assets/layers/power_tower/power_tower_3_level.svg new file mode 100644 index 000000000..d19516dd8 --- /dev/null +++ b/assets/layers/power_tower/power_tower_3_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_3_level.svg.license b/assets/layers/power_tower/power_tower_3_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_3_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_4_level.svg b/assets/layers/power_tower/power_tower_4_level.svg new file mode 100644 index 000000000..cea32a0b2 --- /dev/null +++ b/assets/layers/power_tower/power_tower_4_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_4_level.svg.license b/assets/layers/power_tower/power_tower_4_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_4_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_asymmetric.svg b/assets/layers/power_tower/power_tower_asymmetric.svg new file mode 100644 index 000000000..e22dc4a71 --- /dev/null +++ b/assets/layers/power_tower/power_tower_asymmetric.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_asymmetric.svg.license b/assets/layers/power_tower/power_tower_asymmetric.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_asymmetric.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_barrel.svg b/assets/layers/power_tower/power_tower_barrel.svg new file mode 100644 index 000000000..eb340d2eb --- /dev/null +++ b/assets/layers/power_tower/power_tower_barrel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_barrel.svg.license b/assets/layers/power_tower/power_tower_barrel.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_barrel.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta.svg b/assets/layers/power_tower/power_tower_delta.svg new file mode 100644 index 000000000..a43704bf1 --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta.svg.license b/assets/layers/power_tower/power_tower_delta.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta_2_level.svg b/assets/layers/power_tower/power_tower_delta_2_level.svg new file mode 100644 index 000000000..546f04d93 --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta_2_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta_2_level.svg.license b/assets/layers/power_tower/power_tower_delta_2_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta_2_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta_3_level.svg b/assets/layers/power_tower/power_tower_delta_3_level.svg new file mode 100644 index 000000000..ad587721f --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta_3_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_delta_3_level.svg.license b/assets/layers/power_tower/power_tower_delta_3_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_delta_3_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_donau.svg b/assets/layers/power_tower/power_tower_donau.svg new file mode 100644 index 000000000..e5a6e0b09 --- /dev/null +++ b/assets/layers/power_tower/power_tower_donau.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_donau.svg.license b/assets/layers/power_tower/power_tower_donau.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_donau.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_donau_inverse.svg b/assets/layers/power_tower/power_tower_donau_inverse.svg new file mode 100644 index 000000000..e1d11e7f8 --- /dev/null +++ b/assets/layers/power_tower/power_tower_donau_inverse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_donau_inverse.svg.license b/assets/layers/power_tower/power_tower_donau_inverse.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_donau_inverse.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_flag.svg b/assets/layers/power_tower/power_tower_flag.svg new file mode 100644 index 000000000..65ef7d138 --- /dev/null +++ b/assets/layers/power_tower/power_tower_flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_flag.svg.license b/assets/layers/power_tower/power_tower_flag.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_flag.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_guyed_h_frame.svg b/assets/layers/power_tower/power_tower_guyed_h_frame.svg new file mode 100644 index 000000000..449ef7232 --- /dev/null +++ b/assets/layers/power_tower/power_tower_guyed_h_frame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license b/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_h_frame.svg b/assets/layers/power_tower/power_tower_h_frame.svg new file mode 100644 index 000000000..5e2761a17 --- /dev/null +++ b/assets/layers/power_tower/power_tower_h_frame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_h_frame.svg.license b/assets/layers/power_tower/power_tower_h_frame.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_h_frame.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_h_frame_2_level.svg b/assets/layers/power_tower/power_tower_h_frame_2_level.svg new file mode 100644 index 000000000..f086630a7 --- /dev/null +++ b/assets/layers/power_tower/power_tower_h_frame_2_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license b/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal.svg b/assets/layers/power_tower/power_tower_portal.svg new file mode 100644 index 000000000..eb8b280b0 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal.svg.license b/assets/layers/power_tower/power_tower_portal.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal_2_level.svg b/assets/layers/power_tower/power_tower_portal_2_level.svg new file mode 100644 index 000000000..665826083 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal_2_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal_2_level.svg.license b/assets/layers/power_tower/power_tower_portal_2_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal_2_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal_3_level.svg b/assets/layers/power_tower/power_tower_portal_3_level.svg new file mode 100644 index 000000000..a2facddc2 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal_3_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_portal_3_level.svg.license b/assets/layers/power_tower/power_tower_portal_3_level.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_portal_3_level.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_triangle.svg b/assets/layers/power_tower/power_tower_triangle.svg new file mode 100644 index 000000000..01a8e24bd --- /dev/null +++ b/assets/layers/power_tower/power_tower_triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_triangle.svg.license b/assets/layers/power_tower/power_tower_triangle.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_triangle.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_x_frame.svg b/assets/layers/power_tower/power_tower_x_frame.svg new file mode 100644 index 000000000..6cca19e10 --- /dev/null +++ b/assets/layers/power_tower/power_tower_x_frame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_x_frame.svg.license b/assets/layers/power_tower/power_tower_x_frame.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_x_frame.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_y_frame.svg b/assets/layers/power_tower/power_tower_y_frame.svg new file mode 100644 index 000000000..f60c57e4f --- /dev/null +++ b/assets/layers/power_tower/power_tower_y_frame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/power_tower/power_tower_y_frame.svg.license b/assets/layers/power_tower/power_tower_y_frame.svg.license new file mode 100644 index 000000000..61df2a1b4 --- /dev/null +++ b/assets/layers/power_tower/power_tower_y_frame.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Sergey Vartanov +SPDX-License-Identifier: CC-BY-SA-4.0 \ No newline at end of file diff --git a/assets/layers/street_cabinet/street_cabinet.json b/assets/layers/street_cabinet/street_cabinet.json index ef2e26f64..963edf448 100644 --- a/assets/layers/street_cabinet/street_cabinet.json +++ b/assets/layers/street_cabinet/street_cabinet.json @@ -29,6 +29,12 @@ "anchor": "bottom" } ], + "lineRendering": [ + { + "color": "#3c3c3c", + "fillColor": "#3c3c3c6a" + } + ], "presets": [ { "title": { @@ -51,25 +57,64 @@ "if": "utility=power", "then": { "en": "This street cabinet is for power distribution." - } + }, + "addExtraTags": [ + "street_cabinet=" + ] }, { "if": "utility=telecom", "then": { "en": "This street cabinet is for telecommunications." - } + }, + "addExtraTags": [ + "street_cabinet=" + ] }, { "if": "utility=gas", "then": { "en": "This street cabinet is for gas utilities." - } + }, + "addExtraTags": [ + "street_cabinet=" + ] }, { "if": "utility=street_lighting", "then": { "en": "This street cabinet is for street lighting." - } + }, + "addExtraTags": [ + "street_cabinet=" + ] + }, + { + "if": "street_cabinet=traffic_control", + "then": { + "en": "This street cabinet is for traffic control systems like traffic signals or movable barriers." + }, + "addExtraTags": [ + "utility=" + ] + }, + { + "if": "street_cabinet=traffic_monitoring", + "then": { + "en": "This street cabinet is for traffic monitoring systems." + }, + "addExtraTags": [ + "utility=" + ] + }, + { + "if": "street_cabinet=postal_service", + "then": { + "en": "This street cabinet is used for storing pending mail before local delivery." + }, + "addExtraTags": [ + "utility=" + ] } ] }, diff --git a/assets/layers/telecom_exchange/license_info.json b/assets/layers/telecom/license_info.json similarity index 100% rename from assets/layers/telecom_exchange/license_info.json rename to assets/layers/telecom/license_info.json diff --git a/assets/layers/telecom/telecom.json b/assets/layers/telecom/telecom.json new file mode 100644 index 000000000..f15947a87 --- /dev/null +++ b/assets/layers/telecom/telecom.json @@ -0,0 +1,162 @@ +{ + "id": "telecom", + "name": { + "en": "Telecom" + }, + "description": { + "en": "Layer showing telecom exchanges and other related features like connection points and distribution points." + }, + "source": { + "osmTags": { + "or": [ + "telecom=exchange", + "telecom=distribution_point", + "telecom=connection_point" + ] + } + }, + "minzoom": 9, + "title": { + "render": { + "en": "Telecom Exchange" + }, + "mappings": [ + { + "if": "telecom=connection_point", + "then": { + "en": "Telecom Connection Point" + } + }, + { + "if": "telecom=distribution_point", + "then": { + "en": "Telecom Distribution Point" + } + } + ] + }, + "pointRendering": [ + { + "marker": [ + { + "icon": "./assets/layers/telecom/telecom_exchange.svg" + } + ], + "location": [ + "point", + "centroid" + ] + } + ], + "lineRendering": [ + { + "color": "#3c3c3c", + "fillColor": "#3c3c3c6a" + } + ], + "presets": [ + { + "title": { + "en": "a telecom exchange" + }, + "tags": [ + "telecom=exchange", + "utility=telecom" + ] + }, + { + "title": { + "en": "a telecom connection point" + }, + "tags": [ + "telecom=connection_point", + "utility=telecom" + ] + }, + { + "title": { + "en": "a telecom distribution point" + }, + "tags": [ + "telecom=distribution_point", + "utility=telecom" + ] + } + ], + "tagRenderings": [ + { + "id": "located_in", + "question": { + "en": "Where is this feature located?" + }, + "mappings": [ + { + "if": "building~*", + "then": { + "en": "This feature is located in a building." + }, + "hideInAnswer": true + }, + { + "if": "man_made=street_cabinet", + "then": { + "en": "This feature is located in a street cabinet." + } + }, + { + "if": { + "and": [ + "man_made=", + "building=" + ] + }, + "then": { + "en": "This feature is most likely located in a building." + }, + "hideInAnswer": true + } + ] + }, + { + "builtin": "operator", + "override": { + "question": { + "en": "What is the operator of this telecom point?" + }, + "render": { + "en": "This telecom point is operated by {operator}." + } + } + }, + { + "id": "medium", + "question": { + "en": "What is the medium used by this telecom point?" + }, + "mappings": [ + { + "if": "telecom:medium=copper", + "then": { + "en": "The landlines connected to this telecom point use copper wiring." + } + }, + { + "if": "telecom:medium=fibre", + "then": { + "en": "The landlines connected to this telecom point use fibre optics." + } + }, + { + "if": "telecom:medium=coaxial", + "then": { + "en": "The landlines connected to this telecom point use coaxial cable." + } + } + ] + } + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": false + } +} \ No newline at end of file diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg b/assets/layers/telecom/telecom_exchange.svg similarity index 100% rename from assets/layers/telecom_exchange/telecom_exchange.svg rename to assets/layers/telecom/telecom_exchange.svg diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg.license b/assets/layers/telecom/telecom_exchange.svg.license similarity index 100% rename from assets/layers/telecom_exchange/telecom_exchange.svg.license rename to assets/layers/telecom/telecom_exchange.svg.license diff --git a/assets/layers/telecom_exchange/telecom_exchange.json b/assets/layers/telecom_exchange/telecom_exchange.json deleted file mode 100644 index d822e1183..000000000 --- a/assets/layers/telecom_exchange/telecom_exchange.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "id": "telecom_exchange", - "name": { - "en": "Telecom Exchanges" - }, - "description": { - "en": "Layer showing telecom exchanges, which are facilities that connect telephone lines and manage telecommunications traffic." - }, - "source": { - "osmTags": "telecom=exchange" - }, - "minzoom": 9, - "title": { - "render": { - "en": "Telecom Exchange" - } - }, - "pointRendering": [ - { - "marker": [ - { - "icon": "./assets/layers/telecom_exchange/telecom_exchange.svg" - } - ], - "location": [ - "point", - "centroid" - ] - } - ], - "presets": [ - { - "title": { - "en": "a telecom exchange" - }, - "tags": [ - "telecom=exchange" - ] - } - ], - "tagRenderings": [ - { - "builtin": "operator", - "override": { - "question": { - "en": "What is the operator of this telecom exchange?" - }, - "render": { - "en": "This telecom exchange is operated by {operator}." - } - } - }, - { - "id": "medium", - "question": { - "en": "What is the medium used by this telecom exchange?" - }, - "mappings": [ - { - "if": "telecom:medium=copper", - "then": { - "en": "The landlines connected to this telecom exchange use copper wiring." - } - }, - { - "if": "telecom:medium=fibre", - "then": { - "en": "The landlines connected to this telecom exchange use fibre optics." - } - }, - { - "if": "telecom:medium=coaxial", - "then": { - "en": "The landlines connected to this telecom exchange use coaxial cable." - } - } - ] - } - ], - "allowMove": { - "enableImproveAccuracy": true, - "enableRelocation": false - } -} \ No newline at end of file diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index 90ca8bed0..0c3b2aad8 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -69,14 +69,6 @@ ], "sources": [] }, - { - "path": "blocked.svg", - "license": "CC0-1.0", - "authors": [ - "Pieter Vander Vennet" - ], - "sources": [] - }, { "path": "brick_wall_raw.svg", "license": "CC0-1.0", @@ -474,6 +466,16 @@ "https://liberapay.com/" ] }, + { + "path": "lightning.svg", + "license": "CC0-1.0", + "authors": [ + "FontAwesome" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Power-lightning_icon-icons.com_74466.svg" + ] + }, { "path": "loading.svg", "license": "TRIVIAL", diff --git a/assets/svg/lightning.svg b/assets/svg/lightning.svg new file mode 100644 index 000000000..c085a87a6 --- /dev/null +++ b/assets/svg/lightning.svg @@ -0,0 +1,8 @@ + + + + + + + +