Themes(toilets): improve tagging of wheelchair accessible toilets, various fixes to make this possible

This commit is contained in:
Pieter Vander Vennet 2025-04-05 04:01:19 +02:00
parent 1e84c2cc4d
commit 089017b136
19 changed files with 617 additions and 223 deletions

View file

@ -121,7 +121,9 @@
"if": {
"or": [
"wheelchair=yes",
"wheelchair=designated"
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
},
"then": "./assets/layers/toilet/wheelchair.svg"
@ -453,7 +455,8 @@
]
},
"=labels": [
"relevant-questions"
"relevant-questions",
"no-prefix"
],
"question": {
"en": "When are these toilets opened?",
@ -467,110 +470,11 @@
}
}
},
{
"id": "toilets-wheelchair",
"labels": [
"relevant-questions"
],
"question": {
"en": "Is there a dedicated toilet for wheelchair users?",
"de": "Können Rollstuhlfahrer die Toilette benutzen?",
"fr": "Y a-t-il des toilettes réservées aux personnes en fauteuil roulant ?",
"nl": "Is er een rolstoeltoegankelijke toilet voorzien?",
"it": "C'è un WC riservato alle persone in sedia a rotelle?",
"da": "Er der et særligt toilet til kørestolsbrugere?",
"ca": "Hi ha un lavabo específic per a usuaris amb cadira de rodes?",
"cs": "Je zde vyhrazená toaleta pro vozíčkáře?",
"es": "¿Hay un baño dedicado para usuarios de sillas de ruedas?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Rollstuhlfahrer können die Toilette benutzen",
"fr": "Il y a des toilettes réservées pour les personnes à mobilité réduite",
"nl": "Er is een toilet voor rolstoelgebruikers",
"it": "C'è un WC riservato alle persone in sedia a rotelle",
"es": "Hay un baño dedicado para usuarios de sillas de ruedas",
"da": "Der er et særligt toilet til kørestolsbrugere",
"ca": "Hi ha un lavabo dedicat per a usuaris amb cadira de rodes",
"cs": "K dispozici je speciální toaleta pro vozíčkáře"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Rollstuhlfahrer können die Toilette nicht benutzen",
"fr": "Non accessible aux personnes à mobilité réduite",
"nl": "Niet toegankelijk voor rolstoelgebruikers",
"it": "Non accessibile in sedia a rotelle",
"ru": "Недоступно пользователям кресел-колясок",
"es": "Sin acceso para sillas de ruedas",
"da": "Ingen kørestolsadgang",
"ca": "Sense accés per a cadires de rodes",
"cs": "Žádný bezbariérový přístup"
}
},
{
"if": "wheelchair=designated",
"then": {
"en": "There is only a dedicated toilet for wheelchair users",
"nl": "Er is alleen een toilet voor rolstoelgebruikers",
"de": "Es gibt nur eine barrierefreie Toilette für Rollstuhlfahrer",
"da": "Der er kun et særligt toilet til kørestolsbrugere",
"ca": "És només un lavabo per a usuaris amb cadira de rodes",
"cs": "K dispozici je pouze vyhrazená toaleta pro vozíčkáře",
"es": "Solo hay un baño dedicado para usuarios de sillas de ruedas"
}
}
]
},
{
"id": "wheelchair-door-width",
"condition": {
"and": [
{
"or": [
"wheelchair=yes",
"wheelchair=designated"
]
}
]
},
"labels": [
"relevant-questions"
],
"question": {
"en": "What is the width of the door to the wheelchair accessible toilet?",
"nl": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?",
"fr": "Quelle est la largeur de la porte des toilettes accessibles aux fauteuils roulants ?",
"de": "Wie breit ist die Tür zur rollstuhlgerechten Toilette?",
"da": "Hvad er bredden på døren til det kørestolsvenlige toilet?",
"ca": "Quina és l'amplada de la porta per al lavabo accéssible?",
"cs": "Jaká je šířka dveří na bezbariérovou toaletu?",
"es": "¿Cuál es el ancho de la puerta del baño accesible para sillas de ruedas?"
},
"render": {
"en": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide",
"nl": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide",
"fr": "La porte des toilettes accessibles aux fauteuils roulants a une large de {canonical(door:width)}",
"de": "Die Tür zur rollstuhlgerechten Toilette ist {canonical(door:width)} breit",
"da": "Døren til det kørestolsvenlige toilet er {canonical(door:width)} bred",
"ca": "La porta del vàter accessible amb cadira de rodes té {canonical(door:width)} d'ample",
"cs": "Dveře na bezbariérovou toaletu mají šířku {canonical(door:width)}",
"es": "La puerta del baño accesible para sillas de ruedas tiene {canonical(door:width)} de ancho"
},
"freeform": {
"key": "door:width",
"type": "pfloat"
}
},
{
"id": "toilets-type",
"labels": [
"relevant-questions"
"relevant-questions",
"prefixed"
],
"question": {
"en": "Which kind of toilets are these?",
@ -643,8 +547,16 @@
]
},
{
"condition": "toilets:position!=urinal",
"condition": {
"and": [
"toilets:position!=urinal"
]
},
"id": "gender_segregated",
"labels": [
"relevant-questions",
"no-prefix"
],
"question": {
"en": "Are these toilets gender-segregated?",
"nl": "Zijn deze toiletten gescheiden op basis van geslacht?",
@ -688,6 +600,10 @@
},
{
"id": "menstrual_products",
"labels": [
"relevant-questions",
"prefixed"
],
"question": {
"en": "Are free, menstrual products distributed here?",
"nl": "Zijn er gratis menstruatieproducten beschikbaar?",
@ -747,6 +663,10 @@
},
{
"id": "menstrual_products_location",
"labels": [
"relevant-questions",
"prefixed"
],
"question": {
"en": "Where are the free menstrual products located?",
"nl": "Waar bevinden de gratis menstruatieproducten zich?",
@ -756,10 +676,14 @@
"ca": "On estan ubicats els productes menstruals gratuïts?"
},
"condition": {
"and": [
{
"or": [
"toilets:menstrual_products=limited",
"toilets:menstrual_products:location~*"
]
}
]
},
"render": {
"en": "The menstrual products are located in {toilets:menstrual_products:location}",
@ -812,7 +736,8 @@
{
"id": "toilets-changing-table",
"labels": [
"relevant-questions"
"relevant-questions",
"no-prefix"
],
"question": {
"en": "Is a changing table (to change diapers) available?",
@ -859,7 +784,12 @@
},
{
"labels": [
"relevant-questions"
"relevant-questions",
"no-prefix"
],
"labels": [
"relevant-questions",
"no-prefix"
],
"question": {
"en": "Where is the changing table located?",
@ -955,6 +885,10 @@
},
{
"id": "toilet-supervised",
"labels": [
"relevant-questions",
"no-prefix"
],
"question": {
"en": "Is this toilets supervised by a person?",
"nl": "Is er toezicht op deze toilet?"
@ -999,6 +933,10 @@
},
{
"id": "toilet-has-paper",
"labels": [
"relevant-questions",
"prefixed"
],
"labels": [
"relevant-questions"
],
@ -1051,6 +989,10 @@
"labels": [
"relevant-questions"
],
"labels": [
"relevant-questions",
"prefixed"
],
"id": "toilet-handwashing",
"question": {
"en": "Do these toilets have a sink to wash your hands?",
@ -1093,6 +1035,10 @@
},
{
"id": "toilet-drying",
"labels": [
"relevant-questions",
"prefixed"
],
"question": {
"en": "Do these toilets have a device to dry your hands?",
"nl": "Hebben deze toiletten een apparaat om je handen te drogen?"
@ -1135,9 +1081,285 @@
}
}
],
"condition": "toilets:handwashing=yes"
"condition": {
"and": [
"toilets:handwashing=yes"
]
}
},
"description"
"description",
{
"id": "wheelchair-group",
"labels": [
"relevant-questions",
"prefixed"
],
"render": {
"special": {
"type": "group",
"header": "wheelchair-title",
"labels": "wheelchair"
}
}
},
{
"id": "toilets-wheelchair",
"labels": [
"relevant-questions",
"wheelchair",
"hidden",
"no-prefix"
],
"question": {
"en": "Is there a dedicated toilet for wheelchair users?",
"de": "Können Rollstuhlfahrer die Toilette benutzen?",
"fr": "Y a-t-il des toilettes réservées aux personnes en fauteuil roulant ?",
"nl": "Is er een rolstoeltoegankelijke toilet voorzien?",
"it": "C'è un WC riservato alle persone in sedia a rotelle?",
"da": "Er der et særligt toilet til kørestolsbrugere?",
"ca": "Hi ha un lavabo específic per a usuaris amb cadira de rodes?",
"cs": "Je zde vyhrazená toaleta pro vozíčkáře?",
"es": "¿Hay un baño dedicado para usuarios de sillas de ruedas?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Rollstuhlfahrer können die Toilette benutzen",
"fr": "Il y a des toilettes réservées pour les personnes à mobilité réduite",
"nl": "Er is een toilet voor rolstoelgebruikers",
"it": "C'è un WC riservato alle persone in sedia a rotelle",
"es": "Hay un baño dedicado para usuarios de sillas de ruedas",
"da": "Der er et særligt toilet til kørestolsbrugere",
"ca": "Hi ha un lavabo dedicat per a usuaris amb cadira de rodes",
"cs": "K dispozici je speciální toaleta pro vozíčkáře"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Rollstuhlfahrer können die Toilette nicht benutzen",
"fr": "Non accessible aux personnes à mobilité réduite",
"nl": "Niet toegankelijk voor rolstoelgebruikers",
"it": "Non accessibile in sedia a rotelle",
"ru": "Недоступно пользователям кресел-колясок",
"es": "Sin acceso para sillas de ruedas",
"da": "Ingen kørestolsadgang",
"ca": "Sense accés per a cadires de rodes",
"cs": "Žádný bezbariérový přístup"
}
},
{
"if": "wheelchair=designated",
"then": {
"en": "There is only a dedicated toilet for wheelchair users",
"nl": "Er is alleen een toilet voor rolstoelgebruikers",
"de": "Es gibt nur eine barrierefreie Toilette für Rollstuhlfahrer",
"da": "Der er kun et særligt toilet til kørestolsbrugere",
"ca": "És només un lavabo per a usuaris amb cadira de rodes",
"cs": "K dispozici je pouze vyhrazená toaleta pro vozíčkáře",
"es": "Solo hay un baño dedicado para usuarios de sillas de ruedas"
}
}
]
},
{
"id": "wheelchair-picture-carousel",
"condition": {
"and": [
{
"or": [
"wheelchair=yes",
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
}
]
},
"labels": [
"wheelchair",
"hidden",
"relevant-questions",
"prefixed"
],
"render": {
"special": {
"type": "image_carousel",
"image_key": "toilets:wheelchair:panoramax;toilets:wheelchair:image;toilets:wheelchair:mapillary"
}
}
},
{
"id": "wheelchair-picture",
"condition": {
"and": [
{
"or": [
"wheelchair=yes",
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
}
]
},
"labels": [
"wheelchair",
"hidden",
"relevant-questions",
"prefixed"
],
"render": {
"special": {
"type": "image_upload",
"image_key": "toilets:wheelchair:panoramax",
"label": {
"en": "Add a picture of the wheelchair accessible toilet",
"nl": "Voeg een foto van de rolstoeltoegankelijke toilet toe"
}
}
}
},
{
"id": "wheelchair-title",
"labels": [
"hidden",
"relevant-questions",
"prefixed"
],
"render": {
"en": "Wheelchair accessible toilet",
"nl": "Rolstoeltoegankelijke toilet"
},
"icon": "./assets/layers/toilet/wheelchair.svg",
"mappings": [
{
"if": {
"or": [
"wheelchair=no",
"toilets:wheelchair=no"
]
},
"then": {
"en": "No wheelchair accessible toilet",
"nl": "Geen rolstoeltoegankelijke toilet"
}
}
]
},
{
"id": "wheelchair-access",
"question": {
"en": "Is the wheelchair-accessible toilet locked?",
"nl": "Is de rolstoeltoegankelijke toilet op slot?"
},
"condition": {
"and": [
{
"or": [
"wheelchair=yes",
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
},
{
"or": [
"access=yes",
"access=public",
"access=customers"
]
}
]
},
"labels": [
"hidden",
"wheelchair",
"relevant-questions",
"prefixed"
],
"mappings": [
{
"if": "toilets:wheelchair:access=yes",
"alsoShowIf": "toilets:wheelchair:access=",
"then": {
"en": "The wheelchair accessible toilets are freely accessible",
"nl": "De rolstoeltoegankelijke toilet is vrij toegankelijk"
}
},
{
"if": "toilets:wheelchair:access=key",
"icon": "key",
"then": {
"en": "One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key",
"nl": "Men moet toestemming vragen om de rolstoeltoegankelijke toilet te gebruiken, bv. door een sleutel te vragen"
}
}
]
},
{
"id": "wheelchair-door-width",
"condition": {
"and": [
{
"or": [
"wheelchair=yes",
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
}
]
},
"labels": [
"relevant-questions",
"wheelchair",
"hidden",
"prefixed"
],
"question": {
"en": "What is the width of the door to the wheelchair accessible toilet?",
"nl": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?",
"fr": "Quelle est la largeur de la porte des toilettes accessibles aux fauteuils roulants ?",
"de": "Wie breit ist die Tür zur rollstuhlgerechten Toilette?",
"da": "Hvad er bredden på døren til det kørestolsvenlige toilet?",
"ca": "Quina és l'amplada de la porta per al lavabo accéssible?",
"cs": "Jaká je šířka dveří na bezbariérovou toaletu?",
"es": "¿Cuál es el ancho de la puerta del baño accesible para sillas de ruedas?"
},
"render": {
"en": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide",
"nl": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide",
"fr": "La porte des toilettes accessibles aux fauteuils roulants a une large de {canonical(door:width)}",
"de": "Die Tür zur rollstuhlgerechten Toilette ist {canonical(door:width)} breit",
"da": "Døren til det kørestolsvenlige toilet er {canonical(door:width)} bred",
"ca": "La porta del vàter accessible amb cadira de rodes té {canonical(door:width)} d'ample",
"cs": "Dveře na bezbariérovou toaletu mají šířku {canonical(door:width)}",
"es": "La puerta del baño accesible para sillas de ruedas tiene {canonical(door:width)} de ancho"
},
"freeform": {
"key": "door:width",
"type": "pfloat"
}
},
{
"id": "questions-wheelchair",
"labels": [
"wheelchair",
"hidden",
"relevant-questions"
],
"render": {
"special": {
"type": "questions",
"show_all": "yes",
"labels": "wheelchair"
}
}
}
],
"filter": [
{
@ -1159,7 +1381,9 @@
"osmTags": {
"or": [
"wheelchair=yes",
"wheelchair=designated"
"wheelchair=designated",
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
}
}

View file

@ -349,6 +349,10 @@
},
{
"id": "toilets-wheelchair",
"labels": [
"wheelchair",
"hidden"
],
"question": {
"en": "Is there a dedicated toilet for wheelchair users?",
"de": "Können Rollstuhlfahrer die Toilette benutzen?",
@ -406,48 +410,21 @@
}
]
},
"toilet.prefixed",
{
"id": "wheelchair-door-width",
"condition": {
"or": [
"toilets:wheelchair=yes",
"toilets:wheelchair=designated"
]
},
"question": {
"en": "What is the width of the door to the wheelchair accessible toilet?",
"nl": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?",
"fr": "Quelle est la largeur de la porte des toilettes accessibles aux fauteuils roulants ?",
"de": "Wie breit ist die Tür zur rollstuhlgerechten Toilette?",
"da": "Hvad er bredden på døren til det kørestolsvenlige toilet?",
"ca": "Quina és l'amplada de la porta del lavabo accessible per a cadira de rodes?",
"cs": "Jaká je šířka dveří na bezbariérovou toaletu?",
"sl": "Koliko so široka vrata v stranišče za invalide na vozičku?",
"es": "¿Cuál es el ancho de la puerta del baño accesible para sillas de ruedas?"
},
"id": "questions-wheelchair",
"labels": [
"wheelchair",
"hidden"
],
"render": {
"en": "The door to the wheelchair-accessible toilet is {canonical(toilets:door:width)} wide",
"nl": "De deur naar de rolstoeltoegankelijke toilet is {canonical(toilets:door:width)} wide",
"fr": "La porte des toilettes accessibles aux fauteuils roulants a une large de {canonical(toilets:door:width)}",
"de": "Die Tür zur rollstuhlgerechten Toilette ist {canonical(toilets:door:width)} breit",
"da": "Døren til det kørestolsvenlige toilet er {canonical(toilets:door:width)} bred",
"ca": "La porta del vàter accessible amb cadira de rodes és {canonical(toilets:door:width)} d'ample",
"cs": "Dveře na toaletu pro vozíčkáře jsou {canonical(toilets:door:width)} široké",
"sl": "Vrata v stranišče za invalide na vozičku so široka {canonical(toilets:door:width)}",
"es": "La puerta del baño accesible para sillas de ruedas tiene {canonical(toilets:door:width)} de ancho"
},
"freeform": {
"key": "toilets:door:width",
"type": "pfloat"
"special": {
"type": "questions",
"labels": "wheelchair",
"show_all": "yes"
}
}
},
"toilet.toilets-type",
"toilet.toilets-changing-table",
"toilet.toilet-changing_table:location",
"toilet.toilet-handwashing",
"toilet.toilet-has-paper",
"toilet.menstrual_products",
"toilet.menstrual_products_location",
{
"builtin": "description",
"override": {

View file

@ -858,21 +858,24 @@
{
"question": {
"en": "All platforms",
"cs": "Všechny platformy"
"cs": "Všechny platformy",
"de": "Alle Plattformen"
},
"quesiton": "All platforms"
},
{
"question": {
"en": "Made with Android",
"cs": "Vytvořeno s Androidem"
"cs": "Vytvořeno s Androidem",
"de": "Mit Android erstellt"
},
"osmTags": "android=yes"
},
{
"question": {
"en": "Made on the web",
"cs": "Vytvořeno na webu"
"cs": "Vytvořeno na webu",
"de": "Im Internet erstellt"
},
"osmTags": "android="
}

View file

@ -5242,8 +5242,12 @@
"questionHint": "Això podria estar escrit al cartell del nom del carrer",
"render": "Anomenat en honor a {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Afegeix una imatge de la placa amb el nom del carrer)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Afegeix una imatge de la placa amb el nom del carrer"
}
}
},
"wikipedia": {
"render": "Existeix un article de la Viquipèdia sobre aquest <b>carrer</b>:<br/>{wikipedia():max-height:25rem}"

View file

@ -5057,8 +5057,12 @@
"questionHint": "To může být napsáno na ceduli s názvem ulice",
"render": "Pojmenováno po {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Add image of a street name sign)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Add image of a street name sign"
}
}
},
"wikipedia": {
"render": "Článek na Wikipedii o této <b>ulici</b> existuje:<br/>{wikipedia():max-height:25rem}"

View file

@ -1589,8 +1589,12 @@
"question": "Hvad er dette objekt opkaldt efter?",
"render": "Opkaldt efter {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Tilføj foto af gadenavneskilt)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Tilføj foto af gadenavneskilt"
}
}
},
"wikipedia": {
"render": "Der findes en Wikipedia-artikel om denne <b>gade</b>:<br/>{wikipedia():max-height:25rem}"

View file

@ -5220,8 +5220,12 @@
"questionHint": "Das könnte auf einem Straßenschild stehen",
"render": "Benannt nach {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Bild eines Straßenschildes hinzufügen)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Bild eines Straßenschildes hinzufügen"
}
}
},
"wikipedia": {
"render": "Zu dieser <b>Straße</b> existiert ein Wikipedia-Artikel:<br/>{wikipedia():max-height:25rem}"

View file

@ -759,6 +759,19 @@
},
"question": "What notes can you withdraw here?"
},
"indoor": {
"override": {
"mappings": {
"0": {
"then": "This ATM is located indoors"
},
"1": {
"then": "This ATM is located outdoors"
}
},
"question": "Is this ATM located indoors?"
}
},
"name": {
"render": "The name of this ATM is {name}"
},
@ -5382,8 +5395,12 @@
"questionHint": "This might be written on the street name sign",
"render": "Named after {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Add image of a street name sign)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Add image of a street name sign"
}
}
},
"wikipedia": {
"render": "A Wikipedia article about this <b>street</b> exists:<br/>{wikipedia():max-height:25rem}"
@ -6731,6 +6748,14 @@
},
"question": "What type of hydrant is it?",
"render": " Hydrant type: {fire_hydrant:type}"
},
"ref": {
"freeform": {
"placeholder": "Reference number of the hydrant"
},
"question": "What is the reference number of this hydrant?",
"questionHint": "This can usually be found on the hydrant or on a nearby sign.",
"render": "Reference number: {ref}"
}
},
"title": {
@ -7419,6 +7444,10 @@
"0": {
"description": "A memorial is a physical object which remembers a person or event.",
"title": "a memorial"
},
"1": {
"description": "A memorial is a physical object which remembers a person or event and is attached to a wall.",
"title": "a memorial on a wall"
}
},
"tagRenderings": {
@ -8856,6 +8885,9 @@
"presets": {
"0": {
"title": "a bookcase"
},
"1": {
"title": "a bookcase on a wall"
}
},
"tagRenderings": {
@ -11658,6 +11690,17 @@
}
},
"question": "How is this street lamp mounted?"
},
"utility_pole": {
"mappings": {
"0": {
"then": "This lamp is mounted on a utility pole"
},
"1": {
"then": "This lamp is not mounted on a utility pole"
}
},
"question": "Is this lamp mounted on a utility pole?"
}
},
"title": {
@ -12324,9 +12367,35 @@
},
"question": "Is there a dedicated toilet for wheelchair users?"
},
"wheelchair-access": {
"mappings": {
"0": {
"then": "The wheelchair accessible toilets are freely accessible"
},
"1": {
"then": "One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key"
}
},
"question": "Is the wheelchair-accessible toilet locked?"
},
"wheelchair-door-width": {
"question": "What is the width of the door to the wheelchair accessible toilet?",
"render": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide"
},
"wheelchair-picture": {
"render": {
"special": {
"label": "Add a picture of the wheelchair accessible toilet"
}
}
},
"wheelchair-title": {
"mappings": {
"0": {
"then": "No wheelchair accessible toilet"
}
},
"render": "Wheelchair accessible toilet"
}
},
"title": {
@ -13509,6 +13578,29 @@
"render": "Settings"
}
},
"utility_pole": {
"description": "Layer showing various types of utility poles.",
"name": "Utility Poles",
"presets": {
"0": {
"title": "a utility pole"
}
},
"tagRenderings": {
"street_lamp": {
"mappings": {
"0": {
"then": "This utility pole has a street lamp mounted on it."
},
"1": {
"then": "This utility pole does not have a street lamp mounted on it."
}
},
"question": "Does this utility pole have a street lamp mounted on it?"
}
},
"title": "Utility Pole"
},
"vending_machine": {
"description": "Layer showing vending machines",
"filter": {
@ -14031,6 +14123,9 @@
"3": {
"description": "A wayside cross is a christian cross that is placed by a road or pathway. This cross is mounted on a wall",
"title": "a wayside cross mounted on a wall"
},
"4": {
"title": "a mother mary shrine on the first floor"
}
},
"tagRenderings": {
@ -14169,6 +14264,23 @@
},
"question": "What's the name of this {title()}?",
"render": "The name of this {title()} is <b>{name}</b>"
},
"subject:wikidata": {
"mappings": {
"0": {
"then": "Mother mary is depicted"
},
"1": {
"then": "Jesus Christ as a child is depicted"
},
"2": {
"then": "Jesus Christ (as an adult) is depicted"
},
"3": {
"then": "Saint Anne (mother of Mary) is depicted"
}
},
"question": "Who is depicted?"
}
},
"title": {

View file

@ -4912,8 +4912,12 @@
"questionHint": "Esto podría estar escrito en el letrero del nombre de la calle",
"render": "Nombrado en honor a {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Agregar imagen de un letrero de nombre de calle)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Agregar imagen de un letrero de nombre de calle"
}
}
},
"wikipedia": {
"render": "Existe un artículo de Wikipedia sobre esta <b>calle</b>:<br/>{wikipedia():max-height:25rem}"

View file

@ -3476,8 +3476,12 @@
"questionHint": "Cela peut être indiqué sur le panneau de la rue",
"render": "Nommé en référence à {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Ajouter une photo de la plaque de rue)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Ajouter une photo de la plaque de rue"
}
}
},
"wikipedia": {
"render": "Un article Wikipédia à propos de cette <b>rue</b> existe :<br/>{wikipedia():max-height:25rem}"

View file

@ -735,6 +735,19 @@
},
"question": "Welke bankbiljetten kan je hier afhalen?"
},
"indoor": {
"override": {
"mappings": {
"0": {
"then": "Deze geldautomaat bevindt zich binnen"
},
"1": {
"then": "Deze geldautomaat bevindt zich buiten"
}
},
"question": "Bevindt deze geldautomaat zich binnen?"
}
},
"name": {
"render": "De naam van deze geldautomaat is {name}"
},
@ -5041,8 +5054,12 @@
"questionHint": "Dit staat mogelijks vermeld op het straatnaambordje",
"render": "Vernoemd naar {name:etymology}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Voeg afbeelding van straatnaambordje toe"
}
}
},
"wikipedia": {
"render": "Een Wikipedia artikel over deze <b>straat</b> bestaat:<br/>{wikipedia():max-height:25rem}"
@ -5971,6 +5988,14 @@
},
"question": "Wat voor soort brandkraan is dit?",
"render": " Het type brandkraan is {fire_hydrant:type}"
},
"ref": {
"freeform": {
"placeholder": "Referentienummer van de brandkraan"
},
"question": "Wat is het referentienummer van deze brandkraan?",
"questionHint": "Dit nummer is meestal te vinden op de brandkraan of op een nabijgelegen bord.",
"render": "Referentienummer: {ref}"
}
},
"title": {
@ -6469,7 +6494,12 @@
"name": "Gedenktekens",
"presets": {
"0": {
"description": "Een fysiek object dat een persoon of gebeurtenis herdenkt",
"title": "een gedenkteken"
},
"1": {
"description": "Een fysiek object dat een persoon of gebeurtenis herdenkt en dat ophangt aan een muur.",
"title": "een gedenkteken dat aan een muur hangt"
}
},
"tagRenderings": {
@ -9902,9 +9932,35 @@
},
"question": "Is er een rolstoeltoegankelijke toilet voorzien?"
},
"wheelchair-access": {
"mappings": {
"0": {
"then": "De rolstoeltoegankelijke toilet is vrij toegankelijk"
},
"1": {
"then": "Men moet toestemming vragen om de rolstoeltoegankelijke toilet te gebruiken, bv. door een sleutel te vragen"
}
},
"question": "Is de rolstoeltoegankelijke toilet op slot?"
},
"wheelchair-door-width": {
"question": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?",
"render": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide"
},
"wheelchair-picture": {
"render": {
"special": {
"label": "Voeg een foto van de rolstoeltoegankelijke toilet toe"
}
}
},
"wheelchair-title": {
"mappings": {
"0": {
"then": "Geen rolstoeltoegankelijke toilet"
}
},
"render": "Rolstoeltoegankelijke toilet"
}
},
"title": {

View file

@ -1280,8 +1280,12 @@
"etymology_multi_apply": {
"render": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Автоматичне застосування даних до всіх сегментів з однаковою назвою, true)}"
},
"street-name-sign-image": {
"render": "{image_carousel(image:streetsign)}<br/>{image_upload(image:streetsign, Додати зображення таблички з назвою вулиці)}"
"streetsign-upload": {
"render": {
"special": {
"label": "Додати зображення таблички з назвою вулиці"
}
}
},
"wikipedia-etymology": {
"question": "На честь якого елемента Вікіданих названо цей об'єкт?"

View file

@ -3354,11 +3354,6 @@ input[type="range"].range-lg::-moz-range-thumb {
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)) !important;
}
.bg-black {
--tw-bg-opacity: 1;
background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
}
.bg-blue-100 {
--tw-bg-opacity: 1;
background-color: rgb(225 239 254 / var(--tw-bg-opacity, 1));

View file

@ -53,7 +53,7 @@ export default class FeaturePropertiesStore {
public getStore(id: string): UIEventSource<Record<string, string>> {
const store = this._elements.get(id)
if (store === undefined) {
console.error("PANIC: no store for", id)
console.warn("PANIC: no properties store for", id)
}
return store
}

View file

@ -4,39 +4,11 @@ export class ThemeMetaTagging {
public static readonly themeName = "usersettings"
public metaTaggging_for_usersettings(feat: {properties: Record<string, string>}) {
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_md", () =>
feat.properties._description
.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)
?.at(1)
)
Utils.AddLazyProperty(
feat.properties,
"_d",
() => feat.properties._description?.replace(/&lt;/g, "<")?.replace(/&gt;/g, ">") ?? ""
)
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_a", () =>
((feat) => {
const e = document.createElement("div")
e.innerHTML = feat.properties._d
return Array.from(e.getElementsByTagName("a")).filter(
(a) => a.href.match(/mastodon|en.osm.town/) !== null
)[0]?.href
})(feat)
)
Utils.AddLazyProperty(feat.properties, "_mastodon_link", () =>
((feat) => {
const e = document.createElement("div")
e.innerHTML = feat.properties._d
return Array.from(e.getElementsByTagName("a")).filter(
(a) => a.getAttribute("rel")?.indexOf("me") >= 0
)[0]?.href
})(feat)
)
Utils.AddLazyProperty(
feat.properties,
"_mastodon_candidate",
() => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a
)
feat.properties["__current_backgroun"] = "initial_value"
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_md', () => feat.properties._description.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)?.at(1) )
Utils.AddLazyProperty(feat.properties, '_d', () => feat.properties._description?.replace(/&lt;/g,'<')?.replace(/&gt;/g,'>') ?? '' )
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_a', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.href.match(/mastodon|en.osm.town/) !== null)[0]?.href }) (feat) )
Utils.AddLazyProperty(feat.properties, '_mastodon_link', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.getAttribute("rel")?.indexOf('me') >= 0)[0]?.href})(feat) )
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate', () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a )
feat.properties['__current_backgroun'] = 'initial_value'
}
}

