Merge pull request #1107 from pietervdvn/feature/osm-for-the-blind

Feature/osm for the blind
This commit is contained in:
Pieter Vander Vennet 2022-10-24 00:38:37 +02:00 committed by GitHub
commit 069c6df9d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 35261 additions and 21223 deletions

View file

@ -9,7 +9,7 @@
"fr": "français",
"gl": "lingua galega",
"hu": "magyar",
"id": "Indonesia",
"id": "bahasa Indonesia",
"it": "italiano",
"ja": "日本語",
"nb_NO": "bokmål",

View file

@ -183,6 +183,8 @@
"es": "idioma filipino",
"fi": "filipino",
"fr": "Philippin",
"gl": "Lingua filipina",
"hu": "filippínó",
"id": "Bahasa Filipino",
"it": "filippino",
"ja": "フィリピン語",
@ -279,7 +281,7 @@
"fr": "indonésien",
"gl": "lingua indonesia",
"hu": "indonéz",
"id": "Indonesia",
"id": "bahasa Indonesia",
"it": "indonesiano",
"ja": "インドネシア語",
"nb_NO": "indonesisk",
@ -353,7 +355,7 @@
"fi": "kirjanorja",
"fr": "bokmål",
"gl": "bokmål",
"hu": "norvég (bokmål)",
"hu": "bokmål norvég",
"id": "Bokmål",
"it": "bokmål",
"ja": "ブークモール",
@ -372,7 +374,7 @@
"de": "Niederländisch",
"en": "Dutch",
"eo": "nederlanda lingvo",
"es": "Neerlandés",
"es": "neerlandés",
"fi": "hollanti",
"fr": "néerlandais",
"gl": "lingua neerlandesa",
@ -386,7 +388,7 @@
"pt": "neerlandês",
"pt_BR": "neerlandês",
"ru": "нидерландский язык",
"sl": "Nizozemščina",
"sl": "nizozemščina",
"sv": "nederländska",
"zh_Hans": "荷兰语",
"zh_Hant": "荷蘭語"
@ -402,7 +404,7 @@
"fr": "polonais",
"gl": "lingua polaca",
"hu": "lengyel",
"id": "Polandia",
"id": "bahasa Polski",
"it": "polacco",
"ja": "ポーランド語",
"nb_NO": "polsk",
@ -536,6 +538,7 @@
"ru": "шведский язык",
"sl": "švedščina",
"sv": "svenska",
"zh_Hans": "瑞典语",
"zh_Hant": "瑞典語"
},
"zh_Hant": {
@ -545,12 +548,15 @@
"en": "Simplified Chinese",
"eo": "simpligita ĉina skribsistemo",
"es": "chino simplificado",
"fi": "perinteinen kiina",
"fr": "chinois simplifié",
"gl": "chinés simplificado",
"hu": "egyszerűsített kínai",
"id": "aksara Han sederhana",
"it": "cinese semplificato",
"ja": "簡体字中国語",
"nb_NO": "forenklet kinesisk",
"nl": "vereenvoudigd Chinees",
"pl": "język chiński uproszczony",
"pt": "chinês simplificado",
"ru": "упрощённый китайский",

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View file

@ -121,6 +121,7 @@
}
],
"tagRenderings": [
"images",
{
"id": "crossing-type",
"question": {
@ -339,6 +340,115 @@
}
]
},
{
"id": "crossing-sound",
"question": {
"en": "Does this traffic light have sound signals to aid crossing?"
},
"condition": "crossing=traffic_signals",
"mappings": [
{
"if": "traffic_signals:sound=yes",
"then": {
"en": "This traffic light has sound signals to help crossing, both for finding the crossing and for crossing."
}
},
{
"if": "traffic_signals:sound=no",
"then": {
"en": "This traffic light does not have sound signals to help crossing."
}
},
{
"if": "traffic_signals:sound=locate",
"then": {
"en": "This traffic light has a sound signal to help locate the pole, but no signal to sign that it is safe to cross."
}
},
{
"if": "traffic_signals:sound=walk",
"then": {
"en": "This traffic light has a sound signal to sign that it is safe to cross, but no signal to help locate the pole."
}
}
]
},
{
"id": "crossing-vibration",
"question": {
"en": "Does this traffic light have vibration signals to aid crossing? (usually located at the bottom of the crossing button)"
},
"condition": {
"and": [
"crossing=traffic_signals",
"button_operated=yes"
]
},
"mappings": [
{
"if": "traffic_signals:vibration=yes",
"then": {
"en": "The button for this traffic light has a vibration signal to indicate that it is safe to cross."
},
"icon": {
"path": "./assets/layers/crossings/Vibrating_button_illustration.jpg",
"class": "large"
}
},
{
"if": "traffic_signals:vibration=no",
"then": {
"en": "The button for this traffic light does not have a vibration signal to indicate that it is safe to cross."
}
}
]
},
{
"id": "crossing-arrow",
"question": {
"en": "Does this traffic light have an arrow pointing in the direction of crossing?"
},
"condition": "crossing=traffic_signals",
"mappings": [
{
"if": "traffic_signals:arrow=yes",
"then": {
"en": "This traffic light has an arrow pointing in the direction of crossing."
}
},
{
"if": "traffic_signals:arrow=no",
"then": {
"en": "This traffic light does <b>not</b> have an arrow pointing in the direction of crossing."
}
}
]
},
{
"id": "crossing-minimap",
"question": {
"en": "Does this traffic light have a tactile map showing the layout of the crossing?"
},
"condition": "crossing=traffic_signals",
"mappings": [
{
"if": "traffic_signals:minimap=yes",
"then": {
"en": "This traffic light has a tactile map showing the layout of the crossing."
},
"icon": {
"path": "./assets/layers/crossings/180px-Trairvoja_mapeto.jpg",
"class": "large"
}
},
{
"if": "traffic_signals:minimap=no",
"then": {
"en": "This traffic light does <b>not</b> have a tactile map showing the layout of the crossing."
}
}
]
},
{
"id": "crossing-right-turn-through-red",
"question": {
@ -453,5 +563,8 @@
{
"width": "5"
}
],
"filter": [
"tactile_paving_advanced"
]
}
}

