diff --git a/Models/ThemeConfig/Json/UnitConfigJson.ts b/Models/ThemeConfig/Json/UnitConfigJson.ts index bde2683b23..f69212f000 100644 --- a/Models/ThemeConfig/Json/UnitConfigJson.ts +++ b/Models/ThemeConfig/Json/UnitConfigJson.ts @@ -1,7 +1,9 @@ export default interface UnitConfigJson { /** - * Every key from this list will be normalized + * Every key from this list will be normalized. + * + * To render a united value properly, use */ appliesToKey: string[], /** diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index c5df0bb8d3..0533936342 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -340,6 +340,31 @@ "key": "width", "type": "distance" } + }, + { + "id": "kerb-height", + "question": { + "en": "What is the height of this kerb?" + }, + "render": { + "en": "The kerb height of this door is {kerb:height}" + }, + "freeform": { + "key": "kerb:height", + "placeholder": { + "en": "Height of the door kerb" + }, + "type": "pnat" + }, + "mappings": [ + { + "if": "kerb-height=", + "then": { + "en": "This door does not have a kerb", + "nl": "Deze deur heeft geen drempel" + } + } + ] } ], "mapRendering": [ @@ -375,5 +400,33 @@ "entrance=yes" ] } + ], + "units": [ + { + "appliesToKey": [ + "kerb:height" + ], + "applicableUnits": [ + { + "canonicalDenomination": "m", + "alternativeDenomination": [ + "meter" + ], + "human": { + "en": "meter" + } + }, + { + "canonicalDenomination": "cm", + "alternativeDenomination": [ + "centimeter", + "cms" + ], + "human": { + "en": "centimeter" + } + } + ] + } ] } \ No newline at end of file diff --git a/assets/layers/reception_desk/license_info.json b/assets/layers/reception_desk/license_info.json new file mode 100644 index 0000000000..5afdc20e73 --- /dev/null +++ b/assets/layers/reception_desk/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "reception_desk.svg", + "license": "CC-BY-SA", + "authors": [ + "Robin Julien" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + } +] \ No newline at end of file diff --git a/assets/layers/reception_desk/reception_desk.json b/assets/layers/reception_desk/reception_desk.json new file mode 100644 index 0000000000..a9d3228c24 --- /dev/null +++ b/assets/layers/reception_desk/reception_desk.json @@ -0,0 +1,79 @@ +{ + "id": "reception_desk", + "name": { + "en": "Reception desks" + }, + "title": { + "render": { + "en": "Reception desk" + } + }, + "source": { + "osmTags": "amenity=reception_desk" + }, + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "circle:white;./assets/layers/reception_desk/reception_desk.svg", + "iconSize": "40,40,center" + } + ], + "tagRenderings": [ + "images", + { + "id": "desk-height", + "question": { + "en": "What is the height of the reception desk?
This is measured from the floor to the lowest usable part of the desk
" + }, + "render": { + "en": "The height of the desk is {canonical(desk:height)}" + }, + "freeform": { + "key": "desk:height", + "type": "pfloat" + } + }, + "induction-loop" + ], + "presets": [ + { + "tags": [ + "amenity=reception_desk" + ], + "title": { + "en": "a reception desk" + } + } + ], + "units": [ + { + "appliesToKey": [ + "desk:height" + ], + "applicableUnits": [ + { + "canonicalDenomination": "m", + "alternativeDenomination": [ + "meter" + ], + "human": { + "en": "meter" + } + }, + { + "canonicalDenomination": "cm", + "alternativeDenomination": [ + "centimeter", + "cms" + ], + "human": { + "en": "centimeter" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/assets/layers/reception_desk/reception_desk.svg b/assets/layers/reception_desk/reception_desk.svg new file mode 100644 index 0000000000..e8dd150704 --- /dev/null +++ b/assets/layers/reception_desk/reception_desk.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/assets/layers/walls_and_buildings/walls_and_buildings.json b/assets/layers/walls_and_buildings/walls_and_buildings.json index 133a2bf0f2..4ef1816e6a 100644 --- a/assets/layers/walls_and_buildings/walls_and_buildings.json +++ b/assets/layers/walls_and_buildings/walls_and_buildings.json @@ -47,7 +47,7 @@ "calculatedTags": [ "_entrance_properties=feat.overlapWith('entrance')?.map(e => e.feat.properties).filter(p => p !== undefined).filter(p => p.width !== undefined)", "_entrance:id=feat.get('_entrance_properties')?.map(e => e.id)?.at(0)", - "_entrance:width=feat.get('_entrance_properties')?.map(e => e.width)" + "_entrance:width=feat.get('_entrance_properties')?.map(e => e.width)?.at(0)" ], "tagRenderings": [ { diff --git a/assets/tagRenderings/audio_induction_loop.svg b/assets/tagRenderings/audio_induction_loop.svg new file mode 100644 index 0000000000..b56e877be2 --- /dev/null +++ b/assets/tagRenderings/audio_induction_loop.svg @@ -0,0 +1,44 @@ + + diff --git a/assets/tagRenderings/audio_induction_loop_missing.svg b/assets/tagRenderings/audio_induction_loop_missing.svg new file mode 100644 index 0000000000..b35a316069 --- /dev/null +++ b/assets/tagRenderings/audio_induction_loop_missing.svg @@ -0,0 +1,53 @@ + + diff --git a/assets/tagRenderings/license_info.json b/assets/tagRenderings/license_info.json index c65bd6f938..1f92135a1c 100644 --- a/assets/tagRenderings/license_info.json +++ b/assets/tagRenderings/license_info.json @@ -1,4 +1,24 @@ [ + { + "path": "audio_induction_loop.svg", + "license": "CC-BY 4.0", + "authors": [ + "Carl Holderness" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Noun_telecoil_audio_induction_hearing_loop_symbol_2011213.svg" + ] + }, + { + "path": "audio_induction_loop_missing.svg", + "license": "CC-BY 4.0", + "authors": [ + "Carl Holderness" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Noun_telecoil_audio_induction_hearing_loop_symbol_2011213.svg" + ] + }, { "path": "cash.svg", "license": "CC-BY 3.0", diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index aeafac6f44..ec5ee874af 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -1086,5 +1086,33 @@ } } ] + }, + "induction-loop": { + "description": "An accessibility feature: induction loops are for hard-hearing persons which have an FM-receiver.", + "question": { + "en": "Does this place have an audio induction loop for people with reduced hearing?" + }, + "mappings": [ + { + "if": "hearing_loop=yes", + "then": { + "en": "This place has an audio induction loop" + }, + "icon": { + "path": "./assets/tagRenderings/audio_induction_loop.svg", + "class": "medium" + } + }, + { + "if": "hearing_loop=no", + "then": { + "en": "This place does not has an audio induction loop" + }, + "icon": { + "path": "./assets/tagRenderings/audio_induction_loop_missing.svg", + "class": "medium" + } + } + ] } } \ No newline at end of file diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 2994e849b3..38690d5240 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -29,22 +29,29 @@ "toilet", "viewpoint", "doctors", + "reception_desk", "walls_and_buildings" ], "overrideAll": { "+calculatedTags": [ "_poi_walls_and_buildings_entrance_properties=feat.closestn('walls_and_buildings', 1, undefined, 1000).map(w => ({id: w.feat.properties.id, width: w.feat.properties['_entrance:width']}))[0]", + "_poi_entrance:id=JSON.parce(feat.properties._poi_walls_and_buildings_entrance_properteis)?.id", "_poi_entrance:width=JSON.parse(feat.properties._poi_walls_and_buildings_entrance_properties)?.width" ], "+tagRenderings": [ { "id": "_poi_entrance:width", - "condition": "entrance=", + "condition": { + "and": [ + "entrance=", + "kerb=" + ] + }, "render": { - "en": "This door has a width of {canonical(_poi_entrance:width)} meter", - "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", - "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", - "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" + "en": "This door has a width of {canonical(_poi_entrance:width)} meters", + "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", + "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" }, "freeform": { "key": "_poi_entrance:width",