View file

@ -17,7 +17,10 @@
export let layer: LayerConfig
let headerTr = layer.tagRenderings.find((tr) => tr.id === header)
let trgs: TagRenderingConfig[] = []
if (headerTr === undefined) {
console.error("Header tagRendering with ID", header, "was not found")
}
let tagRenderings: TagRenderingConfig[] = []
let seenIds = new Set<string>()
for (const label of labels) {
for (const tr of layer.tagRenderings) {
@ -25,20 +28,30 @@
continue
}
if (label === tr.id || tr.labels.some((l) => l === label)) {
trgs.push(tr)
tagRenderings.push(tr)
seenIds.add(tr.id)
}
}
}
</script>
{#if tagRenderings.length > 0}
<div class="mb-8">
<AccordionSingle>
<div slot="header">
{#if headerTr}
<TagRenderingAnswer {tags} {layer} config={headerTr} {state} {selectedElement} />
{:else}
{header}
{/if}
</div>
{#each trgs as config (config.id)}
{#each tagRenderings as config (config.id)}
{#if config.IsKnown($tags) && (config.condition === undefined || config.condition.matchesProperties($tags))}
<TagRenderingEditableDynamic {tags} {config} {state} {selectedElement} {layer} />
{/if}
{/each}
</AccordionSingle>
</div>
{/if}

View file

@ -31,7 +31,7 @@
*/
export let notForLabels: string[] | undefined = undefined
const _notForLabels = new Set(notForLabels)
let showAllQuestionsAtOnce: Store<boolean> =
export let showAllQuestionsAtOnce: Store<boolean> =
state.userRelatedState?.showAllQuestionsAtOnce ?? new ImmutableStore(false)
function allowed(labels: string[]) {

View file

@ -22,7 +22,8 @@
export let id: string = undefined
if (config === undefined) {
throw "Config is undefined in tagRenderingAnswer"
console.error("TagRenderingAnswer: Config is undefined")
throw ("Config is undefined in tagRenderingAnswer")
}
let trs: Store<{ then: Translation; icon?: string; iconClass?: string }[]> = tags.mapD((tags) =>
Utils.NoNull(config?.GetRenderValues(tags))

View file

@ -1,6 +1,6 @@
import { SpecialVisualizationState, SpecialVisualizationSvelte } from "../SpecialVisualization"
import SvelteUIElement from "../Base/SvelteUIElement"
import { UIEventSource } from "../../Logic/UIEventSource"
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
import { Feature } from "geojson"
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
import Questionbox from "../Popup/TagRendering/Questionbox.svelte"
@ -31,6 +31,11 @@ class QuestionViz implements SpecialVisualizationSvelte {
name: "blacklisted-labels",
doc: "One or more ';'-separated labels of questions which should _not_ be included. Note that the questionbox which is added by default will blacklist 'hidden'"
},
{
name: "show_all",
default: "user-preference",
doc: "Either `no`, `yes` or `user-preference`. Indicates if all questions should be shown at once"
}
]
svelteBased = true
group: "default"
@ -50,6 +55,13 @@ class QuestionViz implements SpecialVisualizationSvelte {
?.split(";")
?.map((s) => s.trim())
?.filter((s) => s !== "")
const showAll = args[2]
let showAllQuestionsAtOnce: Store<boolean> = state.userRelatedState?.showAllQuestionsAtOnce
if (showAll === "yes") {
showAllQuestionsAtOnce = new ImmutableStore(true)
} else if (showAll === "no") {
showAllQuestionsAtOnce = new ImmutableStore(false)
}
return new SvelteUIElement(Questionbox, {
layer,
tags,
@ -57,6 +69,7 @@ class QuestionViz implements SpecialVisualizationSvelte {
state,
onlyForLabels: labels,
notForLabels: blacklist,
showAllQuestionsAtOnce
})
}
}