View file

@ -1,4 +1,14 @@
[
{
"path": "180px-Trairvoja_mapeto.jpg",
"license": "CC-BY-SA 4.0",
"authors": [
"Martin ConstantinoBodin"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:Trairvoja_mapeto.jpg"
]
},
{
"path": "Belgian_road_sign_B22.svg",
"license": "CC0",
@ -19,6 +29,16 @@
"https://commons.wikimedia.org/wiki/File:Belgian_road_sign_B23.svg"
]
},
{
"path": "Vibrating_button_illustration.jpg",
"license": "CC-BY 4.0",
"authors": [
"Tobias Zwick"
],
"sources": [
"https://wiki.openstreetmap.org/wiki/File:Vibrating_button_illustration.jpg"
]
},
{
"path": "pedestrian_crossing.svg",
"license": "CC-BY-SA 4.0",

View file

@ -1,10 +1,10 @@
{
"id": "elevator",
"name": {
"en": "elevator",
"fr": "ascenseur",
"en": "Elevator",
"fr": "Ascenseur",
"de": "Aufzug",
"nl": "lift"
"nl": "Lift"
},
"source": {
"osmTags": "highway=elevator"
@ -134,7 +134,15 @@
"type": "pfloat"
}
},
"induction-loop"
"induction-loop",
{
"builtin": "wikidata.tactile_writing-braille",
"override": {
"question": {
"en": "In which languages does this elevator have tactile writing (braille)?"
}
}
}
],
"mapRendering": [
{
@ -210,4 +218,4 @@
]
}
]
}
}

View file

