{opening_hours_table(sauna:opening_hours)}"
+ },
+ "freeform": {
+ "key": "sauna:opening_hours",
+ "type": "opening_hours"
+ }
+ }
+ },
+ {
+ "id": "charge_cost_rewritten",
+ "rewrite": {
+ "sourceString": [
+ "{time_key}",
+ "{time_name}"
+ ],
+ "into": [
+ [
+ "2 hours",
+ {
+ "en": "2 hours",
+ "de": "2 Stunden"
+ }
+ ],
+ [
+ "4 hours",
+ {
+ "en": "4 hours",
+ "de": "4 Stunden"
+ }
+ ],
+ [
+ "day",
+ {
+ "en": "one day",
+ "de": "einen Tag"
+ }
+ ]
+ ]
+ },
+ "renderings": [
+ {
+ "id": "charge_{time_key}",
+ "question": {
+ "en": "What is the entrance fee for {time_name}?",
+ "de": "Was ist der Eintrittspreis für {time_name}?"
+ },
+ "render": {
+ "en": "entrance fee for {time_name}: {sauna:charge}",
+ "de": "Eintrittspreis für {time_name}: {sauna:charge}"
+ },
+ "freeform": {
+ "key": "sauna:charge",
+ "type": "currency",
+ "inline": true,
+ "postfixDistinguished": "{time_key}",
+ "addExtraTags": [
+ "sauna:fee=yes"
+ ]
+ },
+ "mappings": [
+ {
+ "if": "sauna:fee=no",
+ "addExtraTags": [
+ "sauna:charge="
+ ],
+ "then": {
+ "en": "The sauna is free of charge",
+ "de": "Die Sauna ist kostenlos"
+ },
+ "hideInAnswer": "sauna:fee!=no"
+ }
+ ]
+ }
+ ]
+ },
+ "contact",
+ "defibrillator.defibrillator-fixme"
+ ],
+ "lineRendering": [
+ {
+ "width": 1,
+ "color": "blue"
+ }
+ ],
+ "credits:uid": 8770388,
+ "source": {
+ "osmTags": {
+ "or": [
+ {
+ "and": [
+ "sauna=yes",
+ "leisure=water_park"
+ ]
+ },
+ {
+ "and": [
+ "sauna=yes",
+ "leisure!=water_park",
+ "sauna:access!=no",
+ "sauna:access!=private",
+ "sauna:access!=customers"
+ ]
+ }
+ ]
+ }
+ },
+ "description": {
+ "en": "A sauna is a small room or house designed as a place to experience dry or wet heat sessions, or an establishment with one or more of these and auxiliary facilities."
+ },
+ "id": "sauna_at_leisure",
+ "name": {
+ "en": "Saunas at other amenities",
+ "de": "Saunen in anderen Einrichtungen"
+ },
+ "title": {
+ "render": {
+ "en": "{name}"
+ }
+ }
+}
\ No newline at end of file
From 718472de4fa5d2412026a31392b52c40afce5c53 Mon Sep 17 00:00:00 2001
From: Osmwithspace <>
Date: Fri, 18 Apr 2025 10:26:36 +0200
Subject: [PATCH 03/10] add sauna theme
---
assets/themes/sauna/sauna.json | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 assets/themes/sauna/sauna.json
diff --git a/assets/themes/sauna/sauna.json b/assets/themes/sauna/sauna.json
new file mode 100644
index 0000000000..c03f737daa
--- /dev/null
+++ b/assets/themes/sauna/sauna.json
@@ -0,0 +1,16 @@
+{
+ "credits": "Osmwithspace",
+ "credits:uid": 8770388,
+ "id": "sauna",
+ "title": {
+ "en": "Sauna"
+ },
+ "layers": [
+ "./assets/layers/sauna/sauna.json",
+ "./assets/layers/sauna/sauna_at_leisure.json"
+ ],
+ "description": {
+ "en": "Sauna"
+ },
+ "icon": "./assets/layers/sauna/sauna.svg"
+}
\ No newline at end of file
From b06f937c5b4499dd5447176192908b1ec05ad3b7 Mon Sep 17 00:00:00 2001
From: Osmwithspace <>
Date: Fri, 18 Apr 2025 21:31:11 +0200
Subject: [PATCH 04/10] add "allowMove": true
---
assets/layers/sauna/sauna.json | 1 +
assets/layers/sauna/sauna_at_leisure.json | 1 +
2 files changed, 2 insertions(+)
diff --git a/assets/layers/sauna/sauna.json b/assets/layers/sauna/sauna.json
index 177027a599..9ad22a9791 100644
--- a/assets/layers/sauna/sauna.json
+++ b/assets/layers/sauna/sauna.json
@@ -1,6 +1,7 @@
{
"credits": "Osmwithspace",
"minzoom": 8,
+ "allowMove": true,
"pointRendering": [
{
"location": [
diff --git a/assets/layers/sauna/sauna_at_leisure.json b/assets/layers/sauna/sauna_at_leisure.json
index c9eb354522..9b824f7395 100644
--- a/assets/layers/sauna/sauna_at_leisure.json
+++ b/assets/layers/sauna/sauna_at_leisure.json
@@ -1,6 +1,7 @@
{
"credits": "Osmwithspace",
"minzoom": 8,
+ "allowMove": true,
"pointRendering": [
{
"location": [
From 522c4e8b8cdd3710752a66d9751f12e6b3f2f7d2 Mon Sep 17 00:00:00 2001
From: Osmwithspace <>
Date: Tue, 3 Jun 2025 23:11:30 +0200
Subject: [PATCH 05/10] leisure=sauna
---
assets/layers/sauna/sauna.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/layers/sauna/sauna.json b/assets/layers/sauna/sauna.json
index 9ad22a9791..c941ae593e 100644
--- a/assets/layers/sauna/sauna.json
+++ b/assets/layers/sauna/sauna.json
@@ -99,7 +99,7 @@
"source": {
"osmTags": {
"and": [
- "leisure~.*sauna.*",
+ "leisure=sauna",
{
"or": [
"opening_hours!=",
From c7ec2e6cab35127ffceb52861f262c22b3ea7798 Mon Sep 17 00:00:00 2001
From: Osmwithspace <>
Date: Sat, 21 Jun 2025 23:57:21 +0200
Subject: [PATCH 06/10] move "fixme" into "questions/questions.json"
---
.../layers/defibrillator/defibrillator.json | 32 +------------------
assets/layers/questions/questions.json | 30 +++++++++++++++++
assets/layers/sauna/sauna.json | 2 +-
assets/layers/sauna/sauna_at_leisure.json | 2 +-
4 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json
index 5315a90402..829a52d6dc 100644
--- a/assets/layers/defibrillator/defibrillator.json
+++ b/assets/layers/defibrillator/defibrillator.json
@@ -688,37 +688,7 @@
],
"id": "defibrillator-survey:date"
},
- {
- "render": {
- "en": "Extra information for OpenStreetMap experts: {fixme}",
- "nl": "Extra informatie voor OpenStreetMap experts: {fixme}",
- "fr": "Informations supplémentaires pour les experts d'OpenStreetMap : {fixme}",
- "it": "Informazioni aggiuntive per gli esperti di OpenStreetMap: {fixme}",
- "de": "Zusätzliche Informationen für OpenStreetMap-Experten: {fixme}",
- "ru": "Дополнительная информация для экспертов OpenStreetMap: {fixme}",
- "sl": "Dodatne informacije za OpenStreetMap strokovnjake: {fixme}",
- "es": "Información adicional para expertos de OpenStreetMap: {fixme}",
- "ca": "Informació addicional per als experts en OpenStreetMap: {fixme}",
- "pl": "Więcej informacji dla doświadczonych użytkowników OpenStreetMap: {fixme}",
- "cs": "Další informace pro experty OpenStreetMap: {fixme}"
- },
- "question": {
- "en": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)",
- "nl": "Is er iets mis met de informatie over deze defibrillator dat je hier niet opgelost kreeg? (laat hier een berichtje achter voor OpenStreetMap experts)",
- "fr": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a été cartographié, et que vous n'avez pas pu réparer ici ? (laisser une note pour les experts d'OpenStreetMap)",
- "it": "C'è qualcosa di sbagliato nel modo in cui è mappato, che non sei riuscito a correggere qui? (lascia una nota agli esperti di OpenStreetMap)",
- "de": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz für OpenStreetMap-Experten)",
- "sl": "Ali je kaj narobe s tem vnosom na zemljevid, in tega niste mogli sami popraviti tu? (pustite opombo OpenStreetMap strokovnjakom)",
- "es": "¿Hay algo mal en cómo está mapeado esto, que no hayas podido arreglar aquí? (deja una nota para los expertos de OpenStreetMap)",
- "ca": "Hi ha alguna cosa malament en la manera de com està mapejat això, que no heu pogut solucionar aquí? (deixeu una nota als experts d'OpenStreetMap)",
- "cs": "Je na tom, jak je to zmapováno, něco v nepořádku, co jste zde nedokázali opravit? (zanechte poznámku odborníkům na OpenStreetMap)"
- },
- "freeform": {
- "key": "fixme",
- "type": "text"
- },
- "id": "defibrillator-fixme"
- }
+ "fixme"
],
"filter": [
"has_image",
diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json
index a85373e649..ff566ac8ac 100644
--- a/assets/layers/questions/questions.json
+++ b/assets/layers/questions/questions.json
@@ -765,6 +765,36 @@
"cs": "Neopakujte již uvedená fakta"
}
},
+ {
+ "render": {
+ "en": "Extra information for OpenStreetMap experts: {fixme}",
+ "nl": "Extra informatie voor OpenStreetMap experts: {fixme}",
+ "fr": "Informations supplémentaires pour les experts d'OpenStreetMap : {fixme}",
+ "it": "Informazioni aggiuntive per gli esperti di OpenStreetMap: {fixme}",
+ "de": "Zusätzliche Informationen für OpenStreetMap-Experten: {fixme}",
+ "ru": "Дополнительная информация для экспертов OpenStreetMap: {fixme}",
+ "sl": "Dodatne informacije za OpenStreetMap strokovnjake: {fixme}",
+ "es": "Información adicional para expertos de OpenStreetMap: {fixme}",
+ "ca": "Informació addicional per als experts en OpenStreetMap: {fixme}",
+ "pl": "Więcej informacji dla doświadczonych użytkowników OpenStreetMap: {fixme}",
+ "cs": "Další informace pro experty OpenStreetMap: {fixme}"
+ },
+ "question": {
+ "en": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)",
+ "fr": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a été cartographié, et que vous n'avez pas pu réparer ici ? (laisser une note pour les experts d'OpenStreetMap)",
+ "it": "C'è qualcosa di sbagliato nel modo in cui è mappato, che non sei riuscito a correggere qui? (lascia una nota agli esperti di OpenStreetMap)",
+ "de": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz für OpenStreetMap-Experten)",
+ "sl": "Ali je kaj narobe s tem vnosom na zemljevid, in tega niste mogli sami popraviti tu? (pustite opombo OpenStreetMap strokovnjakom)",
+ "es": "¿Hay algo mal en cómo está mapeado esto, que no hayas podido arreglar aquí? (deja una nota para los expertos de OpenStreetMap)",
+ "ca": "Hi ha alguna cosa malament en la manera de com està mapejat això, que no heu pogut solucionar aquí? (deixeu una nota als experts d'OpenStreetMap)",
+ "cs": "Je na tom, jak je to zmapováno, něco v nepořádku, co jste zde nedokázali opravit? (zanechte poznámku odborníkům na OpenStreetMap)"
+ },
+ "freeform": {
+ "key": "fixme",
+ "type": "text"
+ },
+ "id": "fixme"
+ },
{
"id": "opening_hours",
"question": {
diff --git a/assets/layers/sauna/sauna.json b/assets/layers/sauna/sauna.json
index c941ae593e..bf1c3b5558 100644
--- a/assets/layers/sauna/sauna.json
+++ b/assets/layers/sauna/sauna.json
@@ -87,7 +87,7 @@
]
},
"contact",
- "defibrillator.defibrillator-fixme"
+ "fixme"
],
"lineRendering": [
{
diff --git a/assets/layers/sauna/sauna_at_leisure.json b/assets/layers/sauna/sauna_at_leisure.json
index 9b824f7395..47200c4424 100644
--- a/assets/layers/sauna/sauna_at_leisure.json
+++ b/assets/layers/sauna/sauna_at_leisure.json
@@ -189,7 +189,7 @@
]
},
"contact",
- "defibrillator.defibrillator-fixme"
+ "fixme"
],
"lineRendering": [
{
From fe43c41d30b6b8ae23c192c16368ba3dc0c3cac9 Mon Sep 17 00:00:00 2001
From: Osmwithspace <>
Date: Sun, 22 Jun 2025 00:15:50 +0200
Subject: [PATCH 07/10] move sauna_at_leisure to own directory
---
.../sauna_at_leisure.json | 95 +++----------------
1 file changed, 11 insertions(+), 84 deletions(-)
rename assets/layers/{sauna => sauna_at_leisure}/sauna_at_leisure.json (68%)
diff --git a/assets/layers/sauna/sauna_at_leisure.json b/assets/layers/sauna_at_leisure/sauna_at_leisure.json
similarity index 68%
rename from assets/layers/sauna/sauna_at_leisure.json
rename to assets/layers/sauna_at_leisure/sauna_at_leisure.json
index 47200c4424..bf6082d126 100644
--- a/assets/layers/sauna/sauna_at_leisure.json
+++ b/assets/layers/sauna_at_leisure/sauna_at_leisure.json
@@ -16,6 +16,17 @@
}
],
"tagRenderings": [
+ {
+ "builtin": "sauna.*",
+ "override": {
+ "condition": {
+ "and+": [
+ "sauna=yes"
+ ]
+ }
+ },
+ "prefix": "sauna"
+ },
"images",
"reviews",
{
@@ -104,90 +115,6 @@
]
}
},
- {
- "builtin": "opening_hours",
- "override": {
- "question": {
- "en": "What are the opening hours of this sauna?",
- "de": "Wie lauten die Öffnungszeiten von dieser Sauna?"
- },
- "render": {
- "en": "