From 488a7bd5e3eb3560c9206c66a4ce738708dff9a5 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 11 Jun 2025 12:29:41 +0200 Subject: [PATCH 01/19] Chore: convert text to path --- assets/layers/mobility_hub/logo-hub.svg | 26 ++++++++++--------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/assets/layers/mobility_hub/logo-hub.svg b/assets/layers/mobility_hub/logo-hub.svg index ea9f6c807..9f6424ced 100644 --- a/assets/layers/mobility_hub/logo-hub.svg +++ b/assets/layers/mobility_hub/logo-hub.svg @@ -8,7 +8,7 @@ height="500" viewBox="0 0 500 500" sodipodi:docname="logo-hub.svg" - inkscape:version="1.4 (e7c3feb100, 2024-10-09)" + inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -25,10 +25,10 @@ inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:zoom="0.68921927" - inkscape:cx="263.34145" - inkscape:cy="171.93367" - inkscape:window-width="1704" - inkscape:window-height="996" + inkscape:cx="264.06691" + inkscape:cy="172.65913" + inkscape:window-width="2560" + inkscape:window-height="1371" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -45,17 +45,11 @@ d="m 436.5236,681.36291 c -6.74741,-2.13918 -14.9843,-7.26966 -34.32508,-21.37991 -68.5756,-50.02998 -120.91693,-107.10242 -149.04086,-162.51261 -17.0909,-33.67273 -25.59741,-65.40593 -26.628,-99.33465 -1.15068,-37.88281 6.06308,-71.70048 22.46148,-105.29805 30.02816,-61.52265 86.3781,-106.04268 152.70885,-120.6497 17.43029,-3.83841 28.50629,-4.98052 48.30017,-4.98052 19.79387,0 30.86987,1.14211 48.30016,4.98052 94.21933,20.7485 164.51505,100.20844 174.54536,197.3003 1.58552,15.34767 0.64021,42.86331 -1.97525,57.4944 -13.20508,73.87025 -65.11208,147.83867 -152.43593,217.22396 -13.05291,10.37151 -39.96705,29.70314 -46.65434,33.51044 -10.2471,5.83402 -23.90103,7.24594 -35.25656,3.64582 z" id="path1" sodipodi:nodetypes="sssssssssssss" /> - hub + From 24013e1b9b2b7353418894224cfb3cdcb62b1f48 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Wed, 11 Jun 2025 14:12:17 +0200 Subject: [PATCH 02/19] Chore: Update tag2link --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd753e6ef..9818b9bf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,7 +84,7 @@ "showdown": "^2.1.0", "svelte": "^3.59.2", "svg-path-parser": "^1.1.0", - "tag2link": "^2025.3.21", + "tag2link": "^2025.5.21", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", @@ -26444,9 +26444,9 @@ "license": "MIT" }, "node_modules/tag2link": { - "version": "2025.3.21", - "resolved": "https://registry.npmjs.org/tag2link/-/tag2link-2025.3.21.tgz", - "integrity": "sha512-JvRTQdY/z0vAEFUzL7rhLndNiDnStlurW+1jgXL5FW+GppR2T/dq2lXMEppbFNxJ9C4h5b+ykjcMPH791YeLdA==", + "version": "2025.5.21", + "resolved": "https://registry.npmjs.org/tag2link/-/tag2link-2025.5.21.tgz", + "integrity": "sha512-vcz6/6U5V3QYPA7geLrtzLMqhCwg6OvoGP665DbGgPRSWASjFn0J4jA/NyifD3Tmp2yf8RnEuI6QBvhXGBVSHg==", "license": "ISC" }, "node_modules/tailwind-merge": { diff --git a/package.json b/package.json index afa01aadd..5c4e9f508 100644 --- a/package.json +++ b/package.json @@ -247,7 +247,7 @@ "showdown": "^2.1.0", "svelte": "^3.59.2", "svg-path-parser": "^1.1.0", - "tag2link": "^2025.3.21", + "tag2link": "^2025.5.21", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.4.17", "ts-node": "^10.9.2", @@ -298,4 +298,4 @@ "vite-node": "^3.0.5", "vitest": "^3.2.1" } -} +} \ No newline at end of file From 67e5aa3c6e75eb4b748f116fd27852edd5d58527 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 1 Jul 2025 22:32:18 +0200 Subject: [PATCH 03/19] Themes(waste_assen): General cleanup and import options --- assets/themes/waste_assen/waste_assen.json | 203 ++++++++++++++++++--- 1 file changed, 182 insertions(+), 21 deletions(-) diff --git a/assets/themes/waste_assen/waste_assen.json b/assets/themes/waste_assen/waste_assen.json index 2983968de..31f064e70 100644 --- a/assets/themes/waste_assen/waste_assen.json +++ b/assets/themes/waste_assen/waste_assen.json @@ -26,17 +26,67 @@ "name": "Dataset Afvalbakken Assen", "description": "Laag op basis van externe data", "source": { - "osmTags": "OBJECTID~*", + "osmTags": "Historisch_~*", "geoJson": "https://opendata.arcgis.com/datasets/5b6953ac5a9d4616a7dc75ab0beeac2f_0.geojson" }, "calculatedTags": [ "_closest_osm_waste_basket=closest(feat)('waste_basket')?.properties?.id", "_closest_osm_waste_basket_distance=distanceTo(feat)(feat.properties._closest_osm_waste_basket)", - "_has_closeby_feature=Number(feat.properties._closest_osm_waste_basket_distance) < 10 ? 'yes' : 'no'" + "_has_closeby_feature=Number(feat.properties._closest_osm_waste_basket_distance) < 10 ? 'yes' : 'no'", + "_waste=(feat.properties.Type_ === 'Capitol 60L' || feat.properties.Type_ === 'Restafval') ? 'trash' : (feat.properties.Type_ === 'Hondenpoep' ? 'dog_excrement' : '')", + "_tags='amenity=waste_basket' + (feat.properties._waste ? ';waste=' + feat.properties._waste : '') + ';operator=Gemeente Assen;operator:wikidata=Q798'" ], "title": "Afvalbak in dataset", "tagRenderings": [ - "all_tags" + { + "id": "import", + "render": { + "special": { + "type": "import_button", + "targetLayer": "waste_basket", + "tags": "_tags", + "text": "Voeg deze afvalbak toe" + } + }, + "condition": "_has_closeby_feature=no" + }, + { + "id": "tag-hint", + "render": "Deze afvalbak krijgt de volgende tags: {_tags}", + "condition": "_has_closeby_feature=no" + }, + { + "id": "imported", + "render": "Deze afvalbak is (waarschijnlijk) al toegevoegd. Bekijk het punt.", + "condition": "_has_closeby_feature=yes" + }, + { + "id": "tag-apply", + "condition": "_has_closeby_feature=yes", + "render": { + "special": { + "type": "tag_apply", + "tags_to_apply": "$_tags", + "id_of_object_to_apply_this_one": "_closest_osm_waste_basket", + "message": "Voeg alle tags toe aan de bestaande afvalbak", + "image": "./assets/svg/addSmall.svg" + } + } + }, + { + "id": "type", + "render": "Type: {Type_}", + "condition": "Type_~*" + }, + { + "id": "colour", + "render": "Kleur: {Kleur_}", + "condition": "Kleur_~*" + }, + { + "id": "minimap_with_poi", + "render": "{minimap(18, id, _closest_osm_waste_basket)}" + } ], "pointRendering": [ { @@ -46,12 +96,13 @@ ], "marker": [ { - "icon": { - "render": "circle:red", + "icon": "circle", + "color": { + "render": "red", "mappings": [ { "if": "_has_closeby_feature=yes", - "then": "circle:#008000aa" + "then": "green" } ] } @@ -61,7 +112,26 @@ "anchor": "center" } ], - "lineRendering": [] + "lineRendering": [], + "filter": [ + { + "id": "closeby", + "options": [ + { + "default": true, + "question": "Alle vuilnisbakken" + }, + { + "osmTags": "_has_closeby_feature=yes", + "question": "Met nabijgelegen vuilnisbak" + }, + { + "osmTags": "_has_closeby_feature=no", + "question": "Zonder nabijgelegen vuilnisbak" + } + ] + } + ] }, "recycling", { @@ -69,20 +139,73 @@ "name": "Dataset Recyclingcontainers Assen", "description": "Laag op basis van externe data", "source": { - "osmTags": "OBJECTID~*", - "geoJson": "https://opendata.arcgis.com/datasets/edb893998e27461b8ed82aad9854d27d_0.geojson" + "osmTags": "Subtype_~*", + "geoJson": "https://services1.arcgis.com/p5QhXC0i0sZjprM1/arcgis/rest/services/Dataset_ondergrondse_containers_2022_Assen_(view)/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson" }, "calculatedTags": [ "_closest_osm_recycling=closest(feat)('recycling')?.properties?.id", "_closest_osm_waste_disposal=closest(feat)('waste_disposal')?.properties?.id", "_closest_osm_recycling_distance=distanceTo(feat)(feat.properties._closest_osm_recycling)", "_closest_osm_waste_disposal_distance=distanceTo(feat)(feat.properties._closest_osm_waste_disposal)", + "_closest_feature=(Number(feat.properties._closest_osm_recycling_distance) <= Number(feat.properties._closest_osm_waste_disposal_distance) ? feat.properties._closest_osm_recycling : feat.properties._closest_osm_waste_disposal)", "_has_closeby_recycling=Number(feat.properties._closest_osm_recycling_distance) < 10 ? 'yes' : 'no'", - "_has_closeby_waste_disposal=Number(feat.properties._closest_osm_waste_disposal_distance) < 10 ? 'yes' : 'no'" + "_has_closeby_waste_disposal=Number(feat.properties._closest_osm_waste_disposal_distance) < 10 ? 'yes' : 'no'", + "_has_closeby_feature=feat.properties._has_closeby_recycling === 'yes' || feat.properties._has_closeby_waste_disposal === 'yes' ? 'yes' : 'no'", + "_amenity=feat.properties.Type__ === 'Restafval' ? 'amenity=waste_disposal;access=residents' : 'amenity=recycling;recycling_type=container'", + "_recycling_tags=feat.properties.Type__ === 'Glas' ? 'recycling:glass_bottles=yes' : (feat.properties.Type__ === 'Kleding' ? 'recycling:clothes=yes;recyling:shoes=yes' : (feat.properties.Type__ === 'Papier' ? 'recycling:paper=yes' : (feat.properties.Type__ === 'PMD' ? 'recycling:pmd=yes' : (feat.properties.Type__ === 'BIO' ? 'recycling:green_waste=yes' : ''))))", + "_tags=feat.properties._amenity + (feat.properties._recycling_tags ? ';' + feat.properties._recycling_tags : '') + ';operator=Gemeente Assen;operator:wikidata=Q798'" ], "title": "Recyclingcontainer in dataset", "tagRenderings": [ - "all_tags" + { + "id": "import", + "render": { + "special": { + "type": "import_button", + "targetLayer": "recycling", + "tags": "_tags", + "text": "Voeg deze recyclingcontainer toe" + } + }, + "condition": "_has_closeby_feature=no" + }, + { + "id": "tag-hint", + "render": "Deze recyclingcontainer krijgt de volgende tags: {_tags}", + "condition": "_has_closeby_feature=no" + }, + { + "id": "imported", + "render": "Deze recyclingcontainer is (waarschijnlijk) al toegevoegd. Bekijk het punt.", + "condition": "_has_closeby_feature=yes" + }, + { + "id": "tag-apply", + "condition": "_has_closeby_feature=yes", + "render": { + "special": { + "type": "tag_apply", + "tags_to_apply": "$_tags", + "id_of_object_to_apply_this_one": "_closest_feature", + "message": "Voeg alle tags toe aan de bestaande recyclingcontainer", + "image": "./assets/svg/addSmall.svg" + } + } + }, + { + "id": "type", + "render": "Type: {Type_}", + "condition": "Type_~*" + }, + { + "id": "colour", + "render": "Kleur: {Kleur_}", + "condition": "Kleur_~*" + }, + { + "id": "minimap_with_poi", + "render": "{minimap(18, id, _closest_feature)}" + } ], "pointRendering": [ { @@ -92,16 +215,18 @@ ], "marker": [ { - "icon": { - "render": "circle:red", + "icon": "circle", + "color": { + "render": "red", "mappings": [ { - "if": "_has_closeby_recycling=yes", - "then": "circle:#008000aa" - }, - { - "if": "_has_closeby_waste_disposal=yes", - "then": "circle:#008000aa" + "if": { + "or": [ + "_has_closeby_recycling=yes", + "_has_closeby_waste_disposal=yes" + ] + }, + "then": "green" } ] } @@ -111,8 +236,44 @@ "anchor": "center" } ], - "lineRendering": [] + "lineRendering": [], + "filter": [ + { + "id": "closeby", + "options": [ + { + "default": true, + "question": "Alle recyclingcontainers" + }, + { + "osmTags": "_has_closeby_feature=yes", + "question": "Met nabijgelegen recyclingcontainer" + }, + { + "osmTags": "_has_closeby_feature=no", + "question": "Zonder nabijgelegen recyclingcontainer" + } + ] + } + ] }, "waste_disposal" + ], + "tileLayerSources": [ + { + "id": "assen_lufo", + "name": "Assen Luchtfoto", + "best": true, + "attribution": { + "text": "Gemeente Assen" + }, + "category": "photo", + "type": "wms", + "url": "https://map.rlin.eu/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=assen&CRS={proj}&STYLES=&WIDTH={width}&HEIGHT={height}&BBOX={bbox}", + "defaultState": false, + "isOverlay": false, + "min_zoom": 0, + "max_zoom": 22 + } ] -} +} \ No newline at end of file From 8e3d0ce58ddc9d6c4c8bed5a4d9994f3d50da7c8 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 14 Jul 2025 11:28:39 +0200 Subject: [PATCH 04/19] Themes(atm): Add deposit types --- assets/layers/atm/atm.json | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index 4101aa11b..c656e4522 100644 --- a/assets/layers/atm/atm.json +++ b/assets/layers/atm/atm.json @@ -415,6 +415,40 @@ } ] }, + { + "id": "cash_in-types", + "question": { + "en": "In what ways can you deposit cash at this ATM?", + "nl": "Op welke manieren kan je geld storten bij deze geldautomaat?" + }, + "mappings": [ + { + "if": "cash_in:coins=yes", + "ifnot": "cash_in:coins=no", + "then": { + "en": "You can deposit coins at this ATM", + "nl": "Je kan munten storten bij deze geldautomaat" + } + }, + { + "if": "cash_in:notes=yes", + "ifnot": "cash_in:notes=no", + "then": { + "en": "You can deposit notes at this ATM", + "nl": "Je kan biljetten storten bij deze geldautomaat" + } + }, + { + "if": "cash_in:sealbags=yes", + "ifnot": "cash_in:sealbags=no", + "then": { + "en": "You can deposit sealed bags at this ATM", + "nl": "Je kan sealbags storten bij deze geldautomaat" + } + } + ], + "condition": "cash_in=yes" + }, { "id": "cash_out-denominations-notes", "question": { @@ -691,4 +725,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file From ca0ebe94d6a6244d2c4d56a6a58325f65dfa43a9 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 14 Jul 2025 11:29:20 +0200 Subject: [PATCH 05/19] Themes(street_lamps): Use unused icons --- assets/layers/street_lamps/street_lamps.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/assets/layers/street_lamps/street_lamps.json b/assets/layers/street_lamps/street_lamps.json index 3a611e2e2..f47f611a5 100644 --- a/assets/layers/street_lamps/street_lamps.json +++ b/assets/layers/street_lamps/street_lamps.json @@ -269,7 +269,8 @@ "ca": "Aquest fanal es troba al final d'un pal recte", "cs": "Tato lampa je umístěna na vrcholu rovného stožáru", "it": "Questo lampione si trova in cima a un palo dritto" - } + }, + "icon": "./assets/layers/street_lamps/straight_pole.svg" }, { "if": "lamp_mount=bent_mast", @@ -281,7 +282,8 @@ "ca": "Aquest fanal es troba al final d'un pal doblegat", "cs": "Tato lampa je umístěna na konci ohnutého stožáru", "it": "Questo lampione si trova all'estremità di un palo curvo" - } + }, + "icon": "./assets/layers/street_lamps/bent_pole_1.svg" } ], "condition": { @@ -674,4 +676,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file From 992d340dfde423b57b9e2a78ec18a9cce8971d44 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 14 Jul 2025 12:26:27 +0200 Subject: [PATCH 06/19] Chore: Remove gitpod --- .gitpod.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 964b5c27f..000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,20 +0,0 @@ -tasks: - - init: npm run init - command: npm run start - name: Initialize and start MapComplete - - name: Generate Layeroverview - command: npm run generate:layeroverview - -ports: - - name: MapComplete Website - port: 1234 - onOpen: open-browser - -vscode: - extensions: - - "esbenp.prettier-vscode" - - "eamodio.gitlens" - - "github.vscode-pull-request-github" - - "svelte.svelte-vscode" - - "bradlc.vscode-tailwindcss" - - "editorconfig.editorconfig" From 6054c7f600e1fbcef5767640420c21bbf143a03c Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 14 Jul 2025 13:57:57 +0200 Subject: [PATCH 07/19] Chore: add missing multianswer --- assets/layers/atm/atm.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index c656e4522..d6a2b2e61 100644 --- a/assets/layers/atm/atm.json +++ b/assets/layers/atm/atm.json @@ -447,7 +447,8 @@ } } ], - "condition": "cash_in=yes" + "condition": "cash_in=yes", + "multiAnswer": true }, { "id": "cash_out-denominations-notes", From a35a6f5b59bc807b380ab9c260d8fad53ec7a917 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Fri, 18 Jul 2025 22:00:37 +0200 Subject: [PATCH 08/19] Docs: Update windows section --- Docs/Development_deployment.md | 49 +++++++++++++--------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/Docs/Development_deployment.md b/Docs/Development_deployment.md index 317cbddb8..4836505e4 100644 --- a/Docs/Development_deployment.md +++ b/Docs/Development_deployment.md @@ -31,17 +31,17 @@ You need at least 3GB RAM available to run MapComplete, but you'll preferably ha To develop and build MapComplete, you 0. Make a fork and clone the repository. (We recommend a shallow clone with `git clone --filter=blob:none `) -1. Install `python3` if you do not have it already - On Linux: `sudo apt install python3` +1. Install `python3` if you do not have it already - On Linux: `sudo apt install python3` or `sudo dnf install python3` 2. Install `nvm` to easily install node: - `wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash` - Restart your terminal - Run `nvm install` and `nvm use` to install and use the correct version of node. (_Note: nvm might complain that the relevant version is not yet installed. It'll have it installed only for the current user account but not system-wide - which is fine) -4. Run `npm run init` (including **run**, not ~~`npm init`~~)which … +3. Run `npm run init` (including **run**, not ~~`npm init`~~)which … - runs `npm ci` for you - generates some additional dependencies and files - does various housekeeping and setup. This can take a few minutes the first time as some PNGs need to be created -5. Run `npm run start` to host a local testversion at http://localhost:1234/ -6. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` +4. Run `npm run start` to host a local testversion at http://127.0.0.1:1234/ +5. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` or `userlayout=true#` as [Query parameter](URL_Parameters.md). Note that the shorter URLs (e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version. @@ -52,31 +52,18 @@ Development using Windows You need at least 3GB RAM available to run MapComplete, but you'll preferably have 8GB of free RAM available. -For Windows you can use the devcontainer, or the WSL subsystem. - -To use the devcontainer in Visual Studio Code: - -0. Make sure you have installed - the [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) - extension and it's dependencies. -1. Make a fork and clone the repository. -2. After cloning, Visual Studio Code will ask you if you want to use the devcontainer. -3. Then you can either clone it again in a volume (for better performance), or open the current folder in a container. -4. By now, you should be able to run `npm run start` to host a local testversion at http://localhost:1234/index.html -5. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` - or `userlayout=true#` as [Query parameter](URL_Parameters.md). Note that the shorter URLs ( - e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version. +For Windows you can use the WSL subsystem. To use the WSL in Visual Studio Code: -0. Make sure you have installed the [Remote - WSL]() extension and it's dependencies. -1. Open a remote WSL window using the button in the bottom left. -2. Make a fork and clone the repository. -3. Install `npm` using `sudo apt install npm`. -4. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the +1. Make sure you have installed the [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) extension and it's dependencies. +2. Open a remote WSL window using the button in the bottom left. +3. Make a fork and clone the repository. +4. Install `npm` using `sudo apt install npm`. +5. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the dependencies too -5. Run `npm run start` to host a local testversion at http://localhost:1234/index.html -6. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` +6. Run `npm run start` to host a local testversion at http://127.0.0.1:1234/index.html +7. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` or `userlayout=true#` as [Query parameter](URL_Parameters.md). Note that the shorter URLs ( e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version. @@ -95,10 +82,12 @@ Note that `npm run start` is equivalent to `npm run generate:layeroverview && np Automatic deployment -------------------- -Currently, the master branch is automatically deployed to https://mapcomplete.org/ by a Forgejo action. +MapComplete is automatically deployed to various locations, depending on the branch you are working on. -Every branch is automatically built (upon push) to `https://pietervdvn.github.io/mc/` by a GitHub action. +The master branch is automatically deployed to https://mapcomplete.org/, and the development branch is available at +https://dev.mapcomplete.org/. Both are automatically deployed by a Forgejo action. +Other branches are automatically deployed to https://builds.mapcomplete.org/. Deploying a fork ---------------- @@ -113,9 +102,9 @@ This script can be invoked with `npm run prepare-deploy` If you want to deploy your fork: -0. `npm run prepare-deploy` -1. `npm run build` -2. Copy the entire `dist` folder to where you host your website. Visiting `index.html` gives you the landing page, +1. `npm run prepare-deploy` +2. `npm run build` +3. Copy the entire `dist` folder to where you host your website. Visiting `index.html` gives you the landing page, visiting `yourwebsite/` should bring you to the appropriate theme. ### Getting your own API-keys From 3ecf39b694f1a6d1e4f90c07ee6e3ed3d0c40804 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Fri, 18 Jul 2025 23:24:44 +0200 Subject: [PATCH 09/19] Themes(ZHV): Test theme around ZHV --- assets/themes/zhv/zhv.json | 179 +++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 assets/themes/zhv/zhv.json diff --git a/assets/themes/zhv/zhv.json b/assets/themes/zhv/zhv.json new file mode 100644 index 000000000..a5a06719f --- /dev/null +++ b/assets/themes/zhv/zhv.json @@ -0,0 +1,179 @@ +{ + "id": "zhv", + "title": { + "en": "ZHV Import Tool" + }, + "description": { + "en": "Small theme allowing import of bus stops from the Zentrales Haltestellenverzeichnis in Germany." + }, + "icon": "./assets/layers/transit_stops/bus_stop.svg", + "hideFromOverview": true, + "layers": [ + { + "id": "zhv", + "name": { + "en": "Bus stops in ZHV" + }, + "title": { + "render": { + "en": "Bus stop in ZHV" + } + }, + "minzoom": 15, + "source": { + "geoJson": "https://robinlinde.github.io/tiles/zhv_haltestellen/{z}/{x}/{y}.json", + "geoJsonZoomLevel": 15, + "osmTags": "Type~Q" + }, + "tagRenderings": [ + { + "id": "name", + "render": { + "en": "This stop is called {Name}" + } + }, + { + "id": "id", + "render": { + "en": "The ID of this stop is {_ifopt}" + } + }, + { + "id": "closest_stop", + "render": { + "en": "The closest stop in OSM is {_closest_osm_stop_name}." + } + }, + { + "id": "import", + "render": { + "special": { + "type": "import_button", + "targetLayer": "transit_stops", + "tags": "_tags", + "text": { + "en": "Add this stop" + } + } + }, + "condition": { + "or": [ + "_has_closeby_feature=no", + "_has_closeby_feature=maybe" + ] + } + }, + { + "id": "tag-hint", + "render": { + "en": "This stop will get the following tags: {_tags}" + }, + "condition": { + "or": [ + "_has_closeby_feature=no", + "_has_closeby_feature=maybe" + ] + } + }, + { + "id": "imported", + "render": { + "en": "This stop is (probably) already added. View the point." + }, + "condition": { + "or": [ + "_has_closeby_feature=yes", + "_has_closeby_feature=maybe" + ] + } + }, + { + "id": "tag-apply", + "condition": { + "or": [ + "_has_closeby_feature=yes", + "_has_closeby_feature=maybe" + ] + }, + "render": { + "special": { + "type": "tag_apply", + "tags_to_apply": "ref:IFOPT=$_ifopt", + "id_of_object_to_apply_this_one": "_closest_osm_stop_id", + "message": { + "en": "Add IFOPT to the existing stop" + }, + "image": "./assets/svg/addSmall.svg" + } + } + }, + { + "id": "minimap_with_poi", + "render": "{minimap(18, id, _closest_osm_stop_id)}" + } + ], + "pointRendering": [ + { + "marker": [ + { + "icon": "circle", + "color": { + "render": "red", + "mappings": [ + { + "if": "_has_closeby_feature=yes", + "then": "green" + }, + { + "if": "_has_closeby_feature=maybe", + "then": "orange" + } + ] + } + } + ], + "location": [ + "point", + "centroid" + ], + "iconSize": "20,20" + } + ], + "calculatedTags": [ + "_closest_osm_stop=closest(feat)('transit_stops')?.properties", + "_closest_osm_stop_id=feat.properties._closest_osm_stop?.id", + "_closest_osm_stop_distance=distanceTo(feat)(feat.properties._closest_osm_stop_id)", + "_closest_osm_stop_name=feat.properties._closest_osm_stop?.name", + "_has_closeby_feature=feat.properties._closest_osm_stop_distance < 15 ? 'yes' : (feat.properties._closest_osm_stop_distance > 25 ? 'no' : 'maybe')", + "_ifopt=feat.properties.DHID", + "_tags='highway=bus_stop;public_transport=platform;ref:IFOPT='+feat.properties._ifopt+';name='+feat.properties.Name" + ] + }, + { + "builtin": "transit_stops", + "override": { + "name": { + "en": "Bus stops in OSM" + }, + "tagRenderings+": [ + { + "id": "ifopt", + "question": { + "en": "What is the IFOPT reference of this stop?" + }, + "render": { + "en": "The IFOPT reference of this stop is {ref:IFOPT}." + }, + "freeform": { + "key": "ref:IFOPT", + "type": "string", + "placeholder": { + "en": "e.g. NL:Q:15003950 or de:03457:15801::2" + } + } + } + ] + } + } + ] +} \ No newline at end of file From 5c2677ecb6711760ca948ec375a477f5a58c0618 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 21 Jul 2025 11:03:12 +0200 Subject: [PATCH 10/19] Themes(surveillance): Also show disused cameras (#1177) --- .../surveillance_camera.json | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json index 97d4582b8..82728909e 100644 --- a/assets/layers/surveillance_camera/surveillance_camera.json +++ b/assets/layers/surveillance_camera/surveillance_camera.json @@ -26,7 +26,12 @@ "source": { "osmTags": { "and": [ - "man_made=surveillance", + { + "or": [ + "man_made=surveillance", + "disused:man_made=surveillance" + ] + }, { "or": [ "surveillance:type=camera", @@ -51,7 +56,15 @@ "es": "Cámara de vigilancia", "cs": "Bezpečnostní kamera", "sl": "Nadzorna kamera" - } + }, + "mappings": [ + { + "if": "disused:man_made=surveillance", + "then": { + "en": "Disused surveillance camera" + } + } + ] }, "pointRendering": [ { @@ -121,7 +134,13 @@ "then": "calc({_direction:numerical}deg - 90deg)" } ] - } + }, + "iconBadges": [ + { + "if": "disused:man_made=surveillance", + "then": "close:red" + } + ] } ], "lineRendering": [ @@ -232,6 +251,35 @@ ], "tagRenderings": [ "images", + { + "id": "active", + "question": { + "en": "Is this camera currently in use?", + "nl": "Is deze camera momenteel in gebruik?" + }, + "mappings": [ + { + "if": "man_made=surveillance", + "then": { + "en": "This camera is currently in use.", + "nl": "Deze camera is momenteel in gebruik." + }, + "addExtraTags": [ + "disused:man_made=" + ] + }, + { + "if": "disused:man_made=surveillance", + "then": { + "en": "This camera is not used anymore", + "nl": "Deze camera is niet meer in gebruik" + }, + "addExtraTags": [ + "man_made=" + ] + } + ] + }, { "id": "has_alpr", "question": { @@ -896,4 +944,4 @@ "enableRelocation": false }, "enableMorePrivacy": true -} +} \ No newline at end of file From 78f677b66317921d5d690d9852b399f5af0aab25 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 22 Jul 2025 13:04:57 +0200 Subject: [PATCH 11/19] Themes: add operator question, use it in a few layers --- assets/layers/atm/atm.json | 85 ++++++-------- .../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, 813 insertions(+), 801 deletions(-) diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index 1f85c02cd..eda4cbc34 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", { 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 97961e4ac1109b016ca2bc3c868f33ea638ab085 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 24 Jul 2025 17:49:06 +0200 Subject: [PATCH 12/19] Themes(transit): Add more types of transit stops --- assets/layers/transit_stops/ferry.svg | 12 ++++ assets/layers/transit_stops/ferry.svg.license | 2 + assets/layers/transit_stops/license_info.json | 30 +++++++++ assets/layers/transit_stops/subway.svg | 51 +++++++++++++++ .../layers/transit_stops/subway.svg.license | 2 + assets/layers/transit_stops/tram.svg | 15 +++++ assets/layers/transit_stops/tram.svg.license | 2 + .../layers/transit_stops/transit_stops.json | 62 +++++++++++++++++-- assets/themes/waste_assen/waste_assen.json | 6 +- 9 files changed, 175 insertions(+), 7 deletions(-) create mode 100644 assets/layers/transit_stops/ferry.svg create mode 100644 assets/layers/transit_stops/ferry.svg.license create mode 100644 assets/layers/transit_stops/subway.svg create mode 100644 assets/layers/transit_stops/subway.svg.license create mode 100644 assets/layers/transit_stops/tram.svg create mode 100644 assets/layers/transit_stops/tram.svg.license diff --git a/assets/layers/transit_stops/ferry.svg b/assets/layers/transit_stops/ferry.svg new file mode 100644 index 000000000..44ee50cf5 --- /dev/null +++ b/assets/layers/transit_stops/ferry.svg @@ -0,0 +1,12 @@ + + +ANCHOR + + + + + + + + +