@ -94,6 +94,60 @@
}
}
]
},
{
"id": "tactile_paving",
"options": [
{
"question": {
"en": "With tactile paving",
"de": "Mit taktilem Pflaster",
"fr": "Avec revêtement podotactile",
"nl": "Met voelbare bestrating"
},
"osmTags": "tactile_paving=yes"
}
]
},
{
"id": "tactile_paving_advanced",
"options": [
{
"question": {
"en": "With or without tactile paving",
"de": "Mit oder ohne taktilem Pflaster",
"fr": "Avec ou sans revêtement podotactile",
"nl": "Met of zonder voelbare bestrating"
}
},
{
"question": {
"en": "With tactile paving",
"de": "Mit taktilem Pflaster",
"fr": "Avec revêtement podotactile",
"nl": "Met voelbare bestrating"
},
"osmTags": "tactile_paving=yes"
},
{
"question": {
"en": "Without tactile paving",
"de": "Ohne taktilem Pflaster",
"fr": "Sans revêtement podotactile",
"nl": "Zonder voelbare bestrating"
},
"osmTags": "tactile_paving=no"
},
{
"osmTags": "tactile_paving=",
"question": {
"en": "No information about tactile paving",
"de": "Keine Informationen über taktiles Pflaster",
"fr": "Sans information sur le revêtement podotactile",
"nl": "Geen informatie over voelbare bestrating"
}
}
]
}
]
}

View file

