Add share icon, reordering of questions and icons, add urinal to toilet

This commit is contained in:
Pieter Vander Vennet 2020-11-21 16:44:48 +01:00
parent a261577ef3
commit 4018e6710b
12 changed files with 416 additions and 395 deletions

View file

@ -100,7 +100,7 @@ export default class LayerConfig {
}
this.tagRenderings = trs(json.tagRenderings).concat(roamingRenderings);
this.titleIcons = trs(json.titleIcons ?? ["wikipedialink","osmlink"]);
this.titleIcons = trs(json.titleIcons ?? ["wikipedialink","osmlink", "sharelink"]);
function tr(key, deflt) {

View file

@ -15,6 +15,8 @@ import * as maps from "../assets/layers/maps/maps.json"
import * as information_boards from "../assets/layers/information_board/information_board.json"
import * as direction from "../assets/layers/direction/direction.json"
import * as surveillance_camera from "../assets/layers/surveillance_cameras/surveillance_cameras.json"
import * as toilets from "../assets/layers/toilets/toilets.json"
import LayerConfig from "./JSON/LayerConfig";
export default class SharedLayers {
@ -41,6 +43,7 @@ export default class SharedLayers {
new LayerConfig(maps,[], "shared_layers"),
new LayerConfig(direction,[], "shared_layers"),
new LayerConfig(information_boards,[], "shared_layers"),
new LayerConfig(toilets,[], "shared_layers"),
new LayerConfig(surveillance_camera,[], "shared_layers")
];

View file

@ -1,5 +1,6 @@
import * as questions from "../assets/questions/questions.json";
import TagRenderingConfig from "./JSON/TagRenderingConfig";
import * as questions from "../assets/tagRenderings/questions.json";
import * as icons from "../assets/tagRenderings/icons.json";
export default class SharedTagRenderings {
@ -7,13 +8,24 @@ export default class SharedTagRenderings {
private static generatedSharedFields() {
const dict = {}
for (const key in questions) {
function add(key, store){
try {
dict[key] = new TagRenderingConfig(questions[key])
dict[key] = new TagRenderingConfig(store[key])
} catch (e) {
console.error("COULD NOT PARSE", key, " FROM QUESTIONS:", e)
console.error("BUG: could not parse", key, " from questions.json or icons.json", e)
}
}
for (const key in questions) {
add(key, questions);
}
for (const key in icons) {
add(key, icons);
}
return dict;
}

View file

@ -260,3 +260,6 @@ Shower icon (used in 'bike_cleaning.svg'):
https://commons.wikimedia.org/wiki/File:Shower_symbol.svg
Bench icons from StreetComplete: https://github.com/westnordost/StreetComplete/tree/v25.0-beta1/res/graphics/quest%20icons, GPLv3.0
Urinal icon: https://thenounproject.com/term/urinal/1307984/

View file

@ -23,7 +23,7 @@ export default class State {
// The singleton of the global state
public static state: State;
public static vNumber = "0.2.0";
public static vNumber = "0.2.1d";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {

View file

@ -9,6 +9,7 @@ import {FixedUiElement} from "./Base/FixedUiElement";
import Locale from "../UI/i18n/Locale";
import {ImageUploadFlow} from "./Image/ImageUploadFlow";
import {Translation} from "./i18n/Translation";
import State from "../State";
export class SubstitutedTranslation extends UIElement {
private readonly tags: UIEventSource<any>;
@ -183,7 +184,41 @@ export default class SpecialVisualizations {
return new VariableUiElement(source.map(data => data[neededValue] ?? "Loading..."));
}
},
{
funcName: "share_link",
docs: "Creates a link that (attempts to) open the native 'share'-screen",
example: "{share_link()} to share the current page, {share_link(<some_url>)} to share the given url",
args: [
{
name: "url",
doc: "The url to share",
defaultValue: "{current_url()}"
}
],
constr: (tagSource: UIEventSource<any>, args) => {
if (navigator.share !== undefined) {
return new FixedUiElement("").onClick(() => {
let name = tagSource["name"]
let title= State.state.layoutToUse.data.title.txt
if(name === undefined){
name = title
}else{
name = `${name} (${title})`
}
navigator.share({
url: args[0] ?? window.location.href,
title: name,
text: State.state.layoutToUse.data.shortDescription.txt
})
})
} else {
return new FixedUiElement("")
}
}
}
]
static HelpMessage: UIElement = SpecialVisualizations.GenHelpMessage();

View file

@ -1,2 +1,305 @@
{
"id": "toilets",
"name": {
"en": "Toilets",
"de": "Toiletten",
"fr": "Toilettes"
},
"overpassTags": "amenity=toilets",
"title": {
"render": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
}
},
"icon": {
"render": "./assets/layers/toilets/toilets.svg",
"mappings": [
{
"if": "wheelchair=yes",
"then": "./assets/layers/toilets/wheelchair.svg"
},
{
"if": "toilets:position=urinals",
"then": "./assets/layers/toilets/urinal.svg"
}
]
},
"color": {
"render": "#0000ff"
},
"minzoom": 12,
"wayHandling": 2,
"presets": [
{
"title": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
},
"tags": [
"amenity=toilets"
],
"description": {
"en": "A publicly accessible toilet or restroom",
"de": "Eine öffentlich zugängliche Toilette",
"fr": "Des toilettes"
}
},
{
"title": {
"en": "Toilets with wheelchair accessible toilet",
"de": "Toiletten mit rollstuhlgerechter Toilette",
"fr": "Toilettes accessible aux personnes à mobilité réduite"
},
"tags": [
"amenity=toilets",
"wheelchair=yes"
],
"description": {
"en": "A restroom which has at least one wheelchair-accessible toilet",
"de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette",
"fr": "Toilettes avec au moins un WC accessible aux personnes à mobilité réduite"
}
}
],
"tagRenderings": [
"images",
{
"question": {
"en": "Are these toilets publicly accessible?",
"de": "Sind diese Toiletten öffentlich zugänglich?",
"fr": "Ces toilettes sont-elles accessibles publiquement ?"
},
"render": {
"en": "Access is {access}",
"de": "Zugang ist {access}",
"fr": "L'accès est {access}"
},
"freeform": {
"key": "access",
"addExtraTags": [
"fixme=the tag access was filled out by the user and might need refinement"
]
},
"mappings": [
{
"if": "access=yes",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique"
}
},
{
"if": "access=customers",
"then": {
"en": "Only access to customers",
"de": "Nur Zugang für Kunden",
"fr": "Accès réservé aux clients"
}
},
{
"if": "access=no",
"then": {
"en": "Not accessible",
"de": "Nicht zugänglich",
"fr": "WC privés"
}
},
{
"if": "access=key",
"then": {
"en": "Accessible, but one has to ask a key to enter",
"de": "Zugänglich, aber man muss einen Schlüssel für die Eingabe verlangen",
"fr": "Accessible, mais vous devez demander la clé"
}
}
]
},
{
"question": {
"en": "Are these toilets free to use?",
"de": "Können diese Toiletten kostenlos benutzt werden?",
"fr": "Ces toilettes sont-elles payantes"
},
"mappings": [
{
"then": {
"en": "These are paid toilets",
"de": "Dies sind bezahlte Toiletten",
"fr": "Toilettes payantes"
},
"if": "fee=yes"
},
{
"if": "fee=no",
"then": {
"en": "Free to use",
"de": "Kostenlose Nutzung",
"fr": "Toilettes gratuites"
}
}
]
},
{
"question": {
"en": "How much does one have to pay for these toilets?",
"de": "Wie viel muss man für diese Toiletten bezahlen?",
"fr": "Quel est le prix d'accès de ces toilettes ?"
},
"render": {
"en": "The fee is {charge}",
"de": "Die Gebühr beträgt {charge}",
"fr": "Le prix est {charge}"
},
"condition": "fee=yes",
"freeform": {
"key": "charge",
"type": "string"
}
},
{
"question": {
"en": "Is there a dedicated toilet for wheelchair users",
"de": "Gibt es eine Toilette für Rollstuhlfahrer?",
"fr": "Un WC réservé aux personnes à mobilité réduite est-il présent ?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Es gibt eine Toilette für Rollstuhlfahrer",
"fr": "Il y a un WC réservé pour les personnes à mobilité réduite"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Kein Zugang für Rollstuhlfahrer",
"fr": "Non accessible aux personnes à mobilité réduite"
}
}
]
},
{
"question": {
"en": "Which kind of toilets are this?",
"de": "Welche Art von Toiletten sind das?",
"fr": "De quel type sont ces toilettes ?"
},
"mappings": [
{
"if": "toilets:position=seated",
"then": {
"en": "There are only seated toilets",
"de": "Es gibt nur Sitztoiletten",
"fr": "Il y a uniquement des WC assis"
}
},
{
"if": "toilets:position=urinals",
"then": {
"en": "There are only urinals here",
"de": "Hier gibt es nur Pissoirs",
"fr": "Il y a uniquement des urinoirs"
}
},
{
"if": "toilets:position=squat",
"then": {
"en": "There are only squat toilets here",
"de": "Es gibt hier nur Hocktoiletten.",
"fr": "Il y a uniquement des WC turques"
}
},
{
"if": "toilets:position=seated;urinals",
"then": {
"en": "Both seated toilets and urinals are available here",
"de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfügbar",
"fr": "Il y a des WC assis et des urinoirs"
}
}
]
},
{
"question": {
"en": "Is a changing table (to change diapers) available?",
"de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?",
"fr": "Ces WC disposent-ils d'une table à langer ?"
},
"mappings": [
{
"then": {
"en": "A changing table is available",
"de": "Ein Wickeltisch ist verfügbar",
"fr": "Une table à langer est disponible"
},
"if": "changing_table=yes"
},
{
"if": "changing_table=no",
"then": {
"en": "No changing table is available",
"de": "Es ist kein Wickeltisch verfügbar",
"fr": "Aucune table à langer"
}
}
]
},
{
"question": {
"en": "Where is the changing table located?",
"de": "Wo befindet sich der Wickeltisch?",
"fr": "Où se situe la table à langer ?"
},
"render": {
"en": "The changing table is located at {changing_table:location}",
"de": "Die Wickeltabelle befindet sich in {changing_table:location}",
"fr": "Emplacement de la table à langer : {changing_table:location}"
},
"condition": "changing_table=yes",
"freeform": {
"key": "changing_table:location"
},
"mappings": [
{
"then": {
"en": "The changing table is in the toilet for women. ",
"de": "Der Wickeltisch befindet sich in der Damentoilette. ",
"fr": "La table à langer se situe dans les WC pour femmes. "
},
"if": "changing_table:location=female_toilet"
},
{
"then": {
"en": "The changing table is in the toilet for men. ",
"de": "Der Wickeltisch befindet sich in der Herrentoilette. ",
"fr": "La table à langer se situe dans les WC pour hommes. "
},
"if": "changing_table:location=male_toilet"
},
{
"if": "changing_table:location=wheelchair_toilet",
"then": {
"en": "The changing table is in the toilet for wheelchair users. ",
"de": "Der Wickeltisch befindet sich in der Toilette für Rollstuhlfahrer. ",
"fr": "La table à langer se situe dans les WC pour personnes à mobilité réduite. "
}
},
{
"if": "changing_table:location=dedicated_room",
"then": {
"en": "The changing table is in a dedicated room. ",
"de": "Der Wickeltisch befindet sich in einem eigenen Raum. ",
"fr": "La table à langer se situe dans un espace dédié. "
}
}
]
}
]
}

View file

@ -5,84 +5,49 @@
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"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 100.18594 100.18594"
enable-background="new 0 0 100 100"
xml:space="preserve"
id="svg22"
sodipodi:docname="noun_Urinal_1307984.svg"
width="100.18594"
height="100.18594"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
width="100.18594"
id="svg22"
xml:space="preserve"
enable-background="new 0 0 100 100"
viewBox="0 0 100.18594 100.18594"
y="0px"
x="0px"
version="1.1"><metadata
id="metadata28"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs26" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview24"
showgrid="false"
inkscape:zoom="3.776"
inkscape:cx="-24.614037"
inkscape:cy="81.446444"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="bg"
transform="translate(0,0.0919838)"><circle
style="fill:#55bd00;fill-opacity:1;stroke:none;stroke-width:5.08555174;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.98823529"
id="path845"
cx="50.092972"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs26" /><g
transform="translate(0,0.0919838)"
id="layer1"><circle
r="50.092972"
cy="50.000988"
r="50.092972" /></g><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="fg"
transform="translate(0,0.0919838)"><g
id="g849"
transform="matrix(1.0774227,0,0,1,-6.5327497,-2.3834746)"><circle
cx="45.222931"
cy="20.633209"
cx="50.092972"
id="path845"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.08555174;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.98823529" /></g><g
transform="translate(0,0.0919838)"
id="layer2"><g
transform="matrix(1.0774227,0,0,1,-6.5327497,-2.3834746)"
id="g849"><circle
id="circle2"
r="6.8829999"
id="circle2" /></g><path
inkscape:connector-curvature="0"
id="path4"
cy="20.633209"
cx="45.222931" fill="#734a08ff"/></g><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 63.360093,62.535796 0.744233,-1.506117 c 0.03247,-0.03923 -1.837395,-1.305776 -1.867394,-1.264947 l -0.594756,1.578256 c 0.02894,-0.04064 1.750018,1.1577 1.717917,1.192808 z"
style="stroke-width:1.03798974" /><path
inkscape:connector-curvature="0"
id="path6"
id="path4" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 60.739166,60.844217 0.516546,-1.606098 c 0,0 -0.521003,-0.237131 -1.041486,-0.471307 -0.545369,-0.189171 -1.087902,-0.380873 -1.087902,-0.380873 l -0.357271,1.653154 c 0,0 0.503158,0.179353 1.004367,0.360064 0.483056,0.220467 0.965746,0.44506 0.965746,0.44506 z"
style="stroke-width:1.03798974" /><path
inkscape:connector-curvature="0"
id="path8"
id="path6" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 57.763048,59.750399 0.274951,-1.667072 c 0,0 -0.139693,-0.03528 -0.351095,-0.08634 -0.210149,-0.05636 -0.492219,-0.117309 -0.781965,-0.153545 -0.288667,-0.04252 -0.576272,-0.08523 -0.79215,-0.118241 -0.214817,-0.0332 -0.359526,-0.04729 -0.359526,-0.04729 l -0.107285,1.687263 c 0,0 0.53246,0.07874 1.066328,0.159253 0.269259,0.03173 0.532422,0.09093 0.72596,0.146159 0.193384,0.04815 0.324782,0.07981 0.324782,0.07981 z"
style="stroke-width:1.03798974" /><path
inkscape:connector-curvature="0"
id="path10"
id="path8" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 52.262826,57.706454 0.162629,1.679272 c -0.01946,-0.04836 2.163417,-0.133706 2.159193,-0.08321 l 0.02616,-1.68819 c 5.23e-4,-0.05289 -2.335967,0.03619 -2.347984,0.09212 z"
style="stroke-width:1.03798974" /><path
inkscape:connector-curvature="0"
id="path12"
d="m 44.487525,32.636 v -0.06 -0.546 c 0,-2.926 -2.556724,-5.299 -5.709263,-5.299 -3.152539,0 -5.709263,2.373 -5.709263,5.299 v 0.546 L 35.690687,45.197688 33.068999,85.688 h 11.418526 l -0.0331,-26.43253 c 1.188486,3.790204 7.349685,4.322606 6.763764,-1.56947 z"
id="path10" /><path fill="#734a08ff"
style="stroke-width:1.03798974"
sodipodi:nodetypes="ccsssccccccc" /><path
inkscape:connector-curvature="0"
id="path14"
d="m 68.240384,43.32148 v 15.764528 c -3.446517,5.459344 -5.76619,4.074036 -10.247903,5.133803 1.652985,11.916006 8.426597,10.425906 10.341535,21.124208 v 0.06209 c 2.338689,-0.4811 6.021132,0.919057 6.10748,-2.71532 L 74.347864,43.32148 Z"
d="m 44.487525,32.636 v -0.06 -0.546 c 0,-2.926 -2.556724,-5.299 -5.709263,-5.299 -3.152539,0 -5.709263,2.373 -5.709263,5.299 v 0.546 L 35.690687,45.197688 33.068999,85.688 h 11.418526 l -0.0331,-26.43253 c 1.188486,3.790204 7.349685,4.322606 6.763764,-1.56947 z"
id="path12" /><path fill="#734a08ff"
style="stroke-width:1.49871337"
sodipodi:nodetypes="cccccccc" /></g></svg>
d="m 68.240384,43.32148 v 15.764528 c -3.446517,5.459344 -5.76619,4.074036 -10.247903,5.133803 1.652985,11.916006 8.426597,10.425906 10.341535,21.124208 v 0.06209 c 2.338689,-0.4811 6.021132,0.919057 6.10748,-2.71532 L 74.347864,43.32148 Z"
id="path14" /></g></svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -1,2 +1,19 @@
{
"osmlink": {
"render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>",
"mappings": [
{
"if": "id~=-",
"then": "<span class='alert'>Uploading...</alert>"
}
]
},
"wikipedialink": {
"render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank'><img src='./assets/wikipedia.svg' alt='WP'/></a>",
"condition": "wikipedia~*"
},
"sharelink": {
"render": "{share_link()}"
}
}

View file

@ -2,20 +2,6 @@
"images": {
"render": "{image_carousel()}{image_upload()}"
},
"osmlink": {
"render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>",
"mappings":[{
"if": "id~=-",
"then": "<span class='alert'>Uploading...</alert>"
}]
},
"wikipedialink": {
"render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank'><img src='./assets/wikipedia.svg' alt='WP'/></a>",
"condition": "wikipedia~*"
},
"phone": {
"question": {
"en": "What is the phone number of {name}?",
@ -27,7 +13,6 @@
"type": "phone"
}
},
"email": {
"render": "<a href='mailto:{email}' target='_blank'>{email}</a>",
"freeform": {
@ -35,7 +20,6 @@
"type": "email"
}
},
"website": {
"question": {
"en": "What is the website of {name}?",
@ -49,7 +33,6 @@
"type": "url"
}
},
"opening_hours": {
"question": {
"en": "What are the opening hours of {name}?",

View file

@ -166,7 +166,7 @@
}
]
},
"icon": "./assets/pencil.svg",
"icon": "./assets/svg/pencil.svg",
"width": "5",
"color": {
"render": "#aaaaaa",

View file

@ -23,306 +23,6 @@
"widenFactor": 0.05,
"icon": "./assets/themes/toilets/toilets.svg",
"layers": [
{
"id": "Toilet",
"name": {
"en": "Toilets",
"de": "Toiletten",
"fr": "Toilettes"
},
"overpassTags": "amenity=toilets",
"title": {
"render": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
}
},
"icon": {
"render": "./assets/themes/toilets/toilets.svg",
"mappings": [
{
"if": "wheelchair=yes",
"then": "./assets/themes/toilets/wheelchair.svg"
}
]
},
"color": {
"render": "#0000ff"
},
"minzoom": 12,
"wayHandling": 2,
"presets": [
{
"title": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
},
"tags": [
"amenity=toilets"
],
"description": {
"en": "A publicly accessible toilet or restroom",
"de": "Eine öffentlich zugängliche Toilette",
"fr": "Des toilettes"
}
},
{
"title": {
"en": "Toilets with wheelchair accessible toilet",
"de": "Toiletten mit rollstuhlgerechter Toilette",
"fr": "Toilettes accessible aux personnes à mobilité réduite"
},
"tags": [
"amenity=toilets",
"wheelchair=yes"
],
"description": {
"en": "A restroom which has at least one wheelchair-accessible toilet",
"de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette",
"fr": "Toilettes avec au moins un WC accessible aux personnes à mobilité réduite"
}
}
],
"tagRenderings": [
"images",
{
"question": {
"en": "Are these toilets publicly accessible?",
"de": "Sind diese Toiletten öffentlich zugänglich?",
"fr": "Ces toilettes sont-elles accessibles publiquement ?"
},
"render": {
"en": "Access is {access}",
"de": "Zugang ist {access}",
"fr": "L'accès est {access}"
},
"freeform": {
"key": "access",
"addExtraTags": [
"fixme=the tag access was filled out by the user and might need refinement"
]
},
"mappings": [
{
"if": "access=yes",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique"
}
},
{
"if": "access=customers",
"then": {
"en": "Only access to customers",
"de": "Nur Zugang für Kunden",
"fr": "Accès réservé aux clients"
}
},
{
"if": "access=no",
"then": {
"en": "Not accessible",
"de": "Nicht zugänglich",
"fr": "WC privés"
}
},
{
"if": "access=key",
"then": {
"en": "Accessible, but one has to ask a key to enter",
"de": "Zugänglich, aber man muss einen Schlüssel für die Eingabe verlangen",
"fr": "Accessible, mais vous devez demander la clé"
}
}
]
},
{
"question": {
"en": "Are these toilets free to use?",
"de": "Können diese Toiletten kostenlos benutzt werden?",
"fr": "Ces toilettes sont-elles payantes"
},
"mappings": [
{
"then": {
"en": "These are paid toilets",
"de": "Dies sind bezahlte Toiletten",
"fr": "Toilettes payantes"
},
"if": "fee=yes"
},
{
"if": "fee=no",
"then": {
"en": "Free to use",
"de": "Kostenlose Nutzung",
"fr": "Toilettes gratuites"
}
}
]
},
{
"question": {
"en": "How much does one have to pay for these toilets?",
"de": "Wie viel muss man für diese Toiletten bezahlen?",
"fr": "Quel est le prix d'accès de ces toilettes ?"
},
"render": {
"en": "The fee is {charge}",
"de": "Die Gebühr beträgt {charge}",
"fr": "Le prix est {charge}"
},
"condition": "fee=yes",
"freeform": {
"key": "charge",
"type": "string"
}
},
{
"question": {
"en": "Is there a dedicated toilet for wheelchair users",
"de": "Gibt es eine Toilette für Rollstuhlfahrer?",
"fr": "Un WC réservé aux personnes à mobilité réduite est-il présent ?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Es gibt eine Toilette für Rollstuhlfahrer",
"fr": "Il y a un WC réservé pour les personnes à mobilité réduite"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Kein Zugang für Rollstuhlfahrer",
"fr": "Non accessible aux personnes à mobilité réduite"
}
}
]
},
{
"question": {
"en": "Which kind of toilets are this?",
"de": "Welche Art von Toiletten sind das?",
"fr": "De quel type sont ces toilettes ?"
},
"mappings": [
{
"if": "toilets:position=seated",
"then": {
"en": "There are only seated toilets",
"de": "Es gibt nur Sitztoiletten",
"fr": "Il y a uniquement des WC assis"
}
},
{
"if": "toilets:position=urinals",
"then": {
"en": "There are only urinals here",
"de": "Hier gibt es nur Pissoirs",
"fr": "Il y a uniquement des urinoirs"
}
},
{
"if": "toilets:position=squat",
"then": {
"en": "There are only squat toilets here",
"de": "Es gibt hier nur Hocktoiletten.",
"fr": "Il y a uniquement des WC turques"
}
},
{
"if": "toilets:position=seated;urinals",
"then": {
"en": "Both seated toilets and urinals are available here",
"de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfügbar",
"fr": "Il y a des WC assis et des urinoirs"
}
}
]
},
{
"question": {
"en": "Is a changing table (to change diapers) available?",
"de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?",
"fr": "Ces WC disposent-ils d'une table à langer ?"
},
"mappings": [
{
"then": {
"en": "A changing table is available",
"de": "Ein Wickeltisch ist verfügbar",
"fr": "Une table à langer est disponible"
},
"if": "changing_table=yes"
},
{
"if": "changing_table=no",
"then": {
"en": "No changing table is available",
"de": "Es ist kein Wickeltisch verfügbar",
"fr": "Aucune table à langer"
}
}
]
},
{
"question": {
"en": "Where is the changing table located?",
"de": "Wo befindet sich der Wickeltisch?",
"fr": "Où se situe la table à langer ?"
},
"render": {
"en": "The changing table is located at {changing_table:location}",
"de": "Die Wickeltabelle befindet sich in {changing_table:location}",
"fr": "Emplacement de la table à langer : {changing_table:location}"
},
"condition": "changing_table=yes",
"freeform": {
"key": "changing_table:location"
},
"mappings": [
{
"then": {
"en": "The changing table is in the toilet for women. ",
"de": "Der Wickeltisch befindet sich in der Damentoilette. ",
"fr": "La table à langer se situe dans les WC pour femmes. "
},
"if": "changing_table:location=female_toilet"
},
{
"then": {
"en": "The changing table is in the toilet for men. ",
"de": "Der Wickeltisch befindet sich in der Herrentoilette. ",
"fr": "La table à langer se situe dans les WC pour hommes. "
},
"if": "changing_table:location=male_toilet"
},
{
"if": "changing_table:location=wheelchair_toilet",
"then": {
"en": "The changing table is in the toilet for wheelchair users. ",
"de": "Der Wickeltisch befindet sich in der Toilette für Rollstuhlfahrer. ",
"fr": "La table à langer se situe dans les WC pour personnes à mobilité réduite. "
}
},
{
"if": "changing_table:location=dedicated_room",
"then": {
"en": "The changing table is in a dedicated room. ",
"de": "Der Wickeltisch befindet sich in einem eigenen Raum. ",
"fr": "La table à langer se situe dans un espace dédié. "
}
}
]
}
]
}
"toilets"
]
}