Merge branch 'develop' of github.com:pietervdvn/MapComplete into develop
| 
						 | 
					@ -34,8 +34,7 @@
 | 
				
			||||||
      "or": [
 | 
					      "or": [
 | 
				
			||||||
        "service:bicycle:cleaning=yes",
 | 
					        "service:bicycle:cleaning=yes",
 | 
				
			||||||
        "service:bicycle:cleaning=diy",
 | 
					        "service:bicycle:cleaning=diy",
 | 
				
			||||||
        "amenity=bicycle_wash",
 | 
					        "amenity=bicycle_wash"
 | 
				
			||||||
        "amenity=bike_wash"
 | 
					 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
| 
						 | 
					@ -83,7 +82,6 @@
 | 
				
			||||||
          "if": {
 | 
					          "if": {
 | 
				
			||||||
            "and": [
 | 
					            "and": [
 | 
				
			||||||
              "service:bicycle:cleaning~*",
 | 
					              "service:bicycle:cleaning~*",
 | 
				
			||||||
              "amenity!=bike_wash",
 | 
					 | 
				
			||||||
              "amenity!=bicycle_wash"
 | 
					              "amenity!=bicycle_wash"
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
| 
						 | 
					@ -106,7 +104,6 @@
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "lineRendering": [],
 | 
					 | 
				
			||||||
  "presets": [
 | 
					  "presets": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "title": {
 | 
					      "title": {
 | 
				
			||||||
| 
						 | 
					@ -158,7 +155,6 @@
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "condition": {
 | 
					      "condition": {
 | 
				
			||||||
        "and": [
 | 
					        "and": [
 | 
				
			||||||
          "amenity!=bike_wash",
 | 
					 | 
				
			||||||
          "amenity!=bicycle_wash",
 | 
					          "amenity!=bicycle_wash",
 | 
				
			||||||
          "service:bicycle:cleaning!=no",
 | 
					          "service:bicycle:cleaning!=no",
 | 
				
			||||||
          "service:bicycle:cleaning!="
 | 
					          "service:bicycle:cleaning!="
 | 
				
			||||||
| 
						 | 
					@ -169,7 +165,7 @@
 | 
				
			||||||
        "addExtraTags": [
 | 
					        "addExtraTags": [
 | 
				
			||||||
          "service:bicycle:cleaning:fee=yes"
 | 
					          "service:bicycle:cleaning:fee=yes"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "inline": true
 | 
					        "inline": false
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "mappings": [
 | 
					      "mappings": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -241,7 +237,6 @@
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "condition": {
 | 
					      "condition": {
 | 
				
			||||||
        "or": [
 | 
					        "or": [
 | 
				
			||||||
          "amenity=bike_wash",
 | 
					 | 
				
			||||||
          "amenity=bicycle_wash"
 | 
					          "amenity=bicycle_wash"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -285,6 +280,54 @@
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "id": "bike_cleaning-charge"
 | 
					      "id": "bike_cleaning-charge"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Is this bicycle cleaning service automated?",
 | 
				
			||||||
 | 
					        "nl": "Is dit fietsschoonmaakpunt geautomatiseerd?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "id": "automated",
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "automated=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This is a manual bike washing station",
 | 
				
			||||||
 | 
					            "nl": "Dit is een handmatig fietsschoonmaakpunt"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "automated=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This is an automated bike wash",
 | 
				
			||||||
 | 
					            "nl": "Dit is een automatisch fietsschoonmaakpunt"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "condition": "amenity=bicycle_wash"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "nl": "Is dit fietsschoonmaakpunt zelfbediening?",
 | 
				
			||||||
 | 
					        "en": "Is this cleaning service self-service?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "id": "self_service",
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "self_service=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "nl": "Dit fietsschoonmaakpunt is zelfbediening",
 | 
				
			||||||
 | 
					            "en": "This cleaning service is self-service"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "self_service=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "nl": "Dit fietsschoonmaakpunt wordt bediend door aanwezig personeel",
 | 
				
			||||||
 | 
					            "en": "This cleaning service is operated by an employee"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "condition": "amenity=bicycle_wash"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "deletion": {
 | 
					  "deletion": {
 | 
				
			||||||
| 
						 | 
					@ -300,4 +343,4 @@
 | 
				
			||||||
    "enableRelocation": false,
 | 
					    "enableRelocation": false,
 | 
				
			||||||
    "enableImproveAccuracy": true
 | 
					    "enableImproveAccuracy": true
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -97,8 +97,8 @@
 | 
				
			||||||
        "support=wall_mounted"
 | 
					        "support=wall_mounted"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "title": {
 | 
					      "title": {
 | 
				
			||||||
        "en": "a wall-mounted clock",
 | 
					        "en": "a wall-mounted clock, mounted using a support perpendicular to the wall",
 | 
				
			||||||
        "nl": "een klok aan een muur",
 | 
					        "nl": "een klok aan een muur, bevestigd met een steun loodrecht op de muur",
 | 
				
			||||||
        "de": "eine an der Wand montierte Uhr",
 | 
					        "de": "eine an der Wand montierte Uhr",
 | 
				
			||||||
        "ca": "un rellotge muntat en un paret",
 | 
					        "ca": "un rellotge muntat en un paret",
 | 
				
			||||||
        "fr": "une horloge fixée au mur",
 | 
					        "fr": "une horloge fixée au mur",
 | 
				
			||||||
| 
						 | 
					@ -117,6 +117,23 @@
 | 
				
			||||||
      "snapToLayer": [
 | 
					      "snapToLayer": [
 | 
				
			||||||
        "walls_and_buildings"
 | 
					        "walls_and_buildings"
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "amenity=clock",
 | 
				
			||||||
 | 
					        "support=wall"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "title": {
 | 
				
			||||||
 | 
					        "en": "a wall-mounted clock, mounted directly on a wall",
 | 
				
			||||||
 | 
					        "nl": "een klok aan een muur, rechtstreeks bevestigd aan een muur"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "description": {
 | 
				
			||||||
 | 
					        "en": "A publicly visible clock mounted directly on a wall",
 | 
				
			||||||
 | 
					        "nl": "Een publiekelijk zichtbare klok rechtstreeks bevestigd aan een muur"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "snapToLayer": [
 | 
				
			||||||
 | 
					        "walls_and_buildings"
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "tagRenderings": [
 | 
					  "tagRenderings": [
 | 
				
			||||||
| 
						 | 
					@ -148,8 +165,8 @@
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "if": "support=wall_mounted",
 | 
					          "if": "support=wall_mounted",
 | 
				
			||||||
          "then": {
 | 
					          "then": {
 | 
				
			||||||
            "en": "This clock is mounted on a wall",
 | 
					            "en": "This clock is mounted on a wall, usually through a support perpendicular to the wall",
 | 
				
			||||||
            "nl": "Deze klok is bevestigd aan een muur",
 | 
					            "nl": "Deze klok is bevestigd aan een muur, meestal met een steun loodrecht op de muur",
 | 
				
			||||||
            "de": "Diese Uhr ist an einer Wand montiert",
 | 
					            "de": "Diese Uhr ist an einer Wand montiert",
 | 
				
			||||||
            "ca": "Aquest rellotge està muntat en una paret",
 | 
					            "ca": "Aquest rellotge està muntat en una paret",
 | 
				
			||||||
            "fr": "Cette horloge est fixée sur un mur",
 | 
					            "fr": "Cette horloge est fixée sur un mur",
 | 
				
			||||||
| 
						 | 
					@ -157,6 +174,13 @@
 | 
				
			||||||
            "cs": "Tyto hodiny jsou namontovány na stěně"
 | 
					            "cs": "Tyto hodiny jsou namontovány na stěně"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "support=wall",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This clock is mounted directly on a wall",
 | 
				
			||||||
 | 
					            "nl": "Deze klok is rechtstreeks aan een muur bevestigd"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "if": "support=billboard",
 | 
					          "if": "support=billboard",
 | 
				
			||||||
          "then": {
 | 
					          "then": {
 | 
				
			||||||
| 
						 | 
					@ -245,6 +269,30 @@
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "builtin": "indoor",
 | 
				
			||||||
 | 
					      "override": {
 | 
				
			||||||
 | 
					        "question": {
 | 
				
			||||||
 | 
					          "en": "Is this clock indoors?",
 | 
				
			||||||
 | 
					          "nl": "Is deze klok binnen?"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "mappings": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "then": {
 | 
				
			||||||
 | 
					              "en": "This clock is indoors",
 | 
				
			||||||
 | 
					              "nl": "Deze klok is binnen"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "if": "indoor=no",
 | 
				
			||||||
 | 
					            "then": {
 | 
				
			||||||
 | 
					              "en": "This clock is outdoors",
 | 
				
			||||||
 | 
					              "nl": "Deze klok is buiten"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "id": "visibility",
 | 
					      "id": "visibility",
 | 
				
			||||||
      "question": {
 | 
					      "question": {
 | 
				
			||||||
| 
						 | 
					@ -293,7 +341,8 @@
 | 
				
			||||||
            "cs": "Tyto hodiny jsou viditelné ze vzdálenosti větší než 20 metrů (např. kostelní nebo nádražní hodiny)"
 | 
					            "cs": "Tyto hodiny jsou viditelné ze vzdálenosti větší než 20 metrů (např. kostelní nebo nádražní hodiny)"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ],
 | 
				
			||||||
 | 
					      "condition": "indoor!=yes"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "id": "date",
 | 
					      "id": "date",
 | 
				
			||||||
| 
						 | 
					@ -572,4 +621,4 @@
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "deletion": true,
 | 
					  "deletion": true,
 | 
				
			||||||
  "allowMove": true
 | 
					  "allowMove": true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/crossing_unmarked.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.9 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/crossing_unmarked.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: StenSoft
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,8 @@
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "location": [
 | 
					      "location": [
 | 
				
			||||||
        "point"
 | 
					        "point"
 | 
				
			||||||
      ]
 | 
					      ],
 | 
				
			||||||
 | 
					      "anchor": "center"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "lineRendering": [
 | 
					  "lineRendering": [
 | 
				
			||||||
| 
						 | 
					@ -222,49 +223,181 @@
 | 
				
			||||||
            "fr": "Passage piéton sans marquages",
 | 
					            "fr": "Passage piéton sans marquages",
 | 
				
			||||||
            "ca": "Creuament sense senyalitzar",
 | 
					            "ca": "Creuament sense senyalitzar",
 | 
				
			||||||
            "cs": "Přechod bez označení přechodu"
 | 
					            "cs": "Přechod bez označení přechodu"
 | 
				
			||||||
          }
 | 
					          },
 | 
				
			||||||
 | 
					          "hideInAnswer": true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "id": "crossing-is-zebra",
 | 
					      "id": "markings",
 | 
				
			||||||
      "question": {
 | 
					      "question": {
 | 
				
			||||||
        "en": "Is this is a zebra crossing?",
 | 
					        "en": "What kind of markings does this crossing have?",
 | 
				
			||||||
        "nl": "Is dit een zebrapad?",
 | 
					        "nl": "Wat voor markering heeft deze oversteekplaats?"
 | 
				
			||||||
        "de": "Ist das ein Zebrastreifen?",
 | 
					 | 
				
			||||||
        "es": "¿Esto es un paso de cebra?",
 | 
					 | 
				
			||||||
        "fr": "Est-ce un passage piéton ?",
 | 
					 | 
				
			||||||
        "ca": "Açò és un pas de vianants?",
 | 
					 | 
				
			||||||
        "pl": "Czy to jest przejście dla pieszych typu \"zebra\"?",
 | 
					 | 
				
			||||||
        "cs": "Jedná se o zebra přechod?"
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "condition": "crossing=uncontrolled",
 | 
					 | 
				
			||||||
      "mappings": [
 | 
					      "mappings": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "if": "crossing_ref=zebra",
 | 
					          "if": "crossing:markings=no",
 | 
				
			||||||
          "then": {
 | 
					          "then": {
 | 
				
			||||||
            "en": "This is a zebra crossing",
 | 
					            "en": "This crossing has no markings",
 | 
				
			||||||
            "nl": "Dit is een zebrapad",
 | 
					            "nl": "Deze oversteekplaats heeft geen markeringen"
 | 
				
			||||||
            "de": "Dies ist ein Zebrastreifen",
 | 
					          },
 | 
				
			||||||
            "es": "Esto es un paso de cebra",
 | 
					          "icon": {
 | 
				
			||||||
            "fr": "C'est un passage piéton",
 | 
					            "class": "large",
 | 
				
			||||||
            "ca": "Açò és un pas de vianants",
 | 
					            "path": "./assets/layers/crossings/crossing_unmarked.png"
 | 
				
			||||||
            "cs": "Toto je zebra přechod"
 | 
					 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "if": "crossing_ref=",
 | 
					          "if": "crossing:markings=zebra",
 | 
				
			||||||
          "then": {
 | 
					          "then": {
 | 
				
			||||||
            "en": "This is not a zebra crossing",
 | 
					            "en": "This crossing has zebra markings",
 | 
				
			||||||
            "nl": "Dit is geen zebrapad",
 | 
					            "nl": "Deze oversteekplaats heeft een zebramarkering"
 | 
				
			||||||
            "de": "Dies ist kein Zebrastreifen",
 | 
					          },
 | 
				
			||||||
            "es": "Esto no es un paso de cebra",
 | 
					          "icon": {
 | 
				
			||||||
            "fr": "Ce n'est pas un passage piéton",
 | 
					            "class": "large",
 | 
				
			||||||
            "ca": "Açò no és un pas de vianants",
 | 
					            "path": "./assets/layers/crossings/markings_zebra.png"
 | 
				
			||||||
            "cs": "Tohle není zebra přechod"
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "hideInAnswer": true,
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has markings of an unknown type",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft markeringen van een onbekend type"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "if": "crossing:markings=yes"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=lines",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossings has lines on either side of the crossing",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_lines.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=ladder",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has lines on either side of the crossing, along with bars connecting them",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_ladder.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=dashes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has dashed lines on either sides of the crossing",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft onderbroken lijnen aan beide kanten van de oversteekplaats"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_dashes.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=dots",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has dotted lines on either sides of the crossing",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft stippellijnen aan beide kanten van de oversteekplaats"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_dots.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=surface",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing is marked by using a different coloured surface",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats is gemarkeerd door een anders gekleurd wegdek"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_surface.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=ladder:skewed",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has lines on either side of the crossing, along with angled bars connecting them",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met schuine strepen die ze verbinden"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_ladder_skewed.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=zebra:paired",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has zebra markings with an interruption in every bar",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft zebramarkeringen met een onderbreking van elke streep"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=zebra:bicolour",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has zebra markings in alternating colours",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft een zebramarkering in afwisselende kleuren"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_zebra_bicolour.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=zebra:double",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has double zebra markings",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft een dubbele zebramarkering"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_zebra_double.png"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=pictograms",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has pictograms on the road",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft pictogrammen op de weg"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=ladder:paired",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has lines on either side of the crossing, along with bars connecting them, with an interruption in every bar",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden, met een onderbreking van elke streep"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "crossing:markings=lines:paired",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This crossing has double lines on either side of the crossing",
 | 
				
			||||||
 | 
					            "nl": "Deze oversteekplaats heeft dubbele lijnen aan beide kanten van de oversteekplaats"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "icon": {
 | 
				
			||||||
 | 
					            "class": "large",
 | 
				
			||||||
 | 
					            "path": "./assets/layers/crossings/markings_lines_paired.png"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ],
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "en": "This crossing has {crossing:markings} markings",
 | 
				
			||||||
 | 
					        "nl": "Deze oversteekplaats heeft {crossing:markings} markeringen"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "freeform": {
 | 
				
			||||||
 | 
					        "key": "crossing:markings",
 | 
				
			||||||
 | 
					        "type": "string",
 | 
				
			||||||
 | 
					        "addExtraTags": [
 | 
				
			||||||
 | 
					          "fixme=Free-form value used in MapComplete for crossing:markings"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "multiAnswer": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "id": "crossing-bicycle-allowed",
 | 
					      "id": "crossing-bicycle-allowed",
 | 
				
			||||||
| 
						 | 
					@ -732,4 +865,4 @@
 | 
				
			||||||
    "enableImproveAccuracy": true,
 | 
					    "enableImproveAccuracy": true,
 | 
				
			||||||
    "enableRelocation": false
 | 
					    "enableRelocation": false
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -39,6 +39,116 @@
 | 
				
			||||||
      "https://wiki.openstreetmap.org/wiki/File:Vibrating_button_illustration.jpg"
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Vibrating_button_illustration.jpg"
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "crossing_unmarked.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "StenSoft"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Crossing_without_markings.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_dashes.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_dashes.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_dots.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_dots.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_ladder.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_ladder.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_ladder_skewed.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_adder_skewed.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_lines.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_lines.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_lines_paired.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_lines_paired.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_surface.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Surface_crossing_markings.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_zebra.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_zebra.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_zebra_bicolour.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Markings_zebra_bicolour.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "markings_zebra_double.png",
 | 
				
			||||||
 | 
					    "license": "CC0 1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Popball"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": [
 | 
				
			||||||
 | 
					      "https://wiki.openstreetmap.org/wiki/File:Crossing_markings_zebra_double.png"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "path": "pedestrian_crossing.svg",
 | 
					    "path": "pedestrian_crossing.svg",
 | 
				
			||||||
    "license": "CC-BY-SA-4.0",
 | 
					    "license": "CC-BY-SA-4.0",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_dashes.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.1 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_dashes.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_dots.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.7 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_dots.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_ladder.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_ladder.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_ladder_skewed.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.7 KiB  | 
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_lines.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.3 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_lines.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_lines_paired.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.6 KiB  | 
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_surface.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_surface.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_zebra.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.1 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/crossings/markings_zebra.png.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_zebra_bicolour.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.2 KiB  | 
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								assets/layers/crossings/markings_zebra_double.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.3 KiB  | 
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Popball
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0 1.0
 | 
				
			||||||
							
								
								
									
										148
									
								
								assets/layers/cyclist_waiting_aid/cyclist_waiting_aid.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,148 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "credits": "Robin van der Linde",
 | 
				
			||||||
 | 
					  "pointRendering": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "location": [
 | 
				
			||||||
 | 
					        "point",
 | 
				
			||||||
 | 
					        "centroid"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "marker": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "icon": "pin",
 | 
				
			||||||
 | 
					          "color": "#538EE8"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "icon": "./assets/layers/cyclist_waiting_aid/waiting_aid.svg"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "anchor": "bottom"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "tagRenderings": [
 | 
				
			||||||
 | 
					    "images",
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "What kind of components does this waiting aid have?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "id": "type",
 | 
				
			||||||
 | 
					      "multiAnswer": true,
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "footrest=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There is a board or peg to rest your foot on here"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "ifnot": "footrest="
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "handrest=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There is a rail or a handle to hold on to here"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "ifnot": "handrest="
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "On what side of the road is this located?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "id": "side",
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "side=left",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This waiting aid is located on the left side"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "side=right",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This waiting aid is located on the right side"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "side=both",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There are waiting aids on both sides of the road"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "condition": "direction~*",
 | 
				
			||||||
 | 
					      "id": "direction",
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "direction=forward",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This waiting aid can be used when going forward on this way"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "direction=backward",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This waiting aid can be used when going backward on this way"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "en": "This waiting aid can be used when going in {direction} direction"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "lineRendering": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "width": 1,
 | 
				
			||||||
 | 
					      "color": "blue"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "credits:uid": 5093765,
 | 
				
			||||||
 | 
					  "id": "cyclist_waiting_aid",
 | 
				
			||||||
 | 
					  "description": {
 | 
				
			||||||
 | 
					    "en": "Various pieces of infrastructure that aid cyclists while they wait at a traffic light."
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "source": {
 | 
				
			||||||
 | 
					    "osmTags": "highway=cyclist_waiting_aid"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "name": {
 | 
				
			||||||
 | 
					    "en": "Cyclist Waiting Aids"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "title": {
 | 
				
			||||||
 | 
					    "render": {
 | 
				
			||||||
 | 
					      "en": "Cyclist Waiting Aid"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "deletion": {
 | 
				
			||||||
 | 
					    "softDeletionTags": {
 | 
				
			||||||
 | 
					      "and": [
 | 
				
			||||||
 | 
					        "highway=",
 | 
				
			||||||
 | 
					        "side=",
 | 
				
			||||||
 | 
					        "footrest=",
 | 
				
			||||||
 | 
					        "handrest=",
 | 
				
			||||||
 | 
					        "material=",
 | 
				
			||||||
 | 
					        "height=",
 | 
				
			||||||
 | 
					        "support=",
 | 
				
			||||||
 | 
					        "count=",
 | 
				
			||||||
 | 
					        "capacity="
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "allowMove": false,
 | 
				
			||||||
 | 
					  "presets": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "title": {
 | 
				
			||||||
 | 
					        "en": "a cyclist waiting aid"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "highway=cyclist_waiting_aid"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "description": {
 | 
				
			||||||
 | 
					        "en": "A footrest, handrail or other aid, to improve comfort while waiting at traffic lights"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "snapToLayer": [
 | 
				
			||||||
 | 
					        "cycleways_and_roads"
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								assets/layers/cyclist_waiting_aid/license_info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "waiting_aid.svg",
 | 
				
			||||||
 | 
					    "license": "CC0-1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Robin van der Linde"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": []
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
							
								
								
									
										21
									
								
								assets/layers/cyclist_waiting_aid/waiting_aid.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					<svg width="314" height="374" viewBox="0 0 314 374" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					<g clip-path="url(#clip0_1_2)">
 | 
				
			||||||
 | 
					<path d="M157 0C70.2969 0 0.0117188 70.1211 0.0117188 156.621C0.0117188 231.017 52.0255 293.253 121.742 309.223L147.246 364.684C152.957 377.105 170.652 377.105 176.367 364.684L203.199 306.334C267.352 286.654 313.988 227.075 313.988 156.621C313.988 70.1211 243.703 0 157 0Z" fill="#538EE8"/>
 | 
				
			||||||
 | 
					<line x1="48.5355" y1="202.464" x2="90.9619" y2="244.891" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<line x1="90.9619" y1="167.536" x2="48.5355" y2="209.962" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<line x1="200.536" y1="216.464" x2="242.962" y2="258.891" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<line x1="242.962" y1="181.536" x2="200.536" y2="223.962" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M59 197L213 210" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M84 74L246 85" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M89 172V72" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M241 185V85" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M66 190L220 203" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M73 184L227 197" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					<path d="M81 177L235 190" stroke="white" stroke-width="10"/>
 | 
				
			||||||
 | 
					</g>
 | 
				
			||||||
 | 
					<defs>
 | 
				
			||||||
 | 
					<clipPath id="clip0_1_2">
 | 
				
			||||||
 | 
					<rect width="314" height="374" fill="white"/>
 | 
				
			||||||
 | 
					</clipPath>
 | 
				
			||||||
 | 
					</defs>
 | 
				
			||||||
 | 
					</svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Robin van der Linde
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0-1.0
 | 
				
			||||||
| 
						 | 
					@ -69,4 +69,4 @@
 | 
				
			||||||
    "images"
 | 
					    "images"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "allowMove": false
 | 
					  "allowMove": false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2972,7 +2972,30 @@
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "indoor",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Is this object located indoors?",
 | 
				
			||||||
 | 
					        "nl": "Bevindt dit object zich binnen?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "indoor=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This object is located indoors",
 | 
				
			||||||
 | 
					            "nl": "Dit object bevindt zich binnen"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "indoor=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This object is located outdoors",
 | 
				
			||||||
 | 
					            "nl": "Dit object bevindt zich buiten"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "allowMove": false
 | 
					  "allowMove": false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										146
									
								
								assets/layers/tactile_map/tactile_map.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,146 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": "tactile_map",
 | 
				
			||||||
 | 
					  "name": {
 | 
				
			||||||
 | 
					    "en": "Tactile Maps"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "description": {
 | 
				
			||||||
 | 
					    "en": "Layer showing tactile maps, which can be used by visually impaired people to navigate the city."
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "source": {
 | 
				
			||||||
 | 
					    "osmTags": "information=tactile_map"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "title": {
 | 
				
			||||||
 | 
					    "en": "Tactile Map"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "presets": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "tourism=information",
 | 
				
			||||||
 | 
					        "information=tactile_map"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "title": {
 | 
				
			||||||
 | 
					        "en": "a tactile map"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "description": {
 | 
				
			||||||
 | 
					        "en": "A tactile map that can be read using touch. Unlike a tactile model, this is relatively flat and does not feature three-dimensional buildings and such."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "deletion": true,
 | 
				
			||||||
 | 
					  "allowMove": true,
 | 
				
			||||||
 | 
					  "minzoom": 10,
 | 
				
			||||||
 | 
					  "pointRendering": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "marker": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "icon": "circle",
 | 
				
			||||||
 | 
					          "color": "white"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "icon": "./assets/themes/maps/logo.svg"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "location": [
 | 
				
			||||||
 | 
					        "point",
 | 
				
			||||||
 | 
					        "centroid"
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "tagRenderings": [
 | 
				
			||||||
 | 
					    "images",
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "description",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "What does this tactile map show?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "freeform": {
 | 
				
			||||||
 | 
					        "key": "blind:description:en",
 | 
				
			||||||
 | 
					        "placeholder": {
 | 
				
			||||||
 | 
					          "en": "e.g. Tactile map of the city center"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "en": "Description: {blind:description:en}."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "braille",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Is there braille text on this tactile map?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "braille=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This tactile map has braille text."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "braille=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This tactile map does not have braille text."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "braille_languages",
 | 
				
			||||||
 | 
					      "condition": "braille=yes",
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "special": {
 | 
				
			||||||
 | 
					          "type": "language_chooser",
 | 
				
			||||||
 | 
					          "key": "tactile_writing:braille",
 | 
				
			||||||
 | 
					          "question": {
 | 
				
			||||||
 | 
					            "en": "In which languages is the braille text on this tactile map?"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_list_item": {
 | 
				
			||||||
 | 
					            "en": "This map has braille text in {language}"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_single_language": {
 | 
				
			||||||
 | 
					            "en": "This map has braille text in {language}"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "embossed_letters",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Are there embossed letters on this tactile map?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "embossed_letters=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This tactile map has embossed letters."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "embossed_letters=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "This tactile map does not have embossed letters."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "embossed_letters_languages",
 | 
				
			||||||
 | 
					      "condition": "embossed_letters=yes",
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "special": {
 | 
				
			||||||
 | 
					          "type": "language_chooser",
 | 
				
			||||||
 | 
					          "key": "tactile_writing:embossed",
 | 
				
			||||||
 | 
					          "question": {
 | 
				
			||||||
 | 
					            "en": "In which languages are the embossed letters on this tactile map?"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_list_item": {
 | 
				
			||||||
 | 
					            "en": "This map has embossed letters in {language}"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_single_language": {
 | 
				
			||||||
 | 
					            "en": "This map has embossed letters in {language}"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "website"
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								assets/layers/tactile_model/license_info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "path": "tactile_model.svg",
 | 
				
			||||||
 | 
					    "license": "CC0-1.0",
 | 
				
			||||||
 | 
					    "authors": [
 | 
				
			||||||
 | 
					      "Robin van der Linde"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "sources": []
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
							
								
								
									
										157
									
								
								assets/layers/tactile_model/tactile_model.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,157 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": "tactile_model",
 | 
				
			||||||
 | 
					  "name": {
 | 
				
			||||||
 | 
					    "en": "Tactile Models"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "description": {
 | 
				
			||||||
 | 
					    "en": "Layer showing tactile models, three-dimensional models of the surrounding area."
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "source": {
 | 
				
			||||||
 | 
					    "osmTags": "information=tactile_model"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "title": {
 | 
				
			||||||
 | 
					    "en": "Tactile Model"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "presets": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "tourism=information",
 | 
				
			||||||
 | 
					        "information=tactile_model"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "title": {
 | 
				
			||||||
 | 
					        "en": "a tactile model"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "description": {
 | 
				
			||||||
 | 
					        "en": "A tactile model is a three-dimensional model of an area, allowing people to explore/see an area by touch."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "deletion": true,
 | 
				
			||||||
 | 
					  "allowMove": true,
 | 
				
			||||||
 | 
					  "minzoom": 10,
 | 
				
			||||||
 | 
					  "pointRendering": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "marker": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "icon": "./assets/layers/tactile_model/tactile_model.svg"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "location": [
 | 
				
			||||||
 | 
					        "point",
 | 
				
			||||||
 | 
					        "centroid"
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "tagRenderings": [
 | 
				
			||||||
 | 
					    "images",
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "description",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "What does this tactile model show?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "freeform": {
 | 
				
			||||||
 | 
					        "key": "blind:description:en",
 | 
				
			||||||
 | 
					        "placeholder": {
 | 
				
			||||||
 | 
					          "en": "e.g. Tactile model of the city center"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "en": "Description: {blind:description:en}."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "braille",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Is there a braille description?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "braille=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There is a braille description."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "braille=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There is no braille description."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "braille_languages",
 | 
				
			||||||
 | 
					      "condition": "braille=yes",
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "special": {
 | 
				
			||||||
 | 
					          "type": "language_chooser",
 | 
				
			||||||
 | 
					          "key": "tactile_writing:braille",
 | 
				
			||||||
 | 
					          "question": {
 | 
				
			||||||
 | 
					            "en": "In which languages is there a braille description?"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_list_item": {
 | 
				
			||||||
 | 
					            "en": "This model has a braille description in {language()}"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_single_language": {
 | 
				
			||||||
 | 
					            "en": "This model has a braille description in {language}"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "embossed_letters",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "Are there embossed letters describing the model?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "mappings": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "embossed_letters=yes",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There are embossed letters describing the model."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "if": "embossed_letters=no",
 | 
				
			||||||
 | 
					          "then": {
 | 
				
			||||||
 | 
					            "en": "There are no embossed letters describing the model."
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "embossed_letters_languages",
 | 
				
			||||||
 | 
					      "condition": "embossed_letters=yes",
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "special": {
 | 
				
			||||||
 | 
					          "type": "language_chooser",
 | 
				
			||||||
 | 
					          "key": "tactile_writing:embossed_letters",
 | 
				
			||||||
 | 
					          "question": {
 | 
				
			||||||
 | 
					            "en": "In which languages are there embossed letters?"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_list_item": {
 | 
				
			||||||
 | 
					            "en": "This model has embossed letters in {language()}"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "render_single_language": {
 | 
				
			||||||
 | 
					            "en": "This model has embossed letters in {language}"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "id": "scale",
 | 
				
			||||||
 | 
					      "question": {
 | 
				
			||||||
 | 
					        "en": "What scale is the model?"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "freeform": {
 | 
				
			||||||
 | 
					        "key": "scale",
 | 
				
			||||||
 | 
					        "placeholder": {
 | 
				
			||||||
 | 
					          "en": "e.g. 1:1000"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "render": {
 | 
				
			||||||
 | 
					        "en": "The scale of this model is {scale}."
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "website"
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								assets/layers/tactile_model/tactile_model.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					<circle cx="250" cy="250" r="250" fill="#555555"/>
 | 
				
			||||||
 | 
					<ellipse cx="250" cy="288" rx="200" ry="150" fill="#977A59"/>
 | 
				
			||||||
 | 
					<rect x="201.286" y="259.14" width="97.4286" height="92.8598" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="226" y="167" width="48" height="68" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="249" y="92" width="2" height="28" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="243" y="103" width="14" height="2" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M202.165 257.818L250 209.423L297.835 257.818H202.165Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M225.654 166.818L250 119.197L274.346 166.818H225.654Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="96" y="301" width="58" height="68" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M96.7832 299.5L125 264.591L153.217 299.5H96.7832Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="161" y="291" width="58" height="68" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M161.783 289.5L190 254.591L218.217 289.5H161.783Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="131" y="326" width="58" height="68" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M131.783 324.5L160 289.591L188.217 324.5H131.783Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="178" y="341" width="58" height="68" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M178.783 339.5L207 304.591L235.217 339.5H178.783Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="-1" y="1" width="58" height="68" transform="matrix(-1 0 0 1 409 300)" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M409.217 299.5L381 264.591L352.783 299.5H409.217Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="-1" y="1" width="58" height="68" transform="matrix(-1 0 0 1 344 290)" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M344.217 289.5L316 254.591L287.783 289.5H344.217Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="-1" y="1" width="58" height="68" transform="matrix(-1 0 0 1 374 325)" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M374.217 324.5L346 289.591L317.783 324.5H374.217Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<rect x="-1" y="1" width="58" height="68" transform="matrix(-1 0 0 1 327 340)" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					<path d="M327.217 339.5L299 304.591L270.783 339.5H327.217Z" fill="#896A46" stroke="#6F410D" stroke-width="2"/>
 | 
				
			||||||
 | 
					</svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 2.6 KiB  | 
							
								
								
									
										2
									
								
								assets/layers/tactile_model/tactile_model.svg.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					SPDX-FileCopyrightText: Robin van der Linde
 | 
				
			||||||
 | 
					SPDX-License-Identifier: CC0
 | 
				
			||||||
| 
						 | 
					@ -117,6 +117,8 @@
 | 
				
			||||||
        "minzoom": 17
 | 
					        "minzoom": 17
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "stairs"
 | 
					    "stairs",
 | 
				
			||||||
 | 
					    "tactile_map",
 | 
				
			||||||
 | 
					    "tactile_model"
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -56,13 +56,18 @@
 | 
				
			||||||
  "startLon": 3.75,
 | 
					  "startLon": 3.75,
 | 
				
			||||||
  "hideFromOverview": false,
 | 
					  "hideFromOverview": false,
 | 
				
			||||||
  "layers": [
 | 
					  "layers": [
 | 
				
			||||||
    "cycleways_and_roads",
 | 
					    {
 | 
				
			||||||
    "barrier",
 | 
					      "builtin": [
 | 
				
			||||||
    "crossings",
 | 
					        "cycleways_and_roads",
 | 
				
			||||||
    "bicycle_counter"
 | 
					        "barrier",
 | 
				
			||||||
 | 
					        "crossings",
 | 
				
			||||||
 | 
					        "bicycle_counter",
 | 
				
			||||||
 | 
					        "cyclist_waiting_aid"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "override": {
 | 
				
			||||||
 | 
					        "minzoom": 16
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "overrideAll": {
 | 
					 | 
				
			||||||
    "minzoom": 16
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "enableDownload": true
 | 
					  "enableDownload": true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -47,12 +47,18 @@
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "rainbow_crossings",
 | 
					    {
 | 
				
			||||||
 | 
					      "builtin": "rainbow_crossings",
 | 
				
			||||||
 | 
					      "override": {
 | 
				
			||||||
 | 
					        "isCounted": false
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "builtin": "cycleways_and_roads",
 | 
					      "builtin": "cycleways_and_roads",
 | 
				
			||||||
      "override": {
 | 
					      "override": {
 | 
				
			||||||
        "minzoom": 18,
 | 
					        "minzoom": 18,
 | 
				
			||||||
        "name": null
 | 
					        "name": null,
 | 
				
			||||||
 | 
					        "isCounted": false
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2398,10 +2398,10 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Aquest rellotge està muntat en una paret"
 | 
					                        "then": "Aquest rellotge està muntat en una paret"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Aquest rellotge està muntat en una tanca publicitària"
 | 
					                        "then": "Aquest rellotge està muntat en una tanca publicitària"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Aquest rellotge està al sòl"
 | 
					                        "then": "Aquest rellotge està al sòl"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					@ -2512,17 +2512,6 @@
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "question": "Aquest creuament té una illa al mig?"
 | 
					                "question": "Aquest creuament té una illa al mig?"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "crossing-is-zebra": {
 | 
					 | 
				
			||||||
                "mappings": {
 | 
					 | 
				
			||||||
                    "0": {
 | 
					 | 
				
			||||||
                        "then": "Açò és un pas de vianants"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "1": {
 | 
					 | 
				
			||||||
                        "then": "Açò no és un pas de vianants"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "question": "Açò és un pas de vianants?"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "crossing-minimap": {
 | 
					            "crossing-minimap": {
 | 
				
			||||||
                "mappings": {
 | 
					                "mappings": {
 | 
				
			||||||
                    "0": {
 | 
					                    "0": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2752,10 +2752,10 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Tyto hodiny jsou namontovány na stěně"
 | 
					                        "then": "Tyto hodiny jsou namontovány na stěně"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Tyto hodiny jsou součástí billboardu"
 | 
					                        "then": "Tyto hodiny jsou součástí billboardu"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Tyto hodiny jsou na zemi"
 | 
					                        "then": "Tyto hodiny jsou na zemi"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					@ -10198,4 +10198,4 @@
 | 
				
			||||||
            "render": "větrná turbína"
 | 
					            "render": "větrná turbína"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3296,10 +3296,10 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Diese Uhr ist an einer Wand montiert"
 | 
					                        "then": "Diese Uhr ist an einer Wand montiert"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Diese Uhr ist Teil einer Werbetafel"
 | 
					                        "then": "Diese Uhr ist Teil einer Werbetafel"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Diese Uhr befindet sich auf dem Boden"
 | 
					                        "then": "Diese Uhr befindet sich auf dem Boden"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					@ -12502,4 +12502,4 @@
 | 
				
			||||||
            "render": "Windrad"
 | 
					            "render": "Windrad"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3294,12 +3294,15 @@
 | 
				
			||||||
                        "then": "This clock is mounted on a pole"
 | 
					                        "then": "This clock is mounted on a pole"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "This clock is mounted on a wall"
 | 
					                        "then": "This clock is mounted on a wall, usually through a support perpendicular to the wall"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "2": {
 | 
				
			||||||
                        "then": "This clock is part of a billboard"
 | 
					                        "then": "This clock is mounted directly on a wall"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "3": {
 | 
				
			||||||
 | 
					                        "then": "This clock is part of a billboard"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "This clock is on the ground"
 | 
					                        "then": "This clock is on the ground"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2272,10 +2272,10 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Cette horloge est fixée sur un mur"
 | 
					                        "then": "Cette horloge est fixée sur un mur"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Cette horloge fait partie d'un panneau publicitaire"
 | 
					                        "then": "Cette horloge fait partie d'un panneau publicitaire"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Cette horloge est posée au sol"
 | 
					                        "then": "Cette horloge est posée au sol"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					@ -7567,4 +7567,4 @@
 | 
				
			||||||
            "render": "éolienne"
 | 
					            "render": "éolienne"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2748,12 +2748,15 @@
 | 
				
			||||||
                        "then": "Deze klok is bevestigd aan een paal"
 | 
					                        "then": "Deze klok is bevestigd aan een paal"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Deze klok is bevestigd aan een muur"
 | 
					                        "then": "Deze klok is bevestigd aan een muur, meestal met een steun loodrecht op de muur"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "2": {
 | 
				
			||||||
                        "then": "Deze klok is onderdeel van een reclamebord"
 | 
					                        "then": "Deze klok is rechtstreeks aan een muur bevestigd"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "3": {
 | 
				
			||||||
 | 
					                        "then": "Deze klok is onderdeel van een reclamebord"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Deze klok staat op de grond"
 | 
					                        "then": "Deze klok staat op de grond"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1356,10 +1356,10 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Ten zegar jest zamontowany na ścianie"
 | 
					                        "then": "Ten zegar jest zamontowany na ścianie"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Ten zegar jest częścią bilbordu"
 | 
					                        "then": "Ten zegar jest częścią bilbordu"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "3": {
 | 
					                    "4": {
 | 
				
			||||||
                        "then": "Ten zegar jest na ziemi"
 | 
					                        "then": "Ten zegar jest na ziemi"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -479,7 +479,7 @@
 | 
				
			||||||
        "tagRenderings": {
 | 
					        "tagRenderings": {
 | 
				
			||||||
            "support": {
 | 
					            "support": {
 | 
				
			||||||
                "mappings": {
 | 
					                "mappings": {
 | 
				
			||||||
                    "2": {
 | 
					                    "3": {
 | 
				
			||||||
                        "then": "Цей годинник є частиною білборду"
 | 
					                        "then": "Цей годинник є частиною білборду"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -1338,4 +1338,4 @@
 | 
				
			||||||
            "render": "Утилізація відходів"
 | 
					            "render": "Утилізація відходів"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										91
									
								
								scripts/moveImage.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					import { existsSync, renameSync, readFileSync, writeFileSync } from "fs"
 | 
				
			||||||
 | 
					import SmallLicense from "../src/Models/smallLicense"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Script to move/rename image files
 | 
				
			||||||
 | 
					 * Useful after downloading images from wikimedia commons
 | 
				
			||||||
 | 
					 * Apart from moving the image files, this will also update the license file
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This will NOT update any images in the theme
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function main(args: string[]) {
 | 
				
			||||||
 | 
					    // Check if the correct number of arguments are passed
 | 
				
			||||||
 | 
					    if (args.length != 2) {
 | 
				
			||||||
 | 
					        console.log("Usage: moveImage.ts oldPath newPath")
 | 
				
			||||||
 | 
					        console.log("You passed in the arguments: " + args.join(","))
 | 
				
			||||||
 | 
					        console.log("Example: npx vite-node scripts/moveImage.ts images/old.jpg images/new.jpg")
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const [oldPath, newPath] = args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check if the oldPath exists
 | 
				
			||||||
 | 
					    if (!existsSync(oldPath)) {
 | 
				
			||||||
 | 
					        console.log("The oldPath does not exist: " + oldPath)
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Move file
 | 
				
			||||||
 | 
					    renameSync(oldPath, newPath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // If it exists also move the .license file
 | 
				
			||||||
 | 
					    const oldLicensePath = oldPath + ".license"
 | 
				
			||||||
 | 
					    if (existsSync(oldLicensePath)) {
 | 
				
			||||||
 | 
					        const newLicensePath = newPath + ".license"
 | 
				
			||||||
 | 
					        renameSync(oldLicensePath, newLicensePath)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    console.log("Moved file from " + oldPath + " to " + newPath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Open license_info.json in the same directory as the old file
 | 
				
			||||||
 | 
					    const licensePath = oldPath.replace(/\/[^/]+$/, "/license_info.json")
 | 
				
			||||||
 | 
					    if (!existsSync(licensePath)) {
 | 
				
			||||||
 | 
					        console.log(
 | 
				
			||||||
 | 
					            "The license file does not exist: " +
 | 
				
			||||||
 | 
					                licensePath +
 | 
				
			||||||
 | 
					                ". Skipping writing to license file."
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Read license file
 | 
				
			||||||
 | 
					    const licenseFile = readFileSync(licensePath, "utf8")
 | 
				
			||||||
 | 
					    const licenseInfo = JSON.parse(licenseFile) as SmallLicense[]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Find correct license item
 | 
				
			||||||
 | 
					    const licenseItem = licenseInfo.find((item) => item.path === oldPath.replace(/.*\//, ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Filter out license item
 | 
				
			||||||
 | 
					    const newLicenseInfo = licenseInfo.filter((item) => item.path !== oldPath.replace(/.*\//, ""))
 | 
				
			||||||
 | 
					    const newLicenseFile = JSON.stringify(newLicenseInfo, null, 2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Write new license file
 | 
				
			||||||
 | 
					    writeFileSync(licensePath, newLicenseFile)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Look for a license_info.json file in the new path
 | 
				
			||||||
 | 
					    const newLicensePath = newPath.replace(/\/[^/]+$/, "/license_info.json")
 | 
				
			||||||
 | 
					    if (!existsSync(newLicensePath) && licenseItem) {
 | 
				
			||||||
 | 
					        console.log("License file doesn't exist yet, creating new one: " + newLicensePath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create new license item
 | 
				
			||||||
 | 
					        const newLicenseItem = licenseItem
 | 
				
			||||||
 | 
					        newLicenseItem.path = newPath.replace(/.*\//, "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create file
 | 
				
			||||||
 | 
					        writeFileSync(newLicensePath, JSON.stringify([newLicenseItem], null, 2))
 | 
				
			||||||
 | 
					    } else if (licenseItem) {
 | 
				
			||||||
 | 
					        console.log("Appending to existing license file: " + newLicensePath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Create new license item
 | 
				
			||||||
 | 
					        const newLicenseItem = licenseItem
 | 
				
			||||||
 | 
					        newLicenseItem.path = newPath.replace(/.*\//, "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Append to existing file
 | 
				
			||||||
 | 
					        const newLicenseFile = readFileSync(newLicensePath, "utf8")
 | 
				
			||||||
 | 
					        const newLicenseInfo = JSON.parse(newLicenseFile) as SmallLicense[]
 | 
				
			||||||
 | 
					        newLicenseInfo.push(newLicenseItem)
 | 
				
			||||||
 | 
					        writeFileSync(newLicensePath, JSON.stringify(newLicenseInfo, null, 2))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main(process.argv.slice(2))
 | 
				
			||||||