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 fd587f7dc..42e4507ff 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 c507138ac..6bf33e89b 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 6bf33e89b..ee3c76619 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 2a625cd04..7d848ac6f 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 e1361596f..279ee784f 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 b065d55f8..5591b0afc 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 52d99d2cb..1af74e222 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 cc2c43a41..04d9e9232 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 } }