diff --git a/Models/Constants.ts b/Models/Constants.ts
index ec3fd96e6b..7c8dacb489 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import {Utils} from "../Utils";
export default class Constants {
- public static vNumber = "0.9.13";
+ public static vNumber = "0.9.14";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
diff --git a/Models/ThemeConfig/LayerConfig.ts b/Models/ThemeConfig/LayerConfig.ts
index 410c8b5adc..371cd1b805 100644
--- a/Models/ThemeConfig/LayerConfig.ts
+++ b/Models/ThemeConfig/LayerConfig.ts
@@ -276,9 +276,9 @@ export default class LayerConfig {
this.tagRenderings = trs(json.tagRenderings, false);
- const missingIds = json.tagRenderings.filter(tr => typeof tr !== "string" && tr["builtin"] === undefined && tr["id"] === undefined);
+ const missingIds = json.tagRenderings?.filter(tr => typeof tr !== "string" && tr["builtin"] === undefined && tr["id"] === undefined) ?? [];
- if(missingIds.length > 0){
+ if(missingIds.length > 0 && official){
console.error("Some tagRenderings of", this.id, "are missing an id:", missingIds)
throw "Missing ids in tagrenderings"
}
diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json
index 566bb2e006..d5730d2aa4 100644
--- a/assets/themes/campersite/campersite.json
+++ b/assets/themes/campersite/campersite.json
@@ -142,6 +142,7 @@
"id": "caravansites-name"
},
{
+ "id": "caravansites-fee",
"question": {
"en": "Does this place charge a fee?",
"it": "Ha una tariffa questo luogo?",
@@ -231,6 +232,7 @@
"id": "caravansites-charge"
},
{
+ "id": "caravansites-sanitary-dump",
"question": {
"en": "Does this place have a sanitary dump station?",
"it": "Questo luogo ha una stazione per lo scarico delle acque?",
@@ -301,6 +303,7 @@
"id": "caravansites-capacity"
},
{
+ "id": "caravansites-internet",
"question": {
"en": "Does this place provide internet access?",
"id": "Tempat ini berbagi akses Web?",
@@ -368,6 +371,7 @@
]
},
{
+ "id": "caravansites-internet-fee",
"question": {
"en": "Do you have to pay for the internet access?",
"it": "Occorre pagare per avere l’accesso a internet?",
@@ -418,6 +422,7 @@
}
},
{
+ "id": "caravansites-toilets",
"question": {
"en": "Does this place have toilets?",
"it": "Questo luogo dispone di servizi igienici?",
@@ -498,6 +503,7 @@
"id": "caravansites-website"
},
{
+ "id": "caravansites-long-term",
"question": {
"en": "Does this place offer spots for long term rental?",
"ru": "Предлагает ли эта площадка места для долгосрочной аренды?",
@@ -689,6 +695,7 @@
"tagRenderings": [
"images",
{
+ "id": "dumpstations-fee",
"question": {
"en": "Does this place charge a fee?",
"ru": "Взимается ли в этом месте плата?",
@@ -758,6 +765,7 @@
"id": "dumpstations-charge"
},
{
+ "id": "dumpstations-waterpoint",
"question": {
"en": "Does this place have a water point?",
"ru": "Есть ли в этом месте водоснабжение?",
@@ -800,6 +808,7 @@
]
},
{
+ "id": "dumpstations-grey-water",
"question": {
"en": "Can you dispose of grey water here?",
"ru": "Можно ли здесь утилизировать серую воду?",
@@ -839,6 +848,7 @@
]
},
{
+ "id": "dumpstations-chemical-waste",
"question": {
"en": "Can you dispose of chemical toilet waste here?",
"ru": "Можно ли здесь утилизировать отходы химических туалетов?",
@@ -881,6 +891,7 @@
]
},
{
+ "id": "dumpstations-access",
"question": {
"en": "Who can use this dump station?",
"ja": "このゴミ捨て場は誰が使えるんですか?",
diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json
index 16765d8cb5..08885ebf00 100644
--- a/assets/themes/climbing/climbing.json
+++ b/assets/themes/climbing/climbing.json
@@ -142,6 +142,7 @@
"id": "climbing_club-name"
},
{
+ "id": "minimap",
"render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }"
},
"website",
@@ -266,6 +267,7 @@
"images",
"questions",
{
+ "id": "minimap",
"render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }"
},
{
@@ -359,6 +361,7 @@
"images",
"questions",
{
+ "id": "minimap",
"render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }"
},
{
@@ -619,6 +622,7 @@
"images",
"questions",
{
+ "id": "minimap",
"render": "{minimap(18, id, _contained_climbing_route_ids): height: 9rem; overflow: hidden; border-radius:3rem; }"
},
{
@@ -835,9 +839,11 @@
},
"tagRenderings": [
{
+ "id": "minimap",
"render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }"
},
{
+ "id": "climbing-opportunity-name",
"render": {
"en": "{name}",
"de": "{name}",
@@ -851,6 +857,7 @@
"condition": "name~*"
},
{
+ "id": "climbing-possible",
"question": {
"en": "Is climbing possible here?",
"de": "Kann hier geklettert werden?",
diff --git a/assets/themes/cycle_highways/cycle_highways.json b/assets/themes/cycle_highways/cycle_highways.json
index d31bb73221..180b028c10 100644
--- a/assets/themes/cycle_highways/cycle_highways.json
+++ b/assets/themes/cycle_highways/cycle_highways.json
@@ -90,12 +90,11 @@
"id": "cycle_highways-state"
},
{
+ "id": "cycle-highway-length",
"render": "This part is {_length:km}km long"
},
"website",
- {
- "render": "{all_tags()}"
- }
+ "all_tags"
],
"name": {
"en": "cycle highways"
diff --git a/assets/themes/facadegardens/facadegardens.json b/assets/themes/facadegardens/facadegardens.json
index 7fd95f76e9..34c574f5c5 100644
--- a/assets/themes/facadegardens/facadegardens.json
+++ b/assets/themes/facadegardens/facadegardens.json
@@ -129,6 +129,7 @@
"id": "facadegardens-direction"
},
{
+ "id": "facadegardens-sunshine",
"mappings": [
{
"if": {
@@ -184,6 +185,7 @@
}
},
{
+ "id": "facadegardens-rainbarrel",
"question": {
"nl": "Is er een regenton voorzien bij het tuintje?",
"en": "Is there a water barrel installed for the garden?",
@@ -246,6 +248,7 @@
"id": "facadegardens-start_date"
},
{
+ "id": "facadegardens-edible",
"mappings": [
{
"if": {
@@ -285,6 +288,7 @@
}
},
{
+ "id": "facadegardens-plants",
"question": {
"nl": "Wat voor planten staan hier?",
"en": "What kinds of plants grow here?",
diff --git a/assets/themes/hackerspaces/hackerspaces.json b/assets/themes/hackerspaces/hackerspaces.json
index 5152052027..051742429c 100644
--- a/assets/themes/hackerspaces/hackerspaces.json
+++ b/assets/themes/hackerspaces/hackerspaces.json
@@ -49,6 +49,7 @@
},
"tagRenderings": [
{
+ "id": "is_makerspace",
"question": {
"en": "Is this a hackerspace or a makerspace?"
},
@@ -109,6 +110,7 @@
},
"wheelchair-access",
{
+ "id": "hs-club-mate",
"question": {
"en": "Does this hackerspace serve Club Mate?"
},
@@ -130,7 +132,7 @@
]
},
"then": {
- "en": "This hackerspace is not worthy of the name hackerspace as it does not serve club mate"
+ "en": "This hackerspace does not serve club mate"
}
}
]
diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json
index 5f9859bfeb..1c669b6b56 100644
--- a/assets/themes/speelplekken/speelplekken.json
+++ b/assets/themes/speelplekken/speelplekken.json
@@ -262,10 +262,12 @@
"overrideAll": {
"+tagRenderings": [
{
+ "id": "part-of-walk",
"render": "Maakt deel uit van {_part_of_walking_routes}",
"condition": "_part_of_walking_routes~*"
},
{
+ "id": "has-video",
"freeform": {
"key": "_video:id"
},