forked from MapComplete/MapComplete
		
	Merge branch 'develop' into feature/velopark
This commit is contained in:
		
						commit
						59e76b9c6f
					
				
					 30 changed files with 963 additions and 654 deletions
				
			
		| 
						 | 
					@ -752,7 +752,7 @@
 | 
				
			||||||
  "deletion": {
 | 
					  "deletion": {
 | 
				
			||||||
    "softDeletionTags": {
 | 
					    "softDeletionTags": {
 | 
				
			||||||
      "and": [
 | 
					      "and": [
 | 
				
			||||||
        "disused:emergency:=defibrillator}",
 | 
					        "disused:emergency:=defibrillator",
 | 
				
			||||||
        "emergency="
 | 
					        "emergency="
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
          "color": "red"
 | 
					          "color": "black"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ]
 | 
					      ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -43,5 +43,6 @@
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "tagRenderings": [
 | 
					  "tagRenderings": [
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
  ]
 | 
					  ],
 | 
				
			||||||
 | 
					  "syncSelection": "global"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@
 | 
				
			||||||
  "source": {
 | 
					  "source": {
 | 
				
			||||||
    "osmTags": "amenity=toilets"
 | 
					    "osmTags": "amenity=toilets"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "minzoom": 12,
 | 
					  "minzoom": 10,
 | 
				
			||||||
  "title": {
 | 
					  "title": {
 | 
				
			||||||
    "render": {
 | 
					    "render": {
 | 
				
			||||||
      "en": "Toilet",
 | 
					      "en": "Toilet",
 | 
				
			||||||
| 
						 | 
					@ -683,6 +683,7 @@
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
 | 
					      "multiAnswer": true,
 | 
				
			||||||
      "id": "toilet-changing_table:location"
 | 
					      "id": "toilet-changing_table:location"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,12 +60,13 @@
 | 
				
			||||||
            "unmark": "Von persönlicher Liste bevorzugter Standorte entfernen",
 | 
					            "unmark": "Von persönlicher Liste bevorzugter Standorte entfernen",
 | 
				
			||||||
            "unmarkNotDeleted": "Dieser Punkt wird nicht gelöscht und ist weiterhin auf der entsprechenden Karte für dich und andere sichtbar"
 | 
					            "unmarkNotDeleted": "Dieser Punkt wird nicht gelöscht und ist weiterhin auf der entsprechenden Karte für dich und andere sichtbar"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "downloadGeojson": "Lade deine Favoriten als geojson herunter",
 | 
					        "downloadGeojson": "Favoriten als geojson herunterladen",
 | 
				
			||||||
        "downloadGpx": "Lade deine Favoriten als GPX herunter",
 | 
					        "downloadGpx": "Favoriten als GPX herunterladen",
 | 
				
			||||||
        "intro": "Du hast {length} Orte als Lieblingsort markiert.",
 | 
					        "intro": "Du hast {length} Orte als Favorit markiert.",
 | 
				
			||||||
        "introPrivacy": "Diese Liste ist nur für dich sichtbar",
 | 
					        "introPrivacy": "Diese Liste ist nur für dich sichtbar",
 | 
				
			||||||
        "loginToSeeList": "Melde dich an, um die Liste der Orte zu sehen, die du als Favoriten markiert hast",
 | 
					        "loginToSeeList": "Melde dich an, um die Liste der Orte zu sehen, die du als Favoriten markiert hast",
 | 
				
			||||||
        "tab": "Deine Favoriten"
 | 
					        "tab": "Deine Favoriten",
 | 
				
			||||||
 | 
					        "title": "Ausgewählte Orte"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "flyer": {
 | 
					    "flyer": {
 | 
				
			||||||
        "aerial": "Diese Karte verwendet einen anderen Hintergrund, nämlich Luftaufnahmen der Agentschap Informatie Vlaanderen",
 | 
					        "aerial": "Diese Karte verwendet einen anderen Hintergrund, nämlich Luftaufnahmen der Agentschap Informatie Vlaanderen",
 | 
				
			||||||
| 
						 | 
					@ -173,12 +174,14 @@
 | 
				
			||||||
            "openIssueTracker": "Fehler melden",
 | 
					            "openIssueTracker": "Fehler melden",
 | 
				
			||||||
            "openMapillary": "Mapillary öffnen",
 | 
					            "openMapillary": "Mapillary öffnen",
 | 
				
			||||||
            "openOsmcha": "Neueste Bearbeitungen mit {theme} ansehen",
 | 
					            "openOsmcha": "Neueste Bearbeitungen mit {theme} ansehen",
 | 
				
			||||||
 | 
					            "seeOnMapillary": "Dieses Bild auf Mapillary ansehen",
 | 
				
			||||||
            "themeBy": "Dieses Thema wurde erstellt von {author}",
 | 
					            "themeBy": "Dieses Thema wurde erstellt von {author}",
 | 
				
			||||||
            "title": "Copyright und Urheberrechtsangabe",
 | 
					            "title": "Copyright und Urheberrechtsangabe",
 | 
				
			||||||
            "translatedBy": "MapComplete wurde übersetzt von {contributors} und <a href='https://github.com/pietervdvn/MapComplete/graphs/contributors' target='_blank'>{hiddenCount} weiteren Personen</a>"
 | 
					            "translatedBy": "MapComplete wurde übersetzt von {contributors} und <a href='https://github.com/pietervdvn/MapComplete/graphs/contributors' target='_blank'>{hiddenCount} weiteren Personen</a>"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "back": "Zurück",
 | 
					        "back": "Zurück",
 | 
				
			||||||
        "backToIndex": "Zur Übersicht aller Themenkarten",
 | 
					        "backToIndex": "Zur Übersicht aller Themenkarten",
 | 
				
			||||||
 | 
					        "backToMap": "Zurück zur Karte",
 | 
				
			||||||
        "backgroundMap": "Hintergrundkarte auswählen",
 | 
					        "backgroundMap": "Hintergrundkarte auswählen",
 | 
				
			||||||
        "backgroundSwitch": "Hintergrund wechseln",
 | 
					        "backgroundSwitch": "Hintergrund wechseln",
 | 
				
			||||||
        "cancel": "Abbrechen",
 | 
					        "cancel": "Abbrechen",
 | 
				
			||||||
| 
						 | 
					@ -224,6 +227,13 @@
 | 
				
			||||||
        "histogram": {
 | 
					        "histogram": {
 | 
				
			||||||
            "error_loading": "Das Histogramm konnte nicht geladen werden"
 | 
					            "error_loading": "Das Histogramm konnte nicht geladen werden"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "labels": {
 | 
				
			||||||
 | 
					            "background": "Hintergrund ändern",
 | 
				
			||||||
 | 
					            "filter": "Daten filtern",
 | 
				
			||||||
 | 
					            "menu": "Menü",
 | 
				
			||||||
 | 
					            "zoomIn": "Hineinzoomen",
 | 
				
			||||||
 | 
					            "zoomOut": "Herauszoomen"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "layerSelection": {
 | 
					        "layerSelection": {
 | 
				
			||||||
            "title": "Ebenen auswählen",
 | 
					            "title": "Ebenen auswählen",
 | 
				
			||||||
            "zoomInToSeeThisLayer": "Ausschnitt vergrößern, um Ebene anzuzeigen"
 | 
					            "zoomInToSeeThisLayer": "Ausschnitt vergrößern, um Ebene anzuzeigen"
 | 
				
			||||||
| 
						 | 
					@ -272,7 +282,9 @@
 | 
				
			||||||
            "closed_permanently": "Geschlossen auf unbestimmte Zeit",
 | 
					            "closed_permanently": "Geschlossen auf unbestimmte Zeit",
 | 
				
			||||||
            "closed_until": "Geschlossen bis {date}",
 | 
					            "closed_until": "Geschlossen bis {date}",
 | 
				
			||||||
            "error_loading": "Fehler: Diese Öffnungszeiten können nicht angezeigt werden.",
 | 
					            "error_loading": "Fehler: Diese Öffnungszeiten können nicht angezeigt werden.",
 | 
				
			||||||
 | 
					            "friday": "Am Freitag {ranges}",
 | 
				
			||||||
            "loadingCountry": "Land ermitteln…",
 | 
					            "loadingCountry": "Land ermitteln…",
 | 
				
			||||||
 | 
					            "monday": "Am Montag {ranges}",
 | 
				
			||||||
            "not_all_rules_parsed": "Die Öffnungszeiten sind kompliziert. Folgenden Regeln werden im Eingabefenster ignoriert:",
 | 
					            "not_all_rules_parsed": "Die Öffnungszeiten sind kompliziert. Folgenden Regeln werden im Eingabefenster ignoriert:",
 | 
				
			||||||
            "openTill": "bis",
 | 
					            "openTill": "bis",
 | 
				
			||||||
            "open_24_7": "Durchgehend geöffnet",
 | 
					            "open_24_7": "Durchgehend geöffnet",
 | 
				
			||||||
| 
						 | 
					@ -281,7 +293,15 @@
 | 
				
			||||||
            "ph_closed": "geschlossen",
 | 
					            "ph_closed": "geschlossen",
 | 
				
			||||||
            "ph_not_known": " ",
 | 
					            "ph_not_known": " ",
 | 
				
			||||||
            "ph_open": "geöffnet",
 | 
					            "ph_open": "geöffnet",
 | 
				
			||||||
            "ph_open_as_usual": "geöffnet wie üblich"
 | 
					            "ph_open_as_usual": "geöffnet wie üblich",
 | 
				
			||||||
 | 
					            "ranges": "von {starttime} bis {endtime}",
 | 
				
			||||||
 | 
					            "rangescombined": "{range0} und {range1}",
 | 
				
			||||||
 | 
					            "saturday": "Am Samstag {ranges}",
 | 
				
			||||||
 | 
					            "sunday": "Am Sonntag {ranges}",
 | 
				
			||||||
 | 
					            "thursday": "Am Donnerstag {ranges}",
 | 
				
			||||||
 | 
					            "tuesday": "Am Dienstag {ranges}",
 | 
				
			||||||
 | 
					            "unknown": "Die Öffnungszeiten sind unbekannt",
 | 
				
			||||||
 | 
					            "wednesday": "Am Mittwoch {ranges}"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "osmLinkTooltip": "Dieses Element auf OpenStreetMap öffnen, um Verlauf und Bearbeitungsmöglichkeiten anzuzeigen",
 | 
					        "osmLinkTooltip": "Dieses Element auf OpenStreetMap öffnen, um Verlauf und Bearbeitungsmöglichkeiten anzuzeigen",
 | 
				
			||||||
        "pdf": {
 | 
					        "pdf": {
 | 
				
			||||||
| 
						 | 
					@ -290,7 +310,7 @@
 | 
				
			||||||
            "generatedWith": "Erstellt mit mapcomplete.org/{layoutid}",
 | 
					            "generatedWith": "Erstellt mit mapcomplete.org/{layoutid}",
 | 
				
			||||||
            "versionInfo": "v{version} - erstellt am {date}"
 | 
					            "versionInfo": "v{version} - erstellt am {date}"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "pickLanguage": "Sprache auswählen: ",
 | 
					        "pickLanguage": "Sprache auswählen",
 | 
				
			||||||
        "poweredByOsm": "Unterstützt von OpenStreetMap",
 | 
					        "poweredByOsm": "Unterstützt von OpenStreetMap",
 | 
				
			||||||
        "questionBox": {
 | 
					        "questionBox": {
 | 
				
			||||||
            "answeredMultiple": "Du hast {answered} Fragen beantwortet",
 | 
					            "answeredMultiple": "Du hast {answered} Fragen beantwortet",
 | 
				
			||||||
| 
						 | 
					@ -324,6 +344,7 @@
 | 
				
			||||||
            "searchShort": "Suche…",
 | 
					            "searchShort": "Suche…",
 | 
				
			||||||
            "searching": "Suchen …"
 | 
					            "searching": "Suchen …"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "share": "Teilen",
 | 
				
			||||||
        "sharescreen": {
 | 
					        "sharescreen": {
 | 
				
			||||||
            "copiedToClipboard": "Verknüpfung in Zwischenablage kopiert",
 | 
					            "copiedToClipboard": "Verknüpfung in Zwischenablage kopiert",
 | 
				
			||||||
            "documentation": "Für weitere Informationen über verfügbare URL-Parameter, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>siehe Dokumentation</a>",
 | 
					            "documentation": "Für weitere Informationen über verfügbare URL-Parameter, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>siehe Dokumentation</a>",
 | 
				
			||||||
| 
						 | 
					@ -369,6 +390,27 @@
 | 
				
			||||||
        "uploadingChanges": "Änderungen werden hochgeladen…",
 | 
					        "uploadingChanges": "Änderungen werden hochgeladen…",
 | 
				
			||||||
        "useSearch": "Verwenden Sie die Suche oben, um Voreinstellungen anzuzeigen",
 | 
					        "useSearch": "Verwenden Sie die Suche oben, um Voreinstellungen anzuzeigen",
 | 
				
			||||||
        "useSearchForMore": "Verwenden Sie die Suchfunktion, um innerhalb von {total} weitere Werte zu suchen…",
 | 
					        "useSearchForMore": "Verwenden Sie die Suchfunktion, um innerhalb von {total} weitere Werte zu suchen…",
 | 
				
			||||||
 | 
					        "visualFeedback": {
 | 
				
			||||||
 | 
					            "directionsAbsolute": {
 | 
				
			||||||
 | 
					                "E": "Ost",
 | 
				
			||||||
 | 
					                "N": "Nord",
 | 
				
			||||||
 | 
					                "NE": "Nordost",
 | 
				
			||||||
 | 
					                "NW": "Nordwest",
 | 
				
			||||||
 | 
					                "S": "Süd",
 | 
				
			||||||
 | 
					                "SE": "Südost",
 | 
				
			||||||
 | 
					                "SW": "Südwest",
 | 
				
			||||||
 | 
					                "W": "West"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "directionsRelative": {
 | 
				
			||||||
 | 
					                "left": "links",
 | 
				
			||||||
 | 
					                "right": "rechts",
 | 
				
			||||||
 | 
					                "sharp_left": "scharf links",
 | 
				
			||||||
 | 
					                "sharp_right": "scharf rechts",
 | 
				
			||||||
 | 
					                "slight_left": "leicht links",
 | 
				
			||||||
 | 
					                "slight_right": "leicht rechts",
 | 
				
			||||||
 | 
					                "straight": "geradeaus"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "waitingForGeopermission": "Warten auf Ihre Erlaubnis, Standortdaten zu verwenden…",
 | 
					        "waitingForGeopermission": "Warten auf Ihre Erlaubnis, Standortdaten zu verwenden…",
 | 
				
			||||||
        "waitingForLocation": "Ihr Standort wird gesucht…",
 | 
					        "waitingForLocation": "Ihr Standort wird gesucht…",
 | 
				
			||||||
        "weekdays": {
 | 
					        "weekdays": {
 | 
				
			||||||
| 
						 | 
					@ -416,12 +458,16 @@
 | 
				
			||||||
    "hotkeyDocumentation": {
 | 
					    "hotkeyDocumentation": {
 | 
				
			||||||
        "action": "Aktion",
 | 
					        "action": "Aktion",
 | 
				
			||||||
        "closeSidebar": "Seitenleiste schließen",
 | 
					        "closeSidebar": "Seitenleiste schließen",
 | 
				
			||||||
        "geolocate": "Verschieben Sie die Karte auf den aktuellen Standort oder zoomen Sie die Karte auf den aktuellen Standort. Beantragt Standortberechtigung",
 | 
					        "geolocate": "Karte auf den aktuellen Standort verschieben oder zoomen. Erfordert Standortberechtigung",
 | 
				
			||||||
        "intro": "MapComplete unterstützt folgende Tastaturbefehle:",
 | 
					        "intro": "MapComplete unterstützt folgende Tastaturbefehle:",
 | 
				
			||||||
        "key": "Tastenkombination",
 | 
					        "key": "Tastenkombination",
 | 
				
			||||||
        "openLayersPanel": "Öffnet das Menü für Ebenen und Filter",
 | 
					        "openLayersPanel": "Auswahl für Hintergrundebenen öffnen",
 | 
				
			||||||
        "selectAerial": "Hintergrund als Luftbild oder Satellitenbild einstellen. Wechselt zwischen den zwei besten verfügbaren Ebenen",
 | 
					        "selectAerial": "Hintergrund als Luftbild oder Satellitenbild einstellen. Wechselt zwischen den zwei besten verfügbaren Ebenen",
 | 
				
			||||||
        "selectItem": "Wähle das POI, das dem Kartenmittelpunkt (Fadenkreuz) am nächsten liegt. Nur wenn die Tastaturnavigation verwendet wird",
 | 
					        "selectFavourites": "Favoriten anzeigen",
 | 
				
			||||||
 | 
					        "selectItem": "Objekt auswählen, das dem Kartenmittelpunkt (Fadenkreuz) am nächsten liegt. Nur wenn die Tastaturnavigation verwendet wird",
 | 
				
			||||||
 | 
					        "selectItem2": "Objekt auswählen, das dem Kartenmittelpunkt (Fadenkreuz) am zweitnächsten liegt. Nur wenn die Tastaturnavigation verwendet wird",
 | 
				
			||||||
 | 
					        "selectItem3": "Objekt auswählen, das dem Kartenmittelpunkt (Fadenkreuz) am drittnächsten liegt. Nur wenn die Tastaturnavigation verwendet wird",
 | 
				
			||||||
 | 
					        "selectItemI": "Objekt auswählen, das dem Kartenmittelpunkt (Fadenkreuz) am viertnächsten liegt. Nur wenn die Tastaturnavigation verwendet wird",
 | 
				
			||||||
        "selectMap": "Karte aus externer Quelle als Hintergrund wählen. Wechselt zwischen den zwei besten verfügbaren Ebenen",
 | 
					        "selectMap": "Karte aus externer Quelle als Hintergrund wählen. Wechselt zwischen den zwei besten verfügbaren Ebenen",
 | 
				
			||||||
        "selectMapnik": "OpenStreetMap-carto als Hintergrundebene wählen",
 | 
					        "selectMapnik": "OpenStreetMap-carto als Hintergrundebene wählen",
 | 
				
			||||||
        "selectOsmbasedmap": "OpenStreetMap-basierte Karte als Hintergrund auswählen (oder Hintergrundebene deaktivieren)",
 | 
					        "selectOsmbasedmap": "OpenStreetMap-basierte Karte als Hintergrund auswählen (oder Hintergrundebene deaktivieren)",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -366,7 +366,7 @@
 | 
				
			||||||
        "testing": "Testing - changes won't be saved",
 | 
					        "testing": "Testing - changes won't be saved",
 | 
				
			||||||
        "uploadError": "Error while uploading changes: {error}",
 | 
					        "uploadError": "Error while uploading changes: {error}",
 | 
				
			||||||
        "uploadGpx": {
 | 
					        "uploadGpx": {
 | 
				
			||||||
            "choosePermission": "Choose below if your track should be shared:",
 | 
					            "choosePermission": "Choose below how your track should be shared:",
 | 
				
			||||||
            "confirm": "Confirm upload",
 | 
					            "confirm": "Confirm upload",
 | 
				
			||||||
            "gpxServiceOffline": "The GPX-service is currently offline - uploading is currently not possible. Try again later.",
 | 
					            "gpxServiceOffline": "The GPX-service is currently offline - uploading is currently not possible. Try again later.",
 | 
				
			||||||
            "intro0": "By uploading your track, OpenStreetMap.org will retain a full copy of the track.",
 | 
					            "intro0": "By uploading your track, OpenStreetMap.org will retain a full copy of the track.",
 | 
				
			||||||
| 
						 | 
					@ -500,7 +500,8 @@
 | 
				
			||||||
        "selectOsmbasedmap": "Set the background layer to on OpenStreetMap-based map (or disable the background raster layer)",
 | 
					        "selectOsmbasedmap": "Set the background layer to on OpenStreetMap-based map (or disable the background raster layer)",
 | 
				
			||||||
        "selectSearch": "Select the search bar to search locations",
 | 
					        "selectSearch": "Select the search bar to search locations",
 | 
				
			||||||
        "shakePhone": "Shaking your phone",
 | 
					        "shakePhone": "Shaking your phone",
 | 
				
			||||||
        "title": "Hotkeys"
 | 
					        "title": "Hotkeys",
 | 
				
			||||||
 | 
					        "translationMode": "Toggle translation mode on or off"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "image": {
 | 
					    "image": {
 | 
				
			||||||
        "addPicture": "Add picture",
 | 
					        "addPicture": "Add picture",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -69,6 +69,15 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Murale"
 | 
					                        "then": "Murale"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "10": {
 | 
				
			||||||
 | 
					                        "then": "Azulejo (ornamento decorativo piastrellato spagnolo)"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "11": {
 | 
				
			||||||
 | 
					                        "then": "Mosaico di piastrelle"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "12": {
 | 
				
			||||||
 | 
					                        "then": "Scultura in legno"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "2": {
 | 
				
			||||||
                        "then": "Dipinto"
 | 
					                        "then": "Dipinto"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
| 
						 | 
					@ -92,12 +101,6 @@
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "9": {
 | 
					                    "9": {
 | 
				
			||||||
                        "then": "Rilievo"
 | 
					                        "then": "Rilievo"
 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "10": {
 | 
					 | 
				
			||||||
                        "then": "Azulejo (ornamento decorativo piastrellato spagnolo)"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "11": {
 | 
					 | 
				
			||||||
                        "then": "Mosaico di piastrelle"
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "question": "Che tipo di opera d’arte è questo?",
 | 
					                "question": "Che tipo di opera d’arte è questo?",
 | 
				
			||||||
| 
						 | 
					@ -110,6 +113,24 @@
 | 
				
			||||||
                        "text": "Ulteriori informazioni su questo sito web"
 | 
					                        "text": "Ulteriori informazioni su questo sito web"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "artwork_subject": {
 | 
				
			||||||
 | 
					                "question": "Che cosa rappresenta quest'opera d'arte?",
 | 
				
			||||||
 | 
					                "render": "Quest'opera d'arte rappresenta {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "doubles_as_bench": {
 | 
				
			||||||
 | 
					                "mappings": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "then": "Quest'opera d'arte funge anche da panchina"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "1": {
 | 
				
			||||||
 | 
					                        "then": "Quest'opera d'arte non funge anche da panchina"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "then": "Quest'opera d'arte non funge anche da panchina"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "question": "Quest'opera d'arte funge da panchina?"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": {
 | 
					        "title": {
 | 
				
			||||||
| 
						 | 
					@ -121,6 +142,79 @@
 | 
				
			||||||
            "render": "Opera d’arte"
 | 
					            "render": "Opera d’arte"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "atm": {
 | 
				
			||||||
 | 
					        "description": "Sportello Bancomat per prelevare denaro",
 | 
				
			||||||
 | 
					        "name": "Sportelli Bancomat",
 | 
				
			||||||
 | 
					        "presets": {
 | 
				
			||||||
 | 
					            "0": {
 | 
				
			||||||
 | 
					                "title": "Uno sportello bancomat"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "tagRenderings": {
 | 
				
			||||||
 | 
					            "cash_in": {
 | 
				
			||||||
 | 
					                "mappings": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "then": "Probabilmente non puoi depositare dei contanti in questo sportello bancomat"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "1": {
 | 
				
			||||||
 | 
					                        "then": "Puoi depositare dei contanti in questo sportello bancomat"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "then": "Non puoi depositare dei contanti in questo sportello bancomat"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "question": "Puoi depositare dei contanti in questo sportello bancomat?"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "cash_out": {
 | 
				
			||||||
 | 
					                "mappings": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "then": "Puoi prelevare dei contanti da questo sportello bancomat"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "1": {
 | 
				
			||||||
 | 
					                        "then": "Puoi prelevare dei contanti da questo sportello bancomat"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "then": "Non puoi prelevare dei contanti da questo sportello bancomat"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "question": "Puoi prelevare dei contanti da questo sportello bancomat?"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "cash_out-denominations-notes": {
 | 
				
			||||||
 | 
					                "mappings": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "then": "Si possono prelevare banconote da 5 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "1": {
 | 
				
			||||||
 | 
					                        "then": "Si possono prelevare banconote da 10 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "then": "Si possono prelevare banconote da 20 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "3": {
 | 
				
			||||||
 | 
					                        "then": "Si possono prelevare banconote da 50 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "4": {
 | 
				
			||||||
 | 
					                        "then": "Si possono prelevare banconote da 100 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "5": {
 | 
				
			||||||
 | 
					                        "then": "Non si possono prelevare banconote da 200 euro"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "6": {
 | 
				
			||||||
 | 
					                        "then": "Non si possono prelevare banconote da 500 euro"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "question": "Quali banconote si possono ritirare qui?"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "name": {
 | 
				
			||||||
 | 
					                "render": "Il nome di questo sportello bancomat è {name}"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "operator": {
 | 
				
			||||||
 | 
					                "freeform": {
 | 
				
			||||||
 | 
					                    "placeholder": "Operatore"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "bench": {
 | 
					    "bench": {
 | 
				
			||||||
        "name": "Panchine",
 | 
					        "name": "Panchine",
 | 
				
			||||||
        "presets": {
 | 
					        "presets": {
 | 
				
			||||||
| 
						 | 
					@ -1898,27 +1992,6 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "question": "Riciclo di batterie"
 | 
					                        "question": "Riciclo di batterie"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di confezioni per bevande"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "3": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di lattine"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "4": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di abiti"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "5": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di olio da cucina"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "6": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di olio da motore"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "8": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di umido"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "9": {
 | 
					 | 
				
			||||||
                        "question": "Riciclo di bottiglie di vetro"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "10": {
 | 
					                    "10": {
 | 
				
			||||||
                        "question": "Riciclo di vetro"
 | 
					                        "question": "Riciclo di vetro"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
| 
						 | 
					@ -1946,8 +2019,29 @@
 | 
				
			||||||
                    "19": {
 | 
					                    "19": {
 | 
				
			||||||
                        "question": "Riciclo di secco"
 | 
					                        "question": "Riciclo di secco"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di confezioni per bevande"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "20": {
 | 
					                    "20": {
 | 
				
			||||||
                        "question": "Riciclo di secco"
 | 
					                        "question": "Riciclo di secco"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "3": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di lattine"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "4": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di abiti"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "5": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di olio da cucina"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "6": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di olio da motore"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "8": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di umido"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "9": {
 | 
				
			||||||
 | 
					                        "question": "Riciclo di bottiglie di vetro"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
| 
						 | 
					@ -2000,27 +2094,6 @@
 | 
				
			||||||
                    "1": {
 | 
					                    "1": {
 | 
				
			||||||
                        "then": "Cartoni per bevande"
 | 
					                        "then": "Cartoni per bevande"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					 | 
				
			||||||
                        "then": "Lattine"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "3": {
 | 
					 | 
				
			||||||
                        "then": "Abiti"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "4": {
 | 
					 | 
				
			||||||
                        "then": "Olio da cucina"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "5": {
 | 
					 | 
				
			||||||
                        "then": "Olio di motore"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "7": {
 | 
					 | 
				
			||||||
                        "then": "Verde"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "8": {
 | 
					 | 
				
			||||||
                        "then": "Umido"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "9": {
 | 
					 | 
				
			||||||
                        "then": "Bottiglie di vetro"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "10": {
 | 
					                    "10": {
 | 
				
			||||||
                        "then": "Vetro"
 | 
					                        "then": "Vetro"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
| 
						 | 
					@ -2045,6 +2118,9 @@
 | 
				
			||||||
                    "19": {
 | 
					                    "19": {
 | 
				
			||||||
                        "then": "Scarpe"
 | 
					                        "then": "Scarpe"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "2": {
 | 
				
			||||||
 | 
					                        "then": "Lattine"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "20": {
 | 
					                    "20": {
 | 
				
			||||||
                        "then": "Piccoli elettrodomestici"
 | 
					                        "then": "Piccoli elettrodomestici"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
| 
						 | 
					@ -2056,6 +2132,24 @@
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "23": {
 | 
					                    "23": {
 | 
				
			||||||
                        "then": "Secco"
 | 
					                        "then": "Secco"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "3": {
 | 
				
			||||||
 | 
					                        "then": "Abiti"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "4": {
 | 
				
			||||||
 | 
					                        "then": "Olio da cucina"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "5": {
 | 
				
			||||||
 | 
					                        "then": "Olio di motore"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "7": {
 | 
				
			||||||
 | 
					                        "then": "Verde"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "8": {
 | 
				
			||||||
 | 
					                        "then": "Umido"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "9": {
 | 
				
			||||||
 | 
					                        "then": "Bottiglie di vetro"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "question": "Cosa si può riciclare qui?"
 | 
					                "question": "Cosa si può riciclare qui?"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -842,7 +842,7 @@
 | 
				
			||||||
    "hackerspaces": {
 | 
					    "hackerspaces": {
 | 
				
			||||||
        "description": "Auf dieser Karte können Sie Hackerspaces sehen, einen neuen Hackerspace hinzufügen oder Daten direkt aktualisieren",
 | 
					        "description": "Auf dieser Karte können Sie Hackerspaces sehen, einen neuen Hackerspace hinzufügen oder Daten direkt aktualisieren",
 | 
				
			||||||
        "shortDescription": "Eine Karte von Hackerspaces",
 | 
					        "shortDescription": "Eine Karte von Hackerspaces",
 | 
				
			||||||
        "title": "Hackerspaces"
 | 
					        "title": "Hackerspaces und Makerspaces"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hailhydrant": {
 | 
					    "hailhydrant": {
 | 
				
			||||||
        "description": "Auf dieser Karte können Sie Hydranten, Feuerwachen, Krankenwagen und Feuerlöscher in Ihren bevorzugten Stadtvierteln finden und aktualisieren.",
 | 
					        "description": "Auf dieser Karte können Sie Hydranten, Feuerwachen, Krankenwagen und Feuerlöscher in Ihren bevorzugten Stadtvierteln finden und aktualisieren.",
 | 
				
			||||||
| 
						 | 
					@ -918,6 +918,13 @@
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "10": {
 | 
				
			||||||
 | 
					                        "options": {
 | 
				
			||||||
 | 
					                            "0": {
 | 
				
			||||||
 | 
					                                "question": "Etymologie-Thema ausschließen"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "2": {
 | 
				
			||||||
                        "options": {
 | 
					                        "options": {
 | 
				
			||||||
                            "0": {
 | 
					                            "0": {
 | 
				
			||||||
| 
						 | 
					@ -973,13 +980,6 @@
 | 
				
			||||||
                                "question": "GRB-Theme ausschließen"
 | 
					                                "question": "GRB-Theme ausschließen"
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "10": {
 | 
					 | 
				
			||||||
                        "options": {
 | 
					 | 
				
			||||||
                            "0": {
 | 
					 | 
				
			||||||
                                "question": "Etymologie-Thema ausschließen"
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "name": "Zentrum der Änderungssätze",
 | 
					                "name": "Zentrum der Änderungssätze",
 | 
				
			||||||
| 
						 | 
					@ -1056,6 +1056,33 @@
 | 
				
			||||||
    "onwheels": {
 | 
					    "onwheels": {
 | 
				
			||||||
        "description": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen",
 | 
					        "description": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
 | 
					            "19": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "=title": {
 | 
				
			||||||
 | 
					                        "render": "Statistik"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "20": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "+tagRenderings": {
 | 
				
			||||||
 | 
					                        "0": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "text": "Import"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "1": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "message": "Alle vorgeschlagenen Tags hinzufügen"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "4": {
 | 
					            "4": {
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "filter": {
 | 
					                    "filter": {
 | 
				
			||||||
| 
						 | 
					@ -1098,33 +1125,6 @@
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "name": "Barrierefreie Parkplätze"
 | 
					                    "name": "Barrierefreie Parkplätze"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "19": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "=title": {
 | 
					 | 
				
			||||||
                        "render": "Statistik"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "20": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "+tagRenderings": {
 | 
					 | 
				
			||||||
                        "0": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "text": "Import"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "1": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "message": "Alle vorgeschlagenen Tags hinzufügen"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Auf Rädern"
 | 
					        "title": "Auf Rädern"
 | 
				
			||||||
| 
						 | 
					@ -1285,10 +1285,6 @@
 | 
				
			||||||
    "stations": {
 | 
					    "stations": {
 | 
				
			||||||
        "description": "Bahnhofsdetails ansehen, bearbeiten und hinzufügen",
 | 
					        "description": "Bahnhofsdetails ansehen, bearbeiten und hinzufügen",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
            "3": {
 | 
					 | 
				
			||||||
                "description": "Ebene mit Bahnhöfen",
 | 
					 | 
				
			||||||
                "name": "Bahnhöfe"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "16": {
 | 
					            "16": {
 | 
				
			||||||
                "description": "Anzeigen der Züge, die von diesem Bahnhof abfahren",
 | 
					                "description": "Anzeigen der Züge, die von diesem Bahnhof abfahren",
 | 
				
			||||||
                "name": "Abfahrtstafeln",
 | 
					                "name": "Abfahrtstafeln",
 | 
				
			||||||
| 
						 | 
					@ -1320,6 +1316,10 @@
 | 
				
			||||||
                "title": {
 | 
					                "title": {
 | 
				
			||||||
                    "render": "Abfahrtstafel"
 | 
					                    "render": "Abfahrtstafel"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "3": {
 | 
				
			||||||
 | 
					                "description": "Ebene mit Bahnhöfen",
 | 
				
			||||||
 | 
					                "name": "Bahnhöfe"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Bahnhöfe"
 | 
					        "title": "Bahnhöfe"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -842,7 +842,7 @@
 | 
				
			||||||
    "hackerspaces": {
 | 
					    "hackerspaces": {
 | 
				
			||||||
        "description": "On this map you can see hackerspaces, add a new hackerspace or update data directly",
 | 
					        "description": "On this map you can see hackerspaces, add a new hackerspace or update data directly",
 | 
				
			||||||
        "shortDescription": "A map of hackerspaces",
 | 
					        "shortDescription": "A map of hackerspaces",
 | 
				
			||||||
        "title": "Hackerspaces"
 | 
					        "title": "Hackerspaces and makerspaces"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hailhydrant": {
 | 
					    "hailhydrant": {
 | 
				
			||||||
        "description": "On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods.",
 | 
					        "description": "On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods.",
 | 
				
			||||||
| 
						 | 
					@ -918,6 +918,13 @@
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "10": {
 | 
				
			||||||
 | 
					                        "options": {
 | 
				
			||||||
 | 
					                            "0": {
 | 
				
			||||||
 | 
					                                "question": "Exclude etymology theme"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "2": {
 | 
					                    "2": {
 | 
				
			||||||
                        "options": {
 | 
					                        "options": {
 | 
				
			||||||
                            "0": {
 | 
					                            "0": {
 | 
				
			||||||
| 
						 | 
					@ -973,13 +980,6 @@
 | 
				
			||||||
                                "question": "Exclude GRB theme"
 | 
					                                "question": "Exclude GRB theme"
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    "10": {
 | 
					 | 
				
			||||||
                        "options": {
 | 
					 | 
				
			||||||
                            "0": {
 | 
					 | 
				
			||||||
                                "question": "Exclude etymology theme"
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "name": "Changeset centers",
 | 
					                "name": "Changeset centers",
 | 
				
			||||||
| 
						 | 
					@ -1056,6 +1056,33 @@
 | 
				
			||||||
    "onwheels": {
 | 
					    "onwheels": {
 | 
				
			||||||
        "description": "On this map, publicly weelchair accessible places are shown and can be easily added",
 | 
					        "description": "On this map, publicly weelchair accessible places are shown and can be easily added",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
 | 
					            "19": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "=title": {
 | 
				
			||||||
 | 
					                        "render": "Statistics"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "20": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "+tagRenderings": {
 | 
				
			||||||
 | 
					                        "0": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "text": "Import"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "1": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "message": "Add all the suggested tags"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "4": {
 | 
					            "4": {
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "filter": {
 | 
					                    "filter": {
 | 
				
			||||||
| 
						 | 
					@ -1098,33 +1125,6 @@
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "name": "Disabled parking spaces"
 | 
					                    "name": "Disabled parking spaces"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "19": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "=title": {
 | 
					 | 
				
			||||||
                        "render": "Statistics"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "20": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "+tagRenderings": {
 | 
					 | 
				
			||||||
                        "0": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "text": "Import"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "1": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "message": "Add all the suggested tags"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "OnWheels"
 | 
					        "title": "OnWheels"
 | 
				
			||||||
| 
						 | 
					@ -1285,10 +1285,6 @@
 | 
				
			||||||
    "stations": {
 | 
					    "stations": {
 | 
				
			||||||
        "description": "View, edit and add details to a train station",
 | 
					        "description": "View, edit and add details to a train station",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
            "3": {
 | 
					 | 
				
			||||||
                "description": "Layer showing train stations",
 | 
					 | 
				
			||||||
                "name": "Train Stations"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "16": {
 | 
					            "16": {
 | 
				
			||||||
                "description": "Displays showing the trains that will leave from this station",
 | 
					                "description": "Displays showing the trains that will leave from this station",
 | 
				
			||||||
                "name": "Departures boards",
 | 
					                "name": "Departures boards",
 | 
				
			||||||
| 
						 | 
					@ -1320,6 +1316,10 @@
 | 
				
			||||||
                "title": {
 | 
					                "title": {
 | 
				
			||||||
                    "render": "Departures board"
 | 
					                    "render": "Departures board"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "3": {
 | 
				
			||||||
 | 
					                "description": "Layer showing train stations",
 | 
				
			||||||
 | 
					                "name": "Train Stations"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Train Stations"
 | 
					        "title": "Train Stations"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -464,7 +464,7 @@
 | 
				
			||||||
        "description": "Este mapa muestra redes de nodos ciclistas y te permita añadir nodos nuevos de manera sencilla",
 | 
					        "description": "Este mapa muestra redes de nodos ciclistas y te permita añadir nodos nuevos de manera sencilla",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
            "0": {
 | 
					            "0": {
 | 
				
			||||||
                "name": "enlaces nodo a nodo",
 | 
					                "name": "Vínculos entre nodos",
 | 
				
			||||||
                "tagRenderings": {
 | 
					                "tagRenderings": {
 | 
				
			||||||
                    "node2node-survey:date": {
 | 
					                    "node2node-survey:date": {
 | 
				
			||||||
                        "override": {
 | 
					                        "override": {
 | 
				
			||||||
| 
						 | 
					@ -476,19 +476,34 @@
 | 
				
			||||||
                "title": {
 | 
					                "title": {
 | 
				
			||||||
                    "mappings": {
 | 
					                    "mappings": {
 | 
				
			||||||
                        "0": {
 | 
					                        "0": {
 | 
				
			||||||
                            "then": "enlace nodo a nodo <strong>{ref}</strong>"
 | 
					                            "then": "Vínculos entre nodos <strong>{ref}</strong>"
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "render": "enlace nodo a nodo"
 | 
					                    "render": "Vínculos entre nodos"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "1": {
 | 
					            "1": {
 | 
				
			||||||
                "name": "nodos",
 | 
					                "name": "Nodos",
 | 
				
			||||||
 | 
					                "presets": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "title": "un nodo cíclico"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "tagRenderings": {
 | 
					                "tagRenderings": {
 | 
				
			||||||
                    "node-expected_rcn_route_relations": {
 | 
					                    "node-expected_rcn_route_relations": {
 | 
				
			||||||
 | 
					                        "freeform": {
 | 
				
			||||||
 | 
					                            "placeholder": "Por ejemplo, 3"
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
                        "question": "¿A cuántos otros nodos ciclistas enlaza este nodo?",
 | 
					                        "question": "¿A cuántos otros nodos ciclistas enlaza este nodo?",
 | 
				
			||||||
                        "render": "Este nodo enlaza a {expected_rcn_route_relations} otros nodos ciclistas."
 | 
					                        "render": "Este nodo enlaza a {expected_rcn_route_relations} otros nodos ciclistas."
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					                    "node-rxn_ref": {
 | 
				
			||||||
 | 
					                        "freeform": {
 | 
				
			||||||
 | 
					                            "placeholder": "Por ejemplo, 1"
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "question": "¿Cuál es el número de referencia de este nodo cíclico?",
 | 
				
			||||||
 | 
					                        "render": "Este nodo cíclico tiene el número de referencia {rcn_ref}"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "node-survey:date": {
 | 
					                    "node-survey:date": {
 | 
				
			||||||
                        "override": {
 | 
					                        "override": {
 | 
				
			||||||
                            "question": "¿Cuándo fue sondeado este nodo ciclista por última vez?",
 | 
					                            "question": "¿Cuándo fue sondeado este nodo ciclista por última vez?",
 | 
				
			||||||
| 
						 | 
					@ -500,10 +515,30 @@
 | 
				
			||||||
                    "mappings": {
 | 
					                    "mappings": {
 | 
				
			||||||
                        "0": {
 | 
					                        "0": {
 | 
				
			||||||
                            "then": "nodo ciclista <strong>{rcn_ref}</strong>"
 | 
					                            "then": "nodo ciclista <strong>{rcn_ref}</strong>"
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "1": {
 | 
				
			||||||
 | 
					                            "then": "Nodo de ciclo propuesto <strong>{proposed:rcn_ref}</strong>"
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    "render": "nodo ciclista"
 | 
					                    "render": "nodo ciclista"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "2": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "name": "Indicadores de ciclismo",
 | 
				
			||||||
 | 
					                    "title": {
 | 
				
			||||||
 | 
					                        "render": "Hito ciclista"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "3": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "presets": {
 | 
				
			||||||
 | 
					                        "0": {
 | 
				
			||||||
 | 
					                            "title": "Un marcador de ruta para un enlace de nodo a nodo"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Redes de Nodos Ciclistas"
 | 
					        "title": "Redes de Nodos Ciclistas"
 | 
				
			||||||
| 
						 | 
					@ -746,6 +781,21 @@
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
            "0": {
 | 
					            "0": {
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "filter+": {
 | 
				
			||||||
 | 
					                        "0": {
 | 
				
			||||||
 | 
					                            "options": {
 | 
				
			||||||
 | 
					                                "0": {
 | 
				
			||||||
 | 
					                                    "question": "No se prefiere ningún tipo de aceite"
 | 
				
			||||||
 | 
					                                },
 | 
				
			||||||
 | 
					                                "1": {
 | 
				
			||||||
 | 
					                                    "question": "Solo muestra freiduras que utilizan aceite vegetal"
 | 
				
			||||||
 | 
					                                },
 | 
				
			||||||
 | 
					                                "2": {
 | 
				
			||||||
 | 
					                                    "question": "Solo muestra freiduras que utilizan aceite animal"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
                    "name": "Tienda de patatas fritas"
 | 
					                    "name": "Tienda de patatas fritas"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -792,7 +842,7 @@
 | 
				
			||||||
    "hackerspaces": {
 | 
					    "hackerspaces": {
 | 
				
			||||||
        "description": "En este mapa puedes ver hackerspaces, añadir un nuevo hackerspace o actualizar datos directamente",
 | 
					        "description": "En este mapa puedes ver hackerspaces, añadir un nuevo hackerspace o actualizar datos directamente",
 | 
				
			||||||
        "shortDescription": "Un mapa de hackerspaces",
 | 
					        "shortDescription": "Un mapa de hackerspaces",
 | 
				
			||||||
        "title": "Hackerspaces"
 | 
					        "title": "Hackerspaces and makerspaces"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "hailhydrant": {
 | 
					    "hailhydrant": {
 | 
				
			||||||
        "description": "En este mapa puedes encontrar y actualizar hidrantes contra incendios, estaciones de bomberos, estaciones de ambulancias y extintores en tus vecindarios favoritos.",
 | 
					        "description": "En este mapa puedes encontrar y actualizar hidrantes contra incendios, estaciones de bomberos, estaciones de ambulancias y extintores en tus vecindarios favoritos.",
 | 
				
			||||||
| 
						 | 
					@ -824,6 +874,10 @@
 | 
				
			||||||
        "description": "En este mapa encontrarás hoteles en tu zona",
 | 
					        "description": "En este mapa encontrarás hoteles en tu zona",
 | 
				
			||||||
        "title": "Hoteles"
 | 
					        "title": "Hoteles"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "icecream": {
 | 
				
			||||||
 | 
					        "description": "Mapa de heladerías y máquinas expendedoras de helados",
 | 
				
			||||||
 | 
					        "title": "Helado"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "indoors": {
 | 
					    "indoors": {
 | 
				
			||||||
        "description": "En este mapa se muestran los lugares cubiertos de acceso público",
 | 
					        "description": "En este mapa se muestran los lugares cubiertos de acceso público",
 | 
				
			||||||
        "title": "En interiores"
 | 
					        "title": "En interiores"
 | 
				
			||||||
| 
						 | 
					@ -844,6 +898,23 @@
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Bordillos y cruces"
 | 
					        "title": "Bordillos y cruces"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "mapcomplete-changes": {
 | 
				
			||||||
 | 
					        "description": "Este mapa muestra todos los cambios realizados con MapComplete",
 | 
				
			||||||
 | 
					        "layers": {
 | 
				
			||||||
 | 
					            "0": {
 | 
				
			||||||
 | 
					                "description": "Muestra todos los cambios de MapComplete",
 | 
				
			||||||
 | 
					                "filter": {
 | 
				
			||||||
 | 
					                    "0": {
 | 
				
			||||||
 | 
					                        "options": {
 | 
				
			||||||
 | 
					                            "0": {
 | 
				
			||||||
 | 
					                                "question": "El nombre del tema contiene {search}"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "maproulette": {
 | 
					    "maproulette": {
 | 
				
			||||||
        "description": "Tema que muestra las tareas de MapRoulette, permitiendo buscarlas, filtrarlas y arreglarlas.",
 | 
					        "description": "Tema que muestra las tareas de MapRoulette, permitiendo buscarlas, filtrarlas y arreglarlas.",
 | 
				
			||||||
        "title": "Tareas de MapRoulette"
 | 
					        "title": "Tareas de MapRoulette"
 | 
				
			||||||
| 
						 | 
					@ -875,6 +946,33 @@
 | 
				
			||||||
    "onwheels": {
 | 
					    "onwheels": {
 | 
				
			||||||
        "description": "En este mapa se muestran los lugares accesibles al público en silla de ruedas, que pueden añadirse fácilmente",
 | 
					        "description": "En este mapa se muestran los lugares accesibles al público en silla de ruedas, que pueden añadirse fácilmente",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
 | 
					            "19": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "=title": {
 | 
				
			||||||
 | 
					                        "render": "Estadísticas"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "20": {
 | 
				
			||||||
 | 
					                "override": {
 | 
				
			||||||
 | 
					                    "+tagRenderings": {
 | 
				
			||||||
 | 
					                        "0": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "text": "Importar"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "1": {
 | 
				
			||||||
 | 
					                            "render": {
 | 
				
			||||||
 | 
					                                "special": {
 | 
				
			||||||
 | 
					                                    "message": "Añadir todas las etiquetas sugeridas"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "4": {
 | 
					            "4": {
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "filter": {
 | 
					                    "filter": {
 | 
				
			||||||
| 
						 | 
					@ -917,33 +1015,6 @@
 | 
				
			||||||
                "override": {
 | 
					                "override": {
 | 
				
			||||||
                    "name": "Plazas de aparcamiento para discapacitados"
 | 
					                    "name": "Plazas de aparcamiento para discapacitados"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "19": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "=title": {
 | 
					 | 
				
			||||||
                        "render": "Estadísticas"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "20": {
 | 
					 | 
				
			||||||
                "override": {
 | 
					 | 
				
			||||||
                    "+tagRenderings": {
 | 
					 | 
				
			||||||
                        "0": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "text": "Importar"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "1": {
 | 
					 | 
				
			||||||
                            "render": {
 | 
					 | 
				
			||||||
                                "special": {
 | 
					 | 
				
			||||||
                                    "message": "Añadir todas las etiquetas sugeridas"
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Sobre ruedas"
 | 
					        "title": "Sobre ruedas"
 | 
				
			||||||
| 
						 | 
					@ -1104,10 +1175,6 @@
 | 
				
			||||||
    "stations": {
 | 
					    "stations": {
 | 
				
			||||||
        "description": "Ver, editar y añadir detalles a una estación de tren",
 | 
					        "description": "Ver, editar y añadir detalles a una estación de tren",
 | 
				
			||||||
        "layers": {
 | 
					        "layers": {
 | 
				
			||||||
            "3": {
 | 
					 | 
				
			||||||
                "description": "Capa que muestra las estaciones de tren",
 | 
					 | 
				
			||||||
                "name": "Estación de Tren"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "16": {
 | 
					            "16": {
 | 
				
			||||||
                "description": "Pantallas que muestran los trenes que saldrán de esta estación",
 | 
					                "description": "Pantallas que muestran los trenes que saldrán de esta estación",
 | 
				
			||||||
                "name": "Tableros de salidas",
 | 
					                "name": "Tableros de salidas",
 | 
				
			||||||
| 
						 | 
					@ -1139,6 +1206,10 @@
 | 
				
			||||||
                "title": {
 | 
					                "title": {
 | 
				
			||||||
                    "render": "Tablero de salidas"
 | 
					                    "render": "Tablero de salidas"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "3": {
 | 
				
			||||||
 | 
					                "description": "Capa que muestra las estaciones de tren",
 | 
				
			||||||
 | 
					                "name": "Estación de Tren"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "title": "Estaciones de tren"
 | 
					        "title": "Estaciones de tren"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "name": "mapcomplete",
 | 
					  "name": "mapcomplete",
 | 
				
			||||||
  "version": "0.36.12",
 | 
					  "version": "0.36.13",
 | 
				
			||||||
  "repository": "https://github.com/pietervdvn/MapComplete",
 | 
					  "repository": "https://github.com/pietervdvn/MapComplete",
 | 
				
			||||||
  "description": "A small website to edit OSM easily",
 | 
					  "description": "A small website to edit OSM easily",
 | 
				
			||||||
  "bugs": "https://github.com/pietervdvn/MapComplete/issues",
 | 
					  "bugs": "https://github.com/pietervdvn/MapComplete/issues",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -80,6 +80,7 @@ function genImages(dryrun = false) {
 | 
				
			||||||
        "ring",
 | 
					        "ring",
 | 
				
			||||||
        "robot",
 | 
					        "robot",
 | 
				
			||||||
        "SocialImageForeground",
 | 
					        "SocialImageForeground",
 | 
				
			||||||
 | 
					        "speech_bubble",
 | 
				
			||||||
        "speech_bubble_black_outline",
 | 
					        "speech_bubble_black_outline",
 | 
				
			||||||
        "square",
 | 
					        "square",
 | 
				
			||||||
        "square_rounded",
 | 
					        "square_rounded",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -155,7 +155,6 @@ export class Mapillary extends ImageProvider {
 | 
				
			||||||
            Constants.mapillary_client_token_v4
 | 
					            Constants.mapillary_client_token_v4
 | 
				
			||||||
        const response = await Utils.downloadJsonCached(metadataUrl, 60 * 60)
 | 
					        const response = await Utils.downloadJsonCached(metadataUrl, 60 * 60)
 | 
				
			||||||
        const url = <string>response["thumb_1024_url"]
 | 
					        const url = <string>response["thumb_1024_url"]
 | 
				
			||||||
        console.log(response)
 | 
					 | 
				
			||||||
        const url_hd = <string>response["thumb_original_url"]
 | 
					        const url_hd = <string>response["thumb_original_url"]
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            id: "" + mapillaryId,
 | 
					            id: "" + mapillaryId,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,5 @@
 | 
				
			||||||
import ImageProvider, { ProvidedImage } from "./ImageProvider"
 | 
					import ImageProvider, { ProvidedImage } from "./ImageProvider"
 | 
				
			||||||
import BaseUIElement from "../../UI/BaseUIElement"
 | 
					import BaseUIElement from "../../UI/BaseUIElement"
 | 
				
			||||||
import Svg from "../../Svg"
 | 
					 | 
				
			||||||
import { Utils } from "../../Utils"
 | 
					import { Utils } from "../../Utils"
 | 
				
			||||||
import { LicenseInfo } from "./LicenseInfo"
 | 
					import { LicenseInfo } from "./LicenseInfo"
 | 
				
			||||||
import Wikimedia from "../Web/Wikimedia"
 | 
					import Wikimedia from "../Web/Wikimedia"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,6 @@
 | 
				
			||||||
import ChangeTagAction from "./ChangeTagAction"
 | 
					import ChangeTagAction from "./ChangeTagAction"
 | 
				
			||||||
import { Tag } from "../../Tags/Tag"
 | 
					import { Tag } from "../../Tags/Tag"
 | 
				
			||||||
import OsmChangeAction from "./OsmChangeAction"
 | 
					import OsmChangeAction from "./OsmChangeAction"
 | 
				
			||||||
import { Changes } from "../Changes"
 | 
					 | 
				
			||||||
import { ChangeDescription } from "./ChangeDescription"
 | 
					import { ChangeDescription } from "./ChangeDescription"
 | 
				
			||||||
import { Store } from "../../UIEventSource"
 | 
					import { Store } from "../../UIEventSource"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +39,7 @@ export default class LinkImageAction extends OsmChangeAction {
 | 
				
			||||||
    protected CreateChangeDescriptions(): Promise<ChangeDescription[]> {
 | 
					    protected CreateChangeDescriptions(): Promise<ChangeDescription[]> {
 | 
				
			||||||
        let key = this._proposedKey
 | 
					        let key = this._proposedKey
 | 
				
			||||||
        let i = 0
 | 
					        let i = 0
 | 
				
			||||||
        const currentTags = this._currentTags.data
 | 
					        const currentTags: Record<string, string> = this._currentTags.data
 | 
				
			||||||
        const url = this._url
 | 
					        const url = this._url
 | 
				
			||||||
        while (currentTags[key] !== undefined && currentTags[key] !== url) {
 | 
					        while (currentTags[key] !== undefined && currentTags[key] !== url) {
 | 
				
			||||||
            key = this._proposedKey + ":" + i
 | 
					            key = this._proposedKey + ":" + i
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -539,7 +539,7 @@ export class Changes {
 | 
				
			||||||
            openChangeset
 | 
					            openChangeset
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        console.log("Upload successfull!")
 | 
					        console.log("Upload successful!")
 | 
				
			||||||
        return true
 | 
					        return true
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,11 +24,12 @@ import Table from "../../UI/Base/Table"
 | 
				
			||||||
import FilterConfigJson from "./Json/FilterConfigJson"
 | 
					import FilterConfigJson from "./Json/FilterConfigJson"
 | 
				
			||||||
import { Overpass } from "../../Logic/Osm/Overpass"
 | 
					import { Overpass } from "../../Logic/Osm/Overpass"
 | 
				
			||||||
import { FixedUiElement } from "../../UI/Base/FixedUiElement"
 | 
					import { FixedUiElement } from "../../UI/Base/FixedUiElement"
 | 
				
			||||||
import Svg from "../../Svg"
 | 
					 | 
				
			||||||
import { ImmutableStore } from "../../Logic/UIEventSource"
 | 
					import { ImmutableStore } from "../../Logic/UIEventSource"
 | 
				
			||||||
import { OsmTags } from "../OsmFeature"
 | 
					import { OsmTags } from "../OsmFeature"
 | 
				
			||||||
import Constants from "../Constants"
 | 
					import Constants from "../Constants"
 | 
				
			||||||
import { QuestionableTagRenderingConfigJson } from "./Json/QuestionableTagRenderingConfigJson"
 | 
					import { QuestionableTagRenderingConfigJson } from "./Json/QuestionableTagRenderingConfigJson"
 | 
				
			||||||
 | 
					import SvelteUIElement from "../../UI/Base/SvelteUIElement"
 | 
				
			||||||
 | 
					import Statistics from "../../assets/svg/Statistics.svelte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class LayerConfig extends WithContextLoader {
 | 
					export default class LayerConfig extends WithContextLoader {
 | 
				
			||||||
    public static readonly syncSelectionAllowed = ["no", "local", "theme-only", "global"] as const
 | 
					    public static readonly syncSelectionAllowed = ["no", "local", "theme-only", "global"] as const
 | 
				
			||||||
| 
						 | 
					@ -466,7 +467,7 @@ export default class LayerConfig extends WithContextLoader {
 | 
				
			||||||
                            new Link(
 | 
					                            new Link(
 | 
				
			||||||
                                Utils.runningFromConsole
 | 
					                                Utils.runningFromConsole
 | 
				
			||||||
                                    ? "<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>"
 | 
					                                    ? "<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>"
 | 
				
			||||||
                                    : Svg.statistics_svg().SetClass("w-4 h-4 mr-2"),
 | 
					                                    : new SvelteUIElement(Statistics, {class: "w-4 h-4 mr-2"}),
 | 
				
			||||||
                                "https://taginfo.openstreetmap.org/keys/" + values.key + "#values",
 | 
					                                "https://taginfo.openstreetmap.org/keys/" + values.key + "#values",
 | 
				
			||||||
                                true
 | 
					                                true
 | 
				
			||||||
                            ),
 | 
					                            ),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -496,7 +496,8 @@ export default class TagRenderingConfig {
 | 
				
			||||||
            for (const leftover of leftovers) {
 | 
					            for (const leftover of leftovers) {
 | 
				
			||||||
                applicableMappings.push({
 | 
					                applicableMappings.push({
 | 
				
			||||||
                    then: new TypedTranslation<object>(
 | 
					                    then: new TypedTranslation<object>(
 | 
				
			||||||
                        this.render.replace("{" + this.freeform.key + "}", leftover).translations
 | 
					                        this.render.replace("{" + this.freeform.key + "}", leftover).translations,
 | 
				
			||||||
 | 
					                        this.render.context
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,6 +62,7 @@ import FavouritesFeatureSource from "../Logic/FeatureSource/Sources/FavouritesFe
 | 
				
			||||||
import { ProvidedImage } from "../Logic/ImageProviders/ImageProvider"
 | 
					import { ProvidedImage } from "../Logic/ImageProviders/ImageProvider"
 | 
				
			||||||
import { GeolocationControlState } from "../UI/BigComponents/GeolocationControl"
 | 
					import { GeolocationControlState } from "../UI/BigComponents/GeolocationControl"
 | 
				
			||||||
import Zoomcontrol from "../UI/Zoomcontrol"
 | 
					import Zoomcontrol from "../UI/Zoomcontrol"
 | 
				
			||||||
 | 
					import Locale from "../UI/i18n/Locale"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -654,6 +655,16 @@ export default class ThemeViewState implements SpecialVisualizationState {
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            return true
 | 
					            return true
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Hotkeys.RegisterHotkey(
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                shift: "T",
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            Translations.t.hotkeyDocumentation.translationMode,
 | 
				
			||||||
 | 
					            () => {
 | 
				
			||||||
 | 
					                Locale.showLinkToWeblate.setData(!Locale.showLinkToWeblate.data)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,26 +0,0 @@
 | 
				
			||||||
import BaseUIElement from "../BaseUIElement"
 | 
					 | 
				
			||||||
import { VariableUiElement } from "./VariableUIElement"
 | 
					 | 
				
			||||||
import { Stores } from "../../Logic/UIEventSource"
 | 
					 | 
				
			||||||
import Loading from "./Loading"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default class AsyncLazy extends BaseUIElement {
 | 
					 | 
				
			||||||
    private readonly _f: () => Promise<BaseUIElement>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(f: () => Promise<BaseUIElement>) {
 | 
					 | 
				
			||||||
        super()
 | 
					 | 
				
			||||||
        this._f = f
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    protected InnerConstructElement(): HTMLElement {
 | 
					 | 
				
			||||||
        // The caching of the BaseUIElement will guarantee that _f will only be called once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return new VariableUiElement(
 | 
					 | 
				
			||||||
            Stores.FromPromise(this._f()).map((el) => {
 | 
					 | 
				
			||||||
                if (el === undefined) {
 | 
					 | 
				
			||||||
                    return new Loading()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                return el
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
        ).ConstructElement()
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,50 +0,0 @@
 | 
				
			||||||
import BaseUIElement from "../BaseUIElement"
 | 
					 | 
				
			||||||
import { UIEventSource } from "../../Logic/UIEventSource"
 | 
					 | 
				
			||||||
import { VariableUiElement } from "./VariableUIElement"
 | 
					 | 
				
			||||||
import Combine from "./Combine"
 | 
					 | 
				
			||||||
import Locale from "../i18n/Locale"
 | 
					 | 
				
			||||||
import { Utils } from "../../Utils"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default class FilteredCombine extends VariableUiElement {
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Only shows item matching the search
 | 
					 | 
				
			||||||
     * If predicate of an item is undefined, it will be filtered out as soon as a non-null or non-empty search term is given
 | 
					 | 
				
			||||||
     * @param entries
 | 
					 | 
				
			||||||
     * @param searchedValue
 | 
					 | 
				
			||||||
     * @param options
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        entries: {
 | 
					 | 
				
			||||||
            element: BaseUIElement | string
 | 
					 | 
				
			||||||
            predicate?: (s: string) => boolean
 | 
					 | 
				
			||||||
        }[],
 | 
					 | 
				
			||||||
        searchedValue: UIEventSource<string>,
 | 
					 | 
				
			||||||
        options?: {
 | 
					 | 
				
			||||||
            onEmpty?: BaseUIElement | string
 | 
					 | 
				
			||||||
            innerClasses: string
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ) {
 | 
					 | 
				
			||||||
        entries = Utils.NoNull(entries)
 | 
					 | 
				
			||||||
        super(
 | 
					 | 
				
			||||||
            searchedValue.map(
 | 
					 | 
				
			||||||
                (searchTerm) => {
 | 
					 | 
				
			||||||
                    if (searchTerm === undefined || searchTerm === "") {
 | 
					 | 
				
			||||||
                        return new Combine(entries.map((e) => e.element)).SetClass(
 | 
					 | 
				
			||||||
                            options?.innerClasses ?? ""
 | 
					 | 
				
			||||||
                        )
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    const kept = entries.filter(
 | 
					 | 
				
			||||||
                        (entry) => entry?.predicate !== undefined && entry.predicate(searchTerm)
 | 
					 | 
				
			||||||
                    )
 | 
					 | 
				
			||||||
                    if (kept.length === 0) {
 | 
					 | 
				
			||||||
                        return options?.onEmpty
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    return new Combine(kept.map((entry) => entry.element)).SetClass(
 | 
					 | 
				
			||||||
                        options?.innerClasses ?? ""
 | 
					 | 
				
			||||||
                    )
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                [Locale.language]
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,13 +2,14 @@
 | 
				
			||||||
  import ToSvelte from "./ToSvelte.svelte"
 | 
					  import ToSvelte from "./ToSvelte.svelte"
 | 
				
			||||||
  import Svg from "../../Svg"
 | 
					  import Svg from "../../Svg"
 | 
				
			||||||
  import { twMerge } from "tailwind-merge"
 | 
					  import { twMerge } from "tailwind-merge"
 | 
				
			||||||
 | 
					  import Loading from "../../assets/svg/Loading.svelte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export let cls: string = undefined
 | 
					  export let cls: string = undefined
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class={twMerge("flex p-1 pl-2", cls)}>
 | 
					<div class={twMerge("flex p-1 pl-2", cls)}>
 | 
				
			||||||
  <div class="min-w-6 h-6 w-6 shrink-0 animate-spin self-center">
 | 
					  <div class="min-w-6 h-6 w-6 shrink-0 animate-spin self-center">
 | 
				
			||||||
    <ToSvelte construct={Svg.loading_svg()} />
 | 
					    <Loading/>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="ml-2">
 | 
					  <div class="ml-2">
 | 
				
			||||||
    <slot />
 | 
					    <slot />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,6 @@
 | 
				
			||||||
import BaseUIElement from "../BaseUIElement"
 | 
					import BaseUIElement from "../BaseUIElement"
 | 
				
			||||||
import { Store, UIEventSource } from "../../Logic/UIEventSource"
 | 
					import { Store, UIEventSource } from "../../Logic/UIEventSource"
 | 
				
			||||||
import { UIElement } from "../UIElement"
 | 
					import { UIElement } from "../UIElement"
 | 
				
			||||||
import { VariableUiElement } from "./VariableUIElement"
 | 
					 | 
				
			||||||
import Lazy from "./Lazy"
 | 
					 | 
				
			||||||
import Loading from "./Loading"
 | 
					 | 
				
			||||||
import SvelteUIElement from "./SvelteUIElement"
 | 
					import SvelteUIElement from "./SvelteUIElement"
 | 
				
			||||||
import SubtleLink from "./SubtleLink.svelte"
 | 
					import SubtleLink from "./SubtleLink.svelte"
 | 
				
			||||||
import Translations from "../i18n/Translations"
 | 
					import Translations from "../i18n/Translations"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,8 +21,8 @@
 | 
				
			||||||
  export let layer: LayerConfig
 | 
					  export let layer: LayerConfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export let linkable = true
 | 
					  export let linkable = true
 | 
				
			||||||
  let isLinked = Object.values(tags.data).some((v) => image.pictureUrl === v)
 | 
					  let targetValue = Object.values(image.osmTags)[0]
 | 
				
			||||||
 | 
					  let isLinked = new UIEventSource(Object.values(tags.data).some((v) => targetValue === v))
 | 
				
			||||||
  const t = Translations.t.image.nearby
 | 
					  const t = Translations.t.image.nearby
 | 
				
			||||||
  const providedImage: ProvidedImage = {
 | 
					  const providedImage: ProvidedImage = {
 | 
				
			||||||
    url: image.thumbUrl ?? image.pictureUrl,
 | 
					    url: image.thumbUrl ?? image.pictureUrl,
 | 
				
			||||||
| 
						 | 
					@ -33,10 +33,11 @@
 | 
				
			||||||
    id: Object.values(image.osmTags)[0],
 | 
					    id: Object.values(image.osmTags)[0],
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $: {
 | 
					  function applyLink(isLinked :boolean) {
 | 
				
			||||||
 | 
					    console.log("Applying linked image", isLinked, targetValue)
 | 
				
			||||||
    const currentTags = tags.data
 | 
					    const currentTags = tags.data
 | 
				
			||||||
    const key = Object.keys(image.osmTags)[0]
 | 
					    const key = Object.keys(image.osmTags)[0]
 | 
				
			||||||
    const url = image.osmTags[key]
 | 
					    const url = targetValue
 | 
				
			||||||
    if (isLinked) {
 | 
					    if (isLinked) {
 | 
				
			||||||
      const action = new LinkImageAction(currentTags.id, key, url, tags, {
 | 
					      const action = new LinkImageAction(currentTags.id, key, url, tags, {
 | 
				
			||||||
        theme: tags.data._orig_theme ?? state.layout.id,
 | 
					        theme: tags.data._orig_theme ?? state.layout.id,
 | 
				
			||||||
| 
						 | 
					@ -56,6 +57,7 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  isLinked.addCallback(isLinked => applyLink(isLinked))
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="flex w-fit shrink-0 flex-col">
 | 
					<div class="flex w-fit shrink-0 flex-col">
 | 
				
			||||||
| 
						 | 
					@ -68,7 +70,7 @@
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  {#if linkable}
 | 
					  {#if linkable}
 | 
				
			||||||
    <label>
 | 
					    <label>
 | 
				
			||||||
      <input bind:checked={isLinked} type="checkbox" />
 | 
					      <input bind:checked={$isLinked} type="checkbox" />
 | 
				
			||||||
      <SpecialTranslation t={t.link} {tags} {state} {layer} {feature} />
 | 
					      <SpecialTranslation t={t.link} {tags} {state} {layer} {feature} />
 | 
				
			||||||
    </label>
 | 
					    </label>
 | 
				
			||||||
  {/if}
 | 
					  {/if}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,10 @@ export default class PhoneValidator extends Validator {
 | 
				
			||||||
        if (country !== undefined) {
 | 
					        if (country !== undefined) {
 | 
				
			||||||
            countryCode = country()?.toUpperCase()
 | 
					            countryCode = country()?.toUpperCase()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (this.isShortCode(str, countryCode)) {
 | 
				
			||||||
 | 
					            return true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return parsePhoneNumberFromString(str, countryCode)?.isValid() ?? false
 | 
					        return parsePhoneNumberFromString(str, countryCode)?.isValid() ?? false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,9 +50,28 @@ export default class PhoneValidator extends Validator {
 | 
				
			||||||
        if (country) {
 | 
					        if (country) {
 | 
				
			||||||
            countryCode = country()
 | 
					            countryCode = country()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (this.isShortCode(str, countryCode?.toUpperCase())) {
 | 
				
			||||||
 | 
					            return str
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return parsePhoneNumberFromString(
 | 
					        return parsePhoneNumberFromString(
 | 
				
			||||||
            str,
 | 
					            str,
 | 
				
			||||||
            countryCode?.toUpperCase() as any
 | 
					            countryCode?.toUpperCase() as any
 | 
				
			||||||
        )?.formatInternational()
 | 
					        )?.formatInternational()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Indicates if the given string is a special 'short code' valid in the given country
 | 
				
			||||||
 | 
					     * see https://nl.wikipedia.org/wiki/Short_code
 | 
				
			||||||
 | 
					     * @param str a possible phone number
 | 
				
			||||||
 | 
					     * @param country the upper case, two-letter code for a country
 | 
				
			||||||
 | 
					     * @private
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private isShortCode(str: string, country: string) {
 | 
				
			||||||
 | 
					        if (country == "BE" && str.length === 4 && str.match(/[0-9]{4}/)) {
 | 
				
			||||||
 | 
					            return true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (country == "NL" && str.length === 4 && str.match(/14[0-9]{3}/)) {
 | 
				
			||||||
 | 
					            return true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ import { Feature, Point } from "geojson"
 | 
				
			||||||
import SvelteUIElement from "../Base/SvelteUIElement"
 | 
					import SvelteUIElement from "../Base/SvelteUIElement"
 | 
				
			||||||
import Confirm from "../../assets/svg/Confirm.svelte"
 | 
					import Confirm from "../../assets/svg/Confirm.svelte"
 | 
				
			||||||
import Relocation from "../../assets/svg/Relocation.svelte"
 | 
					import Relocation from "../../assets/svg/Relocation.svelte"
 | 
				
			||||||
 | 
					import Location from "../../assets/svg/Location.svelte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface MoveReason {
 | 
					export interface MoveReason {
 | 
				
			||||||
    text: Translation | string
 | 
					    text: Translation | string
 | 
				
			||||||
| 
						 | 
					@ -62,7 +63,7 @@ export class MoveWizardState {
 | 
				
			||||||
            reasons.push({
 | 
					            reasons.push({
 | 
				
			||||||
                text: t.reasons.reasonInaccurate,
 | 
					                text: t.reasons.reasonInaccurate,
 | 
				
			||||||
                invitingText: t.inviteToMove.reasonInaccurate,
 | 
					                invitingText: t.inviteToMove.reasonInaccurate,
 | 
				
			||||||
                icon: new SvelteUIElement(Confirm),
 | 
					                icon: new SvelteUIElement(Location),
 | 
				
			||||||
                changesetCommentValue: "improve_accuracy",
 | 
					                changesetCommentValue: "improve_accuracy",
 | 
				
			||||||
                lockBounds: true,
 | 
					                lockBounds: true,
 | 
				
			||||||
                includeSearch: false,
 | 
					                includeSearch: false,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,5 @@
 | 
				
			||||||
import Combine from "../../Base/Combine"
 | 
					import Combine from "../../Base/Combine"
 | 
				
			||||||
import BaseUIElement from "../../BaseUIElement"
 | 
					import BaseUIElement from "../../BaseUIElement"
 | 
				
			||||||
import Svg from "../../../Svg"
 | 
					 | 
				
			||||||
import Link from "../../Base/Link"
 | 
					import Link from "../../Base/Link"
 | 
				
			||||||
import { FixedUiElement } from "../../Base/FixedUiElement"
 | 
					import { FixedUiElement } from "../../Base/FixedUiElement"
 | 
				
			||||||
import Translations from "../../i18n/Translations"
 | 
					import Translations from "../../i18n/Translations"
 | 
				
			||||||
| 
						 | 
					@ -11,6 +10,10 @@ import { Stores, UIEventSource } from "../../../Logic/UIEventSource"
 | 
				
			||||||
import { OsmConnection } from "../../../Logic/Osm/OsmConnection"
 | 
					import { OsmConnection } from "../../../Logic/Osm/OsmConnection"
 | 
				
			||||||
import { VariableUiElement } from "../../Base/VariableUIElement"
 | 
					import { VariableUiElement } from "../../Base/VariableUIElement"
 | 
				
			||||||
import { SpecialVisualizationState } from "../../SpecialVisualization"
 | 
					import { SpecialVisualizationState } from "../../SpecialVisualization"
 | 
				
			||||||
 | 
					import SvelteUIElement from "../../Base/SvelteUIElement"
 | 
				
			||||||
 | 
					import Note from "../../../assets/svg/Note.svelte"
 | 
				
			||||||
 | 
					import Resolved from "../../../assets/svg/Resolved.svelte"
 | 
				
			||||||
 | 
					import Speech_bubble from "../../../assets/svg/Speech_bubble.svelte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class NoteCommentElement extends Combine {
 | 
					export default class NoteCommentElement extends Combine {
 | 
				
			||||||
    constructor(
 | 
					    constructor(
 | 
				
			||||||
| 
						 | 
					@ -32,11 +35,11 @@ export default class NoteCommentElement extends Combine {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let actionIcon: BaseUIElement
 | 
					        let actionIcon: BaseUIElement
 | 
				
			||||||
        if (comment.action === "opened" || comment.action === "reopened") {
 | 
					        if (comment.action === "opened" || comment.action === "reopened") {
 | 
				
			||||||
            actionIcon = Svg.note_svg()
 | 
					            actionIcon = new SvelteUIElement(Note)
 | 
				
			||||||
        } else if (comment.action === "closed") {
 | 
					        } else if (comment.action === "closed") {
 | 
				
			||||||
            actionIcon = Svg.resolved_svg()
 | 
					            actionIcon = new SvelteUIElement(Resolved)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            actionIcon = Svg.speech_bubble_svg()
 | 
					            actionIcon = new SvelteUIElement(Speech_bubble)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let user: BaseUIElement
 | 
					        let user: BaseUIElement
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,6 @@
 | 
				
			||||||
  import type { SpecialVisualizationState } from "../../SpecialVisualization"
 | 
					  import type { SpecialVisualizationState } from "../../SpecialVisualization"
 | 
				
			||||||
  import type { Feature } from "geojson"
 | 
					  import type { Feature } from "geojson"
 | 
				
			||||||
  import { Store, UIEventSource } from "../../../Logic/UIEventSource"
 | 
					  import { Store, UIEventSource } from "../../../Logic/UIEventSource"
 | 
				
			||||||
  import { onDestroy } from "svelte"
 | 
					 | 
				
			||||||
  import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
 | 
					  import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
 | 
				
			||||||
  import { twMerge } from "tailwind-merge"
 | 
					  import { twMerge } from "tailwind-merge"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +23,7 @@
 | 
				
			||||||
    throw "Config is undefined in tagRenderingAnswer"
 | 
					    throw "Config is undefined in tagRenderingAnswer"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  let trs: Store<{ then: Translation; icon?: string; iconClass?: string }[]> = tags.mapD((tags) =>
 | 
					  let trs: Store<{ then: Translation; icon?: string; iconClass?: string }[]> = tags.mapD((tags) =>
 | 
				
			||||||
    Utils.NoNull(config?.GetRenderValues(tags))
 | 
					    Utils.NoNull(config?.GetRenderValues(tags)),
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,9 +29,6 @@ export default class Zoomcontrol {
 | 
				
			||||||
        this._allowZooming.addCallback((allowed) => {
 | 
					        this._allowZooming.addCallback((allowed) => {
 | 
				
			||||||
            this.apply(allowed ? Zoomcontrol.initialValue : Zoomcontrol.noZoom)
 | 
					            this.apply(allowed ? Zoomcontrol.initialValue : Zoomcontrol.noZoom)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        Stores.Chronic(1000).addCallback((_) =>
 | 
					 | 
				
			||||||
            console.log(this.viewportElement.getAttribute("content"))
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private _resetZoom() {
 | 
					    private _resetZoom() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/index.ts
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/index.ts
									
										
									
									
									
								
							| 
						 | 
					@ -5,11 +5,12 @@ import ThemeViewGUI from "./UI/ThemeViewGUI.svelte"
 | 
				
			||||||
import { FixedUiElement } from "./UI/Base/FixedUiElement"
 | 
					import { FixedUiElement } from "./UI/Base/FixedUiElement"
 | 
				
			||||||
import Combine from "./UI/Base/Combine"
 | 
					import Combine from "./UI/Base/Combine"
 | 
				
			||||||
import { SubtleButton } from "./UI/Base/SubtleButton"
 | 
					import { SubtleButton } from "./UI/Base/SubtleButton"
 | 
				
			||||||
import Svg from "./Svg"
 | 
					 | 
				
			||||||
import { Utils } from "./Utils"
 | 
					import { Utils } from "./Utils"
 | 
				
			||||||
 | 
					import Download from "./assets/svg/Download.svelte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function webgl_support() {
 | 
					function webgl_support() {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        var canvas = document.createElement("canvas")
 | 
					        const canvas = document.createElement("canvas")
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
            !!window.WebGLRenderingContext &&
 | 
					            !!window.WebGLRenderingContext &&
 | 
				
			||||||
            (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))
 | 
					            (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))
 | 
				
			||||||
| 
						 | 
					@ -18,6 +19,7 @@ function webgl_support() {
 | 
				
			||||||
        return false
 | 
					        return false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// @ts-ignore
 | 
					// @ts-ignore
 | 
				
			||||||
try {
 | 
					try {
 | 
				
			||||||
    if (!webgl_support()) {
 | 
					    if (!webgl_support()) {
 | 
				
			||||||
| 
						 | 
					@ -31,16 +33,22 @@ try {
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        .catch((err) => {
 | 
					        .catch((err) => {
 | 
				
			||||||
            console.error("Error while initializing: ", err, err.stack)
 | 
					            console.error("Error while initializing: ", err, err.stack)
 | 
				
			||||||
 | 
					            const customDefinition = DetermineLayout.getCustomDefinition()
 | 
				
			||||||
            new Combine([
 | 
					            new Combine([
 | 
				
			||||||
                new FixedUiElement(err).SetClass("block alert"),
 | 
					                new FixedUiElement(err).SetClass("block alert"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                new SubtleButton(Svg.download_svg(), "Download the raw file").onClick(() =>
 | 
					                customDefinition?.length > 0
 | 
				
			||||||
 | 
					                    ? new SubtleButton(
 | 
				
			||||||
 | 
					                          new SvelteUIElement(Download),
 | 
				
			||||||
 | 
					                          "Download the raw file"
 | 
				
			||||||
 | 
					                      ).onClick(() =>
 | 
				
			||||||
                          Utils.offerContentsAsDownloadableFile(
 | 
					                          Utils.offerContentsAsDownloadableFile(
 | 
				
			||||||
                              DetermineLayout.getCustomDefinition(),
 | 
					                              DetermineLayout.getCustomDefinition(),
 | 
				
			||||||
                              "mapcomplete-theme.json",
 | 
					                              "mapcomplete-theme.json",
 | 
				
			||||||
                              { mimetype: "application/json" }
 | 
					                              { mimetype: "application/json" }
 | 
				
			||||||
                          )
 | 
					                          )
 | 
				
			||||||
                ),
 | 
					                      )
 | 
				
			||||||
 | 
					                    : undefined,
 | 
				
			||||||
            ]).AttachTo("maindiv")
 | 
					            ]).AttachTo("maindiv")
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
} catch (err) {
 | 
					} catch (err) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue