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