diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index d65d13e90b..354d98d270 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -2403,7 +2403,8 @@
"de": "Wie lange darf man hier maximal parken?"
},
"freeform": {
- "key": "maxstay"
+ "key": "maxstay",
+ "type": "pfloat"
},
"render": {
"en": "One can stay at most {canonical(maxstay)}",
@@ -3329,4 +3330,4 @@
},
"neededChangesets": 10
}
-}
\ No newline at end of file
+}
diff --git a/assets/layers/charging_station/charging_station.proto.json b/assets/layers/charging_station/charging_station.proto.json
index 4bbdde3f31..12cbcadf3a 100644
--- a/assets/layers/charging_station/charging_station.proto.json
+++ b/assets/layers/charging_station/charging_station.proto.json
@@ -564,7 +564,8 @@
"nl": "Hoelang mag een voertuig hier blijven staan?"
},
"freeform": {
- "key": "maxstay"
+ "key": "maxstay",
+ "type": "pfloat"
},
"render": {
"en": "One can stay at most {canonical(maxstay)}",
@@ -1049,4 +1050,4 @@
},
"neededChangesets": 10
}
-}
\ No newline at end of file
+}
diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json
index 91bf1d8bc0..b26e76932f 100644
--- a/assets/layers/entrance/entrance.json
+++ b/assets/layers/entrance/entrance.json
@@ -515,7 +515,8 @@
"cs": "Jaká je šířka těchto dveří/vchodu?"
},
"freeform": {
- "key": "width"
+ "key": "width",
+ "type": "pfloat"
}
},
{
diff --git a/src/Models/ThemeConfig/LayerConfig.ts b/src/Models/ThemeConfig/LayerConfig.ts
index 97268dabcc..9babbb96bc 100644
--- a/src/Models/ThemeConfig/LayerConfig.ts
+++ b/src/Models/ThemeConfig/LayerConfig.ts
@@ -277,10 +277,9 @@ export default class LayerConfig extends WithContextLoader {
".units: the 'units'-section should be a list; you probably have an object there"
)
}
- this.units = [].concat(
- ...(json.units ?? []).map((unitJson, i) =>
+ this.units = (json.units ?? []).flatMap((unitJson, i) =>
Unit.fromJson(unitJson, this.tagRenderings, `${context}.unit[${i}]`)
- )
+
)
if (
diff --git a/src/Models/Unit.ts b/src/Models/Unit.ts
index 00ac6806d0..f1666b57e4 100644
--- a/src/Models/Unit.ts
+++ b/src/Models/Unit.ts
@@ -27,6 +27,10 @@ export class Unit {
) {
this.quantity = quantity
this._validator = validator
+ if(!inverted && ["string","text","key","icon","translation","fediverse","id"].indexOf(validator.name) >= 0){
+ console.trace("Unit error")
+ throw "Invalid unit configuration. The validator is of a forbidden type: "+validator.name+"; set a (number) type to your freeform key or set inverted. Hint: this unit is applied onto keys: "+appliesToKeys.join("; ")
+ }
this.inverted = inverted
this.appliesToKeys = new Set(appliesToKeys)
this.denominations = applicableDenominations