@ -197,7 +197,15 @@
"fr": "Hauteur de la bordure"
},
"type": "pnat"
}
},
"mappings": [
{
"if": "kerb:height=0",
"then": {
"en": "This kerb is flush and is lower than 1cm."
}
}
]
}
],
"presets": [
@ -286,46 +294,7 @@
}
]
},
{
"id": "tactile-paving",
"options": [
{
"question": {
"en": "Kerbs with or without tactile paving",
"de": "Bordsteine mit oder ohne taktilem Pflaster",
"fr": "Bordures avec ou sans revêtement podotactile",
"nl": "Stoepranden met of zonder voelbare bestrating"
}
},
{
"osmTags": "tactile_paving=yes",
"question": {
"en": "Kerb with tactile paving",
"de": "Bordstein mit taktilem Pflaster",
"fr": "Bordure avec revêtement podotactile",
"nl": "Stoeprand met voelbare bestrating"
}
},
{
"osmTags": "tactile_paving=no",
"question": {
"en": "Kerb without tactile paving",
"de": "Bordstein ohne taktilem Pflaster",
"fr": "Bordure sans revêtement podotactile",
"nl": "Stoeprand zonder voelbare bestrating"
}
},
{
"osmTags": "tactile_paving=",
"question": {
"en": "Kerb wihout information about tactile paving",
"de": "Bordstein ohne Informationen über taktiles Pflaster",
"fr": "Bordure sans information sur le revêtement podotactile",
"nl": "Stoeprand zonder informatie over voelbare bestrating"
}
}
]
}
"tactile_paving_advanced"
],
"units": [
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 KiB

View file

@ -0,0 +1,10 @@
[
{
"path": "Braille_stairs.jpg",
"license": "CC0",
"authors": [
"Robin van der Linde"
],
"sources": []
}
]

View file

@ -0,0 +1,132 @@
{
"id": "stairs",
"name": {
"en": "Stairs",
"nl": "Trappen"
},
"description": {
"en": "Layer showing stairs and escalators"
},
"title": {
"render": {
"en": "Stairs",
"nl": "Trap"
},
"mappings": [
{
"if": "conveying=yes",
"then": {
"en": "Escalator",
"nl": "Roltrap"
}
}
]
},
"minzoom": 17,
"source": {
"osmTags": "highway=steps"
},
"tagRenderings": [
{
"id": "handrail",
"question": {
"en": "Does this stair have a handrail?",
"nl": "Heeft deze trap een leuning?"
},
"mappings": [
{
"if": "handrail=yes",
"then": {
"en": "These stairs have a handrail",
"nl": "Deze trap heeft een leuning"
}
},
{
"if": "handrail=no",
"then": {
"en": "These stairs do <b>not</b> have a handrail",
"nl": "Deze trap heeft <b>geen</b> leuning"
}
}
]
},
{
"id": "ramp",
"question": {
"en": "Is there a ramp at these stairs?"
},
"multiAnswer": true,
"mappings": [
{
"if": "ramp:bicycle=yes",
"ifnot": "ramp:bicycle=no",
"then": {
"en": "There is a ramp for bicycles here"
}
},
{
"if": "ramp:wheelchair=yes",
"ifnot": "ramp:wheelchair=no",
"then": {
"en": "There is a ramp for wheelchairs here"
}
},
{
"if": "ramp=separate",
"then": {
"en": "There is ramp for wheelchairs here, but it is shown separately on the map"
},
"hideInAnswer": true
},
{
"if": "ramp:stroller=yes",
"ifnot": "ramp:stroller=no",
"then": {
"en": "There is a ramp for strollers here"
}
},
{
"if": "ramp=no",
"ifnot": "ramp=",
"then": {
"en": "There is no ramp at these stairs"
}
}
]
},
{
"builtin": "wikidata.tactile_writing-braille",
"override": {
"question": {
"en": "In which languages is there tactile writing (braille) for navigation? <img src='./assets/layers/stairs/Braille_stairs.jpg' style='height: 300px; width: auto; display: block;' />"
}
}
},
{
"id": "conveying",
"mappings": [
{
"if": "conveying=yes",
"then": {
"en": "This is an escalator",
"nl": "Dit is een roltrap"
}
},
{
"if": "conveying=no",
"then": {
"en": "This is not an escalator",
"nl": "Dit is geen roltrap"
}
}
]
}
],
"mapRendering": [
{
"color": "gray",
"width": 10,
"dashArray": "2 2"
}
]
}

View file

@ -94,8 +94,7 @@
"en": "What is the name of this stop?",
"de": "Wie lautet der Name der Haltestelle?",
"da": "Hvad er navnet på dette stop?"
},
"placeholder": "Name of the stop"
}
},
"images",
{
@ -313,6 +312,47 @@
"id": "contained_routes"
}
],
"filter": [],
"filter": [
{
"id": "shelter",
"options": [
{
"osmTags": {
"or": ["shelter=yes", "shelter=separate"]
},
"question": {
"en": "With a shelter"
}
}
]
},
{
"id": "bench",
"options": [
{
"osmTags": {
"or": ["bench=yes", "bench=separate"]
},
"question": {
"en": "With a bench"
}
}
]
},
{
"id": "bin",
"options": [
{
"osmTags": {
"or": ["bin=yes", "bin=separate"]
},
"question": {
"en": "With a bin"
}
}
]
},
"tactile_paving"
],
"allowMove": false
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="500"
id="svg3784"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="Blindicon.svg"
sodipodi:version="0.32"
width="500"
version="1.0">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
bordercolor="#666666"
borderopacity="1.0"
id="base"
inkscape:current-layer="svg3784"
inkscape:cx="351.14257"
inkscape:cy="81.197744"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:window-height="2066"
inkscape:window-width="3840"
inkscape:window-x="2149"
inkscape:window-y="-11"
inkscape:zoom="0.86831673"
pagecolor="#ffffff"
showguides="true"
inkscape:guide-bbox="true"
width="300px"
height="300px"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-maximized="1" />
<defs
id="defs3786" />
<g
id="g1882"
transform="matrix(1.6666669,0,0,1.6666669,47.391376,-3.3391765e-5)">
<path
sodipodi:nodetypes="cscccccsscsc"
style="fill:#000000;stroke:none"
id="path3804"
d="m 210.33417,191.65047 c 0,-12.11614 9.92685,-15.73789 15.61794,-15.73789 7.14729,0 17.17535,5.87565 17.17535,14.17226 l -0.24838,19.54109 0.25044,86.27428 h -8.83896 l -1.32339,-86.27428 c 0,0 0,-18.49795 0,-18.56853 0,-4.34566 -4.50021,-7.5063 -7.27979,-7.5063 -3.5138,0 -7.489,2.10756 -7.489,7.50713 0,0 0.60646,6.0571 -3.76096,6.0571 -4.36798,0 -4.10325,-4.60928 -4.10325,-5.46486 z" />
<g
transform="matrix(0.610021,0,0,0.610021,12.22882,1.800647e-5)"
id="g3302">
<path
style="fill:#000000;stroke:none"
id="path3304"
d="m 268.409,81.671 c 22.55,0 40.834,-18.284 40.834,-40.835 C 309.243,18.284 290.959,0 268.409,0 c -22.552,0 -40.834,18.284 -40.834,40.836 0,22.551 18.282,40.835 40.834,40.835 z" />
<path
style="fill:#000000;stroke:none"
id="path3306"
d="m 215.941,156.723 0.25,311.75 c 0,31.184 45.858,30.899 45.858,-0.714 l 0.027,-181.366 8.926,-0.086 -0.028,181.367 c 0,31.612 46.393,32.411 46.393,0.799 l 0.027,-313.057 h 8.058 v 111.795 c 0,26.838 36.42,26.838 36.42,0.48 V 145.393 c 0,-32.876 -24.469,-52.237 -50.348,-52.237 h -72.611 c -17.222,0 -29.722,6.817 -40.222,21.817 l -36.75,53.554 h -63.77 c -25.624,0 -24.186,36.34 -0.48,36.34 h 73.5 c 5.751,0 12.75,-2.144 16.773,-8.148 z" />
</g>
<path
style="fill:#000000;stroke:#ffffff;stroke-width:0.407842"
id="path3137"
d="m 50.305761,266.80923 h 39.280112 v 23.27381 c 0,12.77166 19.382707,12.77166 19.382707,0 v -50.81676 h 8.72006 c 12.46855,0 12.5818,-17.22727 0.2929,-17.22727 h -15.59208 v 0.0209 l -49.176442,-0.0174 -29.838867,-29.83844 v 15.19956 c 0,0 -20.5828188,20.58153 -20.6462512,20.64709 -4.8059773,4.98564 -2.03878353,11.07942 2.3861752,11.07942 h 25.922221 l 0.09195,50.95299 c 0,12.77166 19.200503,12.77166 19.200503,0 v -23.27381" />
<path
sodipodi:nodetypes="czc"
id="path3088"
d="m 78.839329,119.06609 c 0,0 5.444626,31.61398 -2.458867,54.09502 -7.903493,22.48105 -28.161583,51.22892 -28.161583,51.22892"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5.18518;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,91 @@
{
"id": "blind_osm",
"title": {
"en": "OSM for the blind"
},
"description": {
"en": "Help to map features relevant for the blind"
},
"icon": "./assets/themes/blind_osm/Blindicon.svg",
"startLat": 52.99238,
"startLon": 6.570614,
"startZoom": 20,
"defaultBackgroundId": "CartoDB.Positron",
"layers": [
{
"builtin": "cycleways_and_roads",
"override": {
"mapRendering": null,
"title": null
}
},
{
"builtin": "crossings",
"override": {
"mapRendering": [
{
"iconBadges": [
{
"if": "tactile_paving=yes",
"then": "circle:green"
},
{
"if": "tactile_paving=no",
"then": "circle:red"
}
]
}
]
},
"hideTagRenderingsWithLabels": [
"crossing-bicycle-allowed"
]
},
{
"builtin": "kerbs",
"override": {
"minzoom": 19,
"mapRendering": [
{
"iconBadges": [
{
"if": "tactile_paving=yes",
"then": "circle:green"
},
{
"if": "tactile_paving=no",
"then": "circle:red"
}
]
}
]
}
},
{
"builtin": "transit_stops",
"override": {
"mapRendering": [
{
"iconBadges": [
{
"if": "tactile_paving=yes",
"then": "circle:green"
},
{
"if": "tactile_paving=no",
"then": "circle:red"
}
]
}
]
}
},
{
"builtin": "elevator",
"override": {
"minzoom": 17
}
},
"stairs"
]
}

