forked from MapComplete/MapComplete
		
	Add Open Toilet Map, fix #34
This commit is contained in:
		
							parent
							
								
									2df565dc50
								
							
						
					
					
						commit
						a55767c1e9
					
				
					 11 changed files with 188 additions and 188 deletions
				
			
		| 
						 | 
					@ -15,6 +15,7 @@ import {GhostBikes} from "./Layouts/GhostBikes";
 | 
				
			||||||
import {CustomLayoutFromJSON} from "./JSON/CustomLayoutFromJSON";
 | 
					import {CustomLayoutFromJSON} from "./JSON/CustomLayoutFromJSON";
 | 
				
			||||||
import * as bookcases from "../assets/themes/bookcases/Bookcases.json";
 | 
					import * as bookcases from "../assets/themes/bookcases/Bookcases.json";
 | 
				
			||||||
import * as aed from "../assets/themes/aed/aed.json";
 | 
					import * as aed from "../assets/themes/aed/aed.json";
 | 
				
			||||||
 | 
					import * as toilets from "../assets/themes/toilets/toilets.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class AllKnownLayouts {
 | 
					export class AllKnownLayouts {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +29,7 @@ export class AllKnownLayouts {
 | 
				
			||||||
        new GhostBikes(),
 | 
					        new GhostBikes(),
 | 
				
			||||||
        CustomLayoutFromJSON.LayoutFromJSON(bookcases),
 | 
					        CustomLayoutFromJSON.LayoutFromJSON(bookcases),
 | 
				
			||||||
        CustomLayoutFromJSON.LayoutFromJSON(aed),
 | 
					        CustomLayoutFromJSON.LayoutFromJSON(aed),
 | 
				
			||||||
 | 
					        CustomLayoutFromJSON.LayoutFromJSON(toilets),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        new MetaMap(),
 | 
					        new MetaMap(),
 | 
				
			||||||
        new StreetWidth(),
 | 
					        new StreetWidth(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,84 +0,0 @@
 | 
				
			||||||
import {LayerDefinition} from "../LayerDefinition";
 | 
					 | 
				
			||||||
import {FixedUiElement} from "../../UI/Base/FixedUiElement";
 | 
					 | 
				
			||||||
import L from "leaflet";
 | 
					 | 
				
			||||||
import {Tag} from "../../Logic/TagsFilter";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export class Toilets extends LayerDefinition{
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    constructor() {
 | 
					 | 
				
			||||||
        super("toilets");
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        this.name="toilet";
 | 
					 | 
				
			||||||
        this.newElementTags = [new Tag( "amenity", "toilets")];
 | 
					 | 
				
			||||||
        this.icon = "./assets/toilets.svg";
 | 
					 | 
				
			||||||
        this.overpassFilter = new Tag("amenity","toilets");
 | 
					 | 
				
			||||||
        this.minzoom = 13;
 | 
					 | 
				
			||||||
        this.questions = [Quests.hasFee, 
 | 
					 | 
				
			||||||
            Quests.toiletsWheelChairs,
 | 
					 | 
				
			||||||
            Quests.toiletsChangingTable, 
 | 
					 | 
				
			||||||
            Quests.toiletsChangingTableLocation, 
 | 
					 | 
				
			||||||
            Quests.toiletsPosition];
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        this.style = function(tags){
 | 
					 | 
				
			||||||
            if(tags.wheelchair == "yes"){
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
            return {icon :  new L.icon({
 | 
					 | 
				
			||||||
                    iconUrl: "assets/wheelchair.svg",
 | 
					 | 
				
			||||||
                    iconSize: [40, 40]
 | 
					 | 
				
			||||||
                })};
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return {icon :  new L.icon({
 | 
					 | 
				
			||||||
                    iconUrl: "assets/toilets.svg",
 | 
					 | 
				
			||||||
                    iconSize: [40, 40]
 | 
					 | 
				
			||||||
                })};
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        this.elementsToShow = [
 | 
					 | 
				
			||||||
            new FixedUiElement("Toiletten"),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            new TagMappingOptions({
 | 
					 | 
				
			||||||
                key: "access",
 | 
					 | 
				
			||||||
                mapping: {
 | 
					 | 
				
			||||||
                    yes: "Toegankelijk",
 | 
					 | 
				
			||||||
                    no: "Niet toegankelijk",
 | 
					 | 
				
			||||||
                    private: "Niet toegankelijk",
 | 
					 | 
				
			||||||
                    customers: "Enkel voor klanten",
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            new TagMappingOptions({
 | 
					 | 
				
			||||||
                key: "fee",
 | 
					 | 
				
			||||||
                mapping: {
 | 
					 | 
				
			||||||
                    yes: "Betalend",
 | 
					 | 
				
			||||||
                    no: "Gratis",
 | 
					 | 
				
			||||||
                    ["0"]: "Gratis"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                template: "Betalend, men vraagt {fee}"
 | 
					 | 
				
			||||||
            }),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            new TagMappingOptions({
 | 
					 | 
				
			||||||
                key: "toilets:position",
 | 
					 | 
				
			||||||
                mapping: {
 | 
					 | 
				
			||||||
                    seated: 'Gewone zittoiletten',
 | 
					 | 
				
			||||||
                    urinal: 'Een enkele urinoir',
 | 
					 | 
				
			||||||
                    urinals: 'Urinoirs',
 | 
					 | 
				
			||||||
                    ['urinals;seated']: "Urinoirs en gewone toiletten",
 | 
					 | 
				
			||||||
                    ['seated;urinals']: "Urinoirs en gewone toiletten",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            new TagMappingOptions({
 | 
					 | 
				
			||||||
                key: "wheelchair",
 | 
					 | 
				
			||||||
                mapping: {
 | 
					 | 
				
			||||||
                    yes: "Rolstoeltoegankelijk",
 | 
					 | 
				
			||||||
                    no: "Niet Rolstoeltoegankelijk",
 | 
					 | 
				
			||||||
                    limited: "Beperkt rolstoeltoegankelijk",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }),
 | 
					 | 
				
			||||||
        ];
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,25 +0,0 @@
 | 
				
			||||||
import {Layout} from "../Layout";
 | 
					 | 
				
			||||||
import * as Layer from "../Layers/Toilets";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export class Toilets extends Layout{
 | 
					 | 
				
			||||||
    constructor() {
 | 
					 | 
				
			||||||
        super(      "toilets",
 | 
					 | 
				
			||||||
            ["en"],
 | 
					 | 
				
			||||||
            "Open Toilet Map",
 | 
					 | 
				
			||||||
            [new Layer.Toilets()],
 | 
					 | 
				
			||||||
            12,
 | 
					 | 
				
			||||||
            51.2,
 | 
					 | 
				
			||||||
            3.2,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            "        <h3>Open Toilet Map</h3>\n" +
 | 
					 | 
				
			||||||
            "\n" +
 | 
					 | 
				
			||||||
            "<p>Help us to create the most complete map about <i>all</i> the toilets in the world, based on openStreetMap." +
 | 
					 | 
				
			||||||
            "One can answer questions here, which help users all over the world to find an accessible toilet, close to them.</p>"
 | 
					 | 
				
			||||||
            ,
 | 
					 | 
				
			||||||
            "  <p>Start by <a href=\"https://www.openstreetmap.org/user/new\" target=\"_blank\">creating an account\n" +
 | 
					 | 
				
			||||||
            "            </a> or by " +
 | 
					 | 
				
			||||||
            "            <span onclick=\"authOsm()\" class=\"activate-osm-authentication\">logging in</span>.</p>",
 | 
					 | 
				
			||||||
            "Start by clicking a pin and answering the questions");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										4
									
								
								State.ts
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								State.ts
									
										
									
									
									
								
							| 
						 | 
					@ -24,7 +24,7 @@ export 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.0.5b";
 | 
					    public static vNumber = "0.0.5c";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static runningFromConsole: boolean = false; 
 | 
					    public static runningFromConsole: boolean = false; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ export class State {
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public bm;
 | 
					    public bm;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     The user crednetials
 | 
					     The user credentials
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public osmConnection: OsmConnection;
 | 
					    public osmConnection: OsmConnection;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,14 +44,17 @@ export class MoreScreen extends UIElement {
 | 
				
			||||||
            const currentLocation = State.state.locationControl.data;
 | 
					            const currentLocation = State.state.locationControl.data;
 | 
				
			||||||
            const linkText =
 | 
					            const linkText =
 | 
				
			||||||
                `https://pietervdvn.github.io/MapComplete/${layout.name}.html?z=${currentLocation.zoom}&lat=${currentLocation.lat}&lon=${currentLocation.lon}`
 | 
					                `https://pietervdvn.github.io/MapComplete/${layout.name}.html?z=${currentLocation.zoom}&lat=${currentLocation.lat}&lon=${currentLocation.lon}`
 | 
				
			||||||
 | 
					            let description = Translations.W(layout.description);
 | 
				
			||||||
 | 
					            if(description !== undefined){
 | 
				
			||||||
 | 
					                description = new Combine(["<br/>", description]);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            const link =
 | 
					            const link =
 | 
				
			||||||
                new SubtleButton(layout.icon,
 | 
					                new SubtleButton(layout.icon,
 | 
				
			||||||
                    new Combine([
 | 
					                    new Combine([
 | 
				
			||||||
                        "<b>",
 | 
					                        "<b>",
 | 
				
			||||||
                        Translations.W(layout.title),
 | 
					                        Translations.W(layout.title),
 | 
				
			||||||
                        "</b>",
 | 
					                        "</b>",
 | 
				
			||||||
                        "<br/>",
 | 
					                        description ?? "",
 | 
				
			||||||
                        Translations.W(layout.description),
 | 
					 | 
				
			||||||
                    ]), {url: linkText, newTab: false});
 | 
					                    ]), {url: linkText, newTab: false});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            els.push(link)
 | 
					            els.push(link)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,73 +0,0 @@
 | 
				
			||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
					 | 
				
			||||||
<svg
 | 
					 | 
				
			||||||
   xmlns:dc="http://purl.org/dc/elements/1.1/"
 | 
					 | 
				
			||||||
   xmlns:cc="http://creativecommons.org/ns#"
 | 
					 | 
				
			||||||
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | 
					 | 
				
			||||||
   xmlns:svg="http://www.w3.org/2000/svg"
 | 
					 | 
				
			||||||
   xmlns="http://www.w3.org/2000/svg"
 | 
					 | 
				
			||||||
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
 | 
					 | 
				
			||||||
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
 | 
					 | 
				
			||||||
   viewBox="0 0 64 64"
 | 
					 | 
				
			||||||
   height="64"
 | 
					 | 
				
			||||||
   width="64"
 | 
					 | 
				
			||||||
   id="svg109"
 | 
					 | 
				
			||||||
   version="1.1"
 | 
					 | 
				
			||||||
   sodipodi:docname="Public_bookcase-14.svg"
 | 
					 | 
				
			||||||
   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
 | 
					 | 
				
			||||||
  <sodipodi:namedview
 | 
					 | 
				
			||||||
     pagecolor="#ffffff"
 | 
					 | 
				
			||||||
     bordercolor="#666666"
 | 
					 | 
				
			||||||
     borderopacity="1"
 | 
					 | 
				
			||||||
     objecttolerance="10"
 | 
					 | 
				
			||||||
     gridtolerance="10"
 | 
					 | 
				
			||||||
     guidetolerance="10"
 | 
					 | 
				
			||||||
     inkscape:pageopacity="0"
 | 
					 | 
				
			||||||
     inkscape:pageshadow="2"
 | 
					 | 
				
			||||||
     inkscape:window-width="1920"
 | 
					 | 
				
			||||||
     inkscape:window-height="1001"
 | 
					 | 
				
			||||||
     id="namedview6"
 | 
					 | 
				
			||||||
     showgrid="false"
 | 
					 | 
				
			||||||
     inkscape:zoom="8.4285714"
 | 
					 | 
				
			||||||
     inkscape:cx="21.124627"
 | 
					 | 
				
			||||||
     inkscape:cy="25.918314"
 | 
					 | 
				
			||||||
     inkscape:window-x="0"
 | 
					 | 
				
			||||||
     inkscape:window-y="0"
 | 
					 | 
				
			||||||
     inkscape:window-maximized="1"
 | 
					 | 
				
			||||||
     inkscape:current-layer="layer2" />
 | 
					 | 
				
			||||||
  <metadata
 | 
					 | 
				
			||||||
     id="metadata115">
 | 
					 | 
				
			||||||
    <rdf:RDF>
 | 
					 | 
				
			||||||
      <cc:Work
 | 
					 | 
				
			||||||
         rdf:about="">
 | 
					 | 
				
			||||||
        <dc:format>image/svg+xml</dc:format>
 | 
					 | 
				
			||||||
        <dc:type
 | 
					 | 
				
			||||||
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 | 
					 | 
				
			||||||
        <dc:title></dc:title>
 | 
					 | 
				
			||||||
      </cc:Work>
 | 
					 | 
				
			||||||
    </rdf:RDF>
 | 
					 | 
				
			||||||
  </metadata>
 | 
					 | 
				
			||||||
  <defs
 | 
					 | 
				
			||||||
     id="defs113" />
 | 
					 | 
				
			||||||
  <g
 | 
					 | 
				
			||||||
     inkscape:groupmode="layer"
 | 
					 | 
				
			||||||
     id="layer1"
 | 
					 | 
				
			||||||
     inkscape:label="background">
 | 
					 | 
				
			||||||
    <ellipse
 | 
					 | 
				
			||||||
       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.49738699;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
 | 
					 | 
				
			||||||
       id="path819"
 | 
					 | 
				
			||||||
       cx="31.967007"
 | 
					 | 
				
			||||||
       cy="32.109043"
 | 
					 | 
				
			||||||
       rx="32.00938"
 | 
					 | 
				
			||||||
       ry="31.946436" />
 | 
					 | 
				
			||||||
  </g>
 | 
					 | 
				
			||||||
  <g
 | 
					 | 
				
			||||||
     inkscape:groupmode="layer"
 | 
					 | 
				
			||||||
     id="layer2"
 | 
					 | 
				
			||||||
     inkscape:label="icon">
 | 
					 | 
				
			||||||
    <path
 | 
					 | 
				
			||||||
       id="path4176"
 | 
					 | 
				
			||||||
       d="M 32.123859,10.440678 8.6779661,17.139504 v 3.349413 L 32.123859,13.79009 55.569753,20.488917 v -3.349413 z m -11.59865,11.964995 c -0.522431,0.02077 -1.041409,0.124297 -1.556954,0.320538 v 20.835706 c 0,0 8.38755,-0.322013 10.525792,7.817477 V 29.497007 c -1.631616,-3.400613 -5.311804,-7.237191 -8.968838,-7.091334 z m 8.968838,28.973731 C 24.066203,47.228261 16.331902,46.172115 16.331902,46.172115 V 26.376556 l -2.629816,-1.046692 v 23.445893 l 15.791961,5.207293 h 5.259628 L 50.545632,48.775757 V 25.329864 l -2.629812,1.046692 v 20.835709 l -13.162145,4.167139 c -1.754454,-0.663351 -3.795938,-0.545319 -5.259628,0 z M 45.279464,22.726221 C 40.03579,22.448689 33.986193,25.566152 30.808953,28.247518 v 22.045945 c 2.933724,-2.408355 8.190227,-5.573982 14.470511,-6.208191 z"
 | 
					 | 
				
			||||||
       style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:3.34941339"
 | 
					 | 
				
			||||||
       inkscape:connector-curvature="0" />
 | 
					 | 
				
			||||||
  </g>
 | 
					 | 
				
			||||||
</svg>
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 2.8 KiB  | 
							
								
								
									
										169
									
								
								assets/themes/toilets/toilets.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								assets/themes/toilets/toilets.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,169 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "layers": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "Toilet",
 | 
				
			||||||
 | 
					      "title": {
 | 
				
			||||||
 | 
					        "key": "*",
 | 
				
			||||||
 | 
					        "render": "Toilet"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "icon": {
 | 
				
			||||||
 | 
					        "key": "*",
 | 
				
			||||||
 | 
					        "render": "./assets/themes/toilets/toilets.svg",
 | 
				
			||||||
 | 
					        "mappings": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "then": "./assets/themes/toilets/wheelchair.svg",
 | 
				
			||||||
 | 
					            "if": "wheelchair=yes"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "color": {
 | 
				
			||||||
 | 
					        "key": "*",
 | 
				
			||||||
 | 
					        "render": "#0000ff"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "description": "A toilet",
 | 
				
			||||||
 | 
					      "minzoom": "14",
 | 
				
			||||||
 | 
					      "wayHandling": 2,
 | 
				
			||||||
 | 
					      "presets": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "title": "Toilet",
 | 
				
			||||||
 | 
					          "tags": "amenity=toilets",
 | 
				
			||||||
 | 
					          "description": "Only add public toilets"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "tagRenderings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "key": "access",
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "Public access",
 | 
				
			||||||
 | 
					              "if": "access=yes"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "Only access to customers",
 | 
				
			||||||
 | 
					              "if": "access=customers"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "access=no",
 | 
				
			||||||
 | 
					              "then": "Not accessible"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "Accessible, but one has to ask a key to enter",
 | 
				
			||||||
 | 
					              "if": "access=key"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "question": "Are these toilets publicly accessible?",
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "addExtraTags": "fixme=the tag access was filled out by the user and might need refinement",
 | 
				
			||||||
 | 
					          "render": "Access is {access}"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "These are paid toilets",
 | 
				
			||||||
 | 
					              "if": "fee=yes"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "fee=no",
 | 
				
			||||||
 | 
					              "then": "Free to use"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "question": "Are these toilets free to use?"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "key": "charge",
 | 
				
			||||||
 | 
					          "mappings": [],
 | 
				
			||||||
 | 
					          "question": "How much does one have to pay for these toilets?",
 | 
				
			||||||
 | 
					          "type": "string",
 | 
				
			||||||
 | 
					          "render": "The fee is {charge}",
 | 
				
			||||||
 | 
					          "condition": "fee=yes"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "There is a dedicated toilet for wheelchair users",
 | 
				
			||||||
 | 
					              "if": "wheelchair=yes"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "wheelchair=no",
 | 
				
			||||||
 | 
					              "then": "No wheelchair access"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "question": "Is there a dedicated toilet for wheelchair users"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "toilets:position=seated",
 | 
				
			||||||
 | 
					              "then": "There are only seated toilets"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "toilets:position=urinals",
 | 
				
			||||||
 | 
					              "then": "There are only urinals here"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "toilets:position=squat",
 | 
				
			||||||
 | 
					              "then": "There are only squat toilets here"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "toilets:position=seated;urinals",
 | 
				
			||||||
 | 
					              "then": "Both seated toilets and urinals are available here"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "question": "Which kind of toilets are this?",
 | 
				
			||||||
 | 
					          "type": "text"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "A changing table is available",
 | 
				
			||||||
 | 
					              "if": "changing_table=yes"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "changing_table=no",
 | 
				
			||||||
 | 
					              "then": "No changing table is available"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "question": "Is a changing table (to change diapers) available?",
 | 
				
			||||||
 | 
					          "type": "text"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "key": "changing_table:location",
 | 
				
			||||||
 | 
					          "mappings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "The changing table is in the toilet for women. ",
 | 
				
			||||||
 | 
					              "if": "changing_table:location=female_toilet"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "then": "The changing table is in the toilet for men. ",
 | 
				
			||||||
 | 
					              "if": "changing_table:location=male_toilet"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "changing_table:location=wheelchair_toilet",
 | 
				
			||||||
 | 
					              "then": "The changing table is in the toilet for wheelchair users. "
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "if": "changing_table:location=dedicated_room",
 | 
				
			||||||
 | 
					              "then": "The changing table is in a dedicated room. "
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          "type": "text",
 | 
				
			||||||
 | 
					          "question": "Where is the changing table located?",
 | 
				
			||||||
 | 
					          "condition": "changing_table=yes",
 | 
				
			||||||
 | 
					          "render": "The changing table is located at {changing_table:location}"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "overpassTags": "amenity=toilets"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "startLat": "51.2095",
 | 
				
			||||||
 | 
					  "startZoom": "12",
 | 
				
			||||||
 | 
					  "maintainer": "Pieter Vander Vennet",
 | 
				
			||||||
 | 
					  "title": "Open Toilet Map",
 | 
				
			||||||
 | 
					  "startLon": "3.2222",
 | 
				
			||||||
 | 
					  "icon": "./assets/themes/toilets/toilets.svg",
 | 
				
			||||||
 | 
					  "description": "A map of public toilets",
 | 
				
			||||||
 | 
					  "language": "en",
 | 
				
			||||||
 | 
					  "name": "toilets"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB  | 
| 
		 Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB  | 
| 
						 | 
					@ -7,6 +7,8 @@ import {LocalStorageSource} from "./Logic/Web/LocalStorageSource";
 | 
				
			||||||
import {createHash} from "crypto";
 | 
					import {createHash} from "crypto";
 | 
				
			||||||
import Combine from "./UI/Base/Combine";
 | 
					import Combine from "./UI/Base/Combine";
 | 
				
			||||||
import {Button} from "./UI/Base/Button";
 | 
					import {Button} from "./UI/Base/Button";
 | 
				
			||||||
 | 
					import {FixedUiElement} from "./UI/Base/FixedUiElement";
 | 
				
			||||||
 | 
					import {State} from "./State";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const connection = new OsmConnection(true, new UIEventSource<string>(undefined), false);
 | 
					const connection = new OsmConnection(true, new UIEventSource<string>(undefined), false);
 | 
				
			||||||
connection.AttemptLogin();
 | 
					connection.AttemptLogin();
 | 
				
			||||||
| 
						 | 
					@ -16,7 +18,7 @@ const localStorage = LocalStorageSource.Get("last-custom-save");
 | 
				
			||||||
console.log("hash", hash)
 | 
					console.log("hash", hash)
 | 
				
			||||||
console.log("Saved: ", localStorage.data)
 | 
					console.log("Saved: ", localStorage.data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (hash === undefined || hash === "") {
 | 
					if (hash === undefined || hash === "" && localStorage.data !== undefined) {
 | 
				
			||||||
    const previous = localStorage.data.split("#");
 | 
					    const previous = localStorage.data.split("#");
 | 
				
			||||||
    hash = previous[1];
 | 
					    hash = previous[1];
 | 
				
			||||||
    console.log("Using previously saved data ", hash)
 | 
					    console.log("Using previously saved data ", hash)
 | 
				
			||||||
| 
						 | 
					@ -41,4 +43,9 @@ new Combine([
 | 
				
			||||||
        themeGenerator.themeObject.data.maintainer = connection.userDetails.data.name;
 | 
					        themeGenerator.themeObject.data.maintainer = connection.userDetails.data.name;
 | 
				
			||||||
        themeGenerator.themeObject.data.layers = [];
 | 
					        themeGenerator.themeObject.data.layers = [];
 | 
				
			||||||
        themeGenerator.themeObject.ping();
 | 
					        themeGenerator.themeObject.ping();
 | 
				
			||||||
    })]).AttachTo("preview");
 | 
					    }),
 | 
				
			||||||
 | 
					    "<br/>",
 | 
				
			||||||
 | 
					    "Version: ",
 | 
				
			||||||
 | 
					    State.vNumber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					]).AttachTo("preview");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1193,6 +1193,7 @@ form {
 | 
				
			||||||
    border-right:1px solid gray;
 | 
					    border-right:1px solid gray;
 | 
				
			||||||
    border-top:  1px solid gray;
 | 
					    border-top:  1px solid gray;
 | 
				
			||||||
    border-bottom: 1px solid lightgray;
 | 
					    border-bottom: 1px solid lightgray;
 | 
				
			||||||
 | 
					    min-width: 4em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue