Merge branch 'develop' of github.com:pietervdvn/MapComplete into develop
|  | @ -34,8 +34,7 @@ | |||
|       "or": [ | ||||
|         "service:bicycle:cleaning=yes", | ||||
|         "service:bicycle:cleaning=diy", | ||||
|         "amenity=bicycle_wash", | ||||
|         "amenity=bike_wash" | ||||
|         "amenity=bicycle_wash" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|  | @ -83,7 +82,6 @@ | |||
|           "if": { | ||||
|             "and": [ | ||||
|               "service:bicycle:cleaning~*", | ||||
|               "amenity!=bike_wash", | ||||
|               "amenity!=bicycle_wash" | ||||
|             ] | ||||
|           }, | ||||
|  | @ -106,7 +104,6 @@ | |||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [], | ||||
|   "presets": [ | ||||
|     { | ||||
|       "title": { | ||||
|  | @ -158,7 +155,6 @@ | |||
|       }, | ||||
|       "condition": { | ||||
|         "and": [ | ||||
|           "amenity!=bike_wash", | ||||
|           "amenity!=bicycle_wash", | ||||
|           "service:bicycle:cleaning!=no", | ||||
|           "service:bicycle:cleaning!=" | ||||
|  | @ -169,7 +165,7 @@ | |||
|         "addExtraTags": [ | ||||
|           "service:bicycle:cleaning:fee=yes" | ||||
|         ], | ||||
|         "inline": true | ||||
|         "inline": false | ||||
|       }, | ||||
|       "mappings": [ | ||||
|         { | ||||
|  | @ -241,7 +237,6 @@ | |||
|       }, | ||||
|       "condition": { | ||||
|         "or": [ | ||||
|           "amenity=bike_wash", | ||||
|           "amenity=bicycle_wash" | ||||
|         ] | ||||
|       }, | ||||
|  | @ -285,6 +280,54 @@ | |||
|         } | ||||
|       ], | ||||
|       "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": { | ||||
|  |  | |||
|  | @ -97,8 +97,8 @@ | |||
|         "support=wall_mounted" | ||||
|       ], | ||||
|       "title": { | ||||
|         "en": "a wall-mounted clock", | ||||
|         "nl": "een klok aan een muur", | ||||
|         "en": "a wall-mounted clock, mounted using a support perpendicular to the wall", | ||||
|         "nl": "een klok aan een muur, bevestigd met een steun loodrecht op de muur", | ||||
|         "de": "eine an der Wand montierte Uhr", | ||||
|         "ca": "un rellotge muntat en un paret", | ||||
|         "fr": "une horloge fixée au mur", | ||||
|  | @ -117,6 +117,23 @@ | |||
|       "snapToLayer": [ | ||||
|         "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": [ | ||||
|  | @ -148,8 +165,8 @@ | |||
|         { | ||||
|           "if": "support=wall_mounted", | ||||
|           "then": { | ||||
|             "en": "This clock is mounted on a wall", | ||||
|             "nl": "Deze klok is bevestigd aan een muur", | ||||
|             "en": "This clock is mounted on a wall, usually through a support perpendicular to the wall", | ||||
|             "nl": "Deze klok is bevestigd aan een muur, meestal met een steun loodrecht op de muur", | ||||
|             "de": "Diese Uhr ist an einer Wand montiert", | ||||
|             "ca": "Aquest rellotge està muntat en una paret", | ||||
|             "fr": "Cette horloge est fixée sur un mur", | ||||
|  | @ -157,6 +174,13 @@ | |||
|             "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", | ||||
|           "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", | ||||
|       "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)" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|       ], | ||||
|       "condition": "indoor!=yes" | ||||
|     }, | ||||
|     { | ||||
|       "id": "date", | ||||
|  |  | |||
							
								
								
									
										
											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": [ | ||||
|         "point" | ||||
|       ] | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  | @ -222,50 +223,182 @@ | |||
|             "fr": "Passage piéton sans marquages", | ||||
|             "ca": "Creuament sense senyalitzar", | ||||
|             "cs": "Přechod bez označení přechodu" | ||||
|           } | ||||
|           }, | ||||
|           "hideInAnswer": true | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "crossing-is-zebra", | ||||
|       "id": "markings", | ||||
|       "question": { | ||||
|         "en": "Is this is a zebra crossing?", | ||||
|         "nl": "Is dit een zebrapad?", | ||||
|         "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?" | ||||
|         "en": "What kind of markings does this crossing have?", | ||||
|         "nl": "Wat voor markering heeft deze oversteekplaats?" | ||||
|       }, | ||||
|       "condition": "crossing=uncontrolled", | ||||
|       "mappings": [ | ||||
|         { | ||||
|           "if": "crossing_ref=zebra", | ||||
|           "if": "crossing:markings=no", | ||||
|           "then": { | ||||
|             "en": "This is a zebra crossing", | ||||
|             "nl": "Dit is een zebrapad", | ||||
|             "de": "Dies ist ein Zebrastreifen", | ||||
|             "es": "Esto es un paso de cebra", | ||||
|             "fr": "C'est un passage piéton", | ||||
|             "ca": "Açò és un pas de vianants", | ||||
|             "cs": "Toto je zebra přechod" | ||||
|             "en": "This crossing has no markings", | ||||
|             "nl": "Deze oversteekplaats heeft geen markeringen" | ||||
|           }, | ||||
|           "icon": { | ||||
|             "class": "large", | ||||
|             "path": "./assets/layers/crossings/crossing_unmarked.png" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "if": "crossing_ref=", | ||||
|           "if": "crossing:markings=zebra", | ||||
|           "then": { | ||||
|             "en": "This is not a zebra crossing", | ||||
|             "nl": "Dit is geen zebrapad", | ||||
|             "de": "Dies ist kein Zebrastreifen", | ||||
|             "es": "Esto no es un paso de cebra", | ||||
|             "fr": "Ce n'est pas un passage piéton", | ||||
|             "ca": "Açò no és un pas de vianants", | ||||
|             "cs": "Tohle není zebra přechod" | ||||
|             "en": "This crossing has zebra markings", | ||||
|             "nl": "Deze oversteekplaats heeft een zebramarkering" | ||||
|           }, | ||||
|           "icon": { | ||||
|             "class": "large", | ||||
|             "path": "./assets/layers/crossings/markings_zebra.png" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "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", | ||||
|       "question": { | ||||
|  |  | |||
|  | @ -39,6 +39,116 @@ | |||
|       "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", | ||||
|     "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 | ||||
|  | @ -2972,6 +2972,29 @@ | |||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "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 | ||||
|  |  | |||
							
								
								
									
										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 | ||||
|       } | ||||
|     }, | ||||
|     "stairs" | ||||
|     "stairs", | ||||
|     "tactile_map", | ||||
|     "tactile_model" | ||||
|   ] | ||||
| } | ||||
|  | @ -56,13 +56,18 @@ | |||
|   "startLon": 3.75, | ||||
|   "hideFromOverview": false, | ||||
|   "layers": [ | ||||
|     { | ||||
|       "builtin": [ | ||||
|         "cycleways_and_roads", | ||||
|         "barrier", | ||||
|         "crossings", | ||||
|     "bicycle_counter" | ||||
|         "bicycle_counter", | ||||
|         "cyclist_waiting_aid" | ||||
|       ], | ||||
|   "overrideAll": { | ||||
|       "override": { | ||||
|         "minzoom": 16 | ||||
|   }, | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "enableDownload": true | ||||
| } | ||||
|  | @ -47,12 +47,18 @@ | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "rainbow_crossings", | ||||
|     { | ||||
|       "builtin": "rainbow_crossings", | ||||
|       "override": { | ||||
|         "isCounted": false | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "builtin": "cycleways_and_roads", | ||||
|       "override": { | ||||
|         "minzoom": 18, | ||||
|         "name": null | ||||
|         "name": null, | ||||
|         "isCounted": false | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -2398,10 +2398,10 @@ | |||
|                     "1": { | ||||
|                         "then": "Aquest rellotge està muntat en una paret" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Aquest rellotge està muntat en una tanca publicitària" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                     "4": { | ||||
|                         "then": "Aquest rellotge està al sòl" | ||||
|                     } | ||||
|                 }, | ||||
|  | @ -2512,17 +2512,6 @@ | |||
|                 }, | ||||
|                 "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": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|  |  | |||
|  | @ -2752,10 +2752,10 @@ | |||
|                     "1": { | ||||
|                         "then": "Tyto hodiny jsou namontovány na stěně" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Tyto hodiny jsou součástí billboardu" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                     "4": { | ||||
|                         "then": "Tyto hodiny jsou na zemi" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -3296,10 +3296,10 @@ | |||
|                     "1": { | ||||
|                         "then": "Diese Uhr ist an einer Wand montiert" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Diese Uhr ist Teil einer Werbetafel" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                     "4": { | ||||
|                         "then": "Diese Uhr befindet sich auf dem Boden" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -3294,12 +3294,15 @@ | |||
|                         "then": "This clock is mounted on a pole" | ||||
|                     }, | ||||
|                     "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": { | ||||
|                         "then": "This clock is part of a billboard" | ||||
|                         "then": "This clock is mounted directly on a wall" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "This clock is part of a billboard" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "This clock is on the ground" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -2272,10 +2272,10 @@ | |||
|                     "1": { | ||||
|                         "then": "Cette horloge est fixée sur un mur" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Cette horloge fait partie d'un panneau publicitaire" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                     "4": { | ||||
|                         "then": "Cette horloge est posée au sol" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -2748,12 +2748,15 @@ | |||
|                         "then": "Deze klok is bevestigd aan een paal" | ||||
|                     }, | ||||
|                     "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": { | ||||
|                         "then": "Deze klok is onderdeel van een reclamebord" | ||||
|                         "then": "Deze klok is rechtstreeks aan een muur bevestigd" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "Deze klok is onderdeel van een reclamebord" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "Deze klok staat op de grond" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -1356,10 +1356,10 @@ | |||
|                     "1": { | ||||
|                         "then": "Ten zegar jest zamontowany na ścianie" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Ten zegar jest częścią bilbordu" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                     "4": { | ||||
|                         "then": "Ten zegar jest na ziemi" | ||||
|                     } | ||||
|                 }, | ||||
|  |  | |||
|  | @ -479,7 +479,7 @@ | |||
|         "tagRenderings": { | ||||
|             "support": { | ||||
|                 "mappings": { | ||||
|                     "2": { | ||||
|                     "3": { | ||||
|                         "then": "Цей годинник є частиною білборду" | ||||
|                     } | ||||
|                 } | ||||
|  |  | |||
							
								
								
									
										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)) | ||||