View file

@ -0,0 +1,13 @@
[
{
"path": "Blindicon.svg",
"license": "CC0",
"authors": [
"Abu badali",
"AIGA"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:Blindicon.svg"
]
}
]

View file

@ -146,6 +146,10 @@
"if": "theme=binoculars",
"then": "./assets/layers/binocular/telescope.svg"
},
{
"if": "theme=blind_osm",
"then": "./assets/themes/blind_osm/Blindicon.svg"
},
{
"if": "theme=bookcases",
"then": "./assets/themes/bookcases/bookcase.svg"

View file

@ -4352,22 +4352,6 @@
"question": "Bordstein mit unbekannter Höhe"
}
}
},
"1": {
"options": {
"0": {
"question": "Bordsteine mit oder ohne taktilem Pflaster"
},
"1": {
"question": "Bordstein mit taktilem Pflaster"
},
"2": {
"question": "Bordstein ohne taktilem Pflaster"
},
"3": {
"question": "Bordstein ohne Informationen über taktiles Pflaster"
}
}
}
},
"name": "Bordsteine",

View file

@ -3384,7 +3384,7 @@
},
"elevator": {
"description": "This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information",
"name": "elevator",
"name": "Elevator",
"presets": {
"0": {
"title": "an elevator"
@ -4373,22 +4373,6 @@
"question": "Kerb with unknown height"
}
}
},
"1": {
"options": {
"0": {
"question": "Kerbs with or without tactile paving"
},
"1": {
"question": "Kerb with tactile paving"
},
"2": {
"question": "Kerb without tactile paving"
},
"3": {
"question": "Kerb wihout information about tactile paving"
}
}
}
},
"name": "Kerbs",

View file

@ -2228,7 +2228,7 @@
},
"elevator": {
"description": "Ce calque montre les ascenseurs et demande l'état opérationnel et les dimensions de l'ascenseur. Utile pour les informations sur l'accessibilité en fauteuil roulant",
"name": "ascenseur",
"name": "Ascenseur",
"presets": {
"0": {
"title": "un ascenseur"
@ -2963,22 +2963,6 @@
"question": "Bordure de hauteur inconnue"
}
}
},
"1": {
"options": {
"0": {
"question": "Bordures avec ou sans revêtement podotactile"
},
"1": {
"question": "Bordure avec revêtement podotactile"
},
"2": {
"question": "Bordure sans revêtement podotactile"
},
"3": {
"question": "Bordure sans information sur le revêtement podotactile"
}
}
}
},
"name": "Bordures",

View file

@ -3372,7 +3372,7 @@
},
"elevator": {
"description": "Deze laag toont liften en vraagt praktische info over de grootte van de lift en ofdat deze werkt, vooral met het oog op of de lift werkt of niet.",
"name": "lift",
"name": "Lift",
"presets": {
"0": {
"title": "een lift"
@ -4360,22 +4360,6 @@
"question": "Stoeprand met onbekende hoogte"
}
}
},
"1": {
"options": {
"0": {
"question": "Stoepranden met of zonder voelbare bestrating"
},
"1": {
"question": "Stoeprand met voelbare bestrating"
},
"2": {
"question": "Stoeprand zonder voelbare bestrating"
},
"3": {
"question": "Stoeprand zonder informatie over voelbare bestrating"
}
}
}
},
"name": "Stoepranden",

View file

@ -18,6 +18,7 @@ function main() {
)
const mappings: MappingConfigJson[] = []
const schoolmappings: MappingConfigJson[] = []
const brailemappings: MappingConfigJson[] = []
const countryToLanguage: Record<string, string[]> = perCountry
const officialLanguagesPerCountry = Utils.TransposeMap(countryToLanguage)
@ -57,6 +58,16 @@ function main() {
"*": [code],
},
})
brailemappings.push(<MappingConfigJson>{
if: "tactile_writing:braille:" + code + "=yes",
ifnot: "tactile_writing:braille:" + code + "=",
searchTerms: {
"*": [code],
},
then,
priorityIf: prioritySearch,
})
})
const wikidataLayer = <LayerConfigJson>{
@ -94,6 +105,13 @@ function main() {
multiAnswer: true,
mappings: schoolmappings,
},
{
id: "tactile_writing-braille",
// @ts-ignore
description: "Enables to pick *multiple* 'tactile_writing:braille=<lng>' within the mappings",
multiAnswer: true,
mappings: brailemappings,
}
],
}
const dir = "./assets/layers/wikidata/"