From 9083e8954971ad4bed1914bc7cd5c30397b23895 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 4 Apr 2024 16:05:31 +0200 Subject: [PATCH 1/3] Themes: Update velopark description --- assets/themes/velopark/velopark.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/themes/velopark/velopark.json b/assets/themes/velopark/velopark.json index fd587f7dc2..42e4507ffa 100644 --- a/assets/themes/velopark/velopark.json +++ b/assets/themes/velopark/velopark.json @@ -9,8 +9,8 @@ "en" ], "description": { - "en": "

Velopark.be is a website collecting data about bicycle parkings in a semi-crowdsourced way. However, only 'authorized' instances are allowed to make changes there, in practice the operator of the bicycle parking such as SNCB, de Lijn or the municipality. They have now decided to synchronize their dataset with OpenStreetMap, and this MapComplete-instance is set up to help link and import their data into OpenStreetMap.

How to use: That's it! Thanks for helping to import this!", - "nl": "

Velopark.be is een website die data verzamelt over fietsenstallingen in een semi-crowdsource manier. Hierbij kunnen enkel geautorizeerde gebruikers data bijdragen, in de praktijk de uitbaters van de fietsenstallingen zoals de bevoegde gemeentebesturen, de NMBS of de Lijn. Velopark.be heeft nu beslist om hun data met OpenStreetMap te synchronizeren. Deze website is de tool om van Velopark.be naar OpenStreetMap te gaan en hun data te importeren.

Hoe te gebruiken? Dat is het! Bedankt om mee te helpen!" + "en": "

Velopark.be is a website collecting data about bicycle parkings in a semi-crowdsourced way. However, only 'authorized' instances are allowed to make changes there, in practice the operator of the bicycle parking such as SNCB, de Lijn or the municipality. They have now decided to synchronize their dataset with OpenStreetMap, and this MapComplete-instance is set up to help link and import their data into OpenStreetMap.

How to use: That's it! Thanks for helping to import this!", + "nl": "

Velopark.be is een website die data verzamelt over fietsenstallingen in een semi-crowdsource manier. Hierbij kunnen enkel geautorizeerde gebruikers data bijdragen, in de praktijk de uitbaters van de fietsenstallingen zoals de bevoegde gemeentebesturen, de NMBS of de Lijn. Velopark.be heeft nu beslist om hun data met OpenStreetMap te synchronizeren. Deze website is de tool om van Velopark.be naar OpenStreetMap te gaan en hun data te importeren.

Hoe te gebruiken? Dat is het! Bedankt om mee te helpen!" }, "shortDescription": { "en": "A tool to import data from velopark.be into OpenStreetMap", From ea00c717de78c06ded81fae56be1a05b8e50ae37 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 4 Apr 2024 16:06:32 +0200 Subject: [PATCH 2/3] Themes: add operator question to bicycle parking --- assets/layers/bike_parking/bike_parking.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index c507138acf..6bf33e89be 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -677,6 +677,16 @@ ] } }, + { + "id": "operator", + "question": { + "en": "Who maintains this bicycle parking?", + "nl": "Wie beheert deze fietsenstalling?" + }, + "freeform": { + "key": "operator" + } + }, { "id": "operator_phone", "question": { From e188b9656122dd3f0a4cda55352bf81dad6dbc65 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 5 Apr 2024 12:02:10 +0200 Subject: [PATCH 3/3] Themes: add compile time check for 'sameAs'-filters that the referenced layer actually exists --- assets/layers/bike_parking/bike_parking.json | 4 ++++ assets/themes/atm/atm.json | 2 +- assets/themes/cyclofix/cyclofix.json | 2 +- assets/themes/openlovemap/openlovemap.json | 2 +- .../toerisme_vlaanderen.json | 2 +- .../ThemeConfig/Conversion/PrepareTheme.ts | 17 +++++++++++++++++ 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index 6bf33e89be..ee3c766195 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -683,6 +683,10 @@ "en": "Who maintains this bicycle parking?", "nl": "Wie beheert deze fietsenstalling?" }, + "render": { + "en": "This bicycle parking is maintained by {operator}", + "nl": "Deze fietsenstalling wordt beheerd door {operator}" + }, "freeform": { "key": "operator" } diff --git a/assets/themes/atm/atm.json b/assets/themes/atm/atm.json index 2a625cd041..7d848ac6f6 100644 --- a/assets/themes/atm/atm.json +++ b/assets/themes/atm/atm.json @@ -57,7 +57,7 @@ "minzoom": 18, "name": null, "filter": { - "sameAs": "bank_with_atm" + "sameAs": "banks_with_atm" }, "doCount": false } diff --git a/assets/themes/cyclofix/cyclofix.json b/assets/themes/cyclofix/cyclofix.json index e1361596fd..279ee784f1 100644 --- a/assets/themes/cyclofix/cyclofix.json +++ b/assets/themes/cyclofix/cyclofix.json @@ -151,7 +151,7 @@ "override": { "name": null, "filter": { - "sameAs": "charging_station_ebike" + "sameAs": "charging_station_ebikes" }, "minzoom": 18 } diff --git a/assets/themes/openlovemap/openlovemap.json b/assets/themes/openlovemap/openlovemap.json index b065d55f84..5591b0afcf 100644 --- a/assets/themes/openlovemap/openlovemap.json +++ b/assets/themes/openlovemap/openlovemap.json @@ -53,7 +53,7 @@ "=name": null, "doCount": false, "=filter": { - "sameAs": "erotic-shop" + "sameAs": "erotic_shop" } } }, diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json index 52d99d2cbd..1af74e222e 100644 --- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json +++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json @@ -83,7 +83,7 @@ "override": { "name": null, "filter": { - "sameAs": "charging_station_ebike" + "sameAs": "charging_station_ebikes" }, "minzoom": 18, "=presets": [] diff --git a/src/Models/ThemeConfig/Conversion/PrepareTheme.ts b/src/Models/ThemeConfig/Conversion/PrepareTheme.ts index cc2c43a413..04d9e9232b 100644 --- a/src/Models/ThemeConfig/Conversion/PrepareTheme.ts +++ b/src/Models/ThemeConfig/Conversion/PrepareTheme.ts @@ -600,6 +600,23 @@ class PostvalidateTheme extends DesugaringStep { } } + for (const layer of json.layers) { + if(typeof layer === "string"){ + continue + } + const config = layer; + const sameAs = config.filter?.["sameAs"] + if(!sameAs){ + continue + } + + const matchingLayer = json.layers.find(l => l["id"] === sameAs) + if(!matchingLayer){ + const closeLayers = Utils.sortedByLevenshteinDistance(sameAs, json.layers, l => l["id"]).map(l => l["id"]) + context.enters("layers", config.id, "filter","sameAs").err("The layer "+config.id+" follows the filter state of layer "+sameAs+", but no layer with this name was found.\n\tDid you perhaps mean one of: "+closeLayers.slice(0, 3).join(", ")) + } + } + return json } }