forked from MapComplete/MapComplete
		
	Add share icon, reordering of questions and icons, add urinal to toilet
This commit is contained in:
		
							parent
							
								
									a261577ef3
								
							
						
					
					
						commit
						4018e6710b
					
				
					 12 changed files with 416 additions and 395 deletions
				
			
		|  | @ -100,7 +100,7 @@ export default class LayerConfig { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.tagRenderings = trs(json.tagRenderings).concat(roamingRenderings); |         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) { |         function tr(key, deflt) { | ||||||
|  |  | ||||||
|  | @ -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 information_boards from "../assets/layers/information_board/information_board.json" | ||||||
| import * as direction from "../assets/layers/direction/direction.json" | import * as direction from "../assets/layers/direction/direction.json" | ||||||
| import * as surveillance_camera from "../assets/layers/surveillance_cameras/surveillance_cameras.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"; | import LayerConfig from "./JSON/LayerConfig"; | ||||||
| 
 | 
 | ||||||
| export default class SharedLayers { | export default class SharedLayers { | ||||||
|  | @ -41,6 +43,7 @@ export default class SharedLayers { | ||||||
|             new LayerConfig(maps,[], "shared_layers"), |             new LayerConfig(maps,[], "shared_layers"), | ||||||
|             new LayerConfig(direction,[], "shared_layers"), |             new LayerConfig(direction,[], "shared_layers"), | ||||||
|             new LayerConfig(information_boards,[], "shared_layers"), |             new LayerConfig(information_boards,[], "shared_layers"), | ||||||
|  |             new LayerConfig(toilets,[], "shared_layers"), | ||||||
|             new LayerConfig(surveillance_camera,[], "shared_layers") |             new LayerConfig(surveillance_camera,[], "shared_layers") | ||||||
|         ]; |         ]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| import * as questions from "../assets/questions/questions.json"; |  | ||||||
| import TagRenderingConfig from "./JSON/TagRenderingConfig"; | 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 { | export default class SharedTagRenderings { | ||||||
| 
 | 
 | ||||||
|  | @ -7,13 +8,24 @@ export default class SharedTagRenderings { | ||||||
| 
 | 
 | ||||||
|     private static generatedSharedFields() { |     private static generatedSharedFields() { | ||||||
|         const dict = {} |         const dict = {} | ||||||
|         for (const key in questions) { |          | ||||||
|  |          | ||||||
|  |         function add(key, store){ | ||||||
|             try { |             try { | ||||||
|                 dict[key] = new TagRenderingConfig(questions[key]) |                 dict[key] = new TagRenderingConfig(store[key]) | ||||||
|             } catch (e) { |             } 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; |         return dict; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -260,3 +260,6 @@ Shower icon (used in 'bike_cleaning.svg'): | ||||||
| https://commons.wikimedia.org/wiki/File:Shower_symbol.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 | 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/ | ||||||
							
								
								
									
										2
									
								
								State.ts
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								State.ts
									
										
									
									
									
								
							|  | @ -23,7 +23,7 @@ export default class State { | ||||||
|     // The singleton of the global state
 |     // The singleton of the global state
 | ||||||
|     public static state: 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
 |     // The user journey states thresholds when a new feature gets unlocked
 | ||||||
|     public static userJourney = { |     public static userJourney = { | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ import {FixedUiElement} from "./Base/FixedUiElement"; | ||||||
| import Locale from "../UI/i18n/Locale"; | import Locale from "../UI/i18n/Locale"; | ||||||
| import {ImageUploadFlow} from "./Image/ImageUploadFlow"; | import {ImageUploadFlow} from "./Image/ImageUploadFlow"; | ||||||
| import {Translation} from "./i18n/Translation"; | import {Translation} from "./i18n/Translation"; | ||||||
|  | import State from "../State"; | ||||||
| 
 | 
 | ||||||
| export class SubstitutedTranslation extends UIElement { | export class SubstitutedTranslation extends UIElement { | ||||||
|     private readonly tags: UIEventSource<any>; |     private readonly tags: UIEventSource<any>; | ||||||
|  | @ -183,7 +184,41 @@ export default class SpecialVisualizations { | ||||||
|                     return new VariableUiElement(source.map(data => data[neededValue] ?? "Loading...")); |                     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(); |     static HelpMessage: UIElement = SpecialVisualizations.GenHelpMessage(); | ||||||
|  |  | ||||||
|  | @ -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é. " | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ] | ||||||
| } | } | ||||||
|  | @ -5,84 +5,49 @@ | ||||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||||
|    xmlns:svg="http://www.w3.org/2000/svg" |    xmlns:svg="http://www.w3.org/2000/svg" | ||||||
|    xmlns="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" |    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 |      id="metadata28"><rdf:RDF><cc:Work | ||||||
|          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type |          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 |            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs | ||||||
|      id="defs26" /><sodipodi:namedview |      id="defs26" /><g | ||||||
|      pagecolor="#ffffff" |      transform="translate(0,0.0919838)" | ||||||
|      bordercolor="#666666" |      id="layer1"><circle | ||||||
|      borderopacity="1" |        r="50.092972" | ||||||
|      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" |  | ||||||
|        cy="50.000988" |        cy="50.000988" | ||||||
|        r="50.092972" /></g><g |        cx="50.092972" | ||||||
|      inkscape:groupmode="layer" |        id="path845" | ||||||
|      id="layer2" |        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 | ||||||
|      inkscape:label="fg" |      transform="translate(0,0.0919838)" | ||||||
|      transform="translate(0,0.0919838)"><g |      id="layer2"><g | ||||||
|        id="g849" |        transform="matrix(1.0774227,0,0,1,-6.5327497,-2.3834746)"  | ||||||
|        transform="matrix(1.0774227,0,0,1,-6.5327497,-2.3834746)"><circle |        id="g849"><circle | ||||||
|          cx="45.222931" |          id="circle2" | ||||||
|          cy="20.633209" |  | ||||||
|          r="6.8829999" |          r="6.8829999" | ||||||
|          id="circle2" /></g><path |          cy="20.633209" | ||||||
|        inkscape:connector-curvature="0" |          cx="45.222931" fill="#734a08ff"/></g><path | ||||||
|        id="path4" |        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" |        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 |        id="path4" /><path | ||||||
|        inkscape:connector-curvature="0" |        style="stroke-width:1.03798974" fill="#734a08ff" | ||||||
|        id="path6" |  | ||||||
|        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" |        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 |        id="path6" /><path | ||||||
|        inkscape:connector-curvature="0" |        style="stroke-width:1.03798974" fill="#734a08ff" | ||||||
|        id="path8" |  | ||||||
|        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" |        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 |        id="path8" /><path | ||||||
|        inkscape:connector-curvature="0" |        style="stroke-width:1.03798974" fill="#734a08ff" | ||||||
|        id="path10" |  | ||||||
|        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" |        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 |        id="path10" /><path fill="#734a08ff" | ||||||
|        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" |  | ||||||
|        style="stroke-width:1.03798974" |        style="stroke-width:1.03798974" | ||||||
|        sodipodi:nodetypes="ccsssccccccc" /><path |        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" | ||||||
|        inkscape:connector-curvature="0" |        id="path12" /><path fill="#734a08ff" | ||||||
|        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" |  | ||||||
|        style="stroke-width:1.49871337" |        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 | 
|  | @ -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()}" | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | @ -2,20 +2,6 @@ | ||||||
|   "images": { |   "images": { | ||||||
|     "render": "{image_carousel()}{image_upload()}" |     "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": { |   "phone": { | ||||||
|     "question": { |     "question": { | ||||||
|       "en": "What is the phone number of {name}?", |       "en": "What is the phone number of {name}?", | ||||||
|  | @ -27,7 +13,6 @@ | ||||||
|       "type": "phone" |       "type": "phone" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| 
 |  | ||||||
|   "email": { |   "email": { | ||||||
|     "render": "<a href='mailto:{email}' target='_blank'>{email}</a>", |     "render": "<a href='mailto:{email}' target='_blank'>{email}</a>", | ||||||
|     "freeform": { |     "freeform": { | ||||||
|  | @ -35,7 +20,6 @@ | ||||||
|       "type": "email" |       "type": "email" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|    |  | ||||||
|   "website": { |   "website": { | ||||||
|     "question": { |     "question": { | ||||||
|       "en": "What is the website of {name}?", |       "en": "What is the website of {name}?", | ||||||
|  | @ -49,7 +33,6 @@ | ||||||
|       "type": "url" |       "type": "url" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| 
 |  | ||||||
|   "opening_hours": { |   "opening_hours": { | ||||||
|     "question": { |     "question": { | ||||||
|       "en": "What are the opening hours of {name}?", |       "en": "What are the opening hours of {name}?", | ||||||
|  |  | ||||||
|  | @ -166,7 +166,7 @@ | ||||||
|           } |           } | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "icon": "./assets/pencil.svg", |       "icon": "./assets/svg/pencil.svg", | ||||||
|       "width": "5", |       "width": "5", | ||||||
|       "color": { |       "color": { | ||||||
|         "render": "#aaaaaa", |         "render": "#aaaaaa", | ||||||
|  |  | ||||||
|  | @ -23,306 +23,6 @@ | ||||||
|   "widenFactor": 0.05, |   "widenFactor": 0.05, | ||||||
|   "icon": "./assets/themes/toilets/toilets.svg", |   "icon": "./assets/themes/toilets/toilets.svg", | ||||||
|   "layers": [ |   "layers": [ | ||||||
|     { |     "toilets" | ||||||
|       "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é. " |  | ||||||
|               } |  | ||||||
|             } |  | ||||||
|           ] |  | ||||||
|         } |  | ||||||
|       ] |  | ||||||
|     } |  | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue