From 812563ddc5567ea04c05d0f90c1527a51fe642a7 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 13 Jul 2022 17:58:01 +0200 Subject: [PATCH 01/82] Add first dashboard layout --- UI/Base/Toggleable.ts | 5 +- UI/DashboardGui.ts | 186 +++++++++++++++++++++++++++++++++++++ UI/DefaultGUI.ts | 7 +- UI/Popup/FeatureInfoBox.ts | 4 +- index.ts | 10 +- 5 files changed, 201 insertions(+), 11 deletions(-) create mode 100644 UI/DashboardGui.ts diff --git a/UI/Base/Toggleable.ts b/UI/Base/Toggleable.ts index 848fc80b65..5b884fa6b0 100644 --- a/UI/Base/Toggleable.ts +++ b/UI/Base/Toggleable.ts @@ -26,7 +26,8 @@ export default class Toggleable extends Combine { public readonly isVisible = new UIEventSource(false) constructor(title: Title | Combine | BaseUIElement, content: BaseUIElement, options?: { - closeOnClick: true | boolean + closeOnClick?: true | boolean, + height?: "100vh" | string }) { super([title, content]) content.SetClass("animate-height border-l-4 pl-2 block") @@ -72,7 +73,7 @@ export default class Toggleable extends Combine { this.isVisible.addCallbackAndRun(isVisible => { if (isVisible) { - contentElement.style.maxHeight = "100vh" + contentElement.style.maxHeight = options?.height ?? "100vh" contentElement.style.overflowY = "auto" contentElement.style["-webkit-mask-image"] = "unset" } else { diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts new file mode 100644 index 0000000000..7fc5d7e3fc --- /dev/null +++ b/UI/DashboardGui.ts @@ -0,0 +1,186 @@ +import FeaturePipelineState from "../Logic/State/FeaturePipelineState"; +import {DefaultGuiState} from "./DefaultGuiState"; +import {FixedUiElement} from "./Base/FixedUiElement"; +import {Utils} from "../Utils"; +import Combine from "./Base/Combine"; +import ShowDataLayer from "./ShowDataLayer/ShowDataLayer"; +import LayerConfig from "../Models/ThemeConfig/LayerConfig"; +import * as home_location_json from "../assets/layers/home_location/home_location.json"; +import State from "../State"; +import Title from "./Base/Title"; +import {MinimapObj} from "./Base/Minimap"; +import BaseUIElement from "./BaseUIElement"; +import {VariableUiElement} from "./Base/VariableUIElement"; +import {GeoOperations} from "../Logic/GeoOperations"; +import {BBox} from "../Logic/BBox"; +import {OsmFeature} from "../Models/OsmFeature"; +import SearchAndGo from "./BigComponents/SearchAndGo"; +import FeatureInfoBox from "./Popup/FeatureInfoBox"; +import {UIEventSource} from "../Logic/UIEventSource"; +import LanguagePicker from "./LanguagePicker"; +import Lazy from "./Base/Lazy"; +import TagRenderingAnswer from "./Popup/TagRenderingAnswer"; + +export default class DashboardGui { + private readonly guiState: DefaultGuiState; + private readonly state: FeaturePipelineState; + private readonly currentView: UIEventSource = new UIEventSource("No selection") + + + constructor(state: FeaturePipelineState, guiState: DefaultGuiState) { + this.state = state; + this.guiState = guiState; + + } + + private singleElementCache: Record = {} + + private singleElementView(element: OsmFeature, layer: LayerConfig, distance: number): BaseUIElement { + if (this.singleElementCache[element.properties.id] !== undefined) { + return this.singleElementCache[element.properties.id] + } + const tags = this.state.allElements.getEventSourceById(element.properties.id) + const title = new Combine([new Title(new TagRenderingAnswer(tags, layer.title, this.state), 4), + Math.floor(distance) + "m away" + ]).SetClass("flex"); + // FeatureInfoBox.GenerateTitleBar(tags, layer, this.state) + + const currentView = this.currentView + const info = new Lazy(() => new Combine([ + FeatureInfoBox.GenerateTitleBar(tags, layer, this.state), + FeatureInfoBox.GenerateContent(tags, layer, this.state)]).SetStyle("overflox-x: hidden")); + title.onClick(() => { + currentView.setData(info) + }) + + currentView.addCallbackAndRunD(cv => { + if (cv == info) { + title.SetClass("bg-blue-300") + } else { + title.RemoveClass("bg-blue-300") + } + }) + + return title; + } + + private mainElementsView(elements: { element: OsmFeature, layer: LayerConfig, distance: number }[]): BaseUIElement { + const self = this + if (elements === undefined) { + return new FixedUiElement("Initializing") + } + if (elements.length == 0) { + return new FixedUiElement("No elements in view") + } + return new Combine(elements.map(e => self.singleElementView(e.element, e.layer, e.distance))) + } + + public setup(): void { + + const state = this.state; + + if (this.state.layoutToUse.customCss !== undefined) { + if (window.location.pathname.indexOf("index") >= 0) { + Utils.LoadCustomCss(this.state.layoutToUse.customCss) + } + } + const map = this.SetupMap(); + + Utils.downloadJson("./service-worker-version").then(data => console.log("Service worker", data)).catch(e => console.log("Service worker not active")) + + document.getElementById("centermessage").classList.add("hidden") + + const layers: Record = {} + for (const layer of state.layoutToUse.layers) { + layers[layer.id] = layer; + } + + + const elementsInview = map.bounds.map(bbox => { + if (bbox === undefined) { + return undefined + } + const location = map.location.data; + const loc: [number, number] = [location.lon, location.lat] + + const elementsWithMeta: { features: OsmFeature[], layer: string }[] = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox) + + let elements: { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] = [] + let seenElements = new Set() + for (const elementsWithMetaElement of elementsWithMeta) { + for (const element of elementsWithMetaElement.features) { + if (!bbox.overlapsWith(BBox.get(element))) { + continue + } + if (seenElements.has(element.properties.id)) { + continue + } + seenElements.add(element.properties.id) + const center = GeoOperations.centerpointCoordinates(element); + elements.push({ + element, + center, + layer: layers[elementsWithMetaElement.layer], + distance: GeoOperations.distanceBetween(loc, center) + }) + + } + } + + + elements.sort((e0, e1) => e0.distance - e1.distance) + + + return elements; + }, [this.state.featurePipeline.newDataLoadedSignal]); + + const welcome = new Combine([state.layoutToUse.description, state.layoutToUse.descriptionTail]) + const self = this; + self.currentView.setData(welcome) + new Combine([ + + new Combine([map.SetClass("w-full h-64"), + new Title(state.layoutToUse.title, 2).onClick(() => { + self.currentView.setData(welcome) + }), + new LanguagePicker(Object.keys(state.layoutToUse.title)), + new SearchAndGo(state), + new Title( + new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))) + .onClick(() => self.currentView.setData("Statistics")), + new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements)))]) + .SetClass("w-1/2 m-4"), + new VariableUiElement(this.currentView).SetClass("w-1/2 h-full overflow-y-auto m-4") + ]).SetClass("flex h-full") + .AttachTo("leafletDiv") + + } + + private SetupElement() { + const t = new Title("Elements in view", 3) + + } + + private SetupMap(): MinimapObj & BaseUIElement { + const state = this.state; + const guiState = this.guiState; + + new ShowDataLayer({ + leafletMap: state.leafletMap, + layerToShow: new LayerConfig(home_location_json, "home_location", true), + features: state.homeLocation, + state + }) + + state.leafletMap.addCallbackAndRunD(_ => { + // Lets assume that all showDataLayers are initialized at this point + state.selectedElement.ping() + State.state.locationControl.ping(); + return true; + }) + + return state.mainMapObject + + } + +} \ No newline at end of file diff --git a/UI/DefaultGUI.ts b/UI/DefaultGUI.ts index a14d38f258..9252faed34 100644 --- a/UI/DefaultGUI.ts +++ b/UI/DefaultGUI.ts @@ -44,14 +44,9 @@ export default class DefaultGUI { } public setup(){ - if (this.state.layoutToUse.customCss !== undefined) { - Utils.LoadCustomCss(this.state.layoutToUse.customCss); - } - this.SetupUIElements(); this.SetupMap() - if (this.state.layoutToUse.customCss !== undefined && window.location.pathname.indexOf("index") >= 0) { Utils.LoadCustomCss(this.state.layoutToUse.customCss) } @@ -144,7 +139,7 @@ export default class DefaultGUI { new ShowDataLayer({ leafletMap: state.leafletMap, - layerToShow: new LayerConfig(home_location_json, "all_known_layers", true), + layerToShow: new LayerConfig(home_location_json, "home_location", true), features: state.homeLocation, state }) diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts index a277a7d7f6..f3be3a2791 100644 --- a/UI/Popup/FeatureInfoBox.ts +++ b/UI/Popup/FeatureInfoBox.ts @@ -46,7 +46,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen { } - private static GenerateTitleBar(tags: UIEventSource, + public static GenerateTitleBar(tags: UIEventSource, layerConfig: LayerConfig, state: {}): BaseUIElement { const title = new TagRenderingAnswer(tags, layerConfig.title ?? new TagRenderingConfig("POI"), state) @@ -64,7 +64,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen { ]) } - private static GenerateContent(tags: UIEventSource, + public static GenerateContent(tags: UIEventSource, layerConfig: LayerConfig, state: FeaturePipelineState): BaseUIElement { let questionBoxes: Map = new Map(); diff --git a/index.ts b/index.ts index 355eb5e930..3221d0c074 100644 --- a/index.ts +++ b/index.ts @@ -9,6 +9,8 @@ import DefaultGUI from "./UI/DefaultGUI"; import State from "./State"; import ShowOverlayLayerImplementation from "./UI/ShowDataLayer/ShowOverlayLayerImplementation"; import {DefaultGuiState} from "./UI/DefaultGuiState"; +import {QueryParameters} from "./Logic/Web/QueryParameters"; +import DashboardGui from "./UI/DashboardGui"; // Workaround for a stupid crash: inject some functions which would give stupid circular dependencies or crash the other nodejs scripts running from console MinimapImplementation.initialize() @@ -36,7 +38,13 @@ class Init { // This 'leaks' the global state via the window object, useful for debugging // @ts-ignore window.mapcomplete_state = State.state; - new DefaultGUI(State.state, guiState).setup() + + const mode = QueryParameters.GetQueryParameter("mode", "map", "The mode the application starts in, e.g. 'map' or 'dashboard'") + if(mode.data === "dashboard"){ + new DashboardGui(State.state, guiState).setup() + }else{ + new DefaultGUI(State.state, guiState).setup() + } } } From 89278f6d7483a4d64199f35c0819027be93be5e5 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Fri, 15 Jul 2022 12:56:16 +0200 Subject: [PATCH 02/82] Styling tweaks to the dashboar --- UI/DashboardGui.ts | 184 +++++++++++------- assets/layers/parking/parking.json | 2 +- .../mapcomplete-changes.json | 55 ++---- css/index-tailwind-output.css | 80 +++++--- langs/layers/nl.json | 2 +- 5 files changed, 177 insertions(+), 146 deletions(-) diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 7fc5d7e3fc..a8a5931e86 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -20,17 +20,40 @@ import {UIEventSource} from "../Logic/UIEventSource"; import LanguagePicker from "./LanguagePicker"; import Lazy from "./Base/Lazy"; import TagRenderingAnswer from "./Popup/TagRenderingAnswer"; +import Hash from "../Logic/Web/Hash"; +import FilterView from "./BigComponents/FilterView"; +import {FilterState} from "../Models/FilteredLayer"; + export default class DashboardGui { - private readonly guiState: DefaultGuiState; private readonly state: FeaturePipelineState; private readonly currentView: UIEventSource = new UIEventSource("No selection") constructor(state: FeaturePipelineState, guiState: DefaultGuiState) { this.state = state; - this.guiState = guiState; + } + private viewSelector(shown: BaseUIElement, fullview: BaseUIElement, hash?: string): BaseUIElement { + const currentView = this.currentView + shown.SetClass("pl-1 pr-1 rounded-md") + shown.onClick(() => { + currentView.setData(fullview) + }) + Hash.hash.addCallbackAndRunD(h => { + if (h === hash) { + currentView.setData(fullview) + } + }) + currentView.addCallbackAndRunD(cv => { + if (cv == fullview) { + shown.SetClass("bg-unsubtle") + Hash.hash.setData(hash) + } else { + shown.RemoveClass("bg-unsubtle") + } + }) + return shown; } private singleElementCache: Record = {} @@ -41,27 +64,16 @@ export default class DashboardGui { } const tags = this.state.allElements.getEventSourceById(element.properties.id) const title = new Combine([new Title(new TagRenderingAnswer(tags, layer.title, this.state), 4), - Math.floor(distance) + "m away" - ]).SetClass("flex"); - // FeatureInfoBox.GenerateTitleBar(tags, layer, this.state) + distance < 900 ? Math.floor(distance)+"m away": + Utils.Round(distance / 1000) + "km away" + ]).SetClass("flex justify-between"); - const currentView = this.currentView const info = new Lazy(() => new Combine([ FeatureInfoBox.GenerateTitleBar(tags, layer, this.state), FeatureInfoBox.GenerateContent(tags, layer, this.state)]).SetStyle("overflox-x: hidden")); - title.onClick(() => { - currentView.setData(info) - }) - currentView.addCallbackAndRunD(cv => { - if (cv == info) { - title.SetClass("bg-blue-300") - } else { - title.RemoveClass("bg-blue-300") - } - }) - return title; + return this.viewSelector(title, info); } private mainElementsView(elements: { element: OsmFeature, layer: LayerConfig, distance: number }[]): BaseUIElement { @@ -75,6 +87,58 @@ export default class DashboardGui { return new Combine(elements.map(e => self.singleElementView(e.element, e.layer, e.distance))) } + private visibleElements(map: MinimapObj & BaseUIElement, layers: Record): { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[]{ + const bbox= map.bounds.data + if (bbox === undefined) { + return undefined + } + const location = map.location.data; + const loc: [number, number] = [location.lon, location.lat] + + const elementsWithMeta: { features: OsmFeature[], layer: string }[] = this.state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox) + + let elements: { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] = [] + let seenElements = new Set() + for (const elementsWithMetaElement of elementsWithMeta) { + const layer = layers[elementsWithMetaElement.layer] + const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); + for (const element of elementsWithMetaElement.features) { + console.log("Inspecting ", element.properties.id) + if(!filtered.isDisplayed.data){ + continue + } + if (seenElements.has(element.properties.id)) { + continue + } + seenElements.add(element.properties.id) + if (!bbox.overlapsWith(BBox.get(element))) { + continue + } + if (layer?.isShown?.GetRenderValue(element)?.Subs(element.properties)?.txt === "no") { + continue + } + const activeFilters : FilterState[] = Array.from(filtered.appliedFilters.data.values()); + if(activeFilters.some(filter => !filter?.currentFilter?.matchesProperties(element.properties))){ + continue + } + const center = GeoOperations.centerpointCoordinates(element); + elements.push({ + element, + center, + layer: layers[elementsWithMetaElement.layer], + distance: GeoOperations.distanceBetween(loc, center) + }) + + } + } + + + elements.sort((e0, e1) => e0.distance - e1.distance) + + + return elements; + } + public setup(): void { const state = this.state; @@ -95,75 +159,51 @@ export default class DashboardGui { layers[layer.id] = layer; } - - const elementsInview = map.bounds.map(bbox => { - if (bbox === undefined) { - return undefined + const self = this; + const elementsInview = new UIEventSource([]); + function update(){ + elementsInview.setData( self.visibleElements(map, layers)) + } + + map.bounds.addCallbackAndRun(update) + state.featurePipeline.newDataLoadedSignal.addCallback(update); + state.filteredLayers.addCallbackAndRun(fls => { + for (const fl of fls) { + fl.isDisplayed.addCallback(update) + fl.appliedFilters.addCallback(update) } - const location = map.location.data; - const loc: [number, number] = [location.lon, location.lat] - - const elementsWithMeta: { features: OsmFeature[], layer: string }[] = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox) - - let elements: { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] = [] - let seenElements = new Set() - for (const elementsWithMetaElement of elementsWithMeta) { - for (const element of elementsWithMetaElement.features) { - if (!bbox.overlapsWith(BBox.get(element))) { - continue - } - if (seenElements.has(element.properties.id)) { - continue - } - seenElements.add(element.properties.id) - const center = GeoOperations.centerpointCoordinates(element); - elements.push({ - element, - center, - layer: layers[elementsWithMetaElement.layer], - distance: GeoOperations.distanceBetween(loc, center) - }) - - } - } - - - elements.sort((e0, e1) => e0.distance - e1.distance) - - - return elements; - }, [this.state.featurePipeline.newDataLoadedSignal]); + }) const welcome = new Combine([state.layoutToUse.description, state.layoutToUse.descriptionTail]) - const self = this; self.currentView.setData(welcome) new Combine([ - new Combine([map.SetClass("w-full h-64"), - new Title(state.layoutToUse.title, 2).onClick(() => { - self.currentView.setData(welcome) - }), - new LanguagePicker(Object.keys(state.layoutToUse.title)), + new Combine([ + this.viewSelector(new Title(state.layoutToUse.title, 2), welcome), + map.SetClass("w-full h-64 shrink-0 rounded-lg"), new SearchAndGo(state), - new Title( - new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))) - .onClick(() => self.currentView.setData("Statistics")), - new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements)))]) - .SetClass("w-1/2 m-4"), - new VariableUiElement(this.currentView).SetClass("w-1/2 h-full overflow-y-auto m-4") + this.viewSelector(new Title( + new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))), new FixedUiElement("Stats")), + + this.viewSelector(new FixedUiElement("Filter"), + new Lazy(() => { + return new FilterView(state.filteredLayers, state.overlayToggles) + }) + ), + + new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block mx-2"))) + .SetClass("block shrink-2 overflow-x-scroll h-full border-2 border-subtle rounded-lg"), + new LanguagePicker(Object.keys(state.layoutToUse.title)).SetClass("mt-2") + ]) + .SetClass("w-1/2 m-4 flex flex-col"), + new VariableUiElement(this.currentView).SetClass("w-1/2 overflow-y-auto m-4 ml-0 p-2 border-2 border-subtle rounded-xl m-y-8") ]).SetClass("flex h-full") .AttachTo("leafletDiv") } - private SetupElement() { - const t = new Title("Elements in view", 3) - - } - private SetupMap(): MinimapObj & BaseUIElement { const state = this.state; - const guiState = this.guiState; new ShowDataLayer({ leafletMap: state.leafletMap, diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index 27159a4506..0e7d24f8cd 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -140,7 +140,7 @@ }, "render": { "en": "There are {capacity:disabled} disabled parking spots", - "nl": "Er zijn capacity:disabled} parkeerplaatsen voor gehandicapten" + "nl": "Er zijn {capacity:disabled} parkeerplaatsen voor gehandicapten" } }, { diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index ab3cce9cdf..60452cb5b3 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,19 +1,13 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete", - "nl": "Wijzigingen gemaakt met MapComplete", - "de": "Mit MapComplete vorgenommene Änderungen" + "en": "Changes made with MapComplete" }, "shortDescription": { - "en": "Shows changes made by MapComplete", - "nl": "Toont wijzigingen gemaakt met MapComplete", - "de": "Zeigt die mit MapComplete vorgenommenen Änderungen" + "en": "Shows changes made by MapComplete" }, "description": { - "en": "This maps shows all the changes made with MapComplete", - "nl": "Deze kaart toont alle wijzigingen die met MapComplete werden gemaakt", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen" + "en": "This maps shows all the changes made with MapComplete" }, "maintainer": "", "icon": "./assets/svg/logo.svg", @@ -28,8 +22,7 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers", - "de": "Zentrum der Änderungssätze" + "en": "Changeset centers" }, "minzoom": 0, "source": { @@ -43,47 +36,35 @@ ], "title": { "render": { - "en": "Changeset for {theme}", - "nl": "Wijzigingset voor {theme}", - "de": "Änderungssatz für {theme}" + "en": "Changeset for {theme}" } }, "description": { - "en": "Shows all MapComplete changes", - "nl": "Toont alle wijzigingen met MapComplete", - "de": "Zeigt alle MapComplete Änderungen" + "en": "Shows all MapComplete changes" }, "tagRenderings": [ { "id": "render_id", "render": { - "en": "Changeset {id}", - "nl": "Wijzigingset {id}", - "de": "Änderungssatz {id}" + "en": "Changeset {id}" } }, { "id": "contributor", "render": { - "en": "Change made by {_last_edit:contributor}", - "nl": "Wijziging gemaakt door {_last_edit:contributor}", - "de": "Geändert von {_last_edit:contributor}" + "en": "Change made by {_last_edit:contributor}" } }, { "id": "theme", "render": { - "en": "Change with theme {theme}", - "nl": "Wijziging met thema {theme}", - "de": "Änderung mit Thema {theme}" + "en": "Change with theme {theme}" }, "mappings": [ { "if": "theme~http.*", "then": { - "en": "Change with unofficial theme {theme}", - "nl": "Wijziging met officieus thema {theme}", - "de": "Änderung mit inoffiziellem Thema {theme}" + "en": "Change with unofficial theme {theme}" } } ] @@ -379,9 +360,7 @@ } ], "question": { - "en": "Themename contains {search}", - "nl": "Themanaam bevat {search}", - "de": "Themenname enthält {search}" + "en": "Themename contains {search}" } } ] @@ -397,9 +376,7 @@ } ], "question": { - "en": "Made by contributor {search}", - "nl": "Gemaakt door bijdrager {search}", - "de": "Erstellt von {search}" + "en": "Made by contributor {search}" } } ] @@ -415,9 +392,7 @@ } ], "question": { - "en": "Not made by contributor {search}", - "nl": "Niet gemaakt door bijdrager {search}", - "de": "Nicht erstellt von {search}" + "en": "Not made by contributor {search}" } } ] @@ -432,9 +407,7 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here", - "nl": "Meer statistieken kunnen hier gevonden worden", - "de": "Weitere Statistiken finden Sie hier" + "en": "More statistics can be found here" } }, { diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 36f99ace63..13e1d46b02 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -843,6 +843,11 @@ video { margin: 1px; } +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; @@ -866,6 +871,14 @@ video { margin-bottom: 1rem; } +.mt-2 { + margin-top: 0.5rem; +} + +.ml-0 { + margin-left: 0px; +} + .mt-4 { margin-top: 1rem; } @@ -890,10 +903,6 @@ video { margin-right: 1rem; } -.mt-2 { - margin-top: 0.5rem; -} - .mr-2 { margin-right: 0.5rem; } @@ -1046,6 +1055,10 @@ video { height: 2rem; } +.h-64 { + height: 16rem; +} + .h-full { height: 100%; } @@ -1090,10 +1103,6 @@ video { height: 0px; } -.h-64 { - height: 16rem; -} - .h-3 { height: 0.75rem; } @@ -1138,6 +1147,10 @@ video { width: 6rem; } +.w-1\/2 { + width: 50%; +} + .w-6 { width: 1.5rem; } @@ -1171,10 +1184,6 @@ video { width: min-content; } -.w-1\/2 { - width: 50%; -} - .w-max { width: -webkit-max-content; width: max-content; @@ -1356,6 +1365,10 @@ video { overflow-y: auto; } +.overflow-x-scroll { + overflow-x: scroll; +} + .truncate { overflow: hidden; text-overflow: ellipsis; @@ -1395,14 +1408,18 @@ video { border-radius: 0.25rem; } -.rounded-xl { - border-radius: 0.75rem; +.rounded-md { + border-radius: 0.375rem; } .rounded-lg { border-radius: 0.5rem; } +.rounded-xl { + border-radius: 0.75rem; +} + .rounded-sm { border-radius: 0.125rem; } @@ -1524,14 +1541,14 @@ video { padding: 1rem; } -.p-1 { - padding: 0.25rem; -} - .p-2 { padding: 0.5rem; } +.p-1 { + padding: 0.25rem; +} + .p-0 { padding: 0px; } @@ -1554,6 +1571,14 @@ video { padding-right: 0.5rem; } +.pl-1 { + padding-left: 0.25rem; +} + +.pr-1 { + padding-right: 0.25rem; +} + .pb-12 { padding-bottom: 3rem; } @@ -1578,14 +1603,6 @@ video { padding-bottom: 0.25rem; } -.pl-1 { - padding-left: 0.25rem; -} - -.pr-1 { - padding-right: 0.25rem; -} - .pt-2 { padding-top: 0.5rem; } @@ -1693,10 +1710,6 @@ video { text-transform: lowercase; } -.capitalize { - text-transform: capitalize; -} - .italic { font-style: italic; } @@ -1849,6 +1862,11 @@ video { color: var(--subtle-detail-color-contrast); } +.bg-unsubtle { + background-color: var(--unsubtle-detail-color); + color: var(--unsubtle-detail-color-contrast); +} + :root { /* The main colour scheme of mapcomplete is configured here. * For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these. @@ -2477,7 +2495,7 @@ input { .mapping-icon-small-height { /* A mapping icon type */ - height: 2rem; + height: 1.5rem; margin-right: 0.5rem; width: unset; } diff --git a/langs/layers/nl.json b/langs/layers/nl.json index cfba0ceeb3..11d154dcd3 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -6493,4 +6493,4 @@ } } } -} +} \ No newline at end of file From a89f5a0e3e4678ee4df31d39aff42217b44245df Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Sat, 16 Jul 2022 03:57:13 +0200 Subject: [PATCH 03/82] More dashboard view, add documentation in dashboard view --- .../Json/TagRenderingConfigJson.ts | 5 + Models/ThemeConfig/LayerConfig.ts | 54 +++++---- Models/ThemeConfig/TagRenderingConfig.ts | 17 ++- UI/Base/Link.ts | 4 +- UI/DashboardGui.ts | 106 +++++++++++------- UI/SpecialVisualizations.ts | 11 +- assets/tagRenderings/questions.json | 11 +- css/index-tailwind-output.css | 62 +++++----- index.css | 9 ++ scripts/generateDocs.ts | 7 +- 10 files changed, 189 insertions(+), 97 deletions(-) diff --git a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts index 1ccf1c2f85..1074c81452 100644 --- a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts @@ -25,6 +25,11 @@ export interface TagRenderingConfigJson { */ labels?: string[] + /** + * A human-readable text explaining what this tagRendering does + */ + description?: string | any + /** * Renders this value. Note that "{key}"-parts are substituted by the corresponding values of the element. * If neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value. diff --git a/Models/ThemeConfig/LayerConfig.ts b/Models/ThemeConfig/LayerConfig.ts index 0582c57ac7..1ecf1966f9 100644 --- a/Models/ThemeConfig/LayerConfig.ts +++ b/Models/ThemeConfig/LayerConfig.ts @@ -28,6 +28,9 @@ import {And} from "../../Logic/Tags/And"; import {Overpass} from "../../Logic/Osm/Overpass"; import Constants from "../Constants"; import {FixedUiElement} from "../../UI/Base/FixedUiElement"; +import Svg from "../../Svg"; +import {UIEventSource} from "../../Logic/UIEventSource"; +import {OsmTags} from "../OsmFeature"; export default class LayerConfig extends WithContextLoader { @@ -191,8 +194,8 @@ export default class LayerConfig extends WithContextLoader { this.doNotDownload = json.doNotDownload ?? false; this.passAllFeatures = json.passAllFeatures ?? false; this.minzoom = json.minzoom ?? 0; - if(json["minZoom"] !== undefined){ - throw "At "+context+": minzoom is written all lowercase" + if (json["minZoom"] !== undefined) { + throw "At " + context + ": minzoom is written all lowercase" } this.minzoomVisible = json.minzoomVisible ?? this.minzoom; this.shownByDefault = json.shownByDefault ?? true; @@ -352,7 +355,7 @@ export default class LayerConfig extends WithContextLoader { neededLayer: string; }[] = [] , addedByDefault = false, canBeIncluded = true): BaseUIElement { - const extraProps = [] + const extraProps : (string | BaseUIElement)[] = [] extraProps.push("This layer is shown at zoomlevel **" + this.minzoom + "** and higher") @@ -377,7 +380,11 @@ export default class LayerConfig extends WithContextLoader { } if (this.source.geojsonSource !== undefined) { - extraProps.push(" This layer is loaded from an external source, namely `" + this.source.geojsonSource + "`") + extraProps.push( + new Combine([ + Utils.runningFromConsole ? "" : undefined, + "This layer is loaded from an external source, namely ", + new FixedUiElement( this.source.geojsonSource).SetClass("code")])); } } else { extraProps.push("This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.") @@ -409,16 +416,16 @@ export default class LayerConfig extends WithContextLoader { if (values == undefined) { return undefined } - const embedded: (Link | string)[] = values.values?.map(v => Link.OsmWiki(values.key, v, true)) ?? ["_no preset options defined, or no values in them_"] + const embedded: (Link | string)[] = values.values?.map(v => Link.OsmWiki(values.key, v, true).SetClass("mr-2")) ?? ["_no preset options defined, or no values in them_"] return [ new Combine([ new Link( - "", - "https://taginfo.openstreetmap.org/keys/" + values.key + "#values" + Utils.runningFromConsole ? "" : Svg.statistics_svg().SetClass("w-4 h-4 mr-2"), + "https://taginfo.openstreetmap.org/keys/" + values.key + "#values", true ), Link.OsmWiki(values.key) - ]), + ]).SetClass("flex"), values.type === undefined ? "Multiple choice" : new Link(values.type, "../SpecialInputElements.md#" + values.type), - new Combine(embedded) + new Combine(embedded).SetClass("flex") ]; })) @@ -427,18 +434,27 @@ export default class LayerConfig extends WithContextLoader { quickOverview = new Combine([ new FixedUiElement("Warning: ").SetClass("bold"), "this quick overview is incomplete", - new Table(["attribute", "type", "values which are supported by this layer"], tableRows) + new Table(["attribute", "type", "values which are supported by this layer"], tableRows).SetClass("zebra-table") ]).SetClass("flex-col flex") } - const icon = this.mapRendering - .filter(mr => mr.location.has("point")) - .map(mr => mr.icon?.render?.txt) - .find(i => i !== undefined) - let iconImg = "" - if (icon !== undefined) { - // This is for the documentation, so we have to use raw HTML - iconImg = ` ` + + let iconImg: BaseUIElement = new FixedUiElement("") + + if (Utils.runningFromConsole) { + const icon = this.mapRendering + .filter(mr => mr.location.has("point")) + .map(mr => mr.icon?.render?.txt) + .find(i => i !== undefined) + // This is for the documentation in a markdown-file, so we have to use raw HTML + if (icon !== undefined) { + iconImg = new FixedUiElement(` `) + } + } else { + iconImg = this.mapRendering + .filter(mr => mr.location.has("point")) + .map(mr => mr.GenerateLeafletStyle(new UIEventSource({id:"node/-1"}), false, {includeBadges: false}).html) + .find(i => i !== undefined) } let overpassLink: BaseUIElement = undefined; @@ -467,7 +483,7 @@ export default class LayerConfig extends WithContextLoader { new Title("Supported attributes", 2), quickOverview, ...this.tagRenderings.map(tr => tr.GenerateDocumentation()) - ]).SetClass("flex-col") + ]).SetClass("flex-col").SetClass("link-underline") } public CustomCodeSnippets(): string[] { diff --git a/Models/ThemeConfig/TagRenderingConfig.ts b/Models/ThemeConfig/TagRenderingConfig.ts index 656d880de1..2b09c765e3 100644 --- a/Models/ThemeConfig/TagRenderingConfig.ts +++ b/Models/ThemeConfig/TagRenderingConfig.ts @@ -14,6 +14,8 @@ import List from "../../UI/Base/List"; import {MappingConfigJson, QuestionableTagRenderingConfigJson} from "./Json/QuestionableTagRenderingConfigJson"; import {FixedUiElement} from "../../UI/Base/FixedUiElement"; import {Paragraph} from "../../UI/Base/Paragraph"; +import spec = Mocha.reporters.spec; +import SpecialVisualizations from "../../UI/SpecialVisualizations"; export interface Mapping { readonly if: TagsFilter, @@ -37,6 +39,7 @@ export default class TagRenderingConfig { public readonly render?: TypedTranslation; public readonly question?: TypedTranslation; public readonly condition?: TagsFilter; + public readonly description?: Translation; public readonly configuration_warnings: string[] = [] @@ -55,6 +58,7 @@ export default class TagRenderingConfig { public readonly mappings?: Mapping[] public readonly labels: string[] + constructor(json: string | QuestionableTagRenderingConfigJson, context?: string) { if (json === undefined) { throw "Initing a TagRenderingConfig with undefined in " + context; @@ -106,6 +110,7 @@ export default class TagRenderingConfig { this.labels = json.labels ?? [] this.render = Translations.T(json.render, translationKey + ".render"); this.question = Translations.T(json.question, translationKey + ".question"); + this.description = Translations.T(json.description, translationKey + ".description"); this.condition = TagUtils.Tag(json.condition ?? {"and": []}, `${context}.condition`); if (json.freeform) { @@ -563,8 +568,8 @@ export default class TagRenderingConfig { new Combine( [ new FixedUiElement(m.then.txt).SetClass("bold"), - "corresponds with ", - m.if.asHumanString(true, false, {}) + " corresponds with ", + new FixedUiElement( m.if.asHumanString(true, false, {})).SetClass("code") ] ) ] @@ -599,12 +604,14 @@ export default class TagRenderingConfig { labels = new Combine([ "This tagrendering has labels ", ...this.labels.map(label => new FixedUiElement(label).SetClass("code")) - ]) + ]).SetClass("flex") } + return new Combine([ new Title(this.id, 3), + this.description, this.question !== undefined ? - new Combine(["The question is ", new FixedUiElement(this.question.txt).SetClass("bold")]) : + new Combine(["The question is ", new FixedUiElement(this.question.txt).SetClass("font-bold bold")]) : new FixedUiElement( "This tagrendering has no question and is thus read-only" ).SetClass("italic"), @@ -613,6 +620,6 @@ export default class TagRenderingConfig { condition, group, labels - ]).SetClass("flex-col"); + ]).SetClass("flex flex-col"); } } \ No newline at end of file diff --git a/UI/Base/Link.ts b/UI/Base/Link.ts index 9b640c1b1b..af2a79b35c 100644 --- a/UI/Base/Link.ts +++ b/UI/Base/Link.ts @@ -26,9 +26,9 @@ export default class Link extends BaseUIElement { if (!hideKey) { k = key + "=" } - return new Link(k + value, `https://wiki.openstreetmap.org/wiki/Tag:${key}%3D${value}`) + return new Link(k + value, `https://wiki.openstreetmap.org/wiki/Tag:${key}%3D${value}`, true) } - return new Link(key, "https://wiki.openstreetmap.org/wiki/Key:" + key) + return new Link(key, "https://wiki.openstreetmap.org/wiki/Key:" + key, true) } AsMarkdown(): string { diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index a8a5931e86..68e207e302 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -23,30 +23,35 @@ import TagRenderingAnswer from "./Popup/TagRenderingAnswer"; import Hash from "../Logic/Web/Hash"; import FilterView from "./BigComponents/FilterView"; import {FilterState} from "../Models/FilteredLayer"; +import Translations from "./i18n/Translations"; +import Constants from "../Models/Constants"; +import {Layer} from "leaflet"; +import doc = Mocha.reporters.doc; export default class DashboardGui { private readonly state: FeaturePipelineState; - private readonly currentView: UIEventSource = new UIEventSource("No selection") + private readonly currentView: UIEventSource<{ title: string | BaseUIElement, contents: string | BaseUIElement }> = new UIEventSource(undefined) constructor(state: FeaturePipelineState, guiState: DefaultGuiState) { this.state = state; } - private viewSelector(shown: BaseUIElement, fullview: BaseUIElement, hash?: string): BaseUIElement { + private viewSelector(shown: BaseUIElement, title: string | BaseUIElement, contents: string | BaseUIElement, hash?: string): BaseUIElement { const currentView = this.currentView + const v = {title, contents} shown.SetClass("pl-1 pr-1 rounded-md") shown.onClick(() => { - currentView.setData(fullview) + currentView.setData(v) }) Hash.hash.addCallbackAndRunD(h => { if (h === hash) { - currentView.setData(fullview) + currentView.setData(v) } }) currentView.addCallbackAndRunD(cv => { - if (cv == fullview) { + if (cv == v) { shown.SetClass("bg-unsubtle") Hash.hash.setData(hash) } else { @@ -64,16 +69,15 @@ export default class DashboardGui { } const tags = this.state.allElements.getEventSourceById(element.properties.id) const title = new Combine([new Title(new TagRenderingAnswer(tags, layer.title, this.state), 4), - distance < 900 ? Math.floor(distance)+"m away": - Utils.Round(distance / 1000) + "km away" + distance < 900 ? Math.floor(distance) + "m away" : + Utils.Round(distance / 1000) + "km away" ]).SetClass("flex justify-between"); - const info = new Lazy(() => new Combine([ - FeatureInfoBox.GenerateTitleBar(tags, layer, this.state), - FeatureInfoBox.GenerateContent(tags, layer, this.state)]).SetStyle("overflox-x: hidden")); - - - return this.viewSelector(title, info); + return this.singleElementCache[element.properties.id] = this.viewSelector(title, + new Lazy(() => FeatureInfoBox.GenerateTitleBar(tags, layer, this.state)), + new Lazy(() => FeatureInfoBox.GenerateContent(tags, layer, this.state)), + // element.properties.id + ); } private mainElementsView(elements: { element: OsmFeature, layer: LayerConfig, distance: number }[]): BaseUIElement { @@ -87,8 +91,8 @@ export default class DashboardGui { return new Combine(elements.map(e => self.singleElementView(e.element, e.layer, e.distance))) } - private visibleElements(map: MinimapObj & BaseUIElement, layers: Record): { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[]{ - const bbox= map.bounds.data + private visibleElements(map: MinimapObj & BaseUIElement, layers: Record): { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] { + const bbox = map.bounds.data if (bbox === undefined) { return undefined } @@ -101,10 +105,10 @@ export default class DashboardGui { let seenElements = new Set() for (const elementsWithMetaElement of elementsWithMeta) { const layer = layers[elementsWithMetaElement.layer] - const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); - for (const element of elementsWithMetaElement.features) { - console.log("Inspecting ", element.properties.id) - if(!filtered.isDisplayed.data){ + const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); + for (let i = 0; i < elementsWithMetaElement.features.length; i++) { + const element = elementsWithMetaElement.features[i]; + if (!filtered.isDisplayed.data) { continue } if (seenElements.has(element.properties.id)) { @@ -117,8 +121,8 @@ export default class DashboardGui { if (layer?.isShown?.GetRenderValue(element)?.Subs(element.properties)?.txt === "no") { continue } - const activeFilters : FilterState[] = Array.from(filtered.appliedFilters.data.values()); - if(activeFilters.some(filter => !filter?.currentFilter?.matchesProperties(element.properties))){ + const activeFilters: FilterState[] = Array.from(filtered.appliedFilters.data.values()); + if (activeFilters.some(filter => !filter?.currentFilter?.matchesProperties(element.properties))) { continue } const center = GeoOperations.centerpointCoordinates(element); @@ -138,7 +142,24 @@ export default class DashboardGui { return elements; } - + + private documentationButtonFor(layerConfig: LayerConfig): BaseUIElement { + return this.viewSelector(Translations.W(layerConfig.name?.Clone() ?? layerConfig.id), new Combine(["Documentation about ", layerConfig.name?.Clone() ?? layerConfig.id]), + layerConfig.GenerateDocumentation([]), + "documentation-" + layerConfig.id) + } + + private allDocumentationButtons(): BaseUIElement { + const layers = this.state.layoutToUse.layers.filter(l => Constants.priviliged_layers.indexOf(l.id) < 0) + .filter(l => !l.id.startsWith("note_import_")); + + if(layers.length === 1){ + return this.documentationButtonFor(layers[0]) + } + return this.viewSelector(new FixedUiElement("Documentation"), "Documentation", + new Combine(layers.map(l => this.documentationButtonFor(l).SetClass("flex flex-col")))) + } + public setup(): void { const state = this.state; @@ -161,10 +182,11 @@ export default class DashboardGui { const self = this; const elementsInview = new UIEventSource([]); - function update(){ - elementsInview.setData( self.visibleElements(map, layers)) + + function update() { + elementsInview.setData(self.visibleElements(map, layers)) } - + map.bounds.addCallbackAndRun(update) state.featurePipeline.newDataLoadedSignal.addCallback(update); state.filteredLayers.addCallbackAndRun(fls => { @@ -175,28 +197,36 @@ export default class DashboardGui { }) const welcome = new Combine([state.layoutToUse.description, state.layoutToUse.descriptionTail]) - self.currentView.setData(welcome) + self.currentView.setData({title: state.layoutToUse.title, contents: welcome}) new Combine([ new Combine([ - this.viewSelector(new Title(state.layoutToUse.title, 2), welcome), + this.viewSelector(new Title(state.layoutToUse.title.Clone(), 2), state.layoutToUse.title.Clone(), welcome, "welcome"), map.SetClass("w-full h-64 shrink-0 rounded-lg"), new SearchAndGo(state), this.viewSelector(new Title( - new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))), new FixedUiElement("Stats")), - + new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))), + "Statistics", + new FixedUiElement("Stats"), "statistics"), + this.viewSelector(new FixedUiElement("Filter"), + "Filters", new Lazy(() => { - return new FilterView(state.filteredLayers, state.overlayToggles) - }) + return new FilterView(state.filteredLayers, state.overlayToggles) + }), "filters" ), - - new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block mx-2"))) - .SetClass("block shrink-2 overflow-x-scroll h-full border-2 border-subtle rounded-lg"), - new LanguagePicker(Object.keys(state.layoutToUse.title)).SetClass("mt-2") - ]) - .SetClass("w-1/2 m-4 flex flex-col"), - new VariableUiElement(this.currentView).SetClass("w-1/2 overflow-y-auto m-4 ml-0 p-2 border-2 border-subtle rounded-xl m-y-8") + + new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block m-2"))) + .SetClass("block shrink-2 overflow-x-auto h-full border-2 border-subtle rounded-lg"), + this.allDocumentationButtons(), + new LanguagePicker(Object.keys(state.layoutToUse.title.translations)).SetClass("mt-2") + ]).SetClass("w-1/2 m-4 flex flex-col shrink-0 grow-0"), + new VariableUiElement(this.currentView.map(({title, contents}) => { + return new Combine([ + new Title(Translations.W(title), 2).SetClass("shrink-0 border-b-4 border-subtle"), + Translations.W(contents).SetClass("shrink-2 overflow-y-auto block") + ]).SetClass("flex flex-col h-full") + })).SetClass("w-1/2 m-4 p-2 border-2 border-subtle rounded-xl m-4 ml-0 mr-8 shrink-0 grow-0") ]).SetClass("flex h-full") .AttachTo("leafletDiv") diff --git a/UI/SpecialVisualizations.ts b/UI/SpecialVisualizations.ts index d036b9bec9..ea538f4abd 100644 --- a/UI/SpecialVisualizations.ts +++ b/UI/SpecialVisualizations.ts @@ -57,6 +57,7 @@ import {SaveButton} from "./Popup/SaveButton"; import {MapillaryLink} from "./BigComponents/MapillaryLink"; import {CheckBox} from "./Input/Checkboxes"; import Slider from "./Input/Slider"; +import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig"; export interface SpecialVisualization { funcName: string, @@ -207,7 +208,7 @@ class NearbyImageVis implements SpecialVisualization { const nearby = new Lazy(() => { const towardsCenter = new CheckBox(t.onlyTowards, false) - const radiusValue = state?.osmConnection?.GetPreference("nearby-images-radius","300").sync(s => Number(s), [], i => ""+i) ?? new UIEventSource(300); + const radiusValue = state?.osmConnection?.GetPreference("nearby-images-radius", "300").sync(s => Number(s), [], i => "" + i) ?? new UIEventSource(300); const radius = new Slider(25, 500, { value: @@ -285,7 +286,13 @@ export default class SpecialVisualizations { public static specialVisualizations: SpecialVisualization[] = SpecialVisualizations.init() - public static DocumentationFor(viz: SpecialVisualization): BaseUIElement { + public static DocumentationFor(viz: string | SpecialVisualization): BaseUIElement | undefined { + if (typeof viz === "string") { + viz = SpecialVisualizations.specialVisualizations.find(sv => sv.funcName === viz) + } + if(viz === undefined){ + return undefined; + } return new Combine( [ new Title(viz.funcName, 3), diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index aeafac6f44..73f0edb1e3 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -1,21 +1,27 @@ { "id": "shared_questions", "questions": { + "description": "Show the images block at this location", "id": "questions" }, "images": { + "description": "This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata`", "render": "{image_carousel()}{image_upload()}{nearby_images(expandable)}" }, "mapillary": { + "description": "Shows a button to open Mapillary on this location", "render": "{mapillary()}" }, "export_as_gpx": { + "description": "Shows a button to export this feature as GPX. Especially useful for route relations", "render": "{export_as_gpx()}" }, "export_as_geojson": { + "description": "Shows a button to export this feature as geojson. Especially useful for debugging or using this in other programs", "render": "{export_as_geojson()}" }, "wikipedia": { + "description": "Shows a wikipedia box with the corresponding wikipedia article", "render": "{wikipedia():max-height:25rem}", "question": { "en": "What is the corresponding Wikidata entity?", @@ -93,9 +99,12 @@ } }, "reviews": { + "description": "Shows the reviews module (including the possibility to leave a review)", + "render": "{reviews()}" }, "minimap": { + "description": "Shows a small map with the feature. Added by default to every popup", "render": "{minimap(18, id): width:100%; height:8rem; border-radius:2rem; overflow: hidden; pointer-events: none;}" }, "phone": { @@ -855,7 +864,7 @@ "render": "" }, "all_tags": { - "#": "Prints all the tags", + "description": "Shows a table with all the tags of the feature", "render": "{all_tags()}" }, "level": { diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 13e1d46b02..4065ece841 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -819,6 +819,10 @@ video { margin: 1.25rem; } +.m-2 { + margin: 0.5rem; +} + .m-0\.5 { margin: 0.125rem; } @@ -831,10 +835,6 @@ video { margin: 0.75rem; } -.m-2 { - margin: 0.5rem; -} - .m-6 { margin: 1.5rem; } @@ -843,11 +843,6 @@ video { margin: 1px; } -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; @@ -879,6 +874,10 @@ video { margin-left: 0px; } +.mr-8 { + margin-right: 2rem; +} + .mt-4 { margin-top: 1rem; } @@ -887,6 +886,10 @@ video { margin-top: 1.5rem; } +.mr-2 { + margin-right: 0.5rem; +} + .mt-1 { margin-top: 0.25rem; } @@ -903,10 +906,6 @@ video { margin-right: 1rem; } -.mr-2 { - margin-right: 0.5rem; -} - .mb-2 { margin-bottom: 0.5rem; } @@ -1071,14 +1070,14 @@ video { height: 3rem; } -.h-1\/2 { - height: 50%; -} - .h-4 { height: 1rem; } +.h-1\/2 { + height: 50%; +} + .h-screen { height: 100vh; } @@ -1163,14 +1162,14 @@ video { width: 3rem; } -.w-0 { - width: 0px; -} - .w-4 { width: 1rem; } +.w-0 { + width: 0px; +} + .w-screen { width: 100vw; } @@ -1361,12 +1360,12 @@ video { overflow: scroll; } -.overflow-y-auto { - overflow-y: auto; +.overflow-x-auto { + overflow-x: auto; } -.overflow-x-scroll { - overflow-x: scroll; +.overflow-y-auto { + overflow-y: auto; } .truncate { @@ -1441,6 +1440,10 @@ video { border-width: 4px; } +.border-b-4 { + border-bottom-width: 4px; +} + .border-l-4 { border-left-width: 4px; } @@ -2447,6 +2450,15 @@ input { box-sizing: border-box; } +.code { + display: inline-block; + background-color: lightgray; + padding: 0.5em; + word-break: break-word; + color: black; + box-sizing: border-box; +} + /** Switch layout **/ .small-image img { diff --git a/index.css b/index.css index 85da5cdc77..61a1fa1f52 100644 --- a/index.css +++ b/index.css @@ -580,6 +580,15 @@ input { } +.code { + display: inline-block; + background-color: lightgray; + padding: 0.5em; + word-break: break-word; + color: black; + box-sizing: border-box; +} + /** Switch layout **/ .small-image img { height: 1em; diff --git a/scripts/generateDocs.ts b/scripts/generateDocs.ts index a4e03cc7ff..cdf296b60e 100644 --- a/scripts/generateDocs.ts +++ b/scripts/generateDocs.ts @@ -1,18 +1,15 @@ import Combine from "../UI/Base/Combine"; import BaseUIElement from "../UI/BaseUIElement"; import Translations from "../UI/i18n/Translations"; -import {existsSync, mkdir, mkdirSync, writeFileSync} from "fs"; +import {existsSync, mkdirSync, writeFileSync} from "fs"; import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; import TableOfContents from "../UI/Base/TableOfContents"; -import SimpleMetaTaggers, {SimpleMetaTagger} from "../Logic/SimpleMetaTagger"; +import SimpleMetaTaggers from "../Logic/SimpleMetaTagger"; import ValidatedTextField from "../UI/Input/ValidatedTextField"; -import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import SpecialVisualizations from "../UI/SpecialVisualizations"; -import FeatureSwitchState from "../Logic/State/FeatureSwitchState"; import {ExtraFunctions} from "../Logic/ExtraFunctions"; import Title from "../UI/Base/Title"; import Minimap from "../UI/Base/Minimap"; -import {QueryParameters} from "../Logic/Web/QueryParameters"; import QueryParameterDocumentation from "../UI/QueryParameterDocumentation"; import ScriptUtils from "./ScriptUtils"; import List from "../UI/Base/List"; From ddc0aebdc3236c2b6f65c8d6c424293f14aa466c Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 00:28:26 +0200 Subject: [PATCH 04/82] Fix addition of new points --- UI/BigComponents/SimpleAddUI.ts | 19 ++++++++++--- UI/DashboardGui.ts | 47 ++++++++++++++++++++++++++------- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/UI/BigComponents/SimpleAddUI.ts b/UI/BigComponents/SimpleAddUI.ts index 78fa604a0d..4566f4115b 100644 --- a/UI/BigComponents/SimpleAddUI.ts +++ b/UI/BigComponents/SimpleAddUI.ts @@ -43,6 +43,14 @@ export interface PresetInfo extends PresetConfig { export default class SimpleAddUI extends Toggle { + /** + * + * @param isShown + * @param resetScrollSignal + * @param filterViewIsOpened + * @param state + * @param takeLocationFrom: defaults to state.lastClickLocation. Take this location to add the new point around + */ constructor(isShown: UIEventSource, resetScrollSignal: UIEventSource, filterViewIsOpened: UIEventSource, @@ -59,7 +67,9 @@ export default class SimpleAddUI extends Toggle { filteredLayers: UIEventSource, featureSwitchFilter: UIEventSource, backgroundLayer: UIEventSource - }) { + }, + takeLocationFrom?: UIEventSource<{lat: number, lon: number}> + ) { const loginButton = new SubtleButton(Svg.osm_logo_ui(), Translations.t.general.add.pleaseLogin.Clone()) .onClick(() => state.osmConnection.AttemptLogin()); const readYourMessages = new Combine([ @@ -68,7 +78,8 @@ export default class SimpleAddUI extends Toggle { Translations.t.general.goToInbox, {url: "https://www.openstreetmap.org/messages/inbox", newTab: false}) ]); - + + takeLocationFrom = takeLocationFrom ?? state.LastClickLocation const selectedPreset = new UIEventSource(undefined); selectedPreset.addCallback(_ => { resetScrollSignal.ping(); @@ -76,7 +87,7 @@ export default class SimpleAddUI extends Toggle { isShown.addCallback(_ => selectedPreset.setData(undefined)) // Clear preset selection when the UI is closed/opened - state.LastClickLocation.addCallback(_ => selectedPreset.setData(undefined)) + takeLocationFrom.addCallback(_ => selectedPreset.setData(undefined)) const presetsOverview = SimpleAddUI.CreateAllPresetsPanel(selectedPreset, state) @@ -120,7 +131,7 @@ export default class SimpleAddUI extends Toggle { const message = Translations.t.general.add.addNew.Subs({category: preset.name}, preset.name["context"]); return new ConfirmLocationOfPoint(state, filterViewIsOpened, preset, message, - state.LastClickLocation.data, + takeLocationFrom.data, confirm, cancel, () => { diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 68e207e302..acf0ea5a16 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -25,8 +25,7 @@ import FilterView from "./BigComponents/FilterView"; import {FilterState} from "../Models/FilteredLayer"; import Translations from "./i18n/Translations"; import Constants from "../Models/Constants"; -import {Layer} from "leaflet"; -import doc = Mocha.reporters.doc; +import SimpleAddUI from "./BigComponents/SimpleAddUI"; export default class DashboardGui { @@ -152,11 +151,11 @@ export default class DashboardGui { private allDocumentationButtons(): BaseUIElement { const layers = this.state.layoutToUse.layers.filter(l => Constants.priviliged_layers.indexOf(l.id) < 0) .filter(l => !l.id.startsWith("note_import_")); - - if(layers.length === 1){ + + if (layers.length === 1) { return this.documentationButtonFor(layers[0]) } - return this.viewSelector(new FixedUiElement("Documentation"), "Documentation", + return this.viewSelector(new FixedUiElement("Documentation"), "Documentation", new Combine(layers.map(l => this.documentationButtonFor(l).SetClass("flex flex-col")))) } @@ -196,10 +195,39 @@ export default class DashboardGui { } }) + const filterView = new Lazy(() => { + return new FilterView(state.filteredLayers, state.overlayToggles) + }); const welcome = new Combine([state.layoutToUse.description, state.layoutToUse.descriptionTail]) self.currentView.setData({title: state.layoutToUse.title, contents: welcome}) + const filterViewIsOpened = new UIEventSource(false) + filterViewIsOpened.addCallback(fv => self.currentView.setData({title: "filters", contents: filterView})) + + const newPointIsShown = new UIEventSource(false); + const addNewPoint = new SimpleAddUI( + new UIEventSource(true), + new UIEventSource(undefined), + filterViewIsOpened, + state, + state.locationControl + ); + const addNewPointTitle = "Add a missing point" + this.currentView.addCallbackAndRunD(cv => { + newPointIsShown.setData(cv.contents === addNewPoint) + }) + newPointIsShown.addCallbackAndRun(isShown => { + if(isShown){ + if(self.currentView.data.contents !== addNewPoint){ + self.currentView.setData({title: addNewPointTitle, contents: addNewPoint}) + } + }else{ + if(self.currentView.data.contents === addNewPoint){ + self.currentView.setData(undefined) + } + } + }) + new Combine([ - new Combine([ this.viewSelector(new Title(state.layoutToUse.title.Clone(), 2), state.layoutToUse.title.Clone(), welcome, "welcome"), map.SetClass("w-full h-64 shrink-0 rounded-lg"), @@ -210,10 +238,9 @@ export default class DashboardGui { new FixedUiElement("Stats"), "statistics"), this.viewSelector(new FixedUiElement("Filter"), - "Filters", - new Lazy(() => { - return new FilterView(state.filteredLayers, state.overlayToggles) - }), "filters" + "Filters", filterView, "filters"), + this.viewSelector(new Combine([ "Add a missing point"]), addNewPointTitle, + addNewPoint ), new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block m-2"))) From 28f1dc3d33a8b8d4debf0970e989e7a629d8ae64 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 18 Jul 2022 08:21:16 +0000 Subject: [PATCH 05/82] testing code for slider to change levels --- UI/BaseUIElement.ts | 19 +- assets/layers/governments/government.svg | 3 + assets/layers/governments/governments.json | 59 ++ assets/layers/governments/license_info.json | 12 + assets/themes/governments/crest.svg | 11 + assets/themes/governments/governments.json | 20 + assets/themes/governments/license_info.json | 10 + css/index-tailwind-output.css | 131 ++-- index.css | 714 ++++++++++---------- test.ts | 70 +- 10 files changed, 601 insertions(+), 448 deletions(-) create mode 100644 assets/layers/governments/government.svg create mode 100644 assets/layers/governments/governments.json create mode 100644 assets/layers/governments/license_info.json create mode 100644 assets/themes/governments/crest.svg create mode 100644 assets/themes/governments/governments.json create mode 100644 assets/themes/governments/license_info.json diff --git a/UI/BaseUIElement.ts b/UI/BaseUIElement.ts index 556ab637f3..c993ef5d2b 100644 --- a/UI/BaseUIElement.ts +++ b/UI/BaseUIElement.ts @@ -1,4 +1,4 @@ -import {Utils} from "../Utils"; +import { Utils } from "../Utils"; /** * A thin wrapper around a html element, which allows to generate a HTML-element. @@ -39,9 +39,9 @@ export default abstract class BaseUIElement { return this; } - - public ScrollToTop(){ - this._constructedHtmlElement?.scrollTo(0,0) + + public ScrollToTop() { + this._constructedHtmlElement?.scrollTo(0, 0) } /** @@ -70,10 +70,13 @@ export default abstract class BaseUIElement { return this; } - public RemoveClass(clss: string): BaseUIElement { - if (this.clss.has(clss)) { - this.clss.delete(clss); - this._constructedHtmlElement?.classList.remove(clss) + public RemoveClass(classes: string): BaseUIElement { + const all = classes.split(" ").map(clsName => clsName.trim()); + for (let clss of all) { + if (this.clss.has(clss)) { + this.clss.delete(clss); + this._constructedHtmlElement?.classList.remove(clss) + } } return this; } diff --git a/assets/layers/governments/government.svg b/assets/layers/governments/government.svg new file mode 100644 index 0000000000..7a0577c173 --- /dev/null +++ b/assets/layers/governments/government.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/layers/governments/governments.json b/assets/layers/governments/governments.json new file mode 100644 index 0000000000..75bb148ce5 --- /dev/null +++ b/assets/layers/governments/governments.json @@ -0,0 +1,59 @@ +{ + "id": "governments", + "name": { + "en": "governments" + }, + "source": { + "osmTags": { + "or": [ + "office=government" + ] + } + }, + "title": { + "render": { + "en": "Governmental Office {name}" + } + }, + "minzoom": 13, + "tagRenderings": [ + "images", + "phone", + "email", + "website", + { + "question": { + "en": "What is the name of this Governmental Office?" + }, + "render": { + "en": "This Governmental Office is called {name}" + }, + "freeform": { + "key": "name" + }, + "id": "name" + } + ], + "presets": [ + { + "title": { + "en": "a Governmental Office" + }, + "tags": [ + "office=government" + ] + } + ], + "mapRendering": [ + { + "icon": { + "render": "circle:white;./assets/layers/governments/government.svg" + }, + "iconSize": "40,40,center", + "location": [ + "point", + "centroid" + ] + } + ] +} \ No newline at end of file diff --git a/assets/layers/governments/license_info.json b/assets/layers/governments/license_info.json new file mode 100644 index 0000000000..3281710ec6 --- /dev/null +++ b/assets/layers/governments/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "government.svg", + "license": "CC0", + "authors": [ + "OSM Carto" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Office-16.svg" + ] + } +] \ No newline at end of file diff --git a/assets/themes/governments/crest.svg b/assets/themes/governments/crest.svg new file mode 100644 index 0000000000..383b543b1e --- /dev/null +++ b/assets/themes/governments/crest.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/themes/governments/governments.json b/assets/themes/governments/governments.json new file mode 100644 index 0000000000..405aea0c15 --- /dev/null +++ b/assets/themes/governments/governments.json @@ -0,0 +1,20 @@ +{ + "id": "governments", + "title": { + "en": "Governmental Offices" + }, + "description": { + "en": "On this map, Governmental offices are shown and can be easily added" + }, + "maintainer": "MapComplete", + "icon": "./assets/themes/onwheels/crest.svg", + "version": "0", + "startLat": 50.8465573, + "defaultBackgroundId": "CartoDB.Voyager", + "startLon": 4.351697, + "startZoom": 16, + "widenFactor": 2, + "layers": [ + "governments" + ] +} \ No newline at end of file diff --git a/assets/themes/governments/license_info.json b/assets/themes/governments/license_info.json new file mode 100644 index 0000000000..9f2dcf81aa --- /dev/null +++ b/assets/themes/governments/license_info.json @@ -0,0 +1,10 @@ +[ + { + "path": "crest.svg", + "license": "CC0", + "authors": [ + "Free Wheelies" + ], + "sources": [] + } +] \ No newline at end of file diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 36f99ace63..bc51523d41 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -1042,22 +1042,22 @@ video { height: 6rem; } -.h-8 { - height: 2rem; +.h-10 { + height: 2.5rem; } .h-full { height: 100%; } -.h-10 { - height: 2.5rem; -} - .h-12 { height: 3rem; } +.h-8 { + height: 2rem; +} + .h-1\/2 { height: 50%; } @@ -1126,12 +1126,8 @@ video { width: 100%; } -.w-8 { - width: 2rem; -} - -.w-1 { - width: 0.25rem; +.w-10 { + width: 2.5rem; } .w-24 { @@ -1142,14 +1138,14 @@ video { width: 1.5rem; } -.w-10 { - width: 2.5rem; -} - .w-12 { width: 3rem; } +.w-8 { + width: 2rem; +} + .w-0 { width: 0px; } @@ -1290,6 +1286,10 @@ video { flex-wrap: wrap-reverse; } +.place-content-center { + place-content: center; +} + .content-start { align-content: flex-start; } @@ -1412,14 +1412,14 @@ video { border-bottom-left-radius: 0.25rem; } -.border { - border-width: 1px; -} - .border-2 { border-width: 2px; } +.border { + border-width: 1px; +} + .border-4 { border-width: 4px; } @@ -1432,6 +1432,15 @@ video { border-bottom-width: 1px; } +.border-solid { + border-style: solid; +} + +.border-blue-500 { + --tw-border-opacity: 1; + border-color: rgba(59, 130, 246, var(--tw-border-opacity)); +} + .border-gray-500 { --tw-border-opacity: 1; border-color: rgba(107, 114, 128, var(--tw-border-opacity)); @@ -1466,6 +1475,11 @@ video { --tw-border-opacity: 0.5; } +.bg-blue-200 { + --tw-bg-opacity: 1; + background-color: rgba(191, 219, 254, var(--tw-bg-opacity)); +} + .bg-white { --tw-bg-opacity: 1; background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); @@ -1550,10 +1564,6 @@ video { padding-right: 1rem; } -.pr-2 { - padding-right: 0.5rem; -} - .pb-12 { padding-bottom: 3rem; } @@ -1622,6 +1632,10 @@ video { padding-top: 0.125rem; } +.pr-2 { + padding-right: 0.5rem; +} + .pl-6 { padding-left: 1.5rem; } @@ -1693,10 +1707,6 @@ video { text-transform: lowercase; } -.capitalize { - text-transform: capitalize; -} - .italic { font-style: italic; } @@ -1837,11 +1847,11 @@ video { } .z-above-map { - z-index: 10000 + z-index: 10000; } .z-above-controls { - z-index: 10001 + z-index: 10001; } .bg-subtle { @@ -1863,14 +1873,14 @@ video { * Base colour of interactive elements, mainly the 'subtle button' * */ - --subtle-detail-color: #DBEAFE; + --subtle-detail-color: #dbeafe; --subtle-detail-color-contrast: black; --subtle-detail-color-light-contrast: lightgrey; /** * A stronger variant of the 'subtle-detail-colour' * Used as subtle button hover */ - --unsubtle-detail-color: #BFDBFE; + --unsubtle-detail-color: #bfdbfe; --unsubtle-detail-color-contrast: black; --catch-detail-color: #3a3aeb; --catch-detail-color-contrast: white; @@ -1884,7 +1894,8 @@ video { --variable-title-height: 0px; } -html, body { +html, +body { height: 100%; min-height: 100vh; min-height: -webkit-fill-available; @@ -1892,7 +1903,7 @@ html, body { padding: 0; background-color: var(--background-color); color: var(--foreground-color); - font-family: 'Helvetica Neue', Arial, sans-serif; + font-family: "Helvetica Neue", Arial, sans-serif; } .leaflet-overlay-pane .leaflet-zoom-animated { @@ -1915,7 +1926,8 @@ html, body { height: 100% !important; } -svg, img { +svg, +img { box-sizing: content-box; width: 100%; height: 100%; @@ -2019,6 +2031,39 @@ a { height: min-content; } +/* alex */ + +input[type="range"].vertical { + -webkit-writing-mode: bt-lr; + -ms-writing-mode: bt-lr; + writing-mode: bt-lr; + /* IE */ + -webkit-appearance: slider-vertical; + /* Chromium */ + width: 8px; + height: 310px; + padding: 0 5px; +} + +/* +.elevatorslider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 23px; + height: 24px; + border: 0; + background: url("../MapComplete/assets/svg/bug.svg"); + cursor: pointer; +} + +.elevatorslider::-moz-range-thumb { + width: 23px; + height: 25px; + border: 0; + background: url("../MapComplete/assets/svg/bug.svg"); + cursor: pointer; +} */ + .border-detail { border-color: var(--foreground-color); } @@ -2088,7 +2133,7 @@ p { } li::marker { - content: "•" + content: "•"; } .subtle-background { @@ -2098,7 +2143,7 @@ li::marker { .normal-background { background: var(--background-color); - color: var(--foreground-color) + color: var(--foreground-color); } .subtle-lighter { @@ -2176,7 +2221,8 @@ li::marker { color: unset !important; } -.disable-links a.must-link, .disable-links .must-link a { +.disable-links a.must-link, +.disable-links .must-link a { /* Hide links if they are disabled */ display: none; } @@ -2395,7 +2441,7 @@ li::marker { /***************** Info box (box containing features and questions ******************/ input { - color: var(--foreground-color) + color: var(--foreground-color); } .leaflet-popup-content { @@ -2447,7 +2493,7 @@ input { } .animate-height { - transition: max-height .5s ease-in-out; + transition: max-height 0.5s ease-in-out; overflow-y: hidden; } @@ -2477,7 +2523,7 @@ input { .mapping-icon-small-height { /* A mapping icon type */ - height: 2rem; + height: 1.5rem; margin-right: 0.5rem; width: unset; } @@ -2511,7 +2557,7 @@ input { margin-left: 1rem; } -.mapping-icon-large{ +.mapping-icon-large { /* A mapping icon type */ width: 6rem; max-height: 5rem; @@ -2809,4 +2855,3 @@ input { display: inline; } } - diff --git a/index.css b/index.css index 85da5cdc77..fa09d5984b 100644 --- a/index.css +++ b/index.css @@ -12,667 +12,673 @@ @tailwind utilities; @layer utilities { - @variants responsive { - .z-above-map { - z-index: 10000 - } - - .z-above-controls { - z-index: 10001 - } - - .w-160 { - width: 40rem; - } - - .bg-subtle { - background-color: var(--subtle-detail-color); - color: var(--subtle-detail-color-contrast); - } - - .bg-unsubtle { - background-color: var(--unsubtle-detail-color); - color: var(--unsubtle-detail-color-contrast); - } - - .bg-catch { - background-color: var(--catch-detail-color); - color: var(--catch-detail-color-contrast); - } - - .rounded-left-full { - border-bottom-left-radius: 999rem; - border-top-left-radius: 999rem; - } - - .rounded-right-full { - border-bottom-right-radius: 999rem; - border-top-right-radius: 999rem; - } + @variants responsive { + .z-above-map { + z-index: 10000; } + .z-above-controls { + z-index: 10001; + } + + .w-160 { + width: 40rem; + } + + .bg-subtle { + background-color: var(--subtle-detail-color); + color: var(--subtle-detail-color-contrast); + } + + .bg-unsubtle { + background-color: var(--unsubtle-detail-color); + color: var(--unsubtle-detail-color-contrast); + } + + .bg-catch { + background-color: var(--catch-detail-color); + color: var(--catch-detail-color-contrast); + } + + .rounded-left-full { + border-bottom-left-radius: 999rem; + border-top-left-radius: 999rem; + } + + .rounded-right-full { + border-bottom-right-radius: 999rem; + border-top-right-radius: 999rem; + } + } } - :root { - /* The main colour scheme of mapcomplete is configured here. + /* The main colour scheme of mapcomplete is configured here. * For a custom styling, set 'customCss' in your layoutConfig and overwrite some of these. */ - /* Main color of the application: the background and text colours */ - --background-color: white; - /* Main text colour. Also styles some elements, such as the 'close popup'-button or 'back-arrow' (in mobile) */ - --foreground-color: black; - - /* A colour to indicate an error or warning */ - --alert-color: #fee4d1; - - /** + /* Main color of the application: the background and text colours */ + --background-color: white; + /* Main text colour. Also styles some elements, such as the 'close popup'-button or 'back-arrow' (in mobile) */ + --foreground-color: black; + + /* A colour to indicate an error or warning */ + --alert-color: #fee4d1; + + /** * Base colour of interactive elements, mainly the 'subtle button' * */ - --subtle-detail-color: #DBEAFE; - --subtle-detail-color-contrast: black; - --subtle-detail-color-light-contrast: lightgrey; + --subtle-detail-color: #dbeafe; + --subtle-detail-color-contrast: black; + --subtle-detail-color-light-contrast: lightgrey; - /** + /** * A stronger variant of the 'subtle-detail-colour' * Used as subtle button hover */ - --unsubtle-detail-color: #BFDBFE; - --unsubtle-detail-color-contrast: black; - - - --catch-detail-color: #3a3aeb; - --catch-detail-color-contrast: white; + --unsubtle-detail-color: #bfdbfe; + --unsubtle-detail-color-contrast: black; - - --non-active-tab-svg: var(--foreground-color); - --shadow-color: #00000066; - - --return-to-the-map-height: 2em; - --image-carousel-height: 350px; + --catch-detail-color: #3a3aeb; + --catch-detail-color-contrast: white; - /* The border colour of the leaflet popup */ - --popup-border: white; + --non-active-tab-svg: var(--foreground-color); + --shadow-color: #00000066; - /* Technical variable to make some dynamic behaviour possible; set by javascript. */ - --variable-title-height: 0px; + --return-to-the-map-height: 2em; + --image-carousel-height: 350px; + + /* The border colour of the leaflet popup */ + --popup-border: white; + + /* Technical variable to make some dynamic behaviour possible; set by javascript. */ + --variable-title-height: 0px; } -html, body { - height: 100%; - min-height: 100vh; - min-height: -webkit-fill-available; - margin: 0; - padding: 0; - background-color: var(--background-color); - color: var(--foreground-color); - font-family: 'Helvetica Neue', Arial, sans-serif; +html, +body { + height: 100%; + min-height: 100vh; + min-height: -webkit-fill-available; + margin: 0; + padding: 0; + background-color: var(--background-color); + color: var(--foreground-color); + font-family: "Helvetica Neue", Arial, sans-serif; } .leaflet-overlay-pane .leaflet-zoom-animated { - /* Another workaround to keep leaflet working */ - width: initial !important; - height: initial !important; - box-sizing: initial !important; + /* Another workaround to keep leaflet working */ + width: initial !important; + height: initial !important; + box-sizing: initial !important; } .leaflet-control-attribution { - display: block ruby; + display: block ruby; } .badge { } .badge svg { - /*Workaround for leaflet*/ - width: unset !important; - height: 100% !important; + /*Workaround for leaflet*/ + width: unset !important; + height: 100% !important; } -svg, img { - box-sizing: content-box; - width: 100%; - height: 100%; +svg, +img { + box-sizing: content-box; + width: 100%; + height: 100%; } .titleicon img { - width: unset; + width: unset; } .titleicon svg { - width: unset; + width: unset; } .svg-catch svg path { - fill: var(--catch-detail-color) !important; - stroke: var(--catch-detail-color) !important; + fill: var(--catch-detail-color) !important; + stroke: var(--catch-detail-color) !important; } .svg-unsubtle svg path { - fill: var(--unsubtle-detail-color) !important; - stroke: var(--unsubtle-detail-color) !important; + fill: var(--unsubtle-detail-color) !important; + stroke: var(--unsubtle-detail-color) !important; } .svg-subtle svg path { - fill: var(--subtle-detail-color) !important; - stroke: var(--subtle-detail-color) !important; + fill: var(--subtle-detail-color) !important; + stroke: var(--subtle-detail-color) !important; } .svg-foreground svg path { - fill: var(--foreground-color) !important; - stroke: var(--foreground-color) !important; + fill: var(--foreground-color) !important; + stroke: var(--foreground-color) !important; } .no-images img { - display: none; + display: none; } .weblate-link { - /* Weblate-links are the little translation icon next to translatable sentences. Due to their special nature, they are exempt from some rules */ + /* Weblate-links are the little translation icon next to translatable sentences. Due to their special nature, they are exempt from some rules */ } .mapcontrol svg path { - fill: var(--subtle-detail-color-contrast) !important; + fill: var(--subtle-detail-color-contrast) !important; } .red-svg svg path { - stroke: #d71010 !important; + stroke: #d71010 !important; } a { - color: var(--foreground-color); + color: var(--foreground-color); } .btn { - line-height: 1.25rem; - --tw-text-opacity: 1; - color: var(--catch-detail-color-contrast); - --tw-bg-opacity: 1; - background-color: var(--catch-detail-color); - display: inline-flex; - border-radius: 1.5rem; - padding-top: 0.75rem; - padding-bottom: 0.75rem; - padding-left: 1.25rem; - padding-right: 1.25rem; - font-size: large; - font-weight: bold; - transition: 100ms; - /*-- invisible border: rendered on hover*/ - border: 3px solid var(--unsubtle-detail-color); + line-height: 1.25rem; + --tw-text-opacity: 1; + color: var(--catch-detail-color-contrast); + --tw-bg-opacity: 1; + background-color: var(--catch-detail-color); + display: inline-flex; + border-radius: 1.5rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + font-size: large; + font-weight: bold; + transition: 100ms; + /*-- invisible border: rendered on hover*/ + border: 3px solid var(--unsubtle-detail-color); } .btn:hover { - border: 3px solid var(--catch-detail-color); + border: 3px solid var(--catch-detail-color); } .btn-secondary { - background-color: var(--catch-detail-color); - filter: saturate(0.5); - + background-color: var(--catch-detail-color); + filter: saturate(0.5); } .btn-secondary:hover { - background-color: var(--catch-detail-color); - filter: unset; + background-color: var(--catch-detail-color); + filter: unset; } .btn-disabled { - filter: saturate(0.3); - cursor: default; + filter: saturate(0.3); + cursor: default; } .btn-disabled:hover { - border: 3px solid var(--unsubtle-detail-color); + border: 3px solid var(--unsubtle-detail-color); } .h-min { - height: min-content; + height: min-content; } +/* alex */ +input[type="range"].vertical { + writing-mode: bt-lr; /* IE */ + -webkit-appearance: slider-vertical; /* Chromium */ + width: 8px; + height: 310px; + padding: 0 5px; +} +/* +.elevatorslider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 23px; + height: 24px; + border: 0; + background: url("../MapComplete/assets/svg/bug.svg"); + cursor: pointer; +} + +.elevatorslider::-moz-range-thumb { + width: 23px; + height: 25px; + border: 0; + background: url("../MapComplete/assets/svg/bug.svg"); + cursor: pointer; +} */ .border-detail { - border-color: var(--foreground-color); + border-color: var(--foreground-color); } .w-min { - width: min-content; + width: min-content; } .rounded-left-full { - border-bottom-left-radius: 999rem; - border-top-left-radius: 999rem; + border-bottom-left-radius: 999rem; + border-top-left-radius: 999rem; } .rounded-right-full { - border-bottom-right-radius: 999rem; - border-top-right-radius: 999rem; + border-bottom-right-radius: 999rem; + border-top-right-radius: 999rem; } .w-16-imp { - width: 4rem !important; + width: 4rem !important; } .w-32-imp { - width: 8rem !important; + width: 8rem !important; } .w-48-imp { - width: 12rem !important; + width: 12rem !important; } .link-underline a { - text-decoration: underline 1px var(--foreground-color); + text-decoration: underline 1px var(--foreground-color); } .link-no-underline a { - text-decoration: none; + text-decoration: none; } li { - margin-left: 0.5em; - padding-left: 0.2em; - margin-top: 0.1em; + margin-left: 0.5em; + padding-left: 0.2em; + margin-top: 0.1em; } h2 { - font-size: large; - margin-top: 0.5em; - margin-bottom: 0.3em; - font-weight: bold; + font-size: large; + margin-top: 0.5em; + margin-bottom: 0.3em; + font-weight: bold; } h3 { - font-size: larger; - margin-top: 0.6em; - margin-bottom: 0; - font-weight: bold; + font-size: larger; + margin-top: 0.6em; + margin-bottom: 0; + font-weight: bold; } h3 { - font-size: larger; - margin-top: 0.6em; - margin-bottom: 0; - font-weight: bolder; + font-size: larger; + margin-top: 0.6em; + margin-bottom: 0; + font-weight: bolder; } p { - padding-top: 0.1em; + padding-top: 0.1em; } li::marker { - content: "•" + content: "•"; } .subtle-background { - background: var(--subtle-detail-color); - color: var(--subtle-detail-color-contrast); + background: var(--subtle-detail-color); + color: var(--subtle-detail-color-contrast); } .normal-background { - background: var(--background-color); - color: var(--foreground-color) + background: var(--background-color); + color: var(--foreground-color); } .subtle-lighter { - color: var(--subtle-detail-color-light-contrast); + color: var(--subtle-detail-color-light-contrast); } .border-attention-catch { - border: 5px solid var(--catch-detail-color); + border: 5px solid var(--catch-detail-color); } .border-invisible { - border: 5px solid #00000000; + border: 5px solid #00000000; } .border-attention { - border-color: var(--catch-detail-color); + border-color: var(--catch-detail-color); } .direction-svg svg path { - fill: var(--catch-detail-color) !important; + fill: var(--catch-detail-color) !important; } - #leafletDiv { - height: 100%; + height: 100%; } .leaflet-popup-content-wrapper { - background-color: var(--background-color); - color: var(--foreground-color); - border: 2px solid var(--popup-border); - box-shadow: 0 3px 14px var(--shadow-color) !important; + background-color: var(--background-color); + color: var(--foreground-color); + border: 2px solid var(--popup-border); + box-shadow: 0 3px 14px var(--shadow-color) !important; } .leaflet-container { - font: unset !important; - background-color: var(--background-color) !important; + font: unset !important; + background-color: var(--background-color) !important; } .leaflet-popup-tip { - background-color: var(--popup-border) !important; - color: var(--popup-border) !important; - box-shadow: 0 3px 14px var(--shadow-color) !important; + background-color: var(--popup-border) !important; + color: var(--popup-border) !important; + box-shadow: 0 3px 14px var(--shadow-color) !important; } .single-layer-selection-toggle { - position: relative; - width: 2em; - height: 2em; - flex-shrink: 0; + position: relative; + width: 2em; + height: 2em; + flex-shrink: 0; } .single-layer-selection-toggle img { - max-height: 2em !important; - max-width: 2em !important; + max-height: 2em !important; + max-width: 2em !important; } .single-layer-selection-toggle svg { - max-height: 2em !important; - max-width: 2em !important; + max-height: 2em !important; + max-width: 2em !important; } - .block-ruby { - display: block ruby; + display: block ruby; } .disable-links a { - pointer-events: none; - text-decoration: none !important; - color: var(--subtle-detail-color-contrast) !important; + pointer-events: none; + text-decoration: none !important; + color: var(--subtle-detail-color-contrast) !important; } .enable-links a { - pointer-events: unset; - text-decoration: underline !important; - color: unset !important; + pointer-events: unset; + text-decoration: underline !important; + color: unset !important; } -.disable-links a.must-link, .disable-links .must-link a { - /* Hide links if they are disabled */ - display: none; +.disable-links a.must-link, +.disable-links .must-link a { + /* Hide links if they are disabled */ + display: none; } /**************** GENERIC ****************/ - .alert { - background-color: var(--alert-color); - color: var(--foreground-color); - font-weight: bold; - border-radius: 1em; - margin: 0.25em; - text-align: center; - padding: 0.15em 0.3em; + background-color: var(--alert-color); + color: var(--foreground-color); + font-weight: bold; + border-radius: 1em; + margin: 0.25em; + text-align: center; + padding: 0.15em 0.3em; } .invalid { - box-shadow: 0 0 10px #ff5353; - height: min-content; + box-shadow: 0 0 10px #ff5353; + height: min-content; } .shadow { - box-shadow: 0 0 10px var(--shadow-color); + box-shadow: 0 0 10px var(--shadow-color); } .title-font span { - font-size: xx-large !important; - font-weight: bold; + font-size: xx-large !important; + font-weight: bold; } .soft { - background-color: var(--subtle-detail-color); - color: var(--subtle-detail-color-contrast); - font-weight: bold; - border-radius: 1em; - margin: 0.25em; - text-align: center; - padding: 0.15em 0.3em; + background-color: var(--subtle-detail-color); + color: var(--subtle-detail-color-contrast); + font-weight: bold; + border-radius: 1em; + margin: 0.25em; + text-align: center; + padding: 0.15em 0.3em; } - .subtle { - color: #999; + color: #999; } .link-underline .subtle a { - text-decoration: underline 1px #7193bb88; - color: #7193bb; + text-decoration: underline 1px #7193bb88; + color: #7193bb; } - .thanks { - background-color: #43d904; - font-weight: bold; - border-radius: 1em; - margin: 0.25em; - text-align: center; - padding: 0.15em 0.3em; + background-color: #43d904; + font-weight: bold; + border-radius: 1em; + margin: 0.25em; + text-align: center; + padding: 0.15em 0.3em; } .clickable { - pointer-events: all; + pointer-events: all; } .unclickable { - pointer-events: none !important; + pointer-events: none !important; } - @keyframes slide { - /* This is the animation on the marker to add a new point - it slides through all the possible presets */ - from { - transform: translateX(0%); - } + /* This is the animation on the marker to add a new point - it slides through all the possible presets */ + from { + transform: translateX(0%); + } - to { - transform: translateX(calc(-100% + 42px)); - } + to { + transform: translateX(calc(-100% + 42px)); + } } .hand-drag-animation { - animation: hand-drag-animation 6s ease-in-out infinite; - transform-origin: 50% 125%; + animation: hand-drag-animation 6s ease-in-out infinite; + transform-origin: 50% 125%; } @keyframes hand-drag-animation { - /* This is the animation on the little extra hand on the location input. If fades in, invites the user to interact/drag the map */ - 0% { - opacity: 0; - transform: rotate(-30deg); - } + /* This is the animation on the little extra hand on the location input. If fades in, invites the user to interact/drag the map */ + 0% { + opacity: 0; + transform: rotate(-30deg); + } - 6% { - opacity: 1; - transform: rotate(-30deg); - } + 6% { + opacity: 1; + transform: rotate(-30deg); + } - 12% { - opacity: 1; - transform: rotate(-45deg); - } + 12% { + opacity: 1; + transform: rotate(-45deg); + } - 24% { - opacity: 1; - transform: rotate(-00deg); - } + 24% { + opacity: 1; + transform: rotate(-00deg); + } - 30% { - opacity: 1; - transform: rotate(-30deg); - } + 30% { + opacity: 1; + transform: rotate(-30deg); + } + 36% { + opacity: 0; + transform: rotate(-30deg); + } - 36% { - opacity: 0; - transform: rotate(-30deg); - } - - 100% { - opacity: 0; - transform: rotate(-30deg); - } - + 100% { + opacity: 0; + transform: rotate(-30deg); + } } /**************************************/ - #topleft-tools { - display: block; - position: absolute; - z-index: 5000; - transition: all 500ms linear; - left: 0; - right: 0; + display: block; + position: absolute; + z-index: 5000; + transition: all 500ms linear; + left: 0; + right: 0; } .welcomeMessage { - display: block; - max-width: calc(100vw - 5em); - width: 40em; - max-height: calc(100vh - 15em); - background-color: var(--background-color); - color: var(--foreground-color); + display: block; + max-width: calc(100vw - 5em); + width: 40em; + max-height: calc(100vh - 15em); + background-color: var(--background-color); + color: var(--foreground-color); } - - /***************** Info box (box containing features and questions ******************/ input { - color: var(--foreground-color) + color: var(--foreground-color); } .leaflet-popup-content { - width: 45em !important; - margin: 0.25rem !important; + width: 45em !important; + margin: 0.25rem !important; } .leaflet-div-icon { - background-color: unset !important; - border: unset !important; + background-color: unset !important; + border: unset !important; } .floating-element-width { - max-width: calc(100vw - 5em); - width: 40em; + max-width: calc(100vw - 5em); + width: 40em; } .leaflet-div-icon svg { - width: calc(100%); - height: calc(100%); + width: calc(100%); + height: calc(100%); } /****** ShareScreen *****/ .literal-code { - display: inline-block; - background-color: lightgray; - padding: 0.5em; - word-break: break-word; - color: black; - box-sizing: border-box; + display: inline-block; + background-color: lightgray; + padding: 0.5em; + word-break: break-word; + color: black; + box-sizing: border-box; } - /** Switch layout **/ .small-image img { - height: 1em; - max-width: 1em; + height: 1em; + max-width: 1em; } .small-image { - height: 1em; - max-width: 1em; + height: 1em; + max-width: 1em; } - .slideshow-item img { - height: var(--image-carousel-height); - width: unset; + height: var(--image-carousel-height); + width: unset; } .animate-height { - transition: max-height .5s ease-in-out; - overflow-y: hidden; + transition: max-height 0.5s ease-in-out; + overflow-y: hidden; } - .zebra-table tr:nth-child(even) { - background-color: #f2f2f2; + background-color: #f2f2f2; } .layer-toggle { - /* The checkbox that toggles a single layer */ + /* The checkbox that toggles a single layer */ } .layer-filters { - /* If needed, the panel which contains the extra filters for a layer */ - margin-bottom: 1rem; - border-bottom: 2px solid var(--foreground-color); + /* If needed, the panel which contains the extra filters for a layer */ + margin-bottom: 1rem; + border-bottom: 2px solid var(--foreground-color); } .filter-panel { - /* The panel for a single layer, containing both the toggle and the filters (if any) */ - border-bottom: 2px solid lightgrey; - margin-bottom: 0.5rem; + /* The panel for a single layer, containing both the toggle and the filters (if any) */ + border-bottom: 2px solid lightgrey; + margin-bottom: 0.5rem; } .first-filter-panel { - /* Additional class on the first layer filter */ + /* Additional class on the first layer filter */ } .mapping-icon-small-height { - /* A mapping icon type */ - height: 1.5rem; - margin-right: 0.5rem; - width: unset; + /* A mapping icon type */ + height: 1.5rem; + margin-right: 0.5rem; + width: unset; } .mapping-icon-medium-height { - /* A mapping icon type */ - height: 3rem; - margin-right: 0.5rem; - width: unset; + /* A mapping icon type */ + height: 3rem; + margin-right: 0.5rem; + width: unset; } .mapping-icon-large-height { - /* A mapping icon type */ - height: 5rem; - margin-right: 0.5rem; - width: unset; + /* A mapping icon type */ + height: 5rem; + margin-right: 0.5rem; + width: unset; } - .mapping-icon-small { - /* A mapping icon type */ - width: 1.5rem; - max-height: 1.5rem; - margin-right: 0.5rem; + /* A mapping icon type */ + width: 1.5rem; + max-height: 1.5rem; + margin-right: 0.5rem; } .mapping-icon-medium { - /* A mapping icon type */ - width: 3rem; - max-height: 3rem; - margin-right: 1rem; - margin-left: 1rem; + /* A mapping icon type */ + width: 3rem; + max-height: 3rem; + margin-right: 1rem; + margin-left: 1rem; } -.mapping-icon-large{ - /* A mapping icon type */ - width: 6rem; - max-height: 5rem; - margin-top: 0.5rem; - margin-bottom: 0.5rem; - margin-right: 1.5rem; - margin-left: 1.5rem; - - +.mapping-icon-large { + /* A mapping icon type */ + width: 6rem; + max-height: 5rem; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + margin-right: 1.5rem; + margin-left: 1.5rem; } - diff --git a/test.ts b/test.ts index e25a2ad547..55d01a9ae9 100644 --- a/test.ts +++ b/test.ts @@ -1,52 +1,36 @@ -import * as shops from "./assets/generated/layers/shops.json" +import { max } from "moment"; +import { Store, UIEventSource } from "./Logic/UIEventSource" import Combine from "./UI/Base/Combine"; -import Img from "./UI/Base/Img"; -import BaseUIElement from "./UI/BaseUIElement"; -import {VariableUiElement} from "./UI/Base/VariableUIElement"; -import LanguagePicker from "./UI/LanguagePicker"; -import TagRenderingConfig, {Mapping} from "./Models/ThemeConfig/TagRenderingConfig"; -import {MappingConfigJson} from "./Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"; -import {FixedUiElement} from "./UI/Base/FixedUiElement"; -import {TagsFilter} from "./Logic/Tags/TagsFilter"; -import {SearchablePillsSelector} from "./UI/Input/SearchableMappingsSelector"; -import {UIEventSource} from "./Logic/UIEventSource"; +import { FixedUiElement } from "./UI/Base/FixedUiElement"; +import { VariableUiElement } from "./UI/Base/VariableUIElement"; +import { FixedInputElement } from "./UI/Input/FixedInputElement"; +import Slider from "./UI/Input/Slider"; +import Toggle from "./UI/Input/Toggle"; -const mappingsRaw: MappingConfigJson[] = shops.tagRenderings.find(tr => tr.id == "shop_types").mappings -const mappings = mappingsRaw.map((m, i) => TagRenderingConfig.ExtractMapping(m, i, "test", "test")) +const testData = ["-1", "0", "0.5", "1", "1.5", "2"] -function fromMapping(m: Mapping): { show: BaseUIElement, value: TagsFilter, mainTerm: Record, searchTerms?: Record } { - const el: BaseUIElement = m.then - let icon: BaseUIElement - if (m.icon !== undefined) { - icon = new Img(m.icon).SetClass("h-8 w-8 pr-2") - } else { - icon = new FixedUiElement("").SetClass("h-8 w-1") +const values = testData.map((data) => new FixedUiElement(data).onClick(() => { + values.map((val) => { + val.RemoveClass("active bg-blue-200") + if (val.content === data) { + const options = { + value : new UIEventSource(testData.indexOf(val.content)), + } + val.SetClass("active bg-blue-200") + const newSlider = new Slider(0, testData.length-1, options).SetClass("flex vertical m-4 elevatorslider"); + new Combine([valCombine, newSlider]).SetClass("flex flex-row h-10").AttachTo("extradiv") + console.log(slider.GetValue()) } - const show = new Combine([ - icon, - el.SetClass("block-ruby") - ]).SetClass("flex items-center") + }) +}).SetClass("flex flex-column bg-slate-200 w-10 h-10 border-2 border-blue-500 border-solid rounded-full place-content-center items-center m-4")) - return {show, mainTerm: m.then.translations, searchTerms: m.searchTerms, value: m.if}; +const valCombine = new Combine(values.reverse()) +// valCombine.AttachTo("maindiv") -} -const search = new UIEventSource("") -const sp = new SearchablePillsSelector( - mappings.map(m => fromMapping(m)), - { - noMatchFound: new VariableUiElement(search.map(s => "Mark this a `"+s+"`")), - onNoSearch: new FixedUiElement("Search in "+mappingsRaw.length+" categories"), - selectIfSingle: true, - searchValue: search - } -) +const slider = new Slider(0, testData.length-1); -sp.AttachTo("maindiv") +slider.SetClass("flex vertical m-4 elevatorslider") -const lp = new LanguagePicker(["en", "nl"], "") +new Combine([valCombine, slider]).SetClass("flex flex-row h-10").AttachTo("extradiv") -new Combine([ - new VariableUiElement(sp.GetValue().map(tf => new FixedUiElement("Selected tags: " + tf.map(tf => tf.asHumanString(false, false, {})).join(", ")))), - lp -]).SetClass("flex flex-col") - .AttachTo("extradiv") \ No newline at end of file +console.log(slider) From 47a184d626ee3864582ac908e93bd3c4b7684a46 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 10:23:50 +0200 Subject: [PATCH 06/82] Fix #955 --- assets/layers/bike_shop/bike_shop.json | 67 ++------------------------ 1 file changed, 3 insertions(+), 64 deletions(-) diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json index c10981799b..f8bc13c75d 100644 --- a/assets/layers/bike_shop/bike_shop.json +++ b/assets/layers/bike_shop/bike_shop.json @@ -282,70 +282,9 @@ }, "id": "bike_shop-name" }, - { - "question": { - "en": "What is the website of {name}?", - "nl": "Wat is de website van {name}?", - "fr": "Quel est le site web de {name} ?", - "gl": "Cal é a páxina web de {name}?", - "it": "Qual è il sito web di {name}?", - "ru": "Какой сайт у {name}?", - "id": "URL {name} apa?", - "de": "Wie lautet die Webseite von {name}?", - "pt_BR": "Qual o website de {name}?", - "pt": "Qual o website de {name}?", - "es": "¿Cual es el sitio web de {name}?", - "da": "Hvad er webstedet for {name}?" - }, - "render": "{website}", - "freeform": { - "key": "website", - "type": "url" - }, - "id": "bike_shop-website" - }, - { - "question": { - "en": "What is the phone number of {name}?", - "nl": "Wat is het telefoonnummer van {name}?", - "fr": "Quel est le numéro de téléphone de {name} ?", - "gl": "Cal é o número de teléfono de {name}?", - "it": "Qual è il numero di telefono di {name}?", - "ru": "Какой номер телефона у {name}?", - "de": "Wie lautet die Telefonnummer von {name}?", - "pt_BR": "Qual o número de telefone de {name}?", - "pt": "Qual é o número de telefone de {name}?", - "es": "¿Cual es el número de teléfono de {name}?", - "da": "Hvad er telefonnummeret på {name}?" - }, - "render": "{phone}", - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "bike_shop-phone" - }, - { - "question": { - "en": "What is the email address of {name}?", - "nl": "Wat is het email-adres van {name}?", - "fr": "Quelle est l'adresse électronique de {name} ?", - "gl": "Cal é o enderezo de correo electrónico de {name}?", - "it": "Qual è l’indirizzo email di {name}?", - "ru": "Какой адрес электронной почты у {name}?", - "de": "Wie lautet die E-Mail-Adresse von {name}?", - "pt_BR": "Qual o endereço de email de {name}?", - "pt": "Qual o endereço de email de {name}?", - "es": "¿Cual es la dirección de correo electrónico de {name}?", - "da": "Hvad er e-mailadressen på {name}?" - }, - "render": "{email}", - "freeform": { - "key": "email", - "type": "email" - }, - "id": "bike_shop-email" - }, + "website", + "phone", + "email", "opening_hours", { "render": { From 92bd6414e475083eba7636f4002b95a6f2eea172 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 18 Jul 2022 09:51:49 +0000 Subject: [PATCH 07/82] laatste versie levels --- index.css | 13 ++++++------- test.ts | 33 +++++++++++++++------------------ 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/index.css b/index.css index fa09d5984b..f1a4ce83e1 100644 --- a/index.css +++ b/index.css @@ -228,7 +228,7 @@ a { height: min-content; } -/* alex */ +/* slider */ input[type="range"].vertical { writing-mode: bt-lr; /* IE */ -webkit-appearance: slider-vertical; /* Chromium */ @@ -236,14 +236,13 @@ input[type="range"].vertical { height: 310px; padding: 0 5px; } -/* -.elevatorslider::-webkit-slider-thumb { - -webkit-appearance: none; + +/* .elevatorslider::-webkit-slider-thumb { appearance: none; width: 23px; height: 24px; border: 0; - background: url("../MapComplete/assets/svg/bug.svg"); + background: url("/assets/svg/bug.svg") !important; cursor: pointer; } @@ -251,9 +250,9 @@ input[type="range"].vertical { width: 23px; height: 25px; border: 0; - background: url("../MapComplete/assets/svg/bug.svg"); + background: url("/assets/svg/bug.svg") !important; cursor: pointer; -} */ +} */ .border-detail { border-color: var(--foreground-color); diff --git a/test.ts b/test.ts index 55d01a9ae9..21ba351815 100644 --- a/test.ts +++ b/test.ts @@ -5,32 +5,29 @@ import { FixedUiElement } from "./UI/Base/FixedUiElement"; import { VariableUiElement } from "./UI/Base/VariableUIElement"; import { FixedInputElement } from "./UI/Input/FixedInputElement"; import Slider from "./UI/Input/Slider"; -import Toggle from "./UI/Input/Toggle"; +import Toggle, { ClickableToggle } from "./UI/Input/Toggle"; const testData = ["-1", "0", "0.5", "1", "1.5", "2"] +let slider = new Slider(0, testData.length - 1); -const values = testData.map((data) => new FixedUiElement(data).onClick(() => { - values.map((val) => { - val.RemoveClass("active bg-blue-200") - if (val.content === data) { - const options = { - value : new UIEventSource(testData.indexOf(val.content)), - } - val.SetClass("active bg-blue-200") - const newSlider = new Slider(0, testData.length-1, options).SetClass("flex vertical m-4 elevatorslider"); - new Combine([valCombine, newSlider]).SetClass("flex flex-row h-10").AttachTo("extradiv") - console.log(slider.GetValue()) +const toggleClass = "flex border-2 border-blue-500 rounded-full w-10 h-10 place-content-center items-center" + +const values = testData.map((data, i) => new ClickableToggle( + new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( + (sliderVal) => { + return sliderVal === i + }, + [], + (isSelected) => { + return isSelected ? i : slider.GetValue().data } - }) -}).SetClass("flex flex-column bg-slate-200 w-10 h-10 border-2 border-blue-500 border-solid rounded-full place-content-center items-center m-4")) + )) + .ToggleOnClick() + .SetClass("flex flex-column bg-slate-200 m-4 w-10 h-10")) const valCombine = new Combine(values.reverse()) -// valCombine.AttachTo("maindiv") - -const slider = new Slider(0, testData.length-1); slider.SetClass("flex vertical m-4 elevatorslider") new Combine([valCombine, slider]).SetClass("flex flex-row h-10").AttachTo("extradiv") -console.log(slider) From 3441e7c9f7f9919bb8577feacecb1c20ecb54d2a Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 13:50:14 +0200 Subject: [PATCH 08/82] Add elevator icons --- UI/Input/Slider.ts | 15 ++++++--- assets/svg/license_info.json | 10 ++++++ css/index-tailwind-output.css | 62 +++++++++++++++++++---------------- index.css | 27 ++++++++++----- test.ts | 9 +++-- 5 files changed, 77 insertions(+), 46 deletions(-) diff --git a/UI/Input/Slider.ts b/UI/Input/Slider.ts index 68503e7225..e6e2f4a55e 100644 --- a/UI/Input/Slider.ts +++ b/UI/Input/Slider.ts @@ -4,9 +4,10 @@ import {UIEventSource} from "../../Logic/UIEventSource"; export default class Slider extends InputElement { private readonly _value: UIEventSource - private min: number; - private max: number; - private step: number; + private readonly min: number; + private readonly max: number; + private readonly step: number; + private readonly vertical: boolean; /** * Constructs a slider input element for natural numbers @@ -16,13 +17,15 @@ export default class Slider extends InputElement { */ constructor(min: number, max: number, options?: { value?: UIEventSource, - step?: 1 | number + step?: 1 | number, + vertical?: false | boolean }) { super(); this.max = max; this.min = min; this._value = options?.value ?? new UIEventSource(min) this.step = options?.step ?? 1; + this.vertical = options?.vertical ?? false; } GetValue(): UIEventSource { @@ -39,6 +42,10 @@ export default class Slider extends InputElement { el.oninput = () => { valuestore.setData(Number(el.value)) } + if(this.vertical){ + el.classList.add("vertical") + el.setAttribute('orient','vertical'); // firefox only workaround... + } valuestore.addCallbackAndRunD(v => el.value = ""+valuestore.data) return el; } diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index 58f491f57d..44f3be2e10 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -387,6 +387,16 @@ ], "sources": [] }, + { + "path": "elevator.svg", + "license": "CC-BY-SA 4.0", + "authors": [ + "Yveltal" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:HZM_elevator_icon.svg" + ] + }, { "path": "envelope.svg", "license": "CC0; trivial", diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index bc51523d41..b8b950474e 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -811,6 +811,10 @@ video { margin: 0.25rem; } +.m-2 { + margin: 0.5rem; +} + .m-4 { margin: 1rem; } @@ -831,10 +835,6 @@ video { margin: 0.75rem; } -.m-2 { - margin: 0.5rem; -} - .m-6 { margin: 1.5rem; } @@ -858,6 +858,14 @@ video { margin-bottom: 0.75rem; } +.mb-0 { + margin-bottom: 0px; +} + +.mt-8 { + margin-top: 2rem; +} + .ml-3 { margin-left: 0.75rem; } @@ -954,10 +962,6 @@ video { margin-right: 0.25rem; } -.mb-0 { - margin-bottom: 0px; -} - .box-border { box-sizing: border-box; } @@ -1046,6 +1050,10 @@ video { height: 2.5rem; } +.h-14 { + height: 3.5rem; +} + .h-full { height: 100%; } @@ -1432,10 +1440,6 @@ video { border-bottom-width: 1px; } -.border-solid { - border-style: solid; -} - .border-blue-500 { --tw-border-opacity: 1; border-color: rgba(59, 130, 246, var(--tw-border-opacity)); @@ -1475,11 +1479,6 @@ video { --tw-border-opacity: 0.5; } -.bg-blue-200 { - --tw-bg-opacity: 1; - background-color: rgba(191, 219, 254, var(--tw-bg-opacity)); -} - .bg-white { --tw-bg-opacity: 1; background-color: rgba(255, 255, 255, var(--tw-bg-opacity)); @@ -2031,7 +2030,7 @@ a { height: min-content; } -/* alex */ +/* slider */ input[type="range"].vertical { -webkit-writing-mode: bt-lr; @@ -2045,24 +2044,31 @@ input[type="range"].vertical { padding: 0 5px; } -/* .elevatorslider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 23px; - height: 24px; + width: 100px; + height: 100px; border: 0; - background: url("../MapComplete/assets/svg/bug.svg"); + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; cursor: pointer; + position: relative; + z-index: 2; } .elevatorslider::-moz-range-thumb { - width: 23px; - height: 25px; + width: 100px; + height: 100px; border: 0; - background: url("../MapComplete/assets/svg/bug.svg"); + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; cursor: pointer; -} */ +} .border-detail { border-color: var(--foreground-color); diff --git a/index.css b/index.css index f1a4ce83e1..e4471ff1e3 100644 --- a/index.css +++ b/index.css @@ -237,22 +237,31 @@ input[type="range"].vertical { padding: 0 5px; } -/* .elevatorslider::-webkit-slider-thumb { - appearance: none; - width: 23px; - height: 24px; +.elevatorslider::-webkit-slider-thumb { + width: 100px; + height: 100px; border: 0; - background: url("/assets/svg/bug.svg") !important; + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; cursor: pointer; + position: relative; + z-index: 2; } .elevatorslider::-moz-range-thumb { - width: 23px; - height: 25px; + width: 100px; + height: 100px; border: 0; - background: url("/assets/svg/bug.svg") !important; + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; cursor: pointer; -} */ +} .border-detail { border-color: var(--foreground-color); diff --git a/test.ts b/test.ts index 21ba351815..507d46550e 100644 --- a/test.ts +++ b/test.ts @@ -8,7 +8,7 @@ import Slider from "./UI/Input/Slider"; import Toggle, { ClickableToggle } from "./UI/Input/Toggle"; const testData = ["-1", "0", "0.5", "1", "1.5", "2"] -let slider = new Slider(0, testData.length - 1); +let slider = new Slider(0, testData.length - 1, {vertical: true}); const toggleClass = "flex border-2 border-blue-500 rounded-full w-10 h-10 place-content-center items-center" @@ -23,11 +23,10 @@ const values = testData.map((data, i) => new ClickableToggle( } )) .ToggleOnClick() - .SetClass("flex flex-column bg-slate-200 m-4 w-10 h-10")) + .SetClass("flex flex-column bg-slate-200 m-2 w-10 h-10")) const valCombine = new Combine(values.reverse()) -slider.SetClass("flex vertical m-4 elevatorslider") - -new Combine([valCombine, slider]).SetClass("flex flex-row h-10").AttachTo("extradiv") +slider.SetClass("flex m-4 elevatorslider mb-0").SetStyle("height: "+3.25*testData.length+"rem") +new Combine([valCombine.SetClass("mt-8"), slider]).SetClass("flex flex-row h-14").AttachTo("extradiv") From de2e39c4eb47067d54851c061807979e26f490c3 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 13:59:32 +0200 Subject: [PATCH 09/82] Add elevator icon --- assets/svg/elevator.svg | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 assets/svg/elevator.svg diff --git a/assets/svg/elevator.svg b/assets/svg/elevator.svg new file mode 100644 index 0000000000..ad43fe894a --- /dev/null +++ b/assets/svg/elevator.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + From 804510ccf496666032ad76aa2f2d982cfbdb4bd8 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 18 Jul 2022 13:42:17 +0000 Subject: [PATCH 10/82] governments added --- assets/svg/elevator_wheelchair.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/svg/elevator_wheelchair.svg diff --git a/assets/svg/elevator_wheelchair.svg b/assets/svg/elevator_wheelchair.svg new file mode 100644 index 0000000000..35b934aeef --- /dev/null +++ b/assets/svg/elevator_wheelchair.svg @@ -0,0 +1 @@ + \ No newline at end of file From 98d061b24a83cc7cd221ffca72305ad78e9596fe Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 18 Jul 2022 14:28:12 +0000 Subject: [PATCH 11/82] latest --- assets/svg/elevator_wheelchair.svg | 1 + assets/svg/license_info.json | 10 ++++++ index.css | 50 +++++++++++++++--------------- test.ts | 8 ++--- 4 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 assets/svg/elevator_wheelchair.svg diff --git a/assets/svg/elevator_wheelchair.svg b/assets/svg/elevator_wheelchair.svg new file mode 100644 index 0000000000..35b934aeef --- /dev/null +++ b/assets/svg/elevator_wheelchair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index 44f3be2e10..6d1d8401ef 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -397,6 +397,16 @@ "https://commons.wikimedia.org/wiki/File:HZM_elevator_icon.svg" ] }, + { + "path": "elevator_wheelchair.svg", + "license": "CC-BY-SA", + "authors": [ + "Robin Julien" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "envelope.svg", "license": "CC0; trivial", diff --git a/index.css b/index.css index e4471ff1e3..4636a48a7d 100644 --- a/index.css +++ b/index.css @@ -233,36 +233,36 @@ input[type="range"].vertical { writing-mode: bt-lr; /* IE */ -webkit-appearance: slider-vertical; /* Chromium */ width: 8px; - height: 310px; + height: 180px; padding: 0 5px; + cursor: pointer; } -.elevatorslider::-webkit-slider-thumb { - width: 100px; - height: 100px; - border: 0; - background-color: #00000000 !important; - background-image: url("/assets/svg/elevator.svg"); - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; - position: relative; - z-index: 2; +@-moz-document url-prefix() { + input[type="range"].vertical { + height: 280px !important; + width: 65px !important; + padding-top: 25px; + } + .valuesContainer { + padding-top: 30px; + } + input[type="range"].vertical::-moz-range-thumb { + width: 60px; + height: 50px; + border: 2px; + border-style: solid; + border-width: 50px; + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator_wheelchair.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; + border-image: linear-gradient(to right, red 50%, transparent 50%) 100% 1; + } } -.elevatorslider::-moz-range-thumb { - width: 100px; - height: 100px; - border: 0; - background-color: #00000000 !important; - background-image: url("/assets/svg/elevator.svg"); - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; -} - .border-detail { border-color: var(--foreground-color); } diff --git a/test.ts b/test.ts index 507d46550e..d8eb427be6 100644 --- a/test.ts +++ b/test.ts @@ -10,7 +10,9 @@ import Toggle, { ClickableToggle } from "./UI/Input/Toggle"; const testData = ["-1", "0", "0.5", "1", "1.5", "2"] let slider = new Slider(0, testData.length - 1, {vertical: true}); -const toggleClass = "flex border-2 border-blue-500 rounded-full w-10 h-10 place-content-center items-center" +slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: "+2.5*testData.length+"rem ") + +const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" const values = testData.map((data, i) => new ClickableToggle( new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( @@ -23,10 +25,8 @@ const values = testData.map((data, i) => new ClickableToggle( } )) .ToggleOnClick() - .SetClass("flex flex-column bg-slate-200 m-2 w-10 h-10")) + .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) const valCombine = new Combine(values.reverse()) -slider.SetClass("flex m-4 elevatorslider mb-0").SetStyle("height: "+3.25*testData.length+"rem") - new Combine([valCombine.SetClass("mt-8"), slider]).SetClass("flex flex-row h-14").AttachTo("extradiv") From 65ee3a22c4628d503cd40650acbffd490977eedc Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 16:29:43 +0200 Subject: [PATCH 12/82] Hide walls_and_buildings from layout overview --- assets/themes/walls_and_buildings/walls_and_buildings.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/themes/walls_and_buildings/walls_and_buildings.json b/assets/themes/walls_and_buildings/walls_and_buildings.json index 6b248f3b47..7b14bd13d5 100644 --- a/assets/themes/walls_and_buildings/walls_and_buildings.json +++ b/assets/themes/walls_and_buildings/walls_and_buildings.json @@ -17,5 +17,7 @@ "layers": [ "walls_and_buildings", "entrance" - ] + ], + "hideFromOverview": true + } \ No newline at end of file From 45b736308ed6b529d2302a90332d7bcd51654a46 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 18 Jul 2022 14:37:29 +0000 Subject: [PATCH 13/82] latest --- index.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.css b/index.css index 4636a48a7d..ffaecf572d 100644 --- a/index.css +++ b/index.css @@ -248,18 +248,18 @@ input[type="range"].vertical { padding-top: 30px; } input[type="range"].vertical::-moz-range-thumb { - width: 60px; - height: 50px; + width: 150px; + height: 35px; border: 2px; border-style: solid; - border-width: 50px; background-color: #00000000 !important; background-image: url("/assets/svg/elevator_wheelchair.svg"); background-size: contain; background-position: center center; background-repeat: no-repeat; cursor: pointer; - border-image: linear-gradient(to right, red 50%, transparent 50%) 100% 1; + border-image: linear-gradient(to right, black 50%, transparent 50%) 100% 1; + padding-bottom: 5px; } } From b7dfdcab70ee8f6925ddbebfea201b4103e39625 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 18 Jul 2022 17:17:21 +0200 Subject: [PATCH 14/82] Increase minzoom on onwheels --- assets/themes/onwheels/onwheels.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 2994e849b3..74496f104a 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -60,7 +60,7 @@ ] } ], - "minzoom": "15", + "minzoom": "17", "mapRendering": [ { "label": null From 0d3e7f816879325af4b2fa8dbcac1c4d39670007 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Tue, 19 Jul 2022 08:47:31 +0000 Subject: [PATCH 15/82] fixed levels slider with elevator icon in firefox --- css/index-tailwind-output.css | 71 +++++++++++++++++++---------------- index.css | 7 ++-- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index b8b950474e..71a4ae761b 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -803,18 +803,10 @@ video { float: none; } -.m-8 { - margin: 2rem; -} - .m-1 { margin: 0.25rem; } -.m-2 { - margin: 0.5rem; -} - .m-4 { margin: 1rem; } @@ -835,6 +827,14 @@ video { margin: 0.75rem; } +.m-8 { + margin: 2rem; +} + +.m-2 { + margin: 0.5rem; +} + .m-6 { margin: 1.5rem; } @@ -866,6 +866,10 @@ video { margin-top: 2rem; } +.ml-5 { + margin-left: 1.25rem; +} + .ml-3 { margin-left: 0.75rem; } @@ -2040,34 +2044,35 @@ input[type="range"].vertical { -webkit-appearance: slider-vertical; /* Chromium */ width: 8px; - height: 310px; - padding: 0 5px; + height: 180px; + padding: 31px 5px 0 5px; + cursor: pointer; } -.elevatorslider::-webkit-slider-thumb { - width: 100px; - height: 100px; - border: 0; - background-color: #00000000 !important; - background-image: url("/assets/svg/elevator.svg"); - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; - position: relative; - z-index: 2; -} +@-moz-document url-prefix() { + input[type="range"].vertical { + height: 269px !important; + width: 65px !important; + } -.elevatorslider::-moz-range-thumb { - width: 100px; - height: 100px; - border: 0; - background-color: #00000000 !important; - background-image: url("/assets/svg/elevator.svg"); - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; + .valuesContainer { + padding-top: 30px; + } + + input[type="range"].vertical::-moz-range-thumb { + width: 150px; + height: 30px; + border: 2px; + border-style: solid; + background-color: #00000000 !important; + background-image: url("/assets/svg/elevator_wheelchair.svg"); + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; + border-image: linear-gradient(to right, black 50%, transparent 50%) 100% 1; + padding-bottom: 5px; + } } .border-detail { diff --git a/index.css b/index.css index ffaecf572d..50b5c9e0e3 100644 --- a/index.css +++ b/index.css @@ -234,22 +234,21 @@ input[type="range"].vertical { -webkit-appearance: slider-vertical; /* Chromium */ width: 8px; height: 180px; - padding: 0 5px; + padding: 31px 5px 0 5px; cursor: pointer; } @-moz-document url-prefix() { input[type="range"].vertical { - height: 280px !important; + height: 269px !important; width: 65px !important; - padding-top: 25px; } .valuesContainer { padding-top: 30px; } input[type="range"].vertical::-moz-range-thumb { width: 150px; - height: 35px; + height: 30px; border: 2px; border-style: solid; background-color: #00000000 !important; From d31cc1805909a4b3aec3c24190a8dd80bc91ad74 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 19 Jul 2022 12:52:31 +0200 Subject: [PATCH 16/82] Fix article in entrance presets --- assets/layers/entrance/entrance.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 0533936342..f974ceeceb 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -387,7 +387,7 @@ "presets": [ { "title": { - "*": "entrance" + "en": "an entrance" }, "preciseInput": { "preferredBackground": "photo", From eb7d976e747566ca3a29fe6d4a39b468f7152af9 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 19 Jul 2022 13:30:26 +0200 Subject: [PATCH 17/82] Add more questions to the elevator theme --- Models/ThemeConfig/Conversion/Validation.ts | 4 ++ assets/layers/elevator/elevator.json | 38 +++++++++++-- .../layers/elevator/elevator_wheelchair.svg | 56 ++++++++++++++++++- assets/layers/entrance/entrance.json | 2 +- assets/layers/toilet/toilet.json | 47 +++++++++++++++- 5 files changed, 139 insertions(+), 8 deletions(-) diff --git a/Models/ThemeConfig/Conversion/Validation.ts b/Models/ThemeConfig/Conversion/Validation.ts index bcc24c6b79..df2b80e224 100644 --- a/Models/ThemeConfig/Conversion/Validation.ts +++ b/Models/ThemeConfig/Conversion/Validation.ts @@ -520,6 +520,10 @@ export class ValidateLayer extends DesugaringStep { errors } } + + if(json.title === undefined && json.tagRenderings !== undefined){ + warnings.push(context + ": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element.") + } if (json["builtin"] !== undefined) { errors.push(context + ": This layer hasn't been expanded: " + json) diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 3aa5290285..ec3de3e8cb 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -7,12 +7,39 @@ "osmTags": "elevator=yes" }, "minzoom": 13, + "title": { + "en": "Elevator" + }, "tagRenderings": [ "images", + { + "id": "operational_status", + "mappings": [ + { + "if": "operational_status=broken", + "then": { + "en": "This elevator is broken" + } + }, + { + "if": "operational_status=ok", + "then": { + "en": "This elevator works" + } + }, + { + "if": "operational_status=", + "then": { + "en": "This elevator works" + }, + "hideInAnswer": true + } + ] + }, { "id": "door-width", "render": { - "en": "This elevator's doors have a width of {canonical(door:width) }" + "en": "This elevator's doors have a width of {canonical(door:width)}" }, "question": { "en": "What is the width of this elevator's entrance?" @@ -25,7 +52,7 @@ { "id": "elevator-width", "render": { - "en": "This elevator has a width of {canonical(elevator:width) }" + "en": "This elevator has a width of {canonical(elevator:width)}" }, "question": { "en": "What is the width of this elevator?" @@ -38,7 +65,7 @@ { "id": "elevator-depth", "render": { - "en": "This elevator has a depth of {canonical(elevator:depth) }" + "en": "This elevator has a depth of {canonical(elevator:depth)}" }, "question": { "en": "What is the depth of this elevator?" @@ -47,12 +74,13 @@ "key": "elevator:depth", "type": "pfloat" } - } + }, + "induction-loop" ], "mapRendering": [ { "icon": { - "render": "./assets/layers/elevator/elevator_wheelchair.svg" + "render": "circle:white;./assets/layers/elevator/elevator_wheelchair.svg" }, "iconSize": "40,40,bottom", "location": [ diff --git a/assets/layers/elevator/elevator_wheelchair.svg b/assets/layers/elevator/elevator_wheelchair.svg index 35b934aeef..5ad6ee402d 100644 --- a/assets/layers/elevator/elevator_wheelchair.svg +++ b/assets/layers/elevator/elevator_wheelchair.svg @@ -1 +1,55 @@ - \ No newline at end of file + + + + + + + + + + + + + + + diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 0533936342..9bd4476a4a 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -358,7 +358,7 @@ }, "mappings": [ { - "if": "kerb-height=", + "if": "kerb:height=0", "then": { "en": "This door does not have a kerb", "nl": "Deze deur heeft geen drempel" diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 5dfeb438d4..794824f3f0 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -277,6 +277,21 @@ } ] }, + { + "id": "wheelchair-door-width", + "question": { + "en": "What is the width of the door to the wheelchair accessible toilet?", + "nl": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?" + }, + "render": { + "en": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide", + "nl": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide" + }, + "freeform": { + "key": "door:width", + "type": "pfloat" + } + }, { "id": "toilets-type", "question": { @@ -625,5 +640,35 @@ "nl": "Een laag die publieke toiletten toont", "de": "Eine Ebene mit (öffentlichen) Toiletten", "es": "Una capa que muestra baños (públicos)" - } + }, + "units": [ + { + "appliesToKey": [ + "door:width" + ], + "applicableUnits": [ + { + "canonicalDenomination": "m", + "alternativeDenomination": [ + "meter" + ], + "human": { + "en": "meter", + "nl": "meter" + } + }, + { + "canonicalDenomination": "cm", + "alternativeDenomination": [ + "centimeter", + "cms" + ], + "human": { + "en": "centimeter", + "nl": "centimeter" + } + } + ] + } + ] } \ No newline at end of file From 3ba5fb4b8880fccd0144cdeb88f71a4033a783ff Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 19 Jul 2022 21:13:35 +0200 Subject: [PATCH 18/82] Added name label and opening hours icon/filter --- assets/layers/pharmacy/pharmacy.json | 76 +++++++++++++++++++--------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/assets/layers/pharmacy/pharmacy.json b/assets/layers/pharmacy/pharmacy.json index 4f440aac0d..6a9c186083 100644 --- a/assets/layers/pharmacy/pharmacy.json +++ b/assets/layers/pharmacy/pharmacy.json @@ -26,6 +26,22 @@ "minzoom": 13, "tagRenderings": [ "images", + { + "id": "name", + "freeform": { + "key": "name", + "type": "string", + "placeholder": { + "en": "Name of the pharmacy" + } + }, + "question": { + "en": "What is the name of the pharmacy?" + }, + "render": { + "en": "This pharmacy is called {name}" + } + }, "opening_hours", "phone", "email", @@ -66,31 +82,45 @@ "location": [ "point", "centroid" - ] + ], + "iconBadges": [ + { + "if": "opening_hours~*", + "then": "isOpen" + } + ], + "label": { + "mappings": [ + { + "if": "name~*", + "then": "
{name}
" + } + ] + } } ], - "filter": [ + "filter": [ + { + "id": "drive-through", + "options": [ { - "id": "drive-through", - "options": [ - { - "question": { - "en": "Has drive through" - }, - "osmTags": "drive_through=yes" - } - ] - }, - { - "id": "dispensing", - "options": [ - { - "question": { - "en": "Pharmacy able to provide prescription drugs" - }, - "osmTags": "dispensing=yes" - } - ] + "question": { + "en": "Has drive through" + }, + "osmTags": "drive_through=yes" } - ] + ] + }, + { + "id": "dispensing", + "options": [ + { + "question": { + "en": "Pharmacy able to provide prescription drugs" + }, + "osmTags": "dispensing=yes" + } + ] + } + ] } \ No newline at end of file From 14ce840a7e5b2d4198d658ba5627cd4f339b4d57 Mon Sep 17 00:00:00 2001 From: riQQ Date: Tue, 19 Jul 2022 23:05:40 +0200 Subject: [PATCH 19/82] Add 'separately mapped sidewalk' answer in Sidewalks theme --- assets/themes/sidewalks/sidewalks.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/themes/sidewalks/sidewalks.json b/assets/themes/sidewalks/sidewalks.json index 262fff7161..4658be54fe 100644 --- a/assets/themes/sidewalks/sidewalks.json +++ b/assets/themes/sidewalks/sidewalks.json @@ -125,7 +125,11 @@ }, { "if": "sidewalk:left|right=no", - "then": "No, there is no seperated sidewalk to walk on" + "then": "No, there is no sidewalk to walk on" + }, + { + "if": "sidewalk:left|right=separate", + "then": "There is a separately mapped sidewalk to walk on" } ] }, @@ -224,4 +228,4 @@ "allowSplit": true } ] -} \ No newline at end of file +} From 616c7afab06ab0e11365f32dfbae275f227c0a3e Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 19 Jul 2022 13:30:26 +0200 Subject: [PATCH 20/82] Add more questions to the elevator theme --- Models/ThemeConfig/Conversion/Validation.ts | 4 ++ assets/layers/elevator/elevator.json | 38 +++++++++++-- .../layers/elevator/elevator_wheelchair.svg | 56 ++++++++++++++++++- assets/layers/entrance/entrance.json | 2 +- assets/layers/toilet/toilet.json | 47 +++++++++++++++- 5 files changed, 139 insertions(+), 8 deletions(-) diff --git a/Models/ThemeConfig/Conversion/Validation.ts b/Models/ThemeConfig/Conversion/Validation.ts index bcc24c6b79..df2b80e224 100644 --- a/Models/ThemeConfig/Conversion/Validation.ts +++ b/Models/ThemeConfig/Conversion/Validation.ts @@ -520,6 +520,10 @@ export class ValidateLayer extends DesugaringStep { errors } } + + if(json.title === undefined && json.tagRenderings !== undefined){ + warnings.push(context + ": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element.") + } if (json["builtin"] !== undefined) { errors.push(context + ": This layer hasn't been expanded: " + json) diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 2db635ffdb..e979a4a8fb 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -7,12 +7,39 @@ "osmTags": "highway=elevator" }, "minzoom": 13, + "title": { + "en": "Elevator" + }, "tagRenderings": [ "images", + { + "id": "operational_status", + "mappings": [ + { + "if": "operational_status=broken", + "then": { + "en": "This elevator is broken" + } + }, + { + "if": "operational_status=ok", + "then": { + "en": "This elevator works" + } + }, + { + "if": "operational_status=", + "then": { + "en": "This elevator works" + }, + "hideInAnswer": true + } + ] + }, { "id": "door-width", "render": { - "en": "This elevator's doors have a width of {canonical(door:width) }" + "en": "This elevator's doors have a width of {canonical(door:width)}" }, "question": { "en": "What is the width of this elevator's entrance?" @@ -25,7 +52,7 @@ { "id": "elevator-width", "render": { - "en": "This elevator has a width of {canonical(elevator:width) }" + "en": "This elevator has a width of {canonical(elevator:width)}" }, "question": { "en": "What is the width of this elevator?" @@ -38,7 +65,7 @@ { "id": "elevator-depth", "render": { - "en": "This elevator has a depth of {canonical(elevator:depth) }" + "en": "This elevator has a depth of {canonical(elevator:depth)}" }, "question": { "en": "What is the depth of this elevator?" @@ -47,12 +74,13 @@ "key": "elevator:depth", "type": "pfloat" } - } + }, + "induction-loop" ], "mapRendering": [ { "icon": { - "render": "./assets/layers/elevator/elevator_wheelchair.svg" + "render": "circle:white;./assets/layers/elevator/elevator_wheelchair.svg" }, "iconSize": "40,40,bottom", "location": [ diff --git a/assets/layers/elevator/elevator_wheelchair.svg b/assets/layers/elevator/elevator_wheelchair.svg index 35b934aeef..5ad6ee402d 100644 --- a/assets/layers/elevator/elevator_wheelchair.svg +++ b/assets/layers/elevator/elevator_wheelchair.svg @@ -1 +1,55 @@ - \ No newline at end of file + + + + + + + + + + + + + + + diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 0533936342..9bd4476a4a 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -358,7 +358,7 @@ }, "mappings": [ { - "if": "kerb-height=", + "if": "kerb:height=0", "then": { "en": "This door does not have a kerb", "nl": "Deze deur heeft geen drempel" diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 5dfeb438d4..794824f3f0 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -277,6 +277,21 @@ } ] }, + { + "id": "wheelchair-door-width", + "question": { + "en": "What is the width of the door to the wheelchair accessible toilet?", + "nl": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?" + }, + "render": { + "en": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide", + "nl": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide" + }, + "freeform": { + "key": "door:width", + "type": "pfloat" + } + }, { "id": "toilets-type", "question": { @@ -625,5 +640,35 @@ "nl": "Een laag die publieke toiletten toont", "de": "Eine Ebene mit (öffentlichen) Toiletten", "es": "Una capa que muestra baños (públicos)" - } + }, + "units": [ + { + "appliesToKey": [ + "door:width" + ], + "applicableUnits": [ + { + "canonicalDenomination": "m", + "alternativeDenomination": [ + "meter" + ], + "human": { + "en": "meter", + "nl": "meter" + } + }, + { + "canonicalDenomination": "cm", + "alternativeDenomination": [ + "centimeter", + "cms" + ], + "human": { + "en": "centimeter", + "nl": "centimeter" + } + } + ] + } + ] } \ No newline at end of file From 84be1668e907eb833ac7943748bc19f1a6294a6a Mon Sep 17 00:00:00 2001 From: paunofu Date: Tue, 19 Jul 2022 23:32:29 +0000 Subject: [PATCH 21/82] Translated using Weblate (Catalan) Currently translated at 35.4% (119 of 336 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/ca/ --- langs/themes/ca.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 724f5c12ae..8a4fb3f6e7 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -359,5 +359,9 @@ }, "waste_basket": { "title": "Papepera" + }, + "healthcare": { + "title": "Assistència sanitària", + "description": "En aquest mapa es mostren diversos elements relacionats amb la salut" } -} \ No newline at end of file +} From f821f42586e352050055b3e6483c9d43469e972a Mon Sep 17 00:00:00 2001 From: kjon Date: Tue, 19 Jul 2022 17:05:43 +0000 Subject: [PATCH 22/82] Translated using Weblate (German) Currently translated at 100.0% (336 of 336 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/de/ --- langs/themes/de.json | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/langs/themes/de.json b/langs/themes/de.json index 67f154691e..6a01a1aabb 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -741,10 +741,17 @@ "overrideAll": { "+tagRenderings": { "0": { - "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter" + "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "mappings": { + "0": { + "then": "Dieser Eingang hat keine Breitenangabe" + } + } } } - } + }, + "description": "Auf dieser Karte werden öffentlich zugängliche Orte für Rollstuhlfahrer angezeigt und können leicht hinzugefügt werden", + "title": "Auf Rädern" }, "openwindpowermap": { "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen.", @@ -975,5 +982,21 @@ "description": "Auf dieser Karte findest Du Abfalleimer in Deiner Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, kannst du ihn selbst hinzufügen", "shortDescription": "Eine Karte mit Abfalleimern", "title": "Abfalleimer" + }, + "healthcare": { + "description": "Auf dieser Karte werden verschiedene Gesundheitseinrichtungen angezeigt", + "title": "Gesundheitswesen" + }, + "rainbow_crossings": { + "description": "Auf dieser Karte sind Fußgängerüberwege mit Regenbogenfarben eingezeichnet und können leicht hinzugefügt werden", + "title": "Regenbogen-Fußgängerübergänge" + }, + "transit": { + "description": "Planen Sie Ihre Reise mit Hilfe von öffentlichen Verkehrsmitteln.", + "title": "Buslinien" + }, + "walls_and_buildings": { + "title": "Wände und Gebäude", + "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden." } -} \ No newline at end of file +} From e6d44e8a88839b84dc0dbd15bf7e9b61c494cc50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Tue, 19 Jul 2022 08:33:50 +0000 Subject: [PATCH 23/82] Translated using Weblate (Hungarian) Currently translated at 44.7% (303 of 677 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/hu/ --- langs/hu.json | 72 +++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/langs/hu.json b/langs/hu.json index bca3b77ad3..deb229c833 100644 --- a/langs/hu.json +++ b/langs/hu.json @@ -7,30 +7,30 @@ }, "delete": { "cancel": "Mégse", - "cannotBeDeleted": "Ez az objektum nem törölhető", + "cannotBeDeleted": "Ez a térkpelem nem törölhető", "delete": "Törlés", "explanations": { - "hardDelete": "Ez az elem törlődik az OpenStreetMapről. Csak tapasztalt szerkesztő tudja visszaállítani", - "selectReason": "Kérjük, jelöld meg, miért kellene ezt a pontot törölni", - "softDelete": "Ez az objektum frissülni fog és ebben az alkalmazásban nem fog látszani. {reason}" + "hardDelete": "Ez a térképelem törlődik az OpenStreetMapről. Csak tapasztalt szerkesztő tudja visszaállítani", + "selectReason": "Kérjük, jelöld meg, miért kellene ezt a térképelemet törölni", + "softDelete": "Ez a térképelem frissülni fog és ebben az alkalmazásban nem fog látszani. {reason}" }, - "isDeleted": "Ez az objektum törlődött", + "isDeleted": "Ez a térképelem törlődött", "isntAPoint": "Csak pontot lehet törölni, a kiválasztott térképelem viszont vonal, terület vagy kapcsolat.", - "loading": "Tulajdonságok megvizsgálása annak ellenőrzéséhez, hogy az objektum törölhető-e.", - "loginToDelete": "Egy pont törléséhez be kell jelentkezni", - "notEnoughExperience": "Ezt a pontot valaki más készítette.", - "onlyEditedByLoggedInUser": "Ezt a pontot csak te magad szerkesztetted, így nyugodtan törölheted.", + "loading": "Tulajdonságok megvizsgálása annak ellenőrzéséhez, hogy a térképelem törölhető-e.", + "loginToDelete": "Térképelem törléséhez be kell jelentkezni", + "notEnoughExperience": "Ezt a térképelemet valaki más készítette.", + "onlyEditedByLoggedInUser": "Ezt a térképelemet csak te magad szerkesztetted, így nyugodtan törölheted.", "partOfOthers": "Ez a pont egy vonal vagy kapcsolat része, ezért közvetlenül nem törölhető.", - "readMessages": "Olvasatlan üzeneteid vannak. Olvasd el őket, mielőtt törölnél egy pontot – lehet, hogy valaki épp erről írt", + "readMessages": "Olvasatlan üzeneteid vannak. Olvasd el őket, mielőtt törölnél egy térképelemet – lehet, hogy valaki épp erről írt", "reasons": { - "disused": "Ez az objektum használaton kívüli vagy el lett távolítva", - "duplicate": "Ez a pont egy másik objektum megkettőzése", - "notFound": "Ezt az objektumot nem sikerült megtalálni", - "test": "Ez egy tesztpont volt: az általa jelölt objektum valójában soha nem létezett" + "disused": "Ez a térképelem használaton kívüli vagy el lett távolítva", + "duplicate": "Ez a térképelem egy másik térképelem megkettőzése", + "notFound": "Ezt a térképelemet nem sikerült megtalálni", + "test": "Ez egy tesztelésre szolgáló térképelem volt: az általa jelölt objektum valójában soha nem létezett" }, - "safeDelete": "Ez a pont nyugodtan törölhető.", + "safeDelete": "Ez a térképelem nyugodtan törölhető.", "useSomethingElse": "A törléséhez használj egy másik OpenStreetMap-szerkesztőt", - "whyDelete": "Miért kellene törölni ezt a pontot?" + "whyDelete": "Miért kellene törölni ezt a térképelemet?" }, "favourite": { "loginNeeded": "

Jelentkezz be

A személyes elrendezés csak OpenStreetMap-felhasználóknak érhető el", @@ -39,34 +39,34 @@ }, "general": { "about": "Egy adott téma esetében az OpenStreetMap egyszerű szerkesztése és hozzáadása", - "aboutMapcomplete": "

A MapComplete-ről

Arra használhatod, hogy egy egy adott téma szerint OpenStreetMap-adatokat adj hozzá az adatbázishoz. Válaszolj a kérdésekre, és a szerkesztéseid perceken belül mindenhol elérhetővé válnak. A témához tartozó elemeket, kérdéseket és nyelveket a téma karbantartója határozza meg .

További információk

A MapComplete mindig felkínálja a következő lépést ahhoz, hogy tanulhass az OpenStreetMapről.

  • Weboldalba ágyazva az iframe egy teljes képernyős MapComplete-hez vezet
  • A teljes képernyős változat az OpenStreetMapről mutat adatokat
  • A megtekintés bejelentkezés nélkül is működik, de a szerkesztéshez OSM-fiók szükséges
  • Ha nem vagy bejelentkezve, kérjük, tedd meg
  • Miután válaszoltál egy kérdésre, új pontokat helyezhetsz a térképre
  • Egy idő után megjelennek a tényleges OSM-címkék, amelyek később a wikire hivatkoznak


Észrevettél egy problémát? Új funkciót szeretnél kérni? Szeretnél segíteni a fordításban? Látogass el a forráskódhoz vagy a problémakövetőhöz (issue tracker).

Szeretnéd látni a fejlődést? Kövesd a szerkesztések számát az OsmCha módosításkészlet-elemzőn.

", + "aboutMapcomplete": "

Névjegy

A MapComplete-et használhatod, hogy egy egy adott téma szerint OpenStreetMap-adatokat adj hozzá az adatbázishoz. Válaszolj a kérdésekre, és a szerkesztéseid perceken belül mindenhol elérhetővé válnak. A legtöbb témánál hozzáadhatsz képeket vagy akár véleményt is írhatsz. A témához tartozó elemeket, kérdéseket és nyelveket a téma karbantartója határozza meg .

További információk

A MapComplete mindig felkínálja a következő lépést ahhoz, hogy tanulhass az OpenStreetMapről.

  • Weboldalba ágyazva az iframe egy teljes képernyős MapComplete-hez vezet
  • A teljes képernyős változat az OpenStreetMapről mutat adatokat
  • A megtekintés bejelentkezés nélkül is működik, de a szerkesztéshez OSM-fiók szükséges
  • Ha nem vagy bejelentkezve, kérjük, tedd meg
  • Miután válaszoltál egy kérdésre, új elemeket helyezhetsz a térképre
  • Egy idő után megjelennek a tényleges OSM-címkék, amelyek később a wikire hivatkoznak


Észrevettél egy problémát? Új funkciót szeretnél kérni? Szeretnél segíteni a fordításban? Látogass el a forráskódhoz vagy a problémakövetőhöz (issue tracker).

Szeretnéd látni a fejlődést? Kövesd a szerkesztések számát az OsmCha módosításkészlet-elemzőn.

", "add": { "addNew": "Új {category} hozzáadása", "addNewMapLabel": "Új elem hozzáadásához kattints ide", "confirmButton": "{category} hozzáadása.
A hozzáadott objektum mindenki számára látható lesz
", - "confirmIntro": "

Felrajzolsz egy {title} objektumot?

Az itt létrehozandó pontot mindenki láthatja majd. Kérjük, csak valóban létező dolgokat rajzolj fel a térképre. Ezeket az adatokat sok alkalmazás használja.", + "confirmIntro": "

Felrajzolsz egy {title} objektumot?

Az itt létrehozandó térképelemet mindenki láthatja majd. Kérjük, csak valóban létező dolgokat rajzolj fel a térképre. Ezeket az adatokat sok alkalmazás használja.", "disableFilters": "Minden szűrő kikapcsolása", - "disableFiltersExplanation": "Lehet, hogy a szűrő miatt egyes objektumok nem látszanak", - "hasBeenImported": "Ezt a pontot már importálták", + "disableFiltersExplanation": "Lehet, hogy a szűrő miatt egyes térképelemek nem látszanak", + "hasBeenImported": "Ezt a térképelemet már importálták", "import": { "hasBeenImported": "Ez az objektum importáltatott", "howToTest": "A teszteléshez add hozzá az URL-hez a test=true vagy a backend=osm-test szöveget. A módosításkészlet a konzolra lesz nyomtatva. Ha hivatalossá szeretnéd tenni ezt a témát (és szeretnéd engedélyezni az importálás gombot), akkor nyiss egy lekéréses kérelmet (pull request).", "importTags": "Az elem a következő címkéket fogja kapni: {tags}", "officialThemesOnly": "A balesetek elkerülése érdekében a nem hivatalos témáknál ki van kapcsolva az importálás gomb", - "wrongType": "Ez az elem nem pont vagy vonal, ezért nem importálható", - "zoomInMore": "Nagyíts tovább az elem importálásához" + "wrongType": "Ez a térképelem nem pont vagy vonal, ezért nem importálható", + "zoomInMore": "Nagyíts tovább a térképelem importálásához" }, "importTags": "Az elem {tags} címkéket fog kapni", "intro": "Olyan helyre kattintottál, ahol még nincs ismert adat.
", - "layerNotEnabled": "A {layer} réteg nincs engedélyezve. Pont hozzáadásához engedélyezd ezt a réteget", + "layerNotEnabled": "A {layer} réteg nincs engedélyezve. Térképelem hozzáadásához engedélyezd ezt a réteget", "openLayerControl": "Rétegvezérlő-doboz megnyitása", - "pleaseLogin": "Új pont hozzáadásához be kell jelentkezned", + "pleaseLogin": "Új térképelem hozzáadásához be kell jelentkezned", "presetInfo": "Az új érdekes pont (POI) címkéi: {tags}", - "stillLoading": "Az adatok betöltése folyamatban van. Kérjük, várj egy kicsit mielőtt új pontot adsz hozzá.", - "title": "Hozzáadsz egy új pontot?", + "stillLoading": "Az adatok betöltése folyamatban van. Kérjük, várj egy kicsit mielőtt elhelyezel egy új térképelemet.", + "title": "Hozzáadsz egy új térképelemet?", "warnVisibleForEveryone": "A kiegészítésed mindenki számára látható lesz", "wrongType": "Ez az elem nem pont vagy vonal, ezért nem importálható", - "zoomInFurther": "Pont hozzáadásához közelíts jobban.", + "zoomInFurther": "Térképelem hozzáadásához közelíts jobban.", "zoomInMore": "Nagyíts tovább az elem importálásához" }, "apply_button": { @@ -123,7 +123,7 @@ "error": "Valami rosszul sült el", "example": "Példa", "examples": "Példák", - "fewChangesBefore": "Kérjük, válaszolj néhány meglévő pontokra vonatkozó kérdésre, mielőtt új pontot adnál hozzá.", + "fewChangesBefore": "Kérjük, válaszolj néhány meglévő térképelemekre vonatkozó kérdésre, mielőtt új elemet adnál hozzá.", "getStartedLogin": "A kezdéshez jelentkezz be az OpenStreetMap-fiókoddal,", "getStartedNewAccount": " vagy hozz létre új fiókot", "goToInbox": "Beérkezett üzenetek megnyitása", @@ -191,7 +191,7 @@ "websiteIs": "Weboldal: {website}", "websiteOf": "Mi a weboldala ennek ({category})?" }, - "readYourMessages": "Kérjük, új pont hozzáadása előtt olvasd el az összes OpenStreetMap-üzeneted.", + "readYourMessages": "Kérjük, új térképelem hozzáadása előtt olvasd el az összes OpenStreetMap-üzeneted.", "removeLocationHistory": "Helyelőzmények törlése", "returnToTheMap": "Vissza a térképhez", "save": "Mentés", @@ -276,10 +276,10 @@ }, "importHelper": { "introduction": { - "description": "Az importálási segédprogram egy külső adatkészletet konvertál OSM-jegyzetekké. A külső adatkészletnek meg kell felelnie a MapComplete egyik meglévő rétegének. Az importálóba helyezett minden egyes elemhez egyetlen jegyzet fog létrejönni. Ezek a jegyzetek a megfelelő objektumokkal együtt fognak megjelenni ezeken a térképekben, hogy könnyen fel lehessen rajzolni őket a térképre." + "description": "Az importálási segédprogram egy külső adatkészletet konvertál OSM-jegyzetekké. A külső adatkészletnek meg kell felelnie a MapComplete egyik meglévő rétegének. Az importálóba helyezett minden egyes elemhez egyetlen jegyzet fog létrejönni. Ezek a jegyzetek a megfelelő térképelemekkel együtt fognak megjelenni ezeken a térképekben, hogy könnyen fel lehessen rajzolni őket a térképre." }, "previewAttributes": { - "allAttributesSame": "Ez a címke minden importálandó objektumon szerepel" + "allAttributesSame": "Ez a címke minden importálandó térképelemen szerepel" } }, "index": { @@ -292,7 +292,7 @@ }, "move": { "cancel": "Áthelyezés megszakítása", - "cannotBeMoved": "Ez az objektum nem mozdítható el.", + "cannotBeMoved": "Ez a térképelem nem mozdítható el.", "confirmMove": "Áthelyezés ide", "inviteToMove": { "generic": "Pont áthelyezése", @@ -300,12 +300,12 @@ "reasonRelocation": "Objektum áthelyezése mert a valóságban is áthelyezték" }, "inviteToMoveAgain": "Pont áthelyezése ismét", - "isRelation": "Ez az objektum egy kapcsolat, amely nem mozdítható el", - "isWay": "Ez az objektum egy vonal, amelyet csak egy másik OpenStreetMap-szerkesztővel lehet áthelyezni.", + "isRelation": "Ez a térképelem egy kapcsolat, amely nem mozdítható el", + "isWay": "Ez a térképelem egy vonal, amelyet csak egy másik OpenStreetMap-szerkesztővel lehet áthelyezni.", "loginToMove": "Pont áthelyezéséhez be kell jelentkezned", "moveTitle": "Pont áthelyezése", - "partOfAWay": "Ez az objektum egy másik vonal része; csak egy másik szerkesztő használatával lehet elmozdítani.", - "partOfRelation": "Ez az objektum egy kapcsolat része; csak egy másik szerkesztő használatával mozdítható el.", + "partOfAWay": "Ez a térképelem egy másik vonal része; csak egy másik szerkesztő használatával lehet elmozdítani.", + "partOfRelation": "Ez a térképelem egy kapcsolat része; csak egy másik szerkesztő használatával mozdítható el.", "pointIsMoved": "A pont áthelyeződött", "reasons": { "reasonInaccurate": "Az objektum helye pontatlan a térképen, ezért néhány méterrel arrébb kell tenni", From 72f7bbd7db6eda5d7d6cdc35edcf39baacd05807 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 12:04:14 +0200 Subject: [PATCH 24/82] Add charts to dashboard view --- UI/Base/ChartJs.ts | 24 +++++ UI/Base/Combine.ts | 3 + UI/Base/VariableUIElement.ts | 1 + UI/BaseUIElement.ts | 4 +- UI/BigComponents/TagRenderingChart.ts | 146 ++++++++++++++++++++++++++ UI/DashboardGui.ts | 60 ++++++++--- css/index-tailwind-output.css | 32 +++--- test.ts | 120 ++++++++++++--------- 8 files changed, 314 insertions(+), 76 deletions(-) create mode 100644 UI/Base/ChartJs.ts create mode 100644 UI/BigComponents/TagRenderingChart.ts diff --git a/UI/Base/ChartJs.ts b/UI/Base/ChartJs.ts new file mode 100644 index 0000000000..a4250f4c43 --- /dev/null +++ b/UI/Base/ChartJs.ts @@ -0,0 +1,24 @@ +import BaseUIElement from "../BaseUIElement"; +import {Chart, ChartConfiguration, ChartType, DefaultDataPoint, registerables} from 'chart.js'; +Chart.register(...registerables); + + +export default class ChartJs< + TType extends ChartType = ChartType, + TData = DefaultDataPoint, + TLabel = unknown + > extends BaseUIElement{ + private readonly _config: ChartConfiguration; + + constructor(config: ChartConfiguration) { + super(); + this._config = config; + } + + protected InnerConstructElement(): HTMLElement { + const canvas = document.createElement("canvas"); + new Chart(canvas, this._config); + return canvas; + } + +} \ No newline at end of file diff --git a/UI/Base/Combine.ts b/UI/Base/Combine.ts index 87eb30f5b4..05ad8de848 100644 --- a/UI/Base/Combine.ts +++ b/UI/Base/Combine.ts @@ -38,6 +38,9 @@ export default class Combine extends BaseUIElement { protected InnerConstructElement(): HTMLElement { const el = document.createElement("span") try { + if(this.uiElements === undefined){ + console.error("PANIC") + } for (const subEl of this.uiElements) { if (subEl === undefined || subEl === null) { continue; diff --git a/UI/Base/VariableUIElement.ts b/UI/Base/VariableUIElement.ts index 1dbbe3ded5..3163ac39b5 100644 --- a/UI/Base/VariableUIElement.ts +++ b/UI/Base/VariableUIElement.ts @@ -33,6 +33,7 @@ export class VariableUiElement extends BaseUIElement { if (self.isDestroyed) { return true; } + while (el.firstChild) { el.removeChild(el.lastChild); } diff --git a/UI/BaseUIElement.ts b/UI/BaseUIElement.ts index 556ab637f3..749f61d35c 100644 --- a/UI/BaseUIElement.ts +++ b/UI/BaseUIElement.ts @@ -9,7 +9,7 @@ export default abstract class BaseUIElement { protected _constructedHtmlElement: HTMLElement; protected isDestroyed = false; - private clss: Set = new Set(); + private readonly clss: Set = new Set(); private style: string; private _onClick: () => void; @@ -114,7 +114,7 @@ export default abstract class BaseUIElement { if (style !== undefined && style !== "") { el.style.cssText = style } - if (this.clss.size > 0) { + if (this.clss?.size > 0) { try { el.classList.add(...Array.from(this.clss)) } catch (e) { diff --git a/UI/BigComponents/TagRenderingChart.ts b/UI/BigComponents/TagRenderingChart.ts new file mode 100644 index 0000000000..54d0d861c2 --- /dev/null +++ b/UI/BigComponents/TagRenderingChart.ts @@ -0,0 +1,146 @@ +import ChartJs from "../Base/ChartJs"; +import {OsmFeature} from "../../Models/OsmFeature"; +import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig"; +import {ChartConfiguration} from 'chart.js'; +import Combine from "../Base/Combine"; + +export default class TagRenderingChart extends Combine { + + private static readonly unkownColor = 'rgba(128, 128, 128, 0.2)' + private static readonly unkownBorderColor = 'rgba(128, 128, 128, 0.2)' + + private static readonly otherColor = 'rgba(128, 128, 128, 0.2)' + private static readonly otherBorderColor = 'rgba(128, 128, 255)' + private static readonly notApplicableColor = 'rgba(128, 128, 128, 0.2)' + private static readonly notApplicableBorderColor = 'rgba(255, 0, 0)' + + + private static readonly backgroundColors = [ + 'rgba(255, 99, 132, 0.2)', + 'rgba(54, 162, 235, 0.2)', + 'rgba(255, 206, 86, 0.2)', + 'rgba(75, 192, 192, 0.2)', + 'rgba(153, 102, 255, 0.2)', + 'rgba(255, 159, 64, 0.2)' + ] + + private static readonly borderColors = [ + 'rgba(255, 99, 132, 1)', + 'rgba(54, 162, 235, 1)', + 'rgba(255, 206, 86, 1)', + 'rgba(75, 192, 192, 1)', + 'rgba(153, 102, 255, 1)', + 'rgba(255, 159, 64, 1)' + ] + + /** + * Creates a chart about this tagRendering for the given data + */ + constructor(features: OsmFeature[], tagRendering: TagRenderingConfig, options?: { + chartclasses?: string, + chartstyle?: string + }) { + + const mappings = tagRendering.mappings ?? [] + if (mappings.length === 0 && tagRendering.freeform?.key === undefined) { + super(["TagRendering", tagRendering.id, "does not have mapping or a freeform key - no stats can be made"]) + return; + } + let unknownCount = 0; + let categoryCounts = mappings.map(_ => 0) + let otherCount = 0; + let notApplicable = 0; + for (const feature of features) { + const props = feature.properties + if(tagRendering.condition !== undefined && !tagRendering.condition.matchesProperties(props)){ + notApplicable++; + continue; + } + + if (!tagRendering.IsKnown(props)) { + unknownCount++; + continue; + } + let foundMatchingMapping = false; + for (let i = 0; i < mappings.length; i++) { + const mapping = mappings[i]; + if (mapping.if.matchesProperties(props)) { + categoryCounts[i]++ + foundMatchingMapping = true + if (!tagRendering.multiAnswer) { + break; + } + } + } + if (tagRendering.freeform?.key !== undefined && props[tagRendering.freeform.key] !== undefined) { + otherCount++ + } else if (!foundMatchingMapping) { + unknownCount++ + } + } + + if (unknownCount + notApplicable === features.length) { + console.log("Totals:", features.length+" elements","tr:", tagRendering, "other",otherCount, "unkown",unknownCount, "na", notApplicable) + super(["No relevant data for ", tagRendering.id]) + return + } + + const labels = ["Unknown", "Other", "Not applicable", ...mappings?.map(m => m.then.txt) ?? []] + const data = [unknownCount, otherCount, notApplicable,...categoryCounts] + const borderColor = [TagRenderingChart.unkownBorderColor, TagRenderingChart.otherBorderColor, TagRenderingChart.notApplicableBorderColor] + const backgroundColor = [TagRenderingChart.unkownColor, TagRenderingChart.otherColor, TagRenderingChart.notApplicableColor] + + while (borderColor.length < data.length) { + borderColor.push(...TagRenderingChart.borderColors) + backgroundColor.push(...TagRenderingChart.backgroundColors) + } + + for (let i = data.length; i >= 0; i--) { + if (data[i] === 0) { + labels.splice(i, 1) + data.splice(i, 1) + borderColor.splice(i, 1) + backgroundColor.splice(i, 1) + } + } + + if (tagRendering.id === undefined) { + console.log(tagRendering) + } + const config = { + type: tagRendering.multiAnswer ? 'bar' : 'doughnut', + data: { + labels, + datasets: [{ + data, + backgroundColor, + borderColor, + borderWidth: 1, + label: undefined + }] + }, + options: { + plugins: { + legend: { + display: !tagRendering.multiAnswer + } + } + } + } + + const chart = new ChartJs(config).SetClass(options?.chartclasses ?? "w-32 h-32"); + + if (options.chartstyle !== undefined) { + chart.SetStyle(options.chartstyle) + } + + + super([ + tagRendering.question ?? tagRendering.id, + chart]) + + this.SetClass("block") + } + + +} \ No newline at end of file diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index acf0ea5a16..1256c6fde1 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -26,6 +26,8 @@ import {FilterState} from "../Models/FilteredLayer"; import Translations from "./i18n/Translations"; import Constants from "../Models/Constants"; import SimpleAddUI from "./BigComponents/SimpleAddUI"; +import TagRenderingChart from "./BigComponents/TagRenderingChart"; +import Loading from "./Base/Loading"; export default class DashboardGui { @@ -170,7 +172,7 @@ export default class DashboardGui { } const map = this.SetupMap(); - Utils.downloadJson("./service-worker-version").then(data => console.log("Service worker", data)).catch(e => console.log("Service worker not active")) + Utils.downloadJson("./service-worker-version").then(data => console.log("Service worker", data)).catch(_ => console.log("Service worker not active")) document.getElementById("centermessage").classList.add("hidden") @@ -180,7 +182,7 @@ export default class DashboardGui { } const self = this; - const elementsInview = new UIEventSource([]); + const elementsInview = new UIEventSource<{ distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[]>([]); function update() { elementsInview.setData(self.visibleElements(map, layers)) @@ -201,10 +203,10 @@ export default class DashboardGui { const welcome = new Combine([state.layoutToUse.description, state.layoutToUse.descriptionTail]) self.currentView.setData({title: state.layoutToUse.title, contents: welcome}) const filterViewIsOpened = new UIEventSource(false) - filterViewIsOpened.addCallback(fv => self.currentView.setData({title: "filters", contents: filterView})) - + filterViewIsOpened.addCallback(_ => self.currentView.setData({title: "filters", contents: filterView})) + const newPointIsShown = new UIEventSource(false); - const addNewPoint = new SimpleAddUI( + const addNewPoint = new SimpleAddUI( new UIEventSource(true), new UIEventSource(undefined), filterViewIsOpened, @@ -213,20 +215,50 @@ export default class DashboardGui { ); const addNewPointTitle = "Add a missing point" this.currentView.addCallbackAndRunD(cv => { - newPointIsShown.setData(cv.contents === addNewPoint) + newPointIsShown.setData(cv.contents === addNewPoint) }) newPointIsShown.addCallbackAndRun(isShown => { - if(isShown){ - if(self.currentView.data.contents !== addNewPoint){ + if (isShown) { + if (self.currentView.data.contents !== addNewPoint) { self.currentView.setData({title: addNewPointTitle, contents: addNewPoint}) } - }else{ - if(self.currentView.data.contents === addNewPoint){ + } else { + if (self.currentView.data.contents === addNewPoint) { self.currentView.setData(undefined) } } }) - + + const statistics = + new VariableUiElement(elementsInview.stabilized(1000).map(features => { + if (features === undefined) { + return new Loading("Loading data") + } + if (features.length === 0) { + return "No elements in view" + } + const els = [] + for (const layer of state.layoutToUse.layers) { + if(layer.name === undefined){ + continue + } + const featuresForLayer = features.filter(f => f.layer === layer).map(f => f.element) + if(featuresForLayer.length === 0){ + continue + } + els.push(new Title(layer.name)) + for (const tagRendering of layer.tagRenderings) { + const chart = new TagRenderingChart(featuresForLayer, tagRendering, { + chartclasses: "w-full", + chartstyle: "height: 60rem" + }) + els.push(chart) + } + } + return new Combine(els) + })) + + new Combine([ new Combine([ this.viewSelector(new Title(state.layoutToUse.title.Clone(), 2), state.layoutToUse.title.Clone(), welcome, "welcome"), @@ -235,12 +267,12 @@ export default class DashboardGui { this.viewSelector(new Title( new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))), "Statistics", - new FixedUiElement("Stats"), "statistics"), + statistics, "statistics"), this.viewSelector(new FixedUiElement("Filter"), "Filters", filterView, "filters"), - this.viewSelector(new Combine([ "Add a missing point"]), addNewPointTitle, - addNewPoint + this.viewSelector(new Combine(["Add a missing point"]), addNewPointTitle, + addNewPoint ), new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block m-2"))) diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 4065ece841..2419d3ccdc 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -1050,8 +1050,8 @@ video { height: 6rem; } -.h-8 { - height: 2rem; +.h-80 { + height: 20rem; } .h-64 { @@ -1070,6 +1070,10 @@ video { height: 3rem; } +.h-8 { + height: 2rem; +} + .h-4 { height: 1rem; } @@ -1134,12 +1138,8 @@ video { width: 100%; } -.w-8 { - width: 2rem; -} - -.w-1 { - width: 0.25rem; +.w-80 { + width: 20rem; } .w-24 { @@ -1162,6 +1162,10 @@ video { width: 3rem; } +.w-8 { + width: 2rem; +} + .w-4 { width: 1rem; } @@ -1570,10 +1574,6 @@ video { padding-right: 1rem; } -.pr-2 { - padding-right: 0.5rem; -} - .pl-1 { padding-left: 0.25rem; } @@ -1642,6 +1642,10 @@ video { padding-top: 0.125rem; } +.pr-2 { + padding-right: 0.5rem; +} + .pl-6 { padding-left: 1.5rem; } @@ -1860,6 +1864,10 @@ video { z-index: 10001 } +.w-160 { + width: 40rem; +} + .bg-subtle { background-color: var(--subtle-detail-color); color: var(--subtle-detail-color-contrast); diff --git a/test.ts b/test.ts index e25a2ad547..f9feaf0faf 100644 --- a/test.ts +++ b/test.ts @@ -1,52 +1,76 @@ -import * as shops from "./assets/generated/layers/shops.json" -import Combine from "./UI/Base/Combine"; -import Img from "./UI/Base/Img"; -import BaseUIElement from "./UI/BaseUIElement"; -import {VariableUiElement} from "./UI/Base/VariableUIElement"; -import LanguagePicker from "./UI/LanguagePicker"; -import TagRenderingConfig, {Mapping} from "./Models/ThemeConfig/TagRenderingConfig"; -import {MappingConfigJson} from "./Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"; -import {FixedUiElement} from "./UI/Base/FixedUiElement"; -import {TagsFilter} from "./Logic/Tags/TagsFilter"; -import {SearchablePillsSelector} from "./UI/Input/SearchableMappingsSelector"; +import ChartJs from "./UI/Base/ChartJs"; +import TagRenderingChart from "./UI/BigComponents/TagRenderingChart"; +import {OsmFeature} from "./Models/OsmFeature"; +import * as food from "./assets/generated/layers/food.json" +import TagRenderingConfig from "./Models/ThemeConfig/TagRenderingConfig"; import {UIEventSource} from "./Logic/UIEventSource"; - -const mappingsRaw: MappingConfigJson[] = shops.tagRenderings.find(tr => tr.id == "shop_types").mappings -const mappings = mappingsRaw.map((m, i) => TagRenderingConfig.ExtractMapping(m, i, "test", "test")) - -function fromMapping(m: Mapping): { show: BaseUIElement, value: TagsFilter, mainTerm: Record, searchTerms?: Record } { - const el: BaseUIElement = m.then - let icon: BaseUIElement - if (m.icon !== undefined) { - icon = new Img(m.icon).SetClass("h-8 w-8 pr-2") - } else { - icon = new FixedUiElement("").SetClass("h-8 w-1") - } - const show = new Combine([ - icon, - el.SetClass("block-ruby") - ]).SetClass("flex items-center") - - return {show, mainTerm: m.then.translations, searchTerms: m.searchTerms, value: m.if}; - -} -const search = new UIEventSource("") -const sp = new SearchablePillsSelector( - mappings.map(m => fromMapping(m)), +import Combine from "./UI/Base/Combine"; +const data = new UIEventSource([ { - noMatchFound: new VariableUiElement(search.map(s => "Mark this a `"+s+"`")), - onNoSearch: new FixedUiElement("Search in "+mappingsRaw.length+" categories"), - selectIfSingle: true, - searchValue: search + properties: { + id: "node/1234", + cuisine:"pizza", + "payment:cash":"yes" + }, + geometry:{ + type: "Point", + coordinates: [0,0] + }, + id: "node/1234", + type: "Feature" + }, + { + properties: { + id: "node/42", + cuisine:"pizza", + "payment:cash":"yes" + }, + geometry:{ + type: "Point", + coordinates: [1,0] + }, + id: "node/42", + type: "Feature" + }, + { + properties: { + id: "node/452", + cuisine:"pasta", + "payment:cash":"yes", + "payment:cards":"yes" + }, + geometry:{ + type: "Point", + coordinates: [2,0] + }, + id: "node/452", + type: "Feature" + }, + { + properties: { + id: "node/4542", + cuisine:"something_comletely_invented", + "payment:cards":"yes" + }, + geometry:{ + type: "Point", + coordinates: [3,0] + }, + id: "node/4542", + type: "Feature" + }, + { + properties: { + id: "node/45425", + }, + geometry:{ + type: "Point", + coordinates: [3,0] + }, + id: "node/45425", + type: "Feature" } -) +]); -sp.AttachTo("maindiv") - -const lp = new LanguagePicker(["en", "nl"], "") - -new Combine([ - new VariableUiElement(sp.GetValue().map(tf => new FixedUiElement("Selected tags: " + tf.map(tf => tf.asHumanString(false, false, {})).join(", ")))), - lp -]).SetClass("flex flex-col") - .AttachTo("extradiv") \ No newline at end of file +new Combine(food.tagRenderings.map(tr => new TagRenderingChart(data, new TagRenderingConfig(tr, "test"), {chartclasses: "w-160 h-160"}))) + .AttachTo("maindiv") \ No newline at end of file From 465497e6ca8638275002555ca325b82a95f00516 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 14:06:39 +0200 Subject: [PATCH 25/82] Finish dashboard mode --- UI/BigComponents/TagRenderingChart.ts | 70 +++++++++++++++++++-------- UI/DashboardGui.ts | 8 ++- 2 files changed, 56 insertions(+), 22 deletions(-) diff --git a/UI/BigComponents/TagRenderingChart.ts b/UI/BigComponents/TagRenderingChart.ts index 54d0d861c2..f877688c32 100644 --- a/UI/BigComponents/TagRenderingChart.ts +++ b/UI/BigComponents/TagRenderingChart.ts @@ -3,6 +3,7 @@ import {OsmFeature} from "../../Models/OsmFeature"; import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig"; import {ChartConfiguration} from 'chart.js'; import Combine from "../Base/Combine"; +import {TagUtils} from "../../Logic/Tags/TagUtils"; export default class TagRenderingChart extends Combine { @@ -47,49 +48,78 @@ export default class TagRenderingChart extends Combine { return; } let unknownCount = 0; - let categoryCounts = mappings.map(_ => 0) - let otherCount = 0; + const categoryCounts = mappings.map(_ => 0) + const otherCounts: Record = {} let notApplicable = 0; + let barchartMode = tagRendering.multiAnswer; for (const feature of features) { const props = feature.properties - if(tagRendering.condition !== undefined && !tagRendering.condition.matchesProperties(props)){ + if (tagRendering.condition !== undefined && !tagRendering.condition.matchesProperties(props)) { notApplicable++; continue; } - + if (!tagRendering.IsKnown(props)) { unknownCount++; continue; } let foundMatchingMapping = false; - for (let i = 0; i < mappings.length; i++) { - const mapping = mappings[i]; - if (mapping.if.matchesProperties(props)) { - categoryCounts[i]++ - foundMatchingMapping = true - if (!tagRendering.multiAnswer) { + if (!tagRendering.multiAnswer) { + for (let i = 0; i < mappings.length; i++) { + const mapping = mappings[i]; + if (mapping.if.matchesProperties(props)) { + categoryCounts[i]++ + foundMatchingMapping = true break; } } + } else { + for (let i = 0; i < mappings.length; i++) { + const mapping = mappings[i]; + if (TagUtils.MatchesMultiAnswer( mapping.if, props)) { + categoryCounts[i]++ + if(categoryCounts[i] > 3){ + foundMatchingMapping = true + } + } + } } - if (tagRendering.freeform?.key !== undefined && props[tagRendering.freeform.key] !== undefined) { - otherCount++ - } else if (!foundMatchingMapping) { - unknownCount++ + if (!foundMatchingMapping) { + if (tagRendering.freeform?.key !== undefined && props[tagRendering.freeform.key] !== undefined) { + const otherValue = props[tagRendering.freeform.key] + otherCounts[otherValue] = (otherCounts[otherValue] ?? 0) + 1 + barchartMode = true ; + } else { + unknownCount++ + } } } if (unknownCount + notApplicable === features.length) { - console.log("Totals:", features.length+" elements","tr:", tagRendering, "other",otherCount, "unkown",unknownCount, "na", notApplicable) super(["No relevant data for ", tagRendering.id]) return } - const labels = ["Unknown", "Other", "Not applicable", ...mappings?.map(m => m.then.txt) ?? []] - const data = [unknownCount, otherCount, notApplicable,...categoryCounts] + let otherGrouped = 0; + const otherLabels: string[] = [] + const otherData : number[] = [] + for (const v in otherCounts) { + const count = otherCounts[v] + if(count > 2){ + otherLabels.push(v) + otherData.push(otherCounts[v]) + }else{ + otherGrouped++; + } + } + + const labels = ["Unknown", "Other", "Not applicable", ...mappings?.map(m => m.then.txt) ?? [], ...otherLabels] + const data = [unknownCount, otherGrouped, notApplicable, ...categoryCounts, ... otherData] const borderColor = [TagRenderingChart.unkownBorderColor, TagRenderingChart.otherBorderColor, TagRenderingChart.notApplicableBorderColor] const backgroundColor = [TagRenderingChart.unkownColor, TagRenderingChart.otherColor, TagRenderingChart.notApplicableColor] + + while (borderColor.length < data.length) { borderColor.push(...TagRenderingChart.borderColors) backgroundColor.push(...TagRenderingChart.backgroundColors) @@ -108,7 +138,7 @@ export default class TagRenderingChart extends Combine { console.log(tagRendering) } const config = { - type: tagRendering.multiAnswer ? 'bar' : 'doughnut', + type: barchartMode ? 'bar' : 'doughnut', data: { labels, datasets: [{ @@ -122,7 +152,7 @@ export default class TagRenderingChart extends Combine { options: { plugins: { legend: { - display: !tagRendering.multiAnswer + display: !barchartMode } } } @@ -133,7 +163,7 @@ export default class TagRenderingChart extends Combine { if (options.chartstyle !== undefined) { chart.SetStyle(options.chartstyle) } - + super([ tagRendering.question ?? tagRendering.id, diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 1256c6fde1..05dda2770f 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -28,6 +28,7 @@ import Constants from "../Models/Constants"; import SimpleAddUI from "./BigComponents/SimpleAddUI"; import TagRenderingChart from "./BigComponents/TagRenderingChart"; import Loading from "./Base/Loading"; +import BackToIndex from "./BigComponents/BackToIndex"; export default class DashboardGui { @@ -95,6 +96,7 @@ export default class DashboardGui { private visibleElements(map: MinimapObj & BaseUIElement, layers: Record): { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] { const bbox = map.bounds.data if (bbox === undefined) { + console.warn("No bbox") return undefined } const location = map.location.data; @@ -278,14 +280,16 @@ export default class DashboardGui { new VariableUiElement(elementsInview.map(elements => this.mainElementsView(elements).SetClass("block m-2"))) .SetClass("block shrink-2 overflow-x-auto h-full border-2 border-subtle rounded-lg"), this.allDocumentationButtons(), - new LanguagePicker(Object.keys(state.layoutToUse.title.translations)).SetClass("mt-2") + new LanguagePicker(Object.keys(state.layoutToUse.title.translations)).SetClass("mt-2"), + new BackToIndex() ]).SetClass("w-1/2 m-4 flex flex-col shrink-0 grow-0"), new VariableUiElement(this.currentView.map(({title, contents}) => { return new Combine([ new Title(Translations.W(title), 2).SetClass("shrink-0 border-b-4 border-subtle"), Translations.W(contents).SetClass("shrink-2 overflow-y-auto block") ]).SetClass("flex flex-col h-full") - })).SetClass("w-1/2 m-4 p-2 border-2 border-subtle rounded-xl m-4 ml-0 mr-8 shrink-0 grow-0") + })).SetClass("w-1/2 m-4 p-2 border-2 border-subtle rounded-xl m-4 ml-0 mr-8 shrink-0 grow-0"), + ]).SetClass("flex h-full") .AttachTo("leafletDiv") From a90fa5cd63c2b944cf8d322fcbd3e0b636800421 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 14:39:19 +0200 Subject: [PATCH 26/82] More styling of the dashboard --- Models/ThemeConfig/LayerConfig.ts | 4 ++-- UI/BigComponents/TagRenderingChart.ts | 6 ++++-- UI/DashboardGui.ts | 12 ++++++++--- .../pedestrian_path/pedestrian_path.json | 1 - css/index-tailwind-output.css | 20 +++++++++++-------- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/Models/ThemeConfig/LayerConfig.ts b/Models/ThemeConfig/LayerConfig.ts index 1ecf1966f9..f904a8db7b 100644 --- a/Models/ThemeConfig/LayerConfig.ts +++ b/Models/ThemeConfig/LayerConfig.ts @@ -367,9 +367,9 @@ export default class LayerConfig extends WithContextLoader { extraProps.push('This layer is not visible by default and must be enabled in the filter by the user. ') } if (this.title === undefined) { - extraProps.push("This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.") + extraProps.push("Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable.") } - if (this.title === undefined && this.shownByDefault === false) { + if (this.name === undefined && this.shownByDefault === false) { extraProps.push("This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-=true") } if (this.name === undefined) { diff --git a/UI/BigComponents/TagRenderingChart.ts b/UI/BigComponents/TagRenderingChart.ts index f877688c32..e7ef2060a8 100644 --- a/UI/BigComponents/TagRenderingChart.ts +++ b/UI/BigComponents/TagRenderingChart.ts @@ -44,7 +44,8 @@ export default class TagRenderingChart extends Combine { const mappings = tagRendering.mappings ?? [] if (mappings.length === 0 && tagRendering.freeform?.key === undefined) { - super(["TagRendering", tagRendering.id, "does not have mapping or a freeform key - no stats can be made"]) + super([]) + this.SetClass("hidden") return; } let unknownCount = 0; @@ -96,7 +97,8 @@ export default class TagRenderingChart extends Combine { } if (unknownCount + notApplicable === features.length) { - super(["No relevant data for ", tagRendering.id]) + super([]) + this.SetClass("hidden") return } diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 05dda2770f..600783c562 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -108,6 +108,9 @@ export default class DashboardGui { let seenElements = new Set() for (const elementsWithMetaElement of elementsWithMeta) { const layer = layers[elementsWithMetaElement.layer] + if(layer.title === undefined){ + continue + } const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); for (let i = 0; i < elementsWithMetaElement.features.length; i++) { const element = elementsWithMetaElement.features[i]; @@ -249,13 +252,16 @@ export default class DashboardGui { continue } els.push(new Title(layer.name)) + + const layerStats = [] for (const tagRendering of layer.tagRenderings) { const chart = new TagRenderingChart(featuresForLayer, tagRendering, { chartclasses: "w-full", chartstyle: "height: 60rem" }) - els.push(chart) + layerStats.push(chart.SetClass("w-full lg:w-1/3")) } + els.push(new Combine(layerStats).SetClass("flex flex-wrap")) } return new Combine(els) })) @@ -282,13 +288,13 @@ export default class DashboardGui { this.allDocumentationButtons(), new LanguagePicker(Object.keys(state.layoutToUse.title.translations)).SetClass("mt-2"), new BackToIndex() - ]).SetClass("w-1/2 m-4 flex flex-col shrink-0 grow-0"), + ]).SetClass("w-1/2 lg:w-1/4 m-4 flex flex-col shrink-0 grow-0"), new VariableUiElement(this.currentView.map(({title, contents}) => { return new Combine([ new Title(Translations.W(title), 2).SetClass("shrink-0 border-b-4 border-subtle"), Translations.W(contents).SetClass("shrink-2 overflow-y-auto block") ]).SetClass("flex flex-col h-full") - })).SetClass("w-1/2 m-4 p-2 border-2 border-subtle rounded-xl m-4 ml-0 mr-8 shrink-0 grow-0"), + })).SetClass("w-1/2 lg:w-3/4 m-4 p-2 border-2 border-subtle rounded-xl m-4 ml-0 mr-8 shrink-0 grow-0"), ]).SetClass("flex h-full") .AttachTo("leafletDiv") diff --git a/assets/layers/pedestrian_path/pedestrian_path.json b/assets/layers/pedestrian_path/pedestrian_path.json index 8231a262c7..72d61a4bdf 100644 --- a/assets/layers/pedestrian_path/pedestrian_path.json +++ b/assets/layers/pedestrian_path/pedestrian_path.json @@ -16,7 +16,6 @@ ] } }, - "title": {}, "description": { "en": "Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer", "nl": "Pad voor voetgangers, in het bijzonder gebruikt voor navigatie binnen gebouwen en om aan toegangen vast te klikken in deze laag", diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 2419d3ccdc..b90fea2793 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -1050,10 +1050,6 @@ video { height: 6rem; } -.h-80 { - height: 20rem; -} - .h-64 { height: 16rem; } @@ -1138,10 +1134,6 @@ video { width: 100%; } -.w-80 { - width: 20rem; -} - .w-24 { width: 6rem; } @@ -1192,6 +1184,10 @@ video { width: max-content; } +.w-32 { + width: 8rem; +} + .w-16 { width: 4rem; } @@ -2829,6 +2825,14 @@ input { width: 75%; } + .lg\:w-1\/3 { + width: 33.333333%; + } + + .lg\:w-1\/4 { + width: 25%; + } + .lg\:w-1\/6 { width: 16.666667%; } From 37f6dc12130130de11b59758f8c1a474e12dacaa Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Wed, 20 Jul 2022 13:10:38 +0000 Subject: [PATCH 27/82] added governments layer and theme --- assets/layers/governments/government.svg | 3 + assets/layers/governments/governments.json | 59 +++++++++++++++++++ assets/layers/governments/license_info.json | 12 ++++ assets/svg/license_info.json | 10 ++++ assets/themes/governments/crest.svg | 11 ++++ assets/themes/governments/governments.json | 20 +++++++ assets/themes/governments/license_info.json | 10 ++++ .../mapcomplete-changes.json | 4 ++ 8 files changed, 129 insertions(+) create mode 100644 assets/layers/governments/government.svg create mode 100644 assets/layers/governments/governments.json create mode 100644 assets/layers/governments/license_info.json create mode 100644 assets/themes/governments/crest.svg create mode 100644 assets/themes/governments/governments.json create mode 100644 assets/themes/governments/license_info.json diff --git a/assets/layers/governments/government.svg b/assets/layers/governments/government.svg new file mode 100644 index 0000000000..7a0577c173 --- /dev/null +++ b/assets/layers/governments/government.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/layers/governments/governments.json b/assets/layers/governments/governments.json new file mode 100644 index 0000000000..75bb148ce5 --- /dev/null +++ b/assets/layers/governments/governments.json @@ -0,0 +1,59 @@ +{ + "id": "governments", + "name": { + "en": "governments" + }, + "source": { + "osmTags": { + "or": [ + "office=government" + ] + } + }, + "title": { + "render": { + "en": "Governmental Office {name}" + } + }, + "minzoom": 13, + "tagRenderings": [ + "images", + "phone", + "email", + "website", + { + "question": { + "en": "What is the name of this Governmental Office?" + }, + "render": { + "en": "This Governmental Office is called {name}" + }, + "freeform": { + "key": "name" + }, + "id": "name" + } + ], + "presets": [ + { + "title": { + "en": "a Governmental Office" + }, + "tags": [ + "office=government" + ] + } + ], + "mapRendering": [ + { + "icon": { + "render": "circle:white;./assets/layers/governments/government.svg" + }, + "iconSize": "40,40,center", + "location": [ + "point", + "centroid" + ] + } + ] +} \ No newline at end of file diff --git a/assets/layers/governments/license_info.json b/assets/layers/governments/license_info.json new file mode 100644 index 0000000000..3281710ec6 --- /dev/null +++ b/assets/layers/governments/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "government.svg", + "license": "CC0", + "authors": [ + "OSM Carto" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Office-16.svg" + ] + } +] \ No newline at end of file diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index 58f491f57d..9770e3ba76 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -387,6 +387,16 @@ ], "sources": [] }, + { + "path": "elevator_wheelchair.svg", + "license": "CC-BY_SA", + "authors": [ + "Robin Julien" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "envelope.svg", "license": "CC0; trivial", diff --git a/assets/themes/governments/crest.svg b/assets/themes/governments/crest.svg new file mode 100644 index 0000000000..383b543b1e --- /dev/null +++ b/assets/themes/governments/crest.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/themes/governments/governments.json b/assets/themes/governments/governments.json new file mode 100644 index 0000000000..405aea0c15 --- /dev/null +++ b/assets/themes/governments/governments.json @@ -0,0 +1,20 @@ +{ + "id": "governments", + "title": { + "en": "Governmental Offices" + }, + "description": { + "en": "On this map, Governmental offices are shown and can be easily added" + }, + "maintainer": "MapComplete", + "icon": "./assets/themes/onwheels/crest.svg", + "version": "0", + "startLat": 50.8465573, + "defaultBackgroundId": "CartoDB.Voyager", + "startLon": 4.351697, + "startZoom": 16, + "widenFactor": 2, + "layers": [ + "governments" + ] +} \ No newline at end of file diff --git a/assets/themes/governments/license_info.json b/assets/themes/governments/license_info.json new file mode 100644 index 0000000000..9f2dcf81aa --- /dev/null +++ b/assets/themes/governments/license_info.json @@ -0,0 +1,10 @@ +[ + { + "path": "crest.svg", + "license": "CC0", + "authors": [ + "Free Wheelies" + ], + "sources": [] + } +] \ No newline at end of file diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index db1b9bd236..a3a583bd97 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -187,6 +187,10 @@ "if": "theme=ghostbikes", "then": "./assets/themes/ghostbikes/logo.svg" }, + { + "if": "theme=governments", + "then": "./assets/themes/onwheels/crest.svg" + }, { "if": "theme=grb", "then": "./assets/themes/grb_import/logo.svg" From e25c904aa39225f020ace0af27e08a20a3f9ed33 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 15:04:51 +0200 Subject: [PATCH 28/82] Show a full-screen graph on click --- UI/BigComponents/TagRenderingChart.ts | 19 ++++++++++--------- UI/DashboardGui.ts | 26 +++++++++++++++++++++++--- css/index-tailwind-output.css | 4 ++++ 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/UI/BigComponents/TagRenderingChart.ts b/UI/BigComponents/TagRenderingChart.ts index e7ef2060a8..f88cce188a 100644 --- a/UI/BigComponents/TagRenderingChart.ts +++ b/UI/BigComponents/TagRenderingChart.ts @@ -39,7 +39,9 @@ export default class TagRenderingChart extends Combine { */ constructor(features: OsmFeature[], tagRendering: TagRenderingConfig, options?: { chartclasses?: string, - chartstyle?: string + chartstyle?: string, + includeTitle?: boolean, + groupToOtherCutoff?: 3 | number }) { const mappings = tagRendering.mappings ?? [] @@ -79,9 +81,7 @@ export default class TagRenderingChart extends Combine { const mapping = mappings[i]; if (TagUtils.MatchesMultiAnswer( mapping.if, props)) { categoryCounts[i]++ - if(categoryCounts[i] > 3){ - foundMatchingMapping = true - } + foundMatchingMapping = true } } } @@ -89,7 +89,6 @@ export default class TagRenderingChart extends Combine { if (tagRendering.freeform?.key !== undefined && props[tagRendering.freeform.key] !== undefined) { const otherValue = props[tagRendering.freeform.key] otherCounts[otherValue] = (otherCounts[otherValue] ?? 0) + 1 - barchartMode = true ; } else { unknownCount++ } @@ -107,13 +106,14 @@ export default class TagRenderingChart extends Combine { const otherData : number[] = [] for (const v in otherCounts) { const count = otherCounts[v] - if(count > 2){ + if(count >= (options.groupToOtherCutoff ?? 3)){ otherLabels.push(v) otherData.push(otherCounts[v]) }else{ otherGrouped++; } } + const labels = ["Unknown", "Other", "Not applicable", ...mappings?.map(m => m.then.txt) ?? [], ...otherLabels] const data = [unknownCount, otherGrouped, notApplicable, ...categoryCounts, ... otherData] @@ -136,9 +136,10 @@ export default class TagRenderingChart extends Combine { } } - if (tagRendering.id === undefined) { - console.log(tagRendering) + if(labels.length > 9){ + barchartMode = true; } + const config = { type: barchartMode ? 'bar' : 'doughnut', data: { @@ -168,7 +169,7 @@ export default class TagRenderingChart extends Combine { super([ - tagRendering.question ?? tagRendering.id, + options?.includeTitle ? (tagRendering.question.Clone() ?? tagRendering.id) : undefined, chart]) this.SetClass("block") diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 600783c562..1e3eef507b 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -29,6 +29,7 @@ import SimpleAddUI from "./BigComponents/SimpleAddUI"; import TagRenderingChart from "./BigComponents/TagRenderingChart"; import Loading from "./Base/Loading"; import BackToIndex from "./BigComponents/BackToIndex"; +import Locale from "./i18n/Locale"; export default class DashboardGui { @@ -128,7 +129,7 @@ export default class DashboardGui { continue } const activeFilters: FilterState[] = Array.from(filtered.appliedFilters.data.values()); - if (activeFilters.some(filter => !filter?.currentFilter?.matchesProperties(element.properties))) { + if (!activeFilters.every(filter => filter?.currentFilter === undefined || filter?.currentFilter?.matchesProperties(element.properties))) { continue } const center = GeoOperations.centerpointCoordinates(element); @@ -257,14 +258,33 @@ export default class DashboardGui { for (const tagRendering of layer.tagRenderings) { const chart = new TagRenderingChart(featuresForLayer, tagRendering, { chartclasses: "w-full", - chartstyle: "height: 60rem" + chartstyle: "height: 60rem", + includeTitle: true }) + const full = new Lazy(() => + new TagRenderingChart(featuresForLayer, tagRendering, { + chartstyle: "max-height: calc(100vh - 10rem)", + groupToOtherCutoff: 0 + }) + ) + chart.onClick(() => { + const current = self.currentView.data + full.onClick(() => { + self.currentView.setData(current) + }) + self.currentView.setData( + { + title: new Title(tagRendering.question.Clone() ?? tagRendering.id), + contents: full + }) + } + ) layerStats.push(chart.SetClass("w-full lg:w-1/3")) } els.push(new Combine(layerStats).SetClass("flex flex-wrap")) } return new Combine(els) - })) + }, [Locale.language])) new Combine([ diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index b90fea2793..7cf5871e57 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -1110,6 +1110,10 @@ video { height: 12rem; } +.max-h-screen { + max-height: 100vh; +} + .max-h-7 { max-height: 1.75rem; } From 9dd264adac881bcd98e27662a7ab681ca7732869 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 09:36:00 +0200 Subject: [PATCH 29/82] Intall chart.js --- package-lock.json | 11 +++++++++++ package.json | 1 + 2 files changed, 12 insertions(+) diff --git a/package-lock.json b/package-lock.json index 9ab9117e4b..3f9406d4c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "@types/prompt-sync": "^4.1.0", "@types/wikidata-sdk": "^6.1.0", "@types/xml2js": "^0.4.9", + "chart.js": "^3.8.0", "country-language": "^0.1.7", "csv-parse": "^5.1.0", "doctest-ts-improved": "^0.8.8", @@ -4525,6 +4526,11 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/chart.js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.0.tgz", + "integrity": "sha512-cr8xhrXjLIXVLOBZPkBZVF6NDeiVIrPLHcMhnON7UufudL+CNeRrD+wpYanswlm8NpudMdrt3CHoLMQMxJhHRg==" + }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -20309,6 +20315,11 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chart.js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.0.tgz", + "integrity": "sha512-cr8xhrXjLIXVLOBZPkBZVF6NDeiVIrPLHcMhnON7UufudL+CNeRrD+wpYanswlm8NpudMdrt3CHoLMQMxJhHRg==" + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", diff --git a/package.json b/package.json index 094487785c..3df2d4ed91 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "@types/prompt-sync": "^4.1.0", "@types/wikidata-sdk": "^6.1.0", "@types/xml2js": "^0.4.9", + "chart.js": "^3.8.0", "country-language": "^0.1.7", "csv-parse": "^5.1.0", "doctest-ts-improved": "^0.8.8", From 6d77ca23b286d6ec2aea944c1ecd2ef646778469 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 15:38:45 +0200 Subject: [PATCH 30/82] Apply refactoring --- UI/DashboardGui.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 1e3eef507b..02dfddd206 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -125,7 +125,7 @@ export default class DashboardGui { if (!bbox.overlapsWith(BBox.get(element))) { continue } - if (layer?.isShown?.GetRenderValue(element)?.Subs(element.properties)?.txt === "no") { + if (layer?.isShown !== undefined && !layer.isShown.matchesProperties(element)) { continue } const activeFilters: FilterState[] = Array.from(filtered.appliedFilters.data.values()); @@ -255,11 +255,11 @@ export default class DashboardGui { els.push(new Title(layer.name)) const layerStats = [] - for (const tagRendering of layer.tagRenderings) { + for (const tagRendering of (layer?.tagRenderings ?? [])) { const chart = new TagRenderingChart(featuresForLayer, tagRendering, { chartclasses: "w-full", chartstyle: "height: 60rem", - includeTitle: true + includeTitle: false }) const full = new Lazy(() => new TagRenderingChart(featuresForLayer, tagRendering, { @@ -267,7 +267,8 @@ export default class DashboardGui { groupToOtherCutoff: 0 }) ) - chart.onClick(() => { + const title = new Title(tagRendering.question?.Clone() ?? tagRendering.id) + title.onClick(() => { const current = self.currentView.data full.onClick(() => { self.currentView.setData(current) @@ -279,7 +280,9 @@ export default class DashboardGui { }) } ) - layerStats.push(chart.SetClass("w-full lg:w-1/3")) + if(!chart.HasClass("hidden")){ + layerStats.push(new Combine([title, chart]).SetClass("flex flex-col w-full lg:w-1/3")) + } } els.push(new Combine(layerStats).SetClass("flex flex-wrap")) } From 499d696b681574c00ea32b6e85b548691b6c408b Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 19:35:08 +0200 Subject: [PATCH 31/82] Dropdown now automatically selects the first value, fix #960 --- UI/Input/DropDown.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/UI/Input/DropDown.ts b/UI/Input/DropDown.ts index b9fb6a3d32..493c9bec70 100644 --- a/UI/Input/DropDown.ts +++ b/UI/Input/DropDown.ts @@ -13,6 +13,11 @@ export class DropDown extends InputElement { private readonly _value: UIEventSource; private readonly _values: { value: T; shown: string | BaseUIElement }[]; + /** + * + * const dropdown = new DropDown("test",[{value: 42, shown: "the answer"}]) + * dropdown.GetValue().data // => 42 + */ constructor(label: string | BaseUIElement, values: { value: T, shown: string | BaseUIElement }[], value: UIEventSource = undefined, @@ -21,7 +26,7 @@ export class DropDown extends InputElement { } ) { super(); - value = value ?? new UIEventSource(undefined) + value = value ?? new UIEventSource(values[0].value) this._value = value this._values = values; if (values.length <= 1) { @@ -63,7 +68,7 @@ export class DropDown extends InputElement { select.onchange = (() => { - var index = select.selectedIndex; + const index = select.selectedIndex; value.setData(values[index].value); }); From f4f4207b7f5da36f34df08445cbd2b1b480d5da0 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 20:12:28 +0200 Subject: [PATCH 32/82] Add an example on how to use tags --- Docs/Tags_format.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Docs/Tags_format.md b/Docs/Tags_format.md index 1f835ef4d2..681b243a3e 100644 --- a/Docs/Tags_format.md +++ b/Docs/Tags_format.md @@ -4,13 +4,36 @@ Tags format When creating the `json` file describing your layer or theme, you'll have to add a few tags to describe what you want. This document gives an overview of what every expression means and how it behaves in edge cases. -If the schema-files note a type `string | AndOrTagConfigJson`, you can use one of these values. +If the schema-files note a type [`TagConfigJson`](https://github.com/pietervdvn/MapComplete/blob/develop/Models/ThemeConfig/Json/TagConfigJson.ts), you can use one of these values. In some cases, not every type of tags-filter can be used. For example, _rendering_ an option with a regex is fine (`"if": "brand~[Bb]randname", "then":" The brand is Brandname"`); but this regex can not be used to write a value into the database. The theme loader will however refuse to work with such inconsistencies and notify you of this while you are building your theme. +Example +------- + +This example shows the most common options on how to specify tags: + +```json +{ + "and": [ + "key=value", + { + "or": [ + "other_key=value", + "other_key=some_other_value" + ] + }, + "key_which_should_be_missing=", + "key_which_should_have_a_value~*", + "key~.*some_regex_a*_b+_[a-z]?", + "height<1" + ] +} +``` + Strict equality --------------- From a4b51b63ca6696e5b81a46dcb414a06f8d38f59c Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 20:17:06 +0200 Subject: [PATCH 33/82] Add question to 'does this elevator work', fix #973 --- assets/layers/elevator/elevator.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index e979a4a8fb..90987de001 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -14,6 +14,9 @@ "images", { "id": "operational_status", + "question": { + "en": "Does this elevator work?" + }, "mappings": [ { "if": "operational_status=broken", From f63f62922e93bbaa84c52e2deee7498bd4625234 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Wed, 20 Jul 2022 22:57:39 +0200 Subject: [PATCH 34/82] Fix various small issues to the teams, add some more validation --- Models/ThemeConfig/Conversion/Validation.ts | 9 +++++-- assets/layers/elevator/elevator.json | 25 ++++++++++++++++++- assets/layers/entrance/entrance.json | 4 +-- assets/layers/governments/governments.json | 3 +++ assets/layers/hospital/hospital.json | 7 ++++++ assets/layers/id_presets/id_presets.json | 5 +++- assets/layers/indoors/indoors.json | 3 +++ assets/layers/pharmacy/pharmacy.json | 3 +++ assets/layers/pharmacy/pharmacy.svg | 2 -- .../layers/reception_desk/reception_desk.json | 3 +++ assets/layers/wikidata/wikidata.json | 1 + assets/themes/speelplekken/speelplekken.json | 1 + scripts/thieves/readIdPresets.ts | 6 ++--- scripts/thieves/stealLanguages.ts | 5 +++- 14 files changed, 65 insertions(+), 12 deletions(-) diff --git a/Models/ThemeConfig/Conversion/Validation.ts b/Models/ThemeConfig/Conversion/Validation.ts index df2b80e224..1347da5fab 100644 --- a/Models/ThemeConfig/Conversion/Validation.ts +++ b/Models/ThemeConfig/Conversion/Validation.ts @@ -521,8 +521,13 @@ export class ValidateLayer extends DesugaringStep { } } - if(json.title === undefined && json.tagRenderings !== undefined){ - warnings.push(context + ": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element.") + if(json.tagRenderings !== undefined && json.tagRenderings.length > 0){ + if(json.title === undefined){ + errors.push(context + ": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element. Please add a title. If not having a popup is intended and the tagrenderings need to be kept (e.g. in a library layer), set `title: null` to disable this error.") + } + if(json.title === null){ + information.push(context + ": title is `null`. This results in an element that cannot be clicked - even though tagRenderings is set.") + } } if (json["builtin"] !== undefined) { diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 90987de001..1fd53a87f7 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -7,6 +7,9 @@ "osmTags": "highway=elevator" }, "minzoom": 13, + "description": { + "en": "This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information" + }, "title": { "en": "Elevator" }, @@ -22,7 +25,15 @@ "if": "operational_status=broken", "then": { "en": "This elevator is broken" - } + }, + "icon": "close:red" + }, + { + "if": "operational_status=closed", + "then": { + "en": "This elevator is closed e.g. because renovation works are going on" + }, + "icon": "invalid:red" }, { "if": "operational_status=ok", @@ -89,6 +100,17 @@ "location": [ "point", "centroid" + ], + "iconBadges": [ + { + "if": { + "or": [ + "operational_status=broken", + "operational_status=closed" + ] + }, + "then": "close:#c33" + } ] } ], @@ -121,6 +143,7 @@ } }, { + "default": true, "canonicalDenomination": "cm", "alternativeDenomination": [ "centimeter", diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 9bd4476a4a..207279ad60 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -337,8 +337,7 @@ "es": "¿Cual es el ancho de esta puerta/entrada?" }, "freeform": { - "key": "width", - "type": "distance" + "key": "width" } }, { @@ -417,6 +416,7 @@ } }, { + "default": true, "canonicalDenomination": "cm", "alternativeDenomination": [ "centimeter", diff --git a/assets/layers/governments/governments.json b/assets/layers/governments/governments.json index 75bb148ce5..89f600e7a5 100644 --- a/assets/layers/governments/governments.json +++ b/assets/layers/governments/governments.json @@ -3,6 +3,9 @@ "name": { "en": "governments" }, + "description": { + "en": "This layer show governmental buildings. It was setup as commissioned layer for the client of OSOC '22" + }, "source": { "osmTags": { "or": [ diff --git a/assets/layers/hospital/hospital.json b/assets/layers/hospital/hospital.json index b773e99924..e7eb846a96 100644 --- a/assets/layers/hospital/hospital.json +++ b/assets/layers/hospital/hospital.json @@ -8,6 +8,9 @@ "en": "Hospital" } }, + "description": { + "en": "A layer showing hospital grounds" + }, "minzoom": 12, "source": { "osmTags": "amenity=hospital" @@ -39,6 +42,10 @@ "point", "centroid" ] + }, + { + "color": "#fcd862", + "width": 1 } ] } \ No newline at end of file diff --git a/assets/layers/id_presets/id_presets.json b/assets/layers/id_presets/id_presets.json index 1c30d295e0..acff2db91f 100644 --- a/assets/layers/id_presets/id_presets.json +++ b/assets/layers/id_presets/id_presets.json @@ -1,10 +1,13 @@ { "id": "id_presets", - "description": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset.", + "description": { + "en": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset." + }, "#dont-translate": "*", "source": { "osmTags": "id~*" }, + "title": null, "mapRendering": null, "tagRenderings": [ { diff --git a/assets/layers/indoors/indoors.json b/assets/layers/indoors/indoors.json index 1c14a47e8f..4fc49ae79d 100644 --- a/assets/layers/indoors/indoors.json +++ b/assets/layers/indoors/indoors.json @@ -3,6 +3,9 @@ "name": { "en": "indoors" }, + "description": { + "en": "Basic indoor mapping: shows room outlines" + }, "source": { "osmTags": { "or": [ diff --git a/assets/layers/pharmacy/pharmacy.json b/assets/layers/pharmacy/pharmacy.json index 6a9c186083..8084bbb020 100644 --- a/assets/layers/pharmacy/pharmacy.json +++ b/assets/layers/pharmacy/pharmacy.json @@ -3,6 +3,9 @@ "name": { "en": "pharmacy" }, + "description": { + "en": "A layer showing pharmacies, which (probably) dispense prescription drugs" + }, "title": { "render": { "en": "{name}" diff --git a/assets/layers/pharmacy/pharmacy.svg b/assets/layers/pharmacy/pharmacy.svg index fe46542ad1..9c44db2d2f 100644 --- a/assets/layers/pharmacy/pharmacy.svg +++ b/assets/layers/pharmacy/pharmacy.svg @@ -1,6 +1,4 @@ - - \ No newline at end of file diff --git a/assets/layers/reception_desk/reception_desk.json b/assets/layers/reception_desk/reception_desk.json index a9d3228c24..7139bce67c 100644 --- a/assets/layers/reception_desk/reception_desk.json +++ b/assets/layers/reception_desk/reception_desk.json @@ -3,6 +3,9 @@ "name": { "en": "Reception desks" }, + "description": { + "en": "A layer showing where the reception desks are and which asks some accessibility information" + }, "title": { "render": { "en": "Reception desk" diff --git a/assets/layers/wikidata/wikidata.json b/assets/layers/wikidata/wikidata.json index e770e4985b..3b7d64613d 100644 --- a/assets/layers/wikidata/wikidata.json +++ b/assets/layers/wikidata/wikidata.json @@ -5,6 +5,7 @@ "source": { "osmTags": "id~*" }, + "title": null, "mapRendering": null, "tagRenderings": [ { diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json index de451a2b53..4da5ec0482 100644 --- a/assets/themes/speelplekken/speelplekken.json +++ b/assets/themes/speelplekken/speelplekken.json @@ -33,6 +33,7 @@ "layers": [ { "id": "shadow", + "title": null, "source": { "geoJson": "https://raw.githubusercontent.com/pietervdvn/MapComplete/master/assets/themes/speelplekken/shadow.geojson", "osmTags": "shadow=yes", diff --git a/scripts/thieves/readIdPresets.ts b/scripts/thieves/readIdPresets.ts index 0420c70647..37e414e131 100644 --- a/scripts/thieves/readIdPresets.ts +++ b/scripts/thieves/readIdPresets.ts @@ -296,8 +296,8 @@ const iconThief = new AggregateIconThief( const thief = new IdThief("../id-tagging-schema/", iconThief) -const shopLayerPath = targetDir + "id_presets.json" -const idPresets = JSON.parse(readFileSync(shopLayerPath, 'utf8')) +const id_presets_path = targetDir + "id_presets.json" +const idPresets = JSON.parse(readFileSync(id_presets_path, 'utf8')) idPresets.tagRenderings = [ { id: "shop_types", @@ -309,4 +309,4 @@ idPresets.tagRenderings = [ } ] -writeFileSync(shopLayerPath, JSON.stringify(idPresets, null, " "), 'utf8') \ No newline at end of file +writeFileSync(id_presets_path, JSON.stringify(idPresets, null, " "), 'utf8') \ No newline at end of file diff --git a/scripts/thieves/stealLanguages.ts b/scripts/thieves/stealLanguages.ts index cc775babf8..94cf953627 100644 --- a/scripts/thieves/stealLanguages.ts +++ b/scripts/thieves/stealLanguages.ts @@ -54,11 +54,14 @@ function main(){ const wikidataLayer = { id: "wikidata", - description: "Various tagrenderings which are generated from Wikidata. Automatically generated with a script, don't edit manually", + description: { + en: "Various tagrenderings which are generated from Wikidata. Automatically generated with a script, don't edit manually" + }, "#dont-translate": "*", "source": { "osmTags": "id~*" }, + title: null, "mapRendering": null, tagRenderings: [ { From 13e949a1cd17278c363722700cf1f500483b1af9 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Thu, 21 Jul 2022 15:54:24 +0200 Subject: [PATCH 35/82] Wire in level selector --- Logic/State/MapState.ts | 6 ++ UI/BigComponents/RightControls.ts | 28 ++++++++- UI/Input/LevelSelector.ts | 94 +++++++++++++++++++++++++++++++ test.ts | 24 -------- 4 files changed, 126 insertions(+), 26 deletions(-) create mode 100644 UI/Input/LevelSelector.ts diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts index 5a2564c069..d5e5a1fa64 100644 --- a/Logic/State/MapState.ts +++ b/Logic/State/MapState.ts @@ -78,6 +78,12 @@ export default class MapState extends UserRelatedState { * Which layers are enabled in the current theme and what filters are applied onto them */ public filteredLayers: UIEventSource = new UIEventSource([], "filteredLayers"); + + /** + * Filters which apply onto all layers + */ + public globalFilters: UIEventSource<{ filter: FilterState, id: string }[]> = new UIEventSource([], "globalFilters") + /** * Which overlays are shown */ diff --git a/UI/BigComponents/RightControls.ts b/UI/BigComponents/RightControls.ts index 6e3e333fa4..ec27232105 100644 --- a/UI/BigComponents/RightControls.ts +++ b/UI/BigComponents/RightControls.ts @@ -4,10 +4,15 @@ import MapControlButton from "../MapControlButton"; import GeoLocationHandler from "../../Logic/Actors/GeoLocationHandler"; import Svg from "../../Svg"; import MapState from "../../Logic/State/MapState"; +import {VariableUiElement} from "../Base/VariableUIElement"; +import LevelSelector from "../Input/LevelSelector"; +import {UIEventSource} from "../../Logic/UIEventSource"; +import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; +import {Utils} from "../../Utils"; export default class RightControls extends Combine { - constructor(state: MapState) { + constructor(state: MapState & { featurePipeline: FeaturePipeline }) { const geolocatioHandler = new GeoLocationHandler( state @@ -38,7 +43,26 @@ export default class RightControls extends Combine { state.locationControl.ping(); }); - super([plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1"))) + const levelsInView = state.currentBounds.map(bbox => { + if(bbox === undefined){ + return [] + } + const allElements = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox); + const allLevelsRaw: string[] = [].concat(...allElements.map(allElements => allElements.features.map(f => f.properties["level"]))) + const allLevels = [].concat(...allLevelsRaw.map(l => LevelSelector.LevelsParser(l))) + return Utils.Dedup(allLevels) + }) + const levelSelect = new LevelSelector(levelsInView) + + levelsInView.addCallbackAndRun(levelsInView => { + if(levelsInView.length <= 1){ + levelSelect.SetClass("invisible") + }else{ + levelSelect.RemoveClass("invisible") + } + }) + + super([levelSelect, plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1"))) this.SetClass("flex flex-col items-center") } diff --git a/UI/Input/LevelSelector.ts b/UI/Input/LevelSelector.ts new file mode 100644 index 0000000000..82e945809d --- /dev/null +++ b/UI/Input/LevelSelector.ts @@ -0,0 +1,94 @@ +import {InputElement} from "./InputElement"; +import {Store, UIEventSource} from "../../Logic/UIEventSource"; +import Combine from "../Base/Combine"; +import Slider from "./Slider"; +import {ClickableToggle} from "./Toggle"; +import {FixedUiElement} from "../Base/FixedUiElement"; +import {Utils} from "../../Utils"; + +export default class LevelSelector extends Combine implements InputElement{ + + private readonly _value : UIEventSource; + + constructor(currentLevels: Store, options?:{ + value?: UIEventSource + }) { + + const testData = ["-1", "0", "0.5", "1", "1.5", "2"] + let slider = new Slider(0, testData.length - 1, {vertical: true}); + slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: "+2.5*testData.length+"rem ") + const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" + const values = testData.map((data, i) => new ClickableToggle( + new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( + (sliderVal) => { + return sliderVal === i + }, + [], + (isSelected) => { + return isSelected ? i : slider.GetValue().data + } + )) + .ToggleOnClick() + .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) + + super([new Combine(values.reverse()).SetClass("mt-8"), slider]) + this.SetClass("flex flex-row h-14"); + + const value = this._value = options?.value ?? new UIEventSource(undefined) + slider.GetValue().addCallbackAndRun(i => { + if(currentLevels?.data === undefined){ + return + } + value.setData(currentLevels?.data[i]); + }) + value.addCallback(level => { + const i = currentLevels?.data?.findIndex(l => l === level) + slider.GetValue().setData(i) + }) + } + + GetValue(): UIEventSource { + return this._value; + } + + protected InnerConstructElement(): HTMLElement { + return undefined; + } + + IsValid(t: string): boolean { + return false; + } + + + /** + * Parses a level specifier to the various available levels + * + * LevelSelector.LevelsParser("0") // => ["0"] + * LevelSelector.LevelsParser("1") // => ["1"] + * LevelSelector.LevelsParser("0;2") // => ["0","2"] + * LevelSelector.LevelsParser("0-5") // => ["0","1","2","3","4","5"] + * LevelSelector.LevelsParser("0") // => ["0"] + */ + public static LevelsParser(level: string): string[] { + let spec = [level] + spec = [].concat(...spec.map(s => s.split(";"))) + spec = [].concat(...spec.map(s => { + s = s.trim() + if(s.indexOf("-") < 0){ + return s + } + const [start, end] = s.split("-").map(s => Number(s.trim())) + if(isNaN(start) || isNaN(end)){ + return undefined + } + const values = [] + for (let i = start; i <= end; i++) { + values.push(i+"") + } + return values + })) + return Utils.NoNull(spec); + } + + +} \ No newline at end of file diff --git a/test.ts b/test.ts index d8eb427be6..2870162546 100644 --- a/test.ts +++ b/test.ts @@ -6,27 +6,3 @@ import { VariableUiElement } from "./UI/Base/VariableUIElement"; import { FixedInputElement } from "./UI/Input/FixedInputElement"; import Slider from "./UI/Input/Slider"; import Toggle, { ClickableToggle } from "./UI/Input/Toggle"; - -const testData = ["-1", "0", "0.5", "1", "1.5", "2"] -let slider = new Slider(0, testData.length - 1, {vertical: true}); - -slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: "+2.5*testData.length+"rem ") - -const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" - -const values = testData.map((data, i) => new ClickableToggle( - new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( - (sliderVal) => { - return sliderVal === i - }, - [], - (isSelected) => { - return isSelected ? i : slider.GetValue().data - } - )) - .ToggleOnClick() - .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) - -const valCombine = new Combine(values.reverse()) - -new Combine([valCombine.SetClass("mt-8"), slider]).SetClass("flex flex-row h-14").AttachTo("extradiv") From b0cd6f3a095b5d8d00cce7da213ff3b74c8afd64 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Thu, 21 Jul 2022 19:18:11 +0200 Subject: [PATCH 36/82] Fix sort warning --- UI/BigComponents/RightControls.ts | 3 +- UI/Input/LevelSelector.ts | 89 +++++++++++++++---------------- 2 files changed, 45 insertions(+), 47 deletions(-) diff --git a/UI/BigComponents/RightControls.ts b/UI/BigComponents/RightControls.ts index ec27232105..3de47a3ee3 100644 --- a/UI/BigComponents/RightControls.ts +++ b/UI/BigComponents/RightControls.ts @@ -4,9 +4,7 @@ import MapControlButton from "../MapControlButton"; import GeoLocationHandler from "../../Logic/Actors/GeoLocationHandler"; import Svg from "../../Svg"; import MapState from "../../Logic/State/MapState"; -import {VariableUiElement} from "../Base/VariableUIElement"; import LevelSelector from "../Input/LevelSelector"; -import {UIEventSource} from "../../Logic/UIEventSource"; import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; import {Utils} from "../../Utils"; @@ -50,6 +48,7 @@ export default class RightControls extends Combine { const allElements = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox); const allLevelsRaw: string[] = [].concat(...allElements.map(allElements => allElements.features.map(f => f.properties["level"]))) const allLevels = [].concat(...allLevelsRaw.map(l => LevelSelector.LevelsParser(l))) + allLevels.sort((a,b) => a < b ? -1 : 1) return Utils.Dedup(allLevels) }) const levelSelect = new LevelSelector(levelsInView) diff --git a/UI/Input/LevelSelector.ts b/UI/Input/LevelSelector.ts index 82e945809d..2c5e6a4cff 100644 --- a/UI/Input/LevelSelector.ts +++ b/UI/Input/LevelSelector.ts @@ -1,60 +1,59 @@ import {InputElement} from "./InputElement"; -import {Store, UIEventSource} from "../../Logic/UIEventSource"; +import {Store, Stores, UIEventSource} from "../../Logic/UIEventSource"; import Combine from "../Base/Combine"; import Slider from "./Slider"; import {ClickableToggle} from "./Toggle"; import {FixedUiElement} from "../Base/FixedUiElement"; import {Utils} from "../../Utils"; +import {VariableUiElement} from "../Base/VariableUIElement"; -export default class LevelSelector extends Combine implements InputElement{ - - private readonly _value : UIEventSource; - - constructor(currentLevels: Store, options?:{ +export default class LevelSelector extends VariableUiElement implements InputElement { + + private readonly _value: UIEventSource; + + constructor(currentLevels: Store, options?: { value?: UIEventSource }) { + const value = options?.value ?? new UIEventSource(undefined) + super(Stores.ListStabilized(currentLevels).map(levels => { + let slider = new Slider(0, levels.length - 1, {vertical: true}); + slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: " + 2.5 * levels.length + "rem ") + const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" + const values = levels.map((data, i) => new ClickableToggle( + new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( + (sliderVal) => { + return sliderVal === i + }, + [], + (isSelected) => { + return isSelected ? i : slider.GetValue().data + } + )) + .ToggleOnClick() + .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) - const testData = ["-1", "0", "0.5", "1", "1.5", "2"] - let slider = new Slider(0, testData.length - 1, {vertical: true}); - slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: "+2.5*testData.length+"rem ") - const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" - const values = testData.map((data, i) => new ClickableToggle( - new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( - (sliderVal) => { - return sliderVal === i - }, - [], - (isSelected) => { - return isSelected ? i : slider.GetValue().data + const combine = new Combine([new Combine(values).SetClass("mt-8"), slider]) + combine.SetClass("flex flex-row h-14"); + + slider.GetValue().addCallbackAndRun(i => { + if (currentLevels?.data === undefined) { + return } - )) - .ToggleOnClick() - .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) + value.setData(currentLevels?.data[i]); + }) + value.addCallback(level => { + const i = currentLevels?.data?.findIndex(l => l === level) + slider.GetValue().setData(i) + }) + return combine + })) - super([new Combine(values.reverse()).SetClass("mt-8"), slider]) - this.SetClass("flex flex-row h-14"); - - const value = this._value = options?.value ?? new UIEventSource(undefined) - slider.GetValue().addCallbackAndRun(i => { - if(currentLevels?.data === undefined){ - return - } - value.setData(currentLevels?.data[i]); - }) - value.addCallback(level => { - const i = currentLevels?.data?.findIndex(l => l === level) - slider.GetValue().setData(i) - }) } GetValue(): UIEventSource { return this._value; } - protected InnerConstructElement(): HTMLElement { - return undefined; - } - IsValid(t: string): boolean { return false; } @@ -62,7 +61,7 @@ export default class LevelSelector extends Combine implements InputElement ["0"] * LevelSelector.LevelsParser("1") // => ["1"] * LevelSelector.LevelsParser("0;2") // => ["0","2"] @@ -74,21 +73,21 @@ export default class LevelSelector extends Combine implements InputElement s.split(";"))) spec = [].concat(...spec.map(s => { s = s.trim() - if(s.indexOf("-") < 0){ + if (s.indexOf("-") < 0) { return s } const [start, end] = s.split("-").map(s => Number(s.trim())) - if(isNaN(start) || isNaN(end)){ + if (isNaN(start) || isNaN(end)) { return undefined } const values = [] for (let i = start; i <= end; i++) { - values.push(i+"") + values.push(i + "") } return values })) return Utils.NoNull(spec); } - - + + } \ No newline at end of file From 707961761ca23c131bde7a10a98d2a5d944acf6b Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Fri, 22 Jul 2022 01:33:11 +0200 Subject: [PATCH 37/82] First version with working level selector --- .../Sources/FilteringFeatureSource.ts | 29 +++++-- Logic/SimpleMetaTagger.ts | 41 +++++++--- Logic/Tags/TagUtils.ts | 44 +++++++++-- UI/BigComponents/RightControls.ts | 69 ++++++++++++++--- UI/Input/LevelSelector.ts | 51 ++++-------- assets/svg/elevator_wheelchair.svg | 77 ++++++++++++++++++- css/index-tailwind-output.css | 52 ++++--------- index.css | 20 ++--- test.ts | 4 + 9 files changed, 266 insertions(+), 121 deletions(-) diff --git a/Logic/FeatureSource/Sources/FilteringFeatureSource.ts b/Logic/FeatureSource/Sources/FilteringFeatureSource.ts index 1fbb7fbe0f..dc97e1d3a0 100644 --- a/Logic/FeatureSource/Sources/FilteringFeatureSource.ts +++ b/Logic/FeatureSource/Sources/FilteringFeatureSource.ts @@ -1,10 +1,9 @@ -import {UIEventSource} from "../../UIEventSource"; -import FilteredLayer from "../../../Models/FilteredLayer"; +import {Store, UIEventSource} from "../../UIEventSource"; +import FilteredLayer, {FilterState} from "../../../Models/FilteredLayer"; import {FeatureSourceForLayer, Tiled} from "../FeatureSource"; import {BBox} from "../../BBox"; import {ElementStorage} from "../../ElementStorage"; import {TagsFilter} from "../../Tags/TagsFilter"; -import {tag} from "@turf/turf"; import {OsmFeature} from "../../../Models/OsmFeature"; export default class FilteringFeatureSource implements FeatureSourceForLayer, Tiled { @@ -16,7 +15,9 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti public readonly bbox: BBox private readonly upstream: FeatureSourceForLayer; private readonly state: { - locationControl: UIEventSource<{ zoom: number }>; selectedElement: UIEventSource, + locationControl: Store<{ zoom: number }>; + selectedElement: Store, + globalFilters: Store<{ filter: FilterState }[]>, allElements: ElementStorage }; private readonly _alreadyRegistered = new Set>(); @@ -25,9 +26,10 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti constructor( state: { - locationControl: UIEventSource<{ zoom: number }>, - selectedElement: UIEventSource, - allElements: ElementStorage + locationControl: Store<{ zoom: number }>, + selectedElement: Store, + allElements: ElementStorage, + globalFilters: Store<{ filter: FilterState }[]> }, tileIndex, upstream: FeatureSourceForLayer, @@ -60,6 +62,10 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti metataggingUpdated?.addCallback(_ => { self._is_dirty.setData(true) }) + + state.globalFilters.addCallback(_ => { + self.update() + }) this.update(); } @@ -69,6 +75,7 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti const layer = this.upstream.layer; const features: { feature: OsmFeature; freshness: Date }[] = (this.upstream.features.data ?? []); const includedFeatureIds = new Set(); + const globalFilters = self.state.globalFilters.data.map(f => f.filter); const newFeatures = (features ?? []).filter((f) => { self.registerCallback(f.feature) @@ -88,6 +95,14 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti } } + for (const filter of globalFilters) { + const neededTags: TagsFilter = filter?.currentFilter + if (neededTags !== undefined && !neededTags.matchesProperties(f.feature.properties)) { + // Hidden by the filter on the layer itself - we want to hide it no matter what + return false; + } + } + includedFeatureIds.add(f.feature.properties.id) return true; }); diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts index e1383afb75..ab665e6c37 100644 --- a/Logic/SimpleMetaTagger.ts +++ b/Logic/SimpleMetaTagger.ts @@ -8,6 +8,7 @@ import {FixedUiElement} from "../UI/Base/FixedUiElement"; import LayerConfig from "../Models/ThemeConfig/LayerConfig"; import {CountryCoder} from "latlon2country" import Constants from "../Models/Constants"; +import {TagUtils} from "./Tags/TagUtils"; export class SimpleMetaTagger { @@ -32,7 +33,7 @@ export class SimpleMetaTagger { if (!docs.cleanupRetagger) { for (const key of docs.keys) { if (!key.startsWith('_') && key.toLowerCase().indexOf("theme") < 0) { - throw `Incorrect metakey ${key}: it should start with underscore (_)` + throw `Incorrect key for a calculated meta value '${key}': it should start with underscore (_)` } } } @@ -211,6 +212,27 @@ export default class SimpleMetaTaggers { return true; }) ); + private static levels = new SimpleMetaTagger( + { + doc: "Extract the 'level'-tag into a normalized, ';'-separated value", + keys: ["_level"] + }, + ((feature) => { + if (feature.properties["level"] === undefined) { + return false; + } + + const l = feature.properties["level"] + const newValue = TagUtils.LevelsParser(l).join(";") + if(l === newValue) { + return false; + } + feature.properties["level"] = newValue + return true + + }) + ) + private static canonicalize = new SimpleMetaTagger( { doc: "If 'units' is defined in the layoutConfig, then this metatagger will rewrite the specified keys to have the canonical form (e.g. `1meter` will be rewritten to `1m`)", @@ -218,7 +240,7 @@ export default class SimpleMetaTaggers { }, ((feature, _, __, state) => { - const units = Utils.NoNull([].concat(...state?.layoutToUse?.layers?.map(layer => layer.units )?? [])); + const units = Utils.NoNull([].concat(...state?.layoutToUse?.layers?.map(layer => layer.units) ?? [])); if (units.length == 0) { return; } @@ -317,7 +339,7 @@ export default class SimpleMetaTaggers { country_code: tags._country.toLowerCase(), state: undefined } - }, {tag_key: "opening_hours"}); + }, {tag_key: "opening_hours"}); // Recalculate! return oh.getState() ? "yes" : "no"; @@ -327,12 +349,12 @@ export default class SimpleMetaTaggers { delete tags._isOpen tags["_isOpen"] = "parse_error"; } - }}); - - + } + }); + + const tagsSource = state.allElements.getEventSourceById(feature.properties.id); - - + }) ) @@ -400,7 +422,8 @@ export default class SimpleMetaTaggers { SimpleMetaTaggers.currentTime, SimpleMetaTaggers.objectMetaInfo, SimpleMetaTaggers.noBothButLeftRight, - SimpleMetaTaggers.geometryType + SimpleMetaTaggers.geometryType, + SimpleMetaTaggers.levels ]; public static readonly lazyTags: string[] = [].concat(...SimpleMetaTaggers.metatags.filter(tagger => tagger.isLazy) diff --git a/Logic/Tags/TagUtils.ts b/Logic/Tags/TagUtils.ts index 2688d3140d..6ef3a89664 100644 --- a/Logic/Tags/TagUtils.ts +++ b/Logic/Tags/TagUtils.ts @@ -127,7 +127,7 @@ export class TagUtils { * } * ]}) * TagUtils.FlattenMultiAnswer([tag]) // => TagUtils.Tag({and:["x=a;b", "y=0;1;2;3"] }) - * + * * TagUtils.FlattenMultiAnswer(([new Tag("x","y"), new Tag("a","b")])) // => new And([new Tag("x","y"), new Tag("a","b")]) * TagUtils.FlattenMultiAnswer(([new Tag("x","")])) // => new And([new Tag("x","")]) */ @@ -240,7 +240,7 @@ export class TagUtils { * * TagUtils.Tag("xyz<5").matchesProperties({xyz: 4}) // => true * TagUtils.Tag("xyz<5").matchesProperties({xyz: 5}) // => false - * + * * // RegexTags must match values with newlines * TagUtils.Tag("note~.*aed.*").matchesProperties({note: "Hier bevindt zich wss een defibrillator. \\n\\n De aed bevindt zich op de 5de verdieping"}) // => true * TagUtils.Tag("note~i~.*aed.*").matchesProperties({note: "Hier bevindt zich wss een defibrillator. \\n\\n De AED bevindt zich op de 5de verdieping"}) // => true @@ -264,13 +264,13 @@ export class TagUtils { * @constructor */ public static TagD(json?: TagConfigJson, context: string = ""): TagsFilter | undefined { - if(json === undefined){ + if (json === undefined) { return undefined } return TagUtils.Tag(json, context) } - - + + /** * INLINE sort of the given list */ @@ -581,4 +581,38 @@ export class TagUtils { return listToFilter.some(tf => guards.some(guard => guard.shadows(tf))) } + + /** + * Parses a level specifier to the various available levels + * + * TagUtils.LevelsParser("0") // => ["0"] + * TagUtils.LevelsParser("1") // => ["1"] + * TagUtils.LevelsParser("0;2") // => ["0","2"] + * TagUtils.LevelsParser("0-5") // => ["0","1","2","3","4","5"] + * TagUtils.LevelsParser("0") // => ["0"] + * TagUtils.LevelsParser("-1") // => ["-1"] + * TagUtils.LevelsParser("0;-1") // => ["0", "-1"] + */ + public static LevelsParser(level: string): string[] { + let spec = Utils.NoNull([level]) + spec = [].concat(...spec.map(s => s?.split(";"))) + spec = [].concat(...spec.map(s => { + s = s.trim() + if (s.indexOf("-") < 0 || s.startsWith("-")) { + return s + } + const [start, end] = s.split("-").map(s => Number(s.trim())) + if (isNaN(start) || isNaN(end)) { + return undefined + } + const values = [] + for (let i = start; i <= end; i++) { + values.push(i + "") + } + return values + })) + return Utils.NoNull(spec); + } + + } \ No newline at end of file diff --git a/UI/BigComponents/RightControls.ts b/UI/BigComponents/RightControls.ts index 3de47a3ee3..7063c5f7ea 100644 --- a/UI/BigComponents/RightControls.ts +++ b/UI/BigComponents/RightControls.ts @@ -7,6 +7,11 @@ import MapState from "../../Logic/State/MapState"; import LevelSelector from "../Input/LevelSelector"; import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; import {Utils} from "../../Utils"; +import {TagUtils} from "../../Logic/Tags/TagUtils"; +import {RegexTag} from "../../Logic/Tags/RegexTag"; +import {Or} from "../../Logic/Tags/Or"; +import {Tag} from "../../Logic/Tags/Tag"; +import {TagsFilter} from "../../Logic/Tags/TagsFilter"; export default class RightControls extends Combine { @@ -42,26 +47,72 @@ export default class RightControls extends Combine { }); const levelsInView = state.currentBounds.map(bbox => { - if(bbox === undefined){ + if (bbox === undefined) { return [] } const allElements = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox); const allLevelsRaw: string[] = [].concat(...allElements.map(allElements => allElements.features.map(f => f.properties["level"]))) - const allLevels = [].concat(...allLevelsRaw.map(l => LevelSelector.LevelsParser(l))) - allLevels.sort((a,b) => a < b ? -1 : 1) + const allLevels = [].concat(...allLevelsRaw.map(l => TagUtils.LevelsParser(l))) + if(allLevels.indexOf("0") < 0){ + allLevels.push("0") + } + allLevels.sort((a, b) => a < b ? -1 : 1) return Utils.Dedup(allLevels) }) + state.globalFilters.data.push({ + filter: { + currentFilter: undefined, + state: undefined + + }, id: "level" + }) const levelSelect = new LevelSelector(levelsInView) - - levelsInView.addCallbackAndRun(levelsInView => { - if(levelsInView.length <= 1){ - levelSelect.SetClass("invisible") - }else{ + + const isShown = levelsInView.map(levelsInView => levelsInView.length !== 0 && state.locationControl.data.zoom >= 17, + [state.locationControl]) + + function setLevelFilter() { + const filter = state.globalFilters.data.find(gf => gf.id === "level") + const oldState = filter.filter.state; + if (!isShown.data) { + filter.filter = { + state: "*", + currentFilter: undefined + } + + } else { + + const l = levelSelect.GetValue().data + let neededLevel : TagsFilter = new RegexTag("level", new RegExp("(^|;)" + l + "(;|$)")); + if(l === "0"){ + neededLevel = new Or([neededLevel, new Tag("level", "")]) + } + filter.filter = { + state: l, + currentFilter: neededLevel + } + } + if(filter.filter.state !== oldState){ + state.globalFilters.ping(); + console.log("Level filter is now ", filter?.filter?.currentFilter?.asHumanString(false, false, {})) + } + return; + } + + + isShown.addCallbackAndRun(shown => { + console.log("Is level selector shown?", shown) + setLevelFilter() + if (shown) { + // levelSelect.SetClass("invisible") + } else { levelSelect.RemoveClass("invisible") } }) + + levelSelect.GetValue().addCallback(_ => setLevelFilter()) - super([levelSelect, plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1"))) + super([new Combine([levelSelect]).SetClass(""), plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1"))) this.SetClass("flex flex-col items-center") } diff --git a/UI/Input/LevelSelector.ts b/UI/Input/LevelSelector.ts index 2c5e6a4cff..766a1f6c89 100644 --- a/UI/Input/LevelSelector.ts +++ b/UI/Input/LevelSelector.ts @@ -4,7 +4,6 @@ import Combine from "../Base/Combine"; import Slider from "./Slider"; import {ClickableToggle} from "./Toggle"; import {FixedUiElement} from "../Base/FixedUiElement"; -import {Utils} from "../../Utils"; import {VariableUiElement} from "../Base/VariableUIElement"; export default class LevelSelector extends VariableUiElement implements InputElement { @@ -16,11 +15,15 @@ export default class LevelSelector extends VariableUiElement implements InputEle }) { const value = options?.value ?? new UIEventSource(undefined) super(Stores.ListStabilized(currentLevels).map(levels => { + console.log("CUrrent levels are", levels) let slider = new Slider(0, levels.length - 1, {vertical: true}); - slider.SetClass("flex m-1 elevatorslider mb-0 mt-8").SetStyle("height: " + 2.5 * levels.length + "rem ") - const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center" + const toggleClass = "flex border-2 border-blue-500 w-10 h-10 place-content-center items-center border-box" + slider.SetClass("flex elevator w-10").SetStyle(`height: ${2.5 * levels.length}rem; background: #00000000`) + const values = levels.map((data, i) => new ClickableToggle( - new FixedUiElement(data).SetClass("active bg-subtle " + toggleClass), new FixedUiElement(data).SetClass(toggleClass), slider.GetValue().sync( + new FixedUiElement(data).SetClass("font-bold active bg-subtle " + toggleClass), + new FixedUiElement(data).SetClass("normal-background " + toggleClass), + slider.GetValue().sync( (sliderVal) => { return sliderVal === i }, @@ -30,11 +33,13 @@ export default class LevelSelector extends VariableUiElement implements InputEle } )) .ToggleOnClick() - .SetClass("flex flex-column ml-5 bg-slate-200 w-10 h-10 valuesContainer")) + .SetClass("flex w-10 h-10")) - const combine = new Combine([new Combine(values).SetClass("mt-8"), slider]) - combine.SetClass("flex flex-row h-14"); + values.reverse(/* This is a new list, no side-effects */) + const combine = new Combine([new Combine(values), slider]) + combine.SetClass("flex flex-row overflow-hidden"); + slider.GetValue().addCallbackAndRun(i => { if (currentLevels?.data === undefined) { return @@ -47,6 +52,8 @@ export default class LevelSelector extends VariableUiElement implements InputEle }) return combine })) + + this._value = value } @@ -59,35 +66,5 @@ export default class LevelSelector extends VariableUiElement implements InputEle } - /** - * Parses a level specifier to the various available levels - * - * LevelSelector.LevelsParser("0") // => ["0"] - * LevelSelector.LevelsParser("1") // => ["1"] - * LevelSelector.LevelsParser("0;2") // => ["0","2"] - * LevelSelector.LevelsParser("0-5") // => ["0","1","2","3","4","5"] - * LevelSelector.LevelsParser("0") // => ["0"] - */ - public static LevelsParser(level: string): string[] { - let spec = [level] - spec = [].concat(...spec.map(s => s.split(";"))) - spec = [].concat(...spec.map(s => { - s = s.trim() - if (s.indexOf("-") < 0) { - return s - } - const [start, end] = s.split("-").map(s => Number(s.trim())) - if (isNaN(start) || isNaN(end)) { - return undefined - } - const values = [] - for (let i = start; i <= end; i++) { - values.push(i + "") - } - return values - })) - return Utils.NoNull(spec); - } - } \ No newline at end of file diff --git a/assets/svg/elevator_wheelchair.svg b/assets/svg/elevator_wheelchair.svg index 35b934aeef..568caa468f 100644 --- a/assets/svg/elevator_wheelchair.svg +++ b/assets/svg/elevator_wheelchair.svg @@ -1 +1,76 @@ - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 65bca52fe5..d242eee6c9 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -946,18 +946,6 @@ video { margin-right: 0px; } -.mb-0 { - margin-bottom: 0px; -} - -.mt-8 { - margin-top: 2rem; -} - -.ml-5 { - margin-left: 1.25rem; -} - .mr-3 { margin-right: 0.75rem; } @@ -974,6 +962,10 @@ video { margin-right: 0.25rem; } +.mb-0 { + margin-bottom: 0px; +} + .box-border { box-sizing: border-box; } @@ -1106,10 +1098,6 @@ video { height: 4rem; } -.h-14 { - height: 3.5rem; -} - .h-0 { height: 0px; } @@ -1527,6 +1515,11 @@ video { background-color: rgba(224, 231, 255, var(--tw-bg-opacity)); } +.bg-red-500 { + --tw-bg-opacity: 1; + background-color: rgba(239, 68, 68, var(--tw-bg-opacity)); +} + .bg-black { --tw-bg-opacity: 1; background-color: rgba(0, 0, 0, var(--tw-bg-opacity)); @@ -1547,11 +1540,6 @@ video { background-color: rgba(209, 213, 219, var(--tw-bg-opacity)); } -.bg-red-500 { - --tw-bg-opacity: 1; - background-color: rgba(239, 68, 68, var(--tw-bg-opacity)); -} - .bg-red-200 { --tw-bg-opacity: 1; background-color: rgba(254, 202, 202, var(--tw-bg-opacity)); @@ -2072,29 +2060,17 @@ input[type="range"].vertical { /* IE */ -webkit-appearance: slider-vertical; /* Chromium */ - width: 8px; - height: 180px; - padding: 31px 5px 0 5px; cursor: pointer; } @-moz-document url-prefix() { - input[type="range"].vertical { - height: 269px !important; - width: 65px !important; - } - - .valuesContainer { - padding-top: 30px; - } - - input[type="range"].vertical::-moz-range-thumb { - width: 150px; - height: 30px; - border: 2px; - border-style: solid; + input[type="range"].elevator::-moz-range-thumb { background-color: #00000000 !important; background-image: url("/assets/svg/elevator_wheelchair.svg"); + width: 150px !important; + height: 30px !important; + border: 2px; + border-style: solid; background-size: contain; background-position: center center; background-repeat: no-repeat; diff --git a/index.css b/index.css index 35d55c462f..1db74d8687 100644 --- a/index.css +++ b/index.css @@ -232,27 +232,17 @@ a { input[type="range"].vertical { writing-mode: bt-lr; /* IE */ -webkit-appearance: slider-vertical; /* Chromium */ - width: 8px; - height: 180px; - padding: 31px 5px 0 5px; cursor: pointer; } @-moz-document url-prefix() { - input[type="range"].vertical { - height: 269px !important; - width: 65px !important; - } - .valuesContainer { - padding-top: 30px; - } - input[type="range"].vertical::-moz-range-thumb { - width: 150px; - height: 30px; - border: 2px; - border-style: solid; + input[type="range"].elevator::-moz-range-thumb { background-color: #00000000 !important; background-image: url("/assets/svg/elevator_wheelchair.svg"); + width: 150px !important; + height: 30px !important; + border: 2px; + border-style: solid; background-size: contain; background-position: center center; background-repeat: no-repeat; diff --git a/test.ts b/test.ts index e69de29bb2..f6a656f45c 100644 --- a/test.ts +++ b/test.ts @@ -0,0 +1,4 @@ +import LevelSelector from "./UI/Input/LevelSelector"; +import {UIEventSource} from "./Logic/UIEventSource"; + +new LevelSelector(new UIEventSource(["0","1","2","2.5","x","3"])).AttachTo("maindiv") \ No newline at end of file From 72e07631cac6edfd4017b3348b70d52409ad6664 Mon Sep 17 00:00:00 2001 From: paunofu Date: Thu, 21 Jul 2022 00:28:17 +0000 Subject: [PATCH 38/82] Translated using Weblate (Catalan) Currently translated at 61.1% (414 of 677 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/ca/ --- langs/ca.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/ca.json b/langs/ca.json index 3d5ffb952b..3f9a4368a1 100644 --- a/langs/ca.json +++ b/langs/ca.json @@ -320,7 +320,7 @@ "noFilesLoaded": "No s'ha carregat cap arxiu", "title": "Seleccionar arxiu" }, - "title": "Ajuda de l'importador" + "title": "Assistent d'importació" }, "importInspector": { "title": "Inspeccionar i controlar notes d'importació" From 5b34e734879db67f560ca0b0ef7438d5568c8498 Mon Sep 17 00:00:00 2001 From: paunofu Date: Wed, 20 Jul 2022 16:34:11 +0000 Subject: [PATCH 39/82] Translated using Weblate (Catalan) Currently translated at 48.8% (164 of 336 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/ca/ --- langs/themes/ca.json | 163 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 155 insertions(+), 8 deletions(-) diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 8a4fb3f6e7..35a8a8ddcd 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -98,10 +98,83 @@ }, "1": { "then": "No hi han hostes permanents aquí" + }, + "2": { + "then": "Només és possible romandre aquí si teniu un contracte a llarg termini (aquest lloc desapareixerà d'aquest mapa si trieu això)" + } + }, + "question": "Aquest lloc ofereix llocs de lloguer a llarg termini?" + }, + "caravansites-name": { + "question": "Com es diu aquest lloc?", + "render": "Aquest lloc s'anomena {name}" + }, + "caravansites-sanitary-dump": { + "question": "Aquest lloc té una estació d'abocament sanitari?", + "mappings": { + "1": { + "then": "Aquest lloc no té una estació d'abocament sanitari" + }, + "0": { + "then": "Aquest lloc té una estació d'abocament sanitari" + } + } + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Aquest lloc té lavabos" + }, + "1": { + "then": "Aquest lloc no té lavabos" + } + }, + "question": "Aquest lloc té lavabos?" + }, + "caravansites-website": { + "question": "Aquest lloc té un lloc web?", + "render": "Lloc web oficial: {website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Lloc d'acampada sense nom" + } + }, + "render": "Lloc d'acampada {name}" + } + }, + "1": { + "description": "Estacions d'abocament sanitari", + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "1": { + "then": "Heu de ser client del càmping/lloc d'acampada per utilitzar aquest lloc" + }, + "3": { + "then": "Qualsevol pot utilitzar aquesta estació d'abocament" + }, + "2": { + "then": "Qualsevol pot utilitzar aquesta estació d'abocament" + } + }, + "question": "Qui pot utilitzar aquesta estació d'abocament?" + }, + "dumpstations-charge": { + "question": "Quant costa aquest lloc?", + "render": "Aquest lloc costa {charge}" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "Es pot desfer de les aigües grises aquí" } } } - } + }, + "name": "Estacions d'abocament sanitari" } }, "title": "Llocs d'acampada" @@ -122,7 +195,8 @@ "3": { "then": "Només membres del club" } - } + }, + "question": "Qui pot accedir aquí?" } }, "units+": { @@ -151,17 +225,30 @@ } } }, - "title": "Vies ciclistes" + "title": "Vies ciclistes", + "description": "Aquest mapa mostra carrils bici" }, "cycle_infra": { - "title": "Infraestructura per a bicicletes" + "title": "Infraestructura per a bicicletes", + "description": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista. Fet durant #osoc21.", + "shortDescription": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista." }, "cyclenodes": { "layers": { "1": { "name": "nodes" + }, + "0": { + "name": "enllaços node a node", + "tagRenderings": { + "node2node-survey:date": { + "question": "Quan es va comprovar per última vegada aquest enllaç node a node presencialment?" + } + } } - } + }, + "description": "Aquest mapa mostra xarxes de nodes ciclistes i et permet afegir nodes nous de manera senzilla", + "title": "Xarxa de nodes ciclistes" }, "cyclestreets": { "layers": { @@ -182,20 +269,72 @@ } }, "shortDescription": "Un mapa de carrers ciclistes", - "title": "Carrers ciclistes" + "title": "Carrers ciclistes", + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "1": { + "then": "Aquest carrer és una ciclocarrer" + }, + "2": { + "then": "Aquest carrer es convertirà en un ciclocarrer pròximament" + } + } + } + } + } }, "cyclofix": { "title": "Cyclofix - un mapa obert per a ciclistes" }, "drinking_water": { - "title": "Aigua potable" + "title": "Aigua potable", + "description": "En aquest mapa es mostren els punts d'aigua potable accessibles al públic i es poden afegir fàcilment" }, "entrances": { "title": "Entrades" }, "etymology": { "shortDescription": "Quin és l'origen d'un topònim?", - "title": "Open Etymology Map" + "title": "Open Etymology Map", + "layers": { + "2": { + "override": { + "=name": "Parcs i boscos sense informació etimològica" + } + }, + "1": { + "override": { + "=name": "Carrers sense informació etimològica" + } + }, + "3": { + "override": { + "=name": "Institucions educatives sense informació d'etimològica" + } + }, + "6": { + "override": { + "=name": "Llocs socials i de salut sense informació etimològica" + } + }, + "7": { + "override": { + "=name": "Llocs esportius sense informació etimològica" + } + }, + "4": { + "override": { + "=name": "Llocs culturals sense informació etimològica" + } + }, + "5": { + "override": { + "=name": "Llocs turístics sense informació etimològica" + } + } + } }, "facadegardens": { "layers": { @@ -363,5 +502,13 @@ "healthcare": { "title": "Assistència sanitària", "description": "En aquest mapa es mostren diversos elements relacionats amb la salut" + }, + "education": { + "title": "Educació", + "description": "En aquest mapa trobareu informació sobre tots els tipus d'escoles i educació i podreu afegir fàcilment més informació" + }, + "bicyclelib": { + "title": "Biblioteques de bicicletes", + "description": "Una biblioteca de bicicletes és un lloc on es poden prestar bicicletes, sovint per una petita quota anual. Un cas d'ús notable són les biblioteques de bicicletes per als nens, que els permet canviar per una bicicleta més gran quan han superat la seva bicicleta actual" } } From bfcafaf011b807080e041e54e7ba7312df67ec7c Mon Sep 17 00:00:00 2001 From: paunofu Date: Wed, 20 Jul 2022 16:39:13 +0000 Subject: [PATCH 40/82] Translated using Weblate (Catalan) Currently translated at 11.6% (246 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/ca/ --- langs/layers/ca.json | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/langs/layers/ca.json b/langs/layers/ca.json index 05d81fa9a2..c57633307b 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -373,6 +373,13 @@ "then": "Chademo" } } + }, + "Operational status": { + "mappings": { + "0": { + "then": "Aquesta estació de càrrega funciona" + } + } } }, "title": { @@ -1025,5 +1032,40 @@ } } } + }, + "kindergarten_childcare": { + "tagRenderings": { + "name": { + "render": "Aquesta instal·lació s'anomena {name}" + }, + "capacity": { + "render": "Aquesta instal·lació té espai per a {capacity} nens" + }, + "childcare-type": { + "mappings": { + "0": { + "then": "Aquesta és una llar d'infants (també coneguda com a preescolar) on els nens petits reben educació primerenca." + } + } + } + } + }, + "hospital": { + "tagRenderings": { + "name": { + "render": "El nom del nom de l'hospital és {name}" + } + } + }, + "pharmacy": { + "tagRenderings": { + "wheelchair": { + "mappings": { + "0": { + "then": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes" + } + } + } + } } -} \ No newline at end of file +} From 2199f224b172bd962b80b994dd4bd63d756122c8 Mon Sep 17 00:00:00 2001 From: kjon Date: Tue, 19 Jul 2022 17:12:55 +0000 Subject: [PATCH 41/82] Translated using Weblate (German) Currently translated at 95.6% (2011 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/de/ --- langs/layers/de.json | 126 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index d2928f18fb..43c67b5538 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -3568,6 +3568,14 @@ "0": { "explanation": "{title()} wurde dauerhaft geschlossen" } + }, + "nonDeleteMappings": { + "0": { + "then": "Dies ist eigentlich eine Kneipe" + }, + "1": { + "then": "Dies ist eigentlich ein Café" + } } }, "description": "Eine Ebene mit Restaurants und Fast-Food-Einrichtungen (mit speziellem Rendering für Pommesbuden)", @@ -4621,6 +4629,58 @@ }, "title": { "render": "Parkplatz" + }, + "tagRenderings": { + "capacity": { + "freeform": { + "placeholder": "Anzahl der Parkplätze" + }, + "question": "Wie viele Stellplätze gibt es auf diesem Parkplatz?", + "render": "Es gibt {capacity} Stellplätze" + }, + "parking-type": { + "mappings": { + "2": { + "then": "Dies ist eine Tiefgarage" + }, + "3": { + "then": "Dies ist ein mehrstöckiges oberirdisches Parkhaus" + }, + "4": { + "then": "Dies ist ein Parkdeck auf dem Dach" + }, + "6": { + "then": "Dies ist ein durch Carports überdachter Parkplatz" + }, + "0": { + "then": "Dies ist ein oberirdischer Parkplatz" + }, + "1": { + "then": "Dies ist eine Parkbucht neben einer Straße" + }, + "7": { + "then": "Dies ist ein Parkplatz bestehend aus Garagenboxen" + }, + "5": { + "then": "Dies ist eine Fahrspur zum Parken auf der Straße" + } + } + }, + "capacity-disabled": { + "freeform": { + "placeholder": "Anzahl barrierefreier Stellplätze" + }, + "mappings": { + "0": { + "then": "Es gibt barrierefreie Stellplätze, aber die Anzahl ist unbekannt" + }, + "1": { + "then": "Es gibt keine barrierefreien Stellplätze" + } + }, + "question": "Wie viele barrierefreie Stellplätze gibt es auf diesem Parkplatz?", + "render": "Es gibt {capacity:disabled} barrierefreie Stellplätze" + } } }, "pedestrian_path": { @@ -6119,7 +6179,7 @@ } }, "walls_and_buildings": { - "description": "Spezielle eingebaute Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist in Voreinstellungen für Objekte nützlich, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, …). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht eingeschaltet werden.", + "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", "tagRenderings": { "_entrance:width": { "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_entrance:width)} Meter " @@ -6347,5 +6407,67 @@ } } } + }, + "doctors": { + "description": "Diese Ebene zeigt Arztpraxen, Zahnärzte und andere Gesundheitseinrichtungen", + "filter": { + "0": { + "options": { + "0": { + "question": "Jetzt geöffnet" + } + } + } + }, + "name": "Ärzte", + "presets": { + "0": { + "title": "eine Arztpraxis" + }, + "1": { + "title": "eine Zahnarztpraxis" + }, + "2": { + "title": "Praxis eines Physiotherapeuten" + } + }, + "tagRenderings": { + "name": { + "question": "Wie heißt diese Arztpraxis?", + "render": "Diese Arztpraxis heißt {name}" + }, + "specialty": { + "mappings": { + "0": { + "then": "Dies ist ein Allgemeinmediziner" + }, + "1": { + "then": "Dies ist ein Gynäkologe" + }, + "2": { + "then": "Dies ist ein Psychiater" + }, + "3": { + "then": "Dies ist ein Kinderarzt" + } + }, + "question": "Worauf ist dieser Arzt spezialisiert?", + "render": "Dieser Arzt ist spezialisiert auf {healthcare:speciality}" + } + }, + "title": { + "render": "Arztpraxis {Name}" + } + }, + "hospital": { + "tagRenderings": { + "name": { + "render": "Der Name des Krankenhauses lautet {Name}" + } + }, + "name": "Krankenhaus", + "title": { + "render": "Krankenhaus" + } } -} \ No newline at end of file +} From 23a695c906f04c265bc2359b08b908f468b4e142 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Thu, 21 Jul 2022 20:03:15 +0000 Subject: [PATCH 42/82] Translated using Weblate (German) Currently translated at 95.6% (2011 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/de/ --- langs/layers/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index 43c67b5538..f6cef068e9 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -6462,7 +6462,7 @@ "hospital": { "tagRenderings": { "name": { - "render": "Der Name des Krankenhauses lautet {Name}" + "render": "Der Name des Krankenhauses lautet {name}" } }, "name": "Krankenhaus", From 038b2ece4c3376df9ad067c3d8512042c75346ce Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Fri, 22 Jul 2022 11:50:25 +0200 Subject: [PATCH 43/82] Fix script --- scripts/generateCache.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/generateCache.ts b/scripts/generateCache.ts index ce791b1899..e1cb4415d5 100644 --- a/scripts/generateCache.ts +++ b/scripts/generateCache.ts @@ -10,7 +10,7 @@ import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; import RelationsTracker from "../Logic/Osm/RelationsTracker"; import * as OsmToGeoJson from "osmtogeojson"; import MetaTagging from "../Logic/MetaTagging"; -import {UIEventSource} from "../Logic/UIEventSource"; +import {ImmutableStore, UIEventSource} from "../Logic/UIEventSource"; import {TileRange, Tiles} from "../Models/TileRange"; import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import ScriptUtils from "./ScriptUtils"; @@ -250,9 +250,10 @@ function sliceToTiles(allFeatures: FeatureSource, theme: LayoutConfig, relations } const filteredTile = new FilteringFeatureSource({ - locationControl: new UIEventSource(undefined), + locationControl: new ImmutableStore(undefined), allElements: undefined, - selectedElement: new UIEventSource(undefined) + selectedElement: new ImmutableStore(undefined), + globalFilters: new ImmutableStore([]) }, tileIndex, tile, @@ -323,9 +324,10 @@ function sliceToTiles(allFeatures: FeatureSource, theme: LayoutConfig, relations if (pointsOnlyLayers.indexOf(layer.id) >= 0) { const filtered = new FilteringFeatureSource({ - locationControl: new UIEventSource(undefined), + locationControl: new ImmutableStore(undefined), allElements: undefined, - selectedElement: new UIEventSource(undefined) + selectedElement: new ImmutableStore(undefined), + globalFilters: new ImmutableStore([]) }, Tiles.tile_index(0, 0, 0), source, From 78639c3d4daa482130ba5c8088d7b79245c8678c Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 22 Jul 2022 10:39:07 +0000 Subject: [PATCH 44/82] Translated using Weblate (German) Currently translated at 95.6% (2011 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/de/ --- langs/layers/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index f6cef068e9..2376038350 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -6456,7 +6456,7 @@ } }, "title": { - "render": "Arztpraxis {Name}" + "render": "Arztpraxis {name}" } }, "hospital": { From beece2a460152f508fcf3671f748310019b3b279 Mon Sep 17 00:00:00 2001 From: kaipankrath <31682940+kaipankrath@users.noreply.github.com> Date: Sun, 24 Jul 2022 07:55:40 +0200 Subject: [PATCH 45/82] Add alternative drinking water tag Add alternative tag for identifying the drinking water sources "drinking_water"="yes". The restriction on "man_made" prevents undercover reservoirs to be shown, which most probably do not allow to tap water from them. --- assets/layers/drinking_water/drinking_water.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index b494885acb..ca505d28ec 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -31,7 +31,13 @@ "source": { "osmTags": { "and": [ - "amenity=drinking_water", + { + "or": [ + "amenity=drinking_water", + "drinking_water=yes" + ] + } + "man_made!=reservoir_covered", "access!=permissive", "access!=private" ] @@ -252,4 +258,4 @@ "es": "Una capa que muestra fuentes de agua potable", "fr": "Une couche montrant les fontaines d'eau potable" } -} \ No newline at end of file +} From 1486bc3f89162d84b46ab3c1d531cd63f57e9cff Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 12:10:08 +0200 Subject: [PATCH 46/82] Icon badge for disabled parking --- assets/layers/parking/parking.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index 0e7d24f8cd..86e2542245 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -200,6 +200,17 @@ "location": [ "point", "centroid" + ], + "iconBadges": [ + { + "if": { + "and": [ + "capacity:disabled~*", + "capacity:disabled!=no" + ] + }, + "then": "circle:white;./assets/layers/toilet/wheelchair.svg" + } ] }, { From 45187168244016c75362d6567928fe8c914a1082 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 12:10:27 +0200 Subject: [PATCH 47/82] Use onwheels icon for parking --- assets/themes/onwheels/license_info.json | 10 ++++++++++ assets/themes/onwheels/onwheels.json | 18 +++++++++++------- assets/themes/onwheels/parking.svg | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 assets/themes/onwheels/parking.svg diff --git a/assets/themes/onwheels/license_info.json b/assets/themes/onwheels/license_info.json index 9f2dcf81aa..dab6006e72 100644 --- a/assets/themes/onwheels/license_info.json +++ b/assets/themes/onwheels/license_info.json @@ -6,5 +6,15 @@ "Free Wheelies" ], "sources": [] + }, + { + "path": "parking.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] } ] \ No newline at end of file diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 274ec5e8ec..a8a0d4b8db 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -22,7 +22,16 @@ "entrance", "food", "kerbs", - "parking", + { + "builtin": "parking", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/parking.svg" + } + ] + } + }, "picnic_table", "school", "shops", @@ -68,11 +77,6 @@ ] } ], - "minzoom": "15", - "mapRendering": [ - { - "label": null - } - ] + "minzoom": "15" } } \ No newline at end of file diff --git a/assets/themes/onwheels/parking.svg b/assets/themes/onwheels/parking.svg new file mode 100644 index 0000000000..2b4df1489d --- /dev/null +++ b/assets/themes/onwheels/parking.svg @@ -0,0 +1 @@ + \ No newline at end of file From 3545fbb1ee56b46da3ae1429326d731008e4e158 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 13:03:34 +0200 Subject: [PATCH 48/82] Use more Onwheels icons --- assets/layers/toilet/toilet.json | 16 ++++- assets/themes/onwheels/bicycle_pump.svg | 1 + assets/themes/onwheels/cafe.svg | 1 + assets/themes/onwheels/hotel.svg | 1 + assets/themes/onwheels/license_info.json | 70 +++++++++++++++++++++ assets/themes/onwheels/onwheels.json | 78 ++++++++++++++++++++++-- assets/themes/onwheels/repair.svg | 1 + assets/themes/onwheels/restaurant.svg | 1 + assets/themes/onwheels/shop.svg | 1 + assets/themes/onwheels/toilet.svg | 1 + 10 files changed, 163 insertions(+), 8 deletions(-) create mode 100644 assets/themes/onwheels/bicycle_pump.svg create mode 100644 assets/themes/onwheels/cafe.svg create mode 100644 assets/themes/onwheels/hotel.svg create mode 100644 assets/themes/onwheels/repair.svg create mode 100644 assets/themes/onwheels/restaurant.svg create mode 100644 assets/themes/onwheels/shop.svg create mode 100644 assets/themes/onwheels/toilet.svg diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 794824f3f0..28b42e3b89 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -274,6 +274,13 @@ "ru": "Недоступно пользователям кресел-колясок", "es": "Sin acceso para sillas de ruedas" } + }, + { + "if": "wheelchair=designated", + "then": { + "en": "There is only a dedicated toilet for wheelchair users", + "nl": "Er is alleen een toilet voor rolstoelgebruikers" + } } ] }, @@ -533,7 +540,9 @@ "de": "Rollstuhlgerecht", "es": "Accesible con sillas de ruedas" }, - "osmTags": "wheelchair=yes" + "osmTags": { + "or": ["wheelchair=yes", "wheelchair=designated"] + } } ] }, @@ -609,7 +618,9 @@ "render": "./assets/layers/toilet/toilets.svg", "mappings": [ { - "if": "wheelchair=yes", + "if": { + "or": ["wheelchair=yes", "wheelchair=designated"] + }, "then": "circle:white;./assets/layers/toilet/wheelchair.svg" }, { @@ -623,6 +634,7 @@ } ] }, + "iconBadges": [ { "if": "opening_hours~*", diff --git a/assets/themes/onwheels/bicycle_pump.svg b/assets/themes/onwheels/bicycle_pump.svg new file mode 100644 index 0000000000..98d33fb00f --- /dev/null +++ b/assets/themes/onwheels/bicycle_pump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/cafe.svg b/assets/themes/onwheels/cafe.svg new file mode 100644 index 0000000000..266130911f --- /dev/null +++ b/assets/themes/onwheels/cafe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/hotel.svg b/assets/themes/onwheels/hotel.svg new file mode 100644 index 0000000000..3f76a6ad80 --- /dev/null +++ b/assets/themes/onwheels/hotel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/license_info.json b/assets/themes/onwheels/license_info.json index dab6006e72..77105e53d7 100644 --- a/assets/themes/onwheels/license_info.json +++ b/assets/themes/onwheels/license_info.json @@ -1,4 +1,24 @@ [ + { + "path": "bicycle_pump.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "cafe.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "crest.svg", "license": "CC0", @@ -7,6 +27,16 @@ ], "sources": [] }, + { + "path": "hotel.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "parking.svg", "license": "CC-BY-SA", @@ -16,5 +46,45 @@ "sources": [ "https://www.ctsteward.com/" ] + }, + { + "path": "repair.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "restaurant.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "shop.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "toilet.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] } ] \ No newline at end of file diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index a8a0d4b8db..e5cab61f7d 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -16,26 +16,92 @@ "widenFactor": 2, "hideFromOverview": true, "layers": [ - "bike_repair_station", + { + "builtin": "bike_repair_station", + "override": { + "mapRendering": [ + { + "icon": { + "render": "./assets/themes/onwheels/repair.svg", + "mappings": [ + { + "if": "service:bicycle:pump=yes", + "then": "./assets/themes/onwheels/bicycle_pump.svg" + } + ] + }, + "iconSize": "40,40,bottom" + } + ] + } + }, "bike_shop", - "cafe_pub", + { + "builtin": "cafe_pub", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/cafe.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, "entrance", - "food", + { + "builtin": "food", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/restaurant.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, "kerbs", { "builtin": "parking", "override": { "mapRendering": [ { - "icon": "./assets/themes/onwheels/parking.svg" + "icon": "./assets/themes/onwheels/parking.svg", + "iconSize": "40,40,bottom" + }, + { + "color": "#225f92" } ] } }, "picnic_table", "school", - "shops", - "toilet", + { + "builtin": "shops", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/shop.svg", + "iconSize": "40,40,bottom", + "label": null + }, + { + "color": "#ea4a94" + } + ] + } + }, + { + "builtin": "toilet", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/toilet.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, "viewpoint", "doctors", "reception_desk", diff --git a/assets/themes/onwheels/repair.svg b/assets/themes/onwheels/repair.svg new file mode 100644 index 0000000000..b0924247c0 --- /dev/null +++ b/assets/themes/onwheels/repair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/restaurant.svg b/assets/themes/onwheels/restaurant.svg new file mode 100644 index 0000000000..86fe5c5b1f --- /dev/null +++ b/assets/themes/onwheels/restaurant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/shop.svg b/assets/themes/onwheels/shop.svg new file mode 100644 index 0000000000..01ce20a09d --- /dev/null +++ b/assets/themes/onwheels/shop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/toilet.svg b/assets/themes/onwheels/toilet.svg new file mode 100644 index 0000000000..81d9abdf46 --- /dev/null +++ b/assets/themes/onwheels/toilet.svg @@ -0,0 +1 @@ + \ No newline at end of file From ef5323bdfcfd3325a021c1bece30b50707b77d0d Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 13:06:58 +0200 Subject: [PATCH 49/82] Disable label for food --- assets/themes/onwheels/onwheels.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index e5cab61f7d..36e5d7c487 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -54,7 +54,8 @@ "mapRendering": [ { "icon": "./assets/themes/onwheels/restaurant.svg", - "iconSize": "40,40,bottom" + "iconSize": "40,40,bottom", + "label": null } ] } From 09e83784c566bc35defb771619fc6a9bc4a2f2d0 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Thu, 14 Jul 2022 15:17:09 +0200 Subject: [PATCH 50/82] Add some more icons --- assets/themes/onwheels/cone.svg | 1 + assets/themes/onwheels/doctor.svg | 1 + assets/themes/onwheels/hospital.svg | 1 + assets/themes/onwheels/license_info.json | 50 +++++++++++++++ assets/themes/onwheels/onwheels.json | 78 +++++++++++++++++++++--- assets/themes/onwheels/pharmacy.svg | 1 + assets/themes/onwheels/reception.svg | 1 + 7 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 assets/themes/onwheels/cone.svg create mode 100644 assets/themes/onwheels/doctor.svg create mode 100644 assets/themes/onwheels/hospital.svg create mode 100644 assets/themes/onwheels/pharmacy.svg create mode 100644 assets/themes/onwheels/reception.svg diff --git a/assets/themes/onwheels/cone.svg b/assets/themes/onwheels/cone.svg new file mode 100644 index 0000000000..884d7849a9 --- /dev/null +++ b/assets/themes/onwheels/cone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/doctor.svg b/assets/themes/onwheels/doctor.svg new file mode 100644 index 0000000000..6d0c787ed5 --- /dev/null +++ b/assets/themes/onwheels/doctor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/hospital.svg b/assets/themes/onwheels/hospital.svg new file mode 100644 index 0000000000..96a7c7b24e --- /dev/null +++ b/assets/themes/onwheels/hospital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/license_info.json b/assets/themes/onwheels/license_info.json index 77105e53d7..b383bff79f 100644 --- a/assets/themes/onwheels/license_info.json +++ b/assets/themes/onwheels/license_info.json @@ -19,6 +19,16 @@ "https://www.ctsteward.com/" ] }, + { + "path": "cone.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "crest.svg", "license": "CC0", @@ -27,6 +37,26 @@ ], "sources": [] }, + { + "path": "doctor.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "hospital.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "hotel.svg", "license": "CC-BY-SA", @@ -47,6 +77,26 @@ "https://www.ctsteward.com/" ] }, + { + "path": "pharmacy.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "reception.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "repair.svg", "license": "CC-BY-SA", diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 36e5d7c487..745f41d8ad 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -24,11 +24,11 @@ "icon": { "render": "./assets/themes/onwheels/repair.svg", "mappings": [ - { - "if": "service:bicycle:pump=yes", - "then": "./assets/themes/onwheels/bicycle_pump.svg" - } - ] + { + "if": "service:bicycle:pump=yes", + "then": "./assets/themes/onwheels/bicycle_pump.svg" + } + ] }, "iconSize": "40,40,bottom" } @@ -42,7 +42,8 @@ "mapRendering": [ { "icon": "./assets/themes/onwheels/cafe.svg", - "iconSize": "40,40,bottom" + "iconSize": "40,40,bottom", + "label": null } ] } @@ -60,7 +61,18 @@ ] } }, - "kerbs", + { + "builtin": "kerbs", + "override": { + "mapRendering": [ + { + "icon": { + "render": "./assets/themes/onwheels/cone.svg" + } + } + ] + } + }, { "builtin": "parking", "override": { @@ -104,8 +116,54 @@ } }, "viewpoint", - "doctors", - "reception_desk", + { + "builtin": "pharmacy", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/pharmacy.svg", + "iconSize": "40,40,bottom", + "label": null + } + ] + } + }, + { + "builtin": "doctors", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/doctor.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, + { + "builtin": "hospital", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/hospital.svg", + "iconSize": "40,40,bottom" + }, + { + "color": "#dd463b" + } + ] + } + }, + { + "builtin": "reception_desk", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/reception.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, "walls_and_buildings", "elevator" ], @@ -144,6 +202,6 @@ ] } ], - "minzoom": "15" + "minzoom": 15 } } \ No newline at end of file diff --git a/assets/themes/onwheels/pharmacy.svg b/assets/themes/onwheels/pharmacy.svg new file mode 100644 index 0000000000..13b9b15c8f --- /dev/null +++ b/assets/themes/onwheels/pharmacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/reception.svg b/assets/themes/onwheels/reception.svg new file mode 100644 index 0000000000..0e818387a5 --- /dev/null +++ b/assets/themes/onwheels/reception.svg @@ -0,0 +1 @@ + \ No newline at end of file From b9b39027d1fd6cc98ef7ec88fa7c710002b7932c Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 09:53:53 +0200 Subject: [PATCH 51/82] Add missing comma --- assets/layers/drinking_water/drinking_water.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index ca505d28ec..b31655b9bf 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -36,7 +36,7 @@ "amenity=drinking_water", "drinking_water=yes" ] - } + }, "man_made!=reservoir_covered", "access!=permissive", "access!=private" From 84c763ebf442b3cae5011201a9788f727a3d9ef1 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Mon, 25 Jul 2022 10:15:50 +0200 Subject: [PATCH 52/82] Add hotel layer --- assets/layers/hotel/hotel.json | 81 +++++++++++++++++++++++++++ assets/layers/hotel/hotel.svg | 3 + assets/layers/hotel/license_info.json | 15 +++++ assets/themes/onwheels/onwheels.json | 13 ++++- 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 assets/layers/hotel/hotel.json create mode 100644 assets/layers/hotel/hotel.svg create mode 100644 assets/layers/hotel/license_info.json diff --git a/assets/layers/hotel/hotel.json b/assets/layers/hotel/hotel.json new file mode 100644 index 0000000000..bf698f69b0 --- /dev/null +++ b/assets/layers/hotel/hotel.json @@ -0,0 +1,81 @@ +{ + "id": "hotel", + "name": { + "en": "Hotels", + "nl": "Hotels" + }, + "description": { + "en": "Layer showing all hotels", + "nl": "Laag die alle hotels toont" + }, + "source": { + "osmTags": "tourism=hotel" + }, + "minzoom": 13, + "title": { + "render": { + "en": "Hotel", + "nl": "Hotel" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Hotel {name}", + "nl": "Hotel {name}" + } + } + ] + }, + "presets": [ + { + "title": { + "en": "a hotel", + "nl": "een hotel" + }, + "tags": [ + "tourism=hotel" + ] + } + ], + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "circle:white;./assets/layers/hotel/hotel.svg", + "iconSize": "40,40,center" + } + ], + "tagRenderings": [ + "images", + "reviews", + { + "id": "name", + "freeform": { + "key": "name", + "placeholder": { + "en": "Name of the hotel", + "nl": "Naam van het hotel" + } + }, + "question": { + "en": "What is the name of this hotel?", + "nl": "Wat is de naam van dit hotel?" + }, + "render": { + "en": "This hotel is called {name}", + "nl": "Dit hotel heet {name}" + } + }, + "phone", + "email", + "website", + "wheelchair-access" + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": true + } +} \ No newline at end of file diff --git a/assets/layers/hotel/hotel.svg b/assets/layers/hotel/hotel.svg new file mode 100644 index 0000000000..879d08301a --- /dev/null +++ b/assets/layers/hotel/hotel.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/layers/hotel/license_info.json b/assets/layers/hotel/license_info.json new file mode 100644 index 0000000000..38f47cac6b --- /dev/null +++ b/assets/layers/hotel/license_info.json @@ -0,0 +1,15 @@ +[ + { + "path": "hotel.svg", + "license": "", + "authors": [ + "Andy Allan", + "Michael Glanznig", + "Adamant36", + "Paul Dicker" + ], + "sources": [ + "https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/tourism/hotel.svg" + ] + } +] \ No newline at end of file diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 745f41d8ad..2a822fe20c 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -165,7 +165,18 @@ } }, "walls_and_buildings", - "elevator" + "elevator", + { + "builtin": "hotel", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/hotel.svg", + "iconSize": "40,40,bottom" + } + ] + } + } ], "overrideAll": { "+calculatedTags": [ From c7f46281167ab9e0abc64ed8a514a111327902cb Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 25 Jul 2022 12:35:21 +0000 Subject: [PATCH 53/82] added government and indoors layers and changed icons to the new ones --- assets/themes/onwheels/elevator.svg | 1 + assets/themes/onwheels/entrance.svg | 5 ++++ assets/themes/onwheels/government.svg | 1 + assets/themes/onwheels/license_info.json | 30 +++++++++++++++++++ assets/themes/onwheels/onwheels.json | 38 ++++++++++++++++++++++-- 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 assets/themes/onwheels/elevator.svg create mode 100644 assets/themes/onwheels/entrance.svg create mode 100644 assets/themes/onwheels/government.svg diff --git a/assets/themes/onwheels/elevator.svg b/assets/themes/onwheels/elevator.svg new file mode 100644 index 0000000000..35b934aeef --- /dev/null +++ b/assets/themes/onwheels/elevator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/entrance.svg b/assets/themes/onwheels/entrance.svg new file mode 100644 index 0000000000..aaee24c6fd --- /dev/null +++ b/assets/themes/onwheels/entrance.svg @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/government.svg b/assets/themes/onwheels/government.svg new file mode 100644 index 0000000000..5e62536646 --- /dev/null +++ b/assets/themes/onwheels/government.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/themes/onwheels/license_info.json b/assets/themes/onwheels/license_info.json index b383bff79f..08172bc9fd 100644 --- a/assets/themes/onwheels/license_info.json +++ b/assets/themes/onwheels/license_info.json @@ -47,6 +47,36 @@ "https://www.ctsteward.com/" ] }, + { + "path": "elevator.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "entrance.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, + { + "path": "government.svg", + "license": "CC-BY-SA", + "authors": [ + "CT Steward" + ], + "sources": [ + "https://www.ctsteward.com/" + ] + }, { "path": "hospital.svg", "license": "CC-BY-SA", diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 2a822fe20c..e656cff774 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -48,7 +48,17 @@ ] } }, - "entrance", + { + "builtin": "entrance", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/entrance.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, { "builtin": "food", "override": { @@ -165,7 +175,17 @@ } }, "walls_and_buildings", - "elevator", + { + "builtin": "elevator", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/elevator.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, { "builtin": "hotel", "override": { @@ -176,7 +196,19 @@ } ] } - } + }, + { + "builtin": "governments", + "override": { + "mapRendering": [ + { + "icon": "./assets/themes/onwheels/government.svg", + "iconSize": "40,40,bottom" + } + ] + } + }, + "indoors" ], "overrideAll": { "+calculatedTags": [ From bd6ed338ae03ac77e6a9282f200038aa6fc10740 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Mon, 25 Jul 2022 14:45:11 +0000 Subject: [PATCH 54/82] fixed more small things --- assets/layers/cafe_pub/cafe_pub.json | 1 + .../layers/drinking_water/drinking_water.json | 10 +++--- assets/layers/elevator/elevator.json | 3 +- assets/layers/entrance/entrance.json | 1 + assets/layers/food/food.json | 1 + assets/layers/id_presets/id_presets.json | 2 +- assets/layers/parking/parking.json | 1 + assets/layers/picnic_table/picnic_table.json | 1 + .../layers/reception_desk/reception_desk.json | 1 + assets/layers/shops/shops.json | 10 +++++- assets/layers/toilet/toilet.json | 13 ++++--- assets/tagRenderings/questions.json | 17 ++++++++- assets/themes/governments/governments.json | 36 +++++++++---------- assets/themes/onwheels/onwheels.json | 12 +++---- assets/themes/sidewalks/sidewalks.json | 2 +- 15 files changed, 73 insertions(+), 38 deletions(-) diff --git a/assets/layers/cafe_pub/cafe_pub.json b/assets/layers/cafe_pub/cafe_pub.json index 5a5ff2c9f2..81d4e389b3 100644 --- a/assets/layers/cafe_pub/cafe_pub.json +++ b/assets/layers/cafe_pub/cafe_pub.json @@ -156,6 +156,7 @@ }, "tagRenderings": [ "images", + "level", { "question": { "nl": "Wat is de naam van dit café?", diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index b31655b9bf..795e06d658 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -32,10 +32,10 @@ "osmTags": { "and": [ { - "or": [ - "amenity=drinking_water", - "drinking_water=yes" - ] + "or": [ + "amenity=drinking_water", + "drinking_water=yes" + ] }, "man_made!=reservoir_covered", "access!=permissive", @@ -258,4 +258,4 @@ "es": "Una capa que muestra fuentes de agua potable", "fr": "Une couche montrant les fontaines d'eau potable" } -} +} \ No newline at end of file diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 1fd53a87f7..dc8f6a0695 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -15,6 +15,7 @@ }, "tagRenderings": [ "images", + "multilevels", { "id": "operational_status", "question": { @@ -156,4 +157,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index 207279ad60..c674844491 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -34,6 +34,7 @@ }, "tagRenderings": [ "images", + "level", { "id": "Entrance type", "question": { diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 107503c96d..2c140544a5 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -137,6 +137,7 @@ }, "tagRenderings": [ "images", + "level", { "question": { "nl": "Wat is de naam van deze eetgelegenheid?", diff --git a/assets/layers/id_presets/id_presets.json b/assets/layers/id_presets/id_presets.json index acff2db91f..caf39d97a0 100644 --- a/assets/layers/id_presets/id_presets.json +++ b/assets/layers/id_presets/id_presets.json @@ -1,7 +1,7 @@ { "id": "id_presets", "description": { - "en": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset." + "en": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset." }, "#dont-translate": "*", "source": { diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index 86e2542245..5591d03dd0 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -27,6 +27,7 @@ }, "tagRenderings": [ "images", + "level", { "id": "parking-type", "mappings": [ diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json index e5199956d2..a38221f38f 100644 --- a/assets/layers/picnic_table/picnic_table.json +++ b/assets/layers/picnic_table/picnic_table.json @@ -37,6 +37,7 @@ }, "tagRenderings": [ "images", + "level", { "question": { "en": "What material is this picnic table made of?", diff --git a/assets/layers/reception_desk/reception_desk.json b/assets/layers/reception_desk/reception_desk.json index 7139bce67c..1f1e7b3e78 100644 --- a/assets/layers/reception_desk/reception_desk.json +++ b/assets/layers/reception_desk/reception_desk.json @@ -26,6 +26,7 @@ ], "tagRenderings": [ "images", + "level", { "id": "desk-height", "question": { diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 341fd4c0da..161e13435b 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -83,6 +83,7 @@ }, "tagRenderings": [ "images", + "level", { "question": { "en": "What is the name of this shop?", @@ -97,7 +98,14 @@ "freeform": { "key": "name" }, - "id": "shops-name" + "id": "shops-name", + "en": { + "question": "What kind of shop is this?", + "render": "This is a {shop}" + }, + "nl": { + "question": "Wat voor soort winkel is dit?" + } }, { "builtin": "id_presets.shop_types", diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 28b42e3b89..7149ba1431 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -65,6 +65,7 @@ ], "tagRenderings": [ "images", + "level", { "question": { "en": "Are these toilets publicly accessible?", @@ -526,7 +527,6 @@ ] } }, - "level", "description" ], "filter": [ @@ -541,7 +541,10 @@ "es": "Accesible con sillas de ruedas" }, "osmTags": { - "or": ["wheelchair=yes", "wheelchair=designated"] + "or": [ + "wheelchair=yes", + "wheelchair=designated" + ] } } ] @@ -619,7 +622,10 @@ "mappings": [ { "if": { - "or": ["wheelchair=yes", "wheelchair=designated"] + "or": [ + "wheelchair=yes", + "wheelchair=designated" + ] }, "then": "circle:white;./assets/layers/toilet/wheelchair.svg" }, @@ -634,7 +640,6 @@ } ] }, - "iconBadges": [ { "if": "opening_hours~*", diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index 8834489211..a8a15fd858 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -100,7 +100,6 @@ }, "reviews": { "description": "Shows the reviews module (including the possibility to leave a review)", - "render": "{reviews()}" }, "minimap": { @@ -867,6 +866,22 @@ "description": "Shows a table with all the tags of the feature", "render": "{all_tags()}" }, + "multilevels": { + "builtin": "level", + "override": { + "question": { + "en": "What levels does this elevator go to?" + }, + "render": { + "en": "This elevator goes to floors {multilevels}" + }, + "freeform": { + "key": "level", + "type": "string" + }, + "multiAnswer" : true + } + }, "level": { "question": { "nl": "Op welke verdieping bevindt dit punt zich?", diff --git a/assets/themes/governments/governments.json b/assets/themes/governments/governments.json index 405aea0c15..0ba98a85fb 100644 --- a/assets/themes/governments/governments.json +++ b/assets/themes/governments/governments.json @@ -1,20 +1,20 @@ { - "id": "governments", - "title": { - "en": "Governmental Offices" - }, - "description": { - "en": "On this map, Governmental offices are shown and can be easily added" - }, - "maintainer": "MapComplete", - "icon": "./assets/themes/onwheels/crest.svg", - "version": "0", - "startLat": 50.8465573, - "defaultBackgroundId": "CartoDB.Voyager", - "startLon": 4.351697, - "startZoom": 16, - "widenFactor": 2, - "layers": [ - "governments" - ] + "id": "governments", + "title": { + "en": "Governmental Offices" + }, + "description": { + "en": "On this map, Governmental offices are shown and can be easily added" + }, + "maintainer": "MapComplete", + "icon": "./assets/themes/onwheels/crest.svg", + "version": "0", + "startLat": 50.8465573, + "defaultBackgroundId": "CartoDB.Voyager", + "startLon": 4.351697, + "startZoom": 16, + "widenFactor": 2, + "layers": [ + "governments" + ] } \ No newline at end of file diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index e656cff774..a878c33625 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -4,7 +4,7 @@ "en": "OnWheels" }, "description": { - "en": "On this map, publicly wheelchair accessible places are shown and can be easily added" + "en": "On this map, publicly weelchair accessible places are shown and can be easily added" }, "maintainer": "MapComplete", "icon": "./assets/themes/onwheels/crest.svg", @@ -14,7 +14,7 @@ "startLon": 4.351697, "startZoom": 16, "widenFactor": 2, - "hideFromOverview": true, + "hideFromOverview": false, "layers": [ { "builtin": "bike_repair_station", @@ -226,10 +226,10 @@ ] }, "render": { - "en": "This door has a width of {canonical(_poi_entrance:width)} meters", - "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", - "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", - "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" + "en": "This door has a width of {canonical(_poi_entrance:width)} meter", + "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", + "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" }, "freeform": { "key": "_poi_entrance:width", diff --git a/assets/themes/sidewalks/sidewalks.json b/assets/themes/sidewalks/sidewalks.json index 4658be54fe..fcdf9349a3 100644 --- a/assets/themes/sidewalks/sidewalks.json +++ b/assets/themes/sidewalks/sidewalks.json @@ -228,4 +228,4 @@ "allowSplit": true } ] -} +} \ No newline at end of file From effd75e95c98940805b9303af77206b512e9def9 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 16:55:44 +0200 Subject: [PATCH 55/82] Add extra check that a feature is added on the right level; automatically add the right level to a new point --- Logic/Osm/Actions/CreateNewNodeAction.ts | 2 +- Logic/State/MapState.ts | 37 +++++++++----- Logic/Tags/TagUtils.ts | 10 ++++ UI/BigComponents/RightControls.ts | 61 ++++++++++++++++-------- UI/BigComponents/SimpleAddUI.ts | 4 +- UI/NewPoint/ConfirmLocationOfPoint.ts | 51 ++++++++++++++++---- UI/i18n/Translation.ts | 17 ++++++- langs/en.json | 4 ++ 8 files changed, 140 insertions(+), 46 deletions(-) diff --git a/Logic/Osm/Actions/CreateNewNodeAction.ts b/Logic/Osm/Actions/CreateNewNodeAction.ts index 7a545c7e01..e6755ecd0b 100644 --- a/Logic/Osm/Actions/CreateNewNodeAction.ts +++ b/Logic/Osm/Actions/CreateNewNodeAction.ts @@ -72,7 +72,7 @@ export default class CreateNewNodeAction extends OsmCreateAction { this.setElementId(id) for (const kv of this._basicTags) { if (typeof kv.value !== "string") { - throw "Invalid value: don't use a regex in a preset" + throw "Invalid value: don't use non-string value in a preset. The tag "+kv.key+"="+kv.value+" is not a string, the value is a "+typeof kv.value } properties[kv.key] = kv.value; } diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts index d5e5a1fa64..2e4a65a9c9 100644 --- a/Logic/State/MapState.ts +++ b/Logic/State/MapState.ts @@ -19,6 +19,19 @@ import TitleHandler from "../Actors/TitleHandler"; import {BBox} from "../BBox"; import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; import {TiledStaticFeatureSource} from "../FeatureSource/Sources/StaticFeatureSource"; +import {Translation, TypedTranslation} from "../../UI/i18n/Translation"; +import {Tag} from "../Tags/Tag"; + + +export interface GlobalFilter { + filter: FilterState, + id: string, + onNewPoint: { + safetyCheck: Translation, + confirmAddNew: TypedTranslation<{ preset: Translation }> + tags: Tag[] + } +} /** * Contains all the leaflet-map related state @@ -82,8 +95,8 @@ export default class MapState extends UserRelatedState { /** * Filters which apply onto all layers */ - public globalFilters: UIEventSource<{ filter: FilterState, id: string }[]> = new UIEventSource([], "globalFilters") - + public globalFilters: UIEventSource = new UIEventSource([], "globalFilters") + /** * Which overlays are shown */ @@ -127,9 +140,9 @@ export default class MapState extends UserRelatedState { this.overlayToggles = this.layoutToUse?.tileLayerSources ?.filter(c => c.name !== undefined) ?.map(c => ({ - config: c, - isDisplayed: QueryParameters.GetBooleanQueryParameter("overlay-" + c.id, c.defaultState, "Wether or not the overlay " + c.id + " is shown") - })) ?? [] + config: c, + isDisplayed: QueryParameters.GetBooleanQueryParameter("overlay-" + c.id, c.defaultState, "Wether or not the overlay " + c.id + " is shown") + })) ?? [] this.filteredLayers = this.InitializeFilteredLayers() @@ -212,7 +225,7 @@ export default class MapState extends UserRelatedState { return [feature] }) - this.currentView = new TiledStaticFeatureSource(features, currentViewLayer); + this.currentView = new TiledStaticFeatureSource(features, currentViewLayer); } private initGpsLocation() { @@ -341,15 +354,15 @@ export default class MapState extends UserRelatedState { } private getPref(key: string, layer: LayerConfig): UIEventSource { - const pref = this.osmConnection + const pref = this.osmConnection .GetPreference(key) .sync(v => { - if(v === undefined){ + if (v === undefined) { return undefined } return v === "true"; }, [], b => { - if(b === undefined){ + if (b === undefined) { return undefined } return "" + b; @@ -360,7 +373,7 @@ export default class MapState extends UserRelatedState { private InitializeFilteredLayers() { const layoutToUse = this.layoutToUse; - if(layoutToUse === undefined){ + if (layoutToUse === undefined) { return new UIEventSource([]) } const flayers: FilteredLayer[] = []; @@ -369,11 +382,11 @@ export default class MapState extends UserRelatedState { if (layer.syncSelection === "local") { isDisplayed = LocalStorageSource.GetParsed(layoutToUse.id + "-layer-" + layer.id + "-enabled", layer.shownByDefault) } else if (layer.syncSelection === "theme-only") { - isDisplayed = this.getPref(layoutToUse.id+ "-layer-" + layer.id + "-enabled", layer) + isDisplayed = this.getPref(layoutToUse.id + "-layer-" + layer.id + "-enabled", layer) } else if (layer.syncSelection === "global") { isDisplayed = this.getPref("layer-" + layer.id + "-enabled", layer) } else { - isDisplayed = QueryParameters.GetBooleanQueryParameter("layer-" + layer.id, layer.shownByDefault, "Wether or not layer "+layer.id+" is shown") + isDisplayed = QueryParameters.GetBooleanQueryParameter("layer-" + layer.id, layer.shownByDefault, "Wether or not layer " + layer.id + " is shown") } diff --git a/Logic/Tags/TagUtils.ts b/Logic/Tags/TagUtils.ts index 6ef3a89664..aa91fa9b5c 100644 --- a/Logic/Tags/TagUtils.ts +++ b/Logic/Tags/TagUtils.ts @@ -492,6 +492,16 @@ export class TagUtils { } return " (" + joined + ") " } + + public static ExtractSimpleTags(tf: TagsFilter) : Tag[] { + const result: Tag[] = [] + tf.visit(t => { + if(t instanceof Tag){ + result.push(t) + } + }) + return result; + } /** * Returns 'true' is opposite tags are detected. diff --git a/UI/BigComponents/RightControls.ts b/UI/BigComponents/RightControls.ts index 7063c5f7ea..5edf81482f 100644 --- a/UI/BigComponents/RightControls.ts +++ b/UI/BigComponents/RightControls.ts @@ -3,7 +3,7 @@ import Toggle from "../Input/Toggle"; import MapControlButton from "../MapControlButton"; import GeoLocationHandler from "../../Logic/Actors/GeoLocationHandler"; import Svg from "../../Svg"; -import MapState from "../../Logic/State/MapState"; +import MapState, {GlobalFilter} from "../../Logic/State/MapState"; import LevelSelector from "../Input/LevelSelector"; import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; import {Utils} from "../../Utils"; @@ -12,6 +12,9 @@ import {RegexTag} from "../../Logic/Tags/RegexTag"; import {Or} from "../../Logic/Tags/Or"; import {Tag} from "../../Logic/Tags/Tag"; import {TagsFilter} from "../../Logic/Tags/TagsFilter"; +import Translations from "../i18n/Translations"; +import {BBox} from "../../Logic/BBox"; +import {OsmFeature} from "../../Models/OsmFeature"; export default class RightControls extends Combine { @@ -50,10 +53,11 @@ export default class RightControls extends Combine { if (bbox === undefined) { return [] } - const allElements = state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox); - const allLevelsRaw: string[] = [].concat(...allElements.map(allElements => allElements.features.map(f => f.properties["level"]))) - const allLevels = [].concat(...allLevelsRaw.map(l => TagUtils.LevelsParser(l))) - if(allLevels.indexOf("0") < 0){ + const allElementsUnfiltered: OsmFeature[] = [].concat(... state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox).map(ff => ff.features)) + const allElements = allElementsUnfiltered.filter(f => BBox.get(f).overlapsWith(bbox)) + const allLevelsRaw: string[] = allElements.map(f => f.properties["level"]) + const allLevels = [].concat(...allLevelsRaw.map(l => TagUtils.LevelsParser(l))) + if (allLevels.indexOf("0") < 0) { allLevels.push("0") } allLevels.sort((a, b) => a < b ? -1 : 1) @@ -62,40 +66,57 @@ export default class RightControls extends Combine { state.globalFilters.data.push({ filter: { currentFilter: undefined, - state: undefined + state: undefined, - }, id: "level" + }, + id: "level", + onNewPoint: undefined }) const levelSelect = new LevelSelector(levelsInView) - const isShown = levelsInView.map(levelsInView => levelsInView.length !== 0 && state.locationControl.data.zoom >= 17, + const isShown = levelsInView.map(levelsInView => { + if (levelsInView.length == 0) { + return false; + } + if (state.locationControl.data.zoom <= 16) { + return false; + } + if (levelsInView.length == 1 && levelsInView[0] == "0") { + return false + } + return true; + }, [state.locationControl]) function setLevelFilter() { - const filter = state.globalFilters.data.find(gf => gf.id === "level") - const oldState = filter.filter.state; + console.log("Updating levels filter") + const filter: GlobalFilter = state.globalFilters.data.find(gf => gf.id === "level") if (!isShown.data) { filter.filter = { state: "*", - currentFilter: undefined + currentFilter: undefined, } + filter.onNewPoint = undefined } else { const l = levelSelect.GetValue().data - let neededLevel : TagsFilter = new RegexTag("level", new RegExp("(^|;)" + l + "(;|$)")); - if(l === "0"){ + let neededLevel: TagsFilter = new RegexTag("level", new RegExp("(^|;)" + l + "(;|$)")); + if (l === "0") { neededLevel = new Or([neededLevel, new Tag("level", "")]) } filter.filter = { state: l, currentFilter: neededLevel } + const t = Translations.t.general.levelSelection + filter.onNewPoint = { + confirmAddNew: t.confirmLevel.PartialSubs({level: l}), + safetyCheck: t.addNewOnLevel.Subs({level: l}), + tags: [new Tag("level", l)] + } } - if(filter.filter.state !== oldState){ - state.globalFilters.ping(); - console.log("Level filter is now ", filter?.filter?.currentFilter?.asHumanString(false, false, {})) - } + state.globalFilters.ping(); return; } @@ -104,12 +125,12 @@ export default class RightControls extends Combine { console.log("Is level selector shown?", shown) setLevelFilter() if (shown) { - // levelSelect.SetClass("invisible") - } else { levelSelect.RemoveClass("invisible") + } else { + levelSelect.SetClass("invisible") } }) - + levelSelect.GetValue().addCallback(_ => setLevelFilter()) super([new Combine([levelSelect]).SetClass(""), plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1"))) diff --git a/UI/BigComponents/SimpleAddUI.ts b/UI/BigComponents/SimpleAddUI.ts index 4566f4115b..4b19456a57 100644 --- a/UI/BigComponents/SimpleAddUI.ts +++ b/UI/BigComponents/SimpleAddUI.ts @@ -25,6 +25,7 @@ import ConfirmLocationOfPoint from "../NewPoint/ConfirmLocationOfPoint"; import BaseLayer from "../../Models/BaseLayer"; import Loading from "../Base/Loading"; import Hash from "../../Logic/Web/Hash"; +import {GlobalFilter} from "../../Logic/State/MapState"; /* * The SimpleAddUI is a single panel, which can have multiple states: @@ -66,7 +67,8 @@ export default class SimpleAddUI extends Toggle { locationControl: UIEventSource, filteredLayers: UIEventSource, featureSwitchFilter: UIEventSource, - backgroundLayer: UIEventSource + backgroundLayer: UIEventSource, + globalFilters: UIEventSource }, takeLocationFrom?: UIEventSource<{lat: number, lon: number}> ) { diff --git a/UI/NewPoint/ConfirmLocationOfPoint.ts b/UI/NewPoint/ConfirmLocationOfPoint.ts index d2eb324f5e..88671d3109 100644 --- a/UI/NewPoint/ConfirmLocationOfPoint.ts +++ b/UI/NewPoint/ConfirmLocationOfPoint.ts @@ -15,12 +15,16 @@ import SimpleAddUI, {PresetInfo} from "../BigComponents/SimpleAddUI"; import BaseLayer from "../../Models/BaseLayer"; import Img from "../Base/Img"; import Title from "../Base/Title"; +import {GlobalFilter} from "../../Logic/State/MapState"; +import {VariableUiElement} from "../Base/VariableUIElement"; +import {Tag} from "../../Logic/Tags/Tag"; export default class ConfirmLocationOfPoint extends Combine { constructor( state: { + globalFilters: UIEventSource; featureSwitchIsTesting: UIEventSource; osmConnection: OsmConnection, featurePipeline: FeaturePipeline, @@ -38,8 +42,8 @@ export default class ConfirmLocationOfPoint extends Combine { let preciseInput: LocationInput = undefined if (preset.preciseInput !== undefined) { // Create location input - - + + // We uncouple the event source const zloc = {...loc, zoom: 19} const locationSrc = new UIEventSource(zloc); @@ -106,7 +110,11 @@ export default class ConfirmLocationOfPoint extends Combine { ).SetClass("font-bold break-words") .onClick(() => { console.log("The confirmLocationPanel - precise input yielded ", preciseInput?.GetValue()?.data) - confirm(preset.tags, preciseInput?.GetValue()?.data ?? loc, preciseInput?.snappedOnto?.data?.properties?.id); + const globalFilterTagsToAdd: Tag[][] = state.globalFilters.data.filter(gf => gf.onNewPoint !== undefined) + .map(gf => gf.onNewPoint.tags) + const globalTags : Tag[] = [].concat(...globalFilterTagsToAdd) + console.log("Global tags to add are: ", globalTags) + confirm([...preset.tags, ...globalTags], preciseInput?.GetValue()?.data ?? loc, preciseInput?.snappedOnto?.data?.properties?.id); }); if (preciseInput !== undefined) { @@ -126,7 +134,7 @@ export default class ConfirmLocationOfPoint extends Combine { .onClick(() => filterViewIsOpened.setData(true)) - const openLayerOrConfirm = new Toggle( + let openLayerOrConfirm = new Toggle( confirmButton, openLayerControl, preset.layerToAddTo.isDisplayed @@ -152,6 +160,29 @@ export default class ConfirmLocationOfPoint extends Combine { closePopup() }) + + // We assume the number of global filters won't change during the run of the program + for (let i = 0; i < state.globalFilters.data.length; i++) { + const hasBeenCheckedOf = new UIEventSource(false); + + const filterConfirmPanel = new VariableUiElement( + state.globalFilters.map(gfs => { + const gf = gfs[i] + const confirm = gf.onNewPoint?.confirmAddNew?.Subs({preset: preset.title}) + return new Combine([ + gf.onNewPoint?.safetyCheck, + new SubtleButton(Svg.confirm_svg(), confirm).onClick(() => hasBeenCheckedOf.setData(true)) + ]) + } + )) + + + openLayerOrConfirm = new Toggle( + openLayerOrConfirm, filterConfirmPanel, + state.globalFilters.map(f => hasBeenCheckedOf.data || f[i]?.onNewPoint === undefined, [hasBeenCheckedOf]) + ) + } + const hasActiveFilter = preset.layerToAddTo.appliedFilters .map(appliedFilters => { const activeFilters = Array.from(appliedFilters.values()).filter(f => f?.currentFilter !== undefined); @@ -171,16 +202,16 @@ export default class ConfirmLocationOfPoint extends Combine { Translations.t.general.cancel ).onClick(cancel) - - let examples : BaseUIElement = undefined; - if(preset.exampleImages !== undefined && preset.exampleImages.length > 0){ + + let examples: BaseUIElement = undefined; + if (preset.exampleImages !== undefined && preset.exampleImages.length > 0) { examples = new Combine([ - new Title( preset.exampleImages.length == 1 ? Translations.t.general.example : Translations.t.general.examples), + new Title(preset.exampleImages.length == 1 ? Translations.t.general.example : Translations.t.general.examples), new Combine(preset.exampleImages.map(img => new Img(img).SetClass("h-64 m-1 w-auto rounded-lg"))).SetClass("flex flex-wrap items-stretch") ]) - + } - + super([ new Toggle( Translations.t.general.testing.SetClass("alert"), diff --git a/UI/i18n/Translation.ts b/UI/i18n/Translation.ts index e9988090a9..eef10b59e6 100644 --- a/UI/i18n/Translation.ts +++ b/UI/i18n/Translation.ts @@ -317,6 +317,19 @@ export class TypedTranslation extends Translation { return Utils.SubstituteKeys(template, text, lang); }, context) } - - + + + PartialSubs(text: Partial & Record): TypedTranslation> { + const newTranslations : Record = {} + for (const lang in this.translations) { + const template = this.translations[lang] + if(lang === "_context"){ + newTranslations[lang] = template + continue + } + newTranslations[lang] = Utils.SubstituteKeys(template, text, lang) + } + + return new TypedTranslation>(newTranslations, this.context) + } } \ No newline at end of file diff --git a/langs/en.json b/langs/en.json index aa7323d5c6..f359f52a9e 100644 --- a/langs/en.json +++ b/langs/en.json @@ -140,6 +140,10 @@ "title": "Select layers", "zoomInToSeeThisLayer": "Zoom in to see this layer" }, + "levelSelection": { + "addNewOnLevel": "Is the new point location on level {level}?", + "confirmLevel": "Yes, add {preset} on level {level}" + }, "loading": "Loading…", "loadingTheme": "Loading {theme}…", "loginFailed": "Logging in into OpenStreetMap failed", From bc2f421108323bec3ae5c7671ec243d33f352a43 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 16:58:30 +0200 Subject: [PATCH 56/82] Add dashboard mode to compiled theme pages --- index_theme.ts.template | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index_theme.ts.template b/index_theme.ts.template index 8542c97809..dbb7e473d2 100644 --- a/index_theme.ts.template +++ b/index_theme.ts.template @@ -10,9 +10,7 @@ import State from "./State"; import AvailableBaseLayersImplementation from "./Logic/Actors/AvailableBaseLayersImplementation"; import ShowOverlayLayerImplementation from "./UI/ShowDataLayer/ShowOverlayLayerImplementation"; import {DefaultGuiState} from "./UI/DefaultGuiState"; - - - +import DashboardGui from "./UI/DashboardGui"; document.getElementById("decoration-desktop").remove(); @@ -62,4 +60,10 @@ DefaultGuiState.state = guiState; // This 'leaks' the global state via the window object, useful for debugging // @ts-ignore window.mapcomplete_state = State.state; -new DefaultGUI(State.state, guiState).setup() + +const mode = QueryParameters.GetQueryParameter("mode", "map", "The mode the application starts in, e.g. 'map' or 'dashboard'") +if(mode.data === "dashboard"){ + new DashboardGui(State.state, guiState).setup() +}else{ + new DefaultGUI(State.state, guiState).setup() +} \ No newline at end of file From bcbe7c0ffdb0da7ce021852ee5a14405a7f5063f Mon Sep 17 00:00:00 2001 From: HispanicMojitos Date: Mon, 25 Jul 2022 17:52:51 +0200 Subject: [PATCH 57/82] added a bunch of stuff (changes in pr) --- assets/themes/onwheels/onwheels.json | 124 ++++++++++++++++++++++++--- 1 file changed, 114 insertions(+), 10 deletions(-) diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 2a822fe20c..fcd6784d9e 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -9,16 +9,18 @@ "maintainer": "MapComplete", "icon": "./assets/themes/onwheels/crest.svg", "version": "0", - "startLat": 50.8465573, + "startLat": 50.86622, "defaultBackgroundId": "CartoDB.Voyager", - "startLon": 4.351697, - "startZoom": 16, + "startLon": 4.350103, + "startZoom": 17, "widenFactor": 2, - "hideFromOverview": true, + "hideFromOverview": false, "layers": [ { "builtin": "bike_repair_station", "override": { + "name": null, + "shownByDefault": false, "mapRendering": [ { "icon": { @@ -35,7 +37,30 @@ ] } }, - "bike_shop", + { + "builtin": "bike_shop", + "override": { + "name": null, + "shownByDefault": false + } + }, + { + "builtin": "pedestrian_path", + "override": { + "title": { + "en": "Pedestrian path" + }, + "name": null, + "shownByDefault": false + } + }, + { + "builtin": "cycleways_and_roads", + "override": { + "name": null, + "shownByDefault": false + } + }, { "builtin": "cafe_pub", "override": { @@ -48,7 +73,31 @@ ] } }, - "entrance", + { + "builtin": "entrance", + "override": { + "minzoom": 19, + "syncSelection": "theme-only", + "filter":[ + { + "id": "width", + "options": [ + { + "question": { + "en": "Any/No width info" + } + }, + { + "osmTags": "width=", + "question": { + "en": "Any width info" + } + } + ] + } + ] + } + }, { "builtin": "food", "override": { @@ -64,12 +113,52 @@ { "builtin": "kerbs", "override": { + "minzoom": 19, + "syncSelection": "theme-only", "mapRendering": [ { "icon": { "render": "./assets/themes/onwheels/cone.svg" } } + ], + "filter": [ + { + "id": "kerb-type", + "options": [ + { + "question": { + "en": "All types of kerbs", + "nl": "Alle typen stoepranden", + "de": "Alle Arten von Bordsteinen" + } + }, + { + "osmTags": "kerb=raised", + "question": { + "en": "Raised kerb (>3 cm)", + "nl": "Hoge stoeprand (>3 cm)", + "de": "Erhöhter Bordstein (>3 cm)" + } + }, + { + "osmTags": "kerb=lowered", + "question": { + "en": "Lowered kerb (~3 cm)", + "nl": "Verlaagde stoeprand (~3 cm)", + "de": "Abgesenkter Bordstein (~3 cm)" + } + }, + { + "osmTags": "kerb=flush", + "question": { + "en": "Flush kerb (~0cm)", + "nl": "Vlakke stoeprand (~0cm)", + "de": "Bündiger Bordstein (~0cm)" + } + } + ] + } ] } }, @@ -87,7 +176,13 @@ ] } }, - "picnic_table", + { + "builtin": "picnic_table", + "override": { + "name": null, + "shownByDefault": false + } + }, "school", { "builtin": "shops", @@ -107,6 +202,8 @@ { "builtin": "toilet", "override": { + "minzoom": 19, + "syncSelection": "theme-only", "mapRendering": [ { "icon": "./assets/themes/onwheels/toilet.svg", @@ -156,6 +253,8 @@ { "builtin": "reception_desk", "override": { + "minzoom": 19, + "syncSelection": "theme-only", "mapRendering": [ { "icon": "./assets/themes/onwheels/reception.svg", @@ -165,7 +264,13 @@ } }, "walls_and_buildings", - "elevator", + { + "builtin": "elevator", + "override": { + "minzoom": 19, + "syncSelection": "theme-only" + } + }, { "builtin": "hotel", "override": { @@ -212,7 +317,6 @@ } ] } - ], - "minzoom": 15 + ] } } \ No newline at end of file From 2412828a69c41c3f9887de2d3177486f8636ec68 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 18:55:15 +0200 Subject: [PATCH 58/82] Extract statistics panel, add statistics panel as special rendering --- Logic/FeatureSource/FeaturePipeline.ts | 61 +++++++++++- UI/BigComponents/StatisticsPanel.ts | 51 ++++++++++ UI/DashboardGui.ts | 130 +++---------------------- UI/LanguagePicker.ts | 1 + UI/SpecialVisualizations.ts | 34 ++++++- Utils.ts | 8 ++ assets/themes/onwheels/onwheels.json | 29 +++++- css/index-tailwind-output.css | 22 +++-- 8 files changed, 204 insertions(+), 132 deletions(-) create mode 100644 UI/BigComponents/StatisticsPanel.ts diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts index 92c3c99998..09f88853e8 100644 --- a/Logic/FeatureSource/FeaturePipeline.ts +++ b/Logic/FeatureSource/FeaturePipeline.ts @@ -23,8 +23,11 @@ import TileFreshnessCalculator from "./TileFreshnessCalculator"; import FullNodeDatabaseSource from "./TiledFeatureSource/FullNodeDatabaseSource"; import MapState from "../State/MapState"; import {ElementStorage} from "../ElementStorage"; -import {Feature, Geometry} from "@turf/turf"; import {OsmFeature} from "../../Models/OsmFeature"; +import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; +import {FilterState} from "../../Models/FilteredLayer"; +import {GeoOperations} from "../GeoOperations"; +import {Utils} from "../../Utils"; /** @@ -514,6 +517,62 @@ export default class FeaturePipeline { return updater; } + /** + * Builds upon 'GetAllFeaturesAndMetaWithin', but does stricter BBOX-checking and applies the filters + */ + public getAllVisibleElementsWithmeta(bbox: BBox): { center: [number, number], element: OsmFeature, layer: LayerConfig }[] { + if (bbox === undefined) { + console.warn("No bbox") + return [] + } + + const layers = Utils.toIdRecord(this.state.layoutToUse.layers) + const elementsWithMeta: { features: OsmFeature[], layer: string }[] = this.GetAllFeaturesAndMetaWithin(bbox) + + let elements: {center: [number, number], element: OsmFeature, layer: LayerConfig }[] = [] + let seenElements = new Set() + for (const elementsWithMetaElement of elementsWithMeta) { + const layer = layers[elementsWithMetaElement.layer] + if(layer.title === undefined){ + continue + } + const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); + for (let i = 0; i < elementsWithMetaElement.features.length; i++) { + const element = elementsWithMetaElement.features[i]; + if (!filtered.isDisplayed.data) { + continue + } + if (seenElements.has(element.properties.id)) { + continue + } + seenElements.add(element.properties.id) + if (!bbox.overlapsWith(BBox.get(element))) { + continue + } + if (layer?.isShown !== undefined && !layer.isShown.matchesProperties(element)) { + continue + } + const activeFilters: FilterState[] = Array.from(filtered.appliedFilters.data.values()); + if (!activeFilters.every(filter => filter?.currentFilter === undefined || filter?.currentFilter?.matchesProperties(element.properties))) { + continue + } + const center = GeoOperations.centerpointCoordinates(element); + elements.push({ + element, + center, + layer: layers[elementsWithMetaElement.layer], + }) + + } + } + + + + + return elements; + } + + /** * Inject a new point */ diff --git a/UI/BigComponents/StatisticsPanel.ts b/UI/BigComponents/StatisticsPanel.ts new file mode 100644 index 0000000000..f1e6e98b71 --- /dev/null +++ b/UI/BigComponents/StatisticsPanel.ts @@ -0,0 +1,51 @@ +import {VariableUiElement} from "../Base/VariableUIElement"; +import Loading from "../Base/Loading"; +import Title from "../Base/Title"; +import TagRenderingChart from "./TagRenderingChart"; +import Combine from "../Base/Combine"; +import Locale from "../i18n/Locale"; +import {UIEventSource} from "../../Logic/UIEventSource"; +import {OsmFeature} from "../../Models/OsmFeature"; +import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; +import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; + +export default class StatisticsPanel extends VariableUiElement { + constructor(elementsInview: UIEventSource<{ element: OsmFeature, layer: LayerConfig }[]>, state: { + layoutToUse: LayoutConfig + }) { + super(elementsInview.stabilized(1000).map(features => { + if (features === undefined) { + return new Loading("Loading data") + } + if (features.length === 0) { + return "No elements in view" + } + const els = [] + for (const layer of state.layoutToUse.layers) { + if(layer.name === undefined){ + continue + } + const featuresForLayer = features.filter(f => f.layer === layer).map(f => f.element) + if(featuresForLayer.length === 0){ + continue + } + els.push(new Title(layer.name.Clone(), 1).SetClass("mt-8")) + + const layerStats = [] + for (const tagRendering of (layer?.tagRenderings ?? [])) { + const chart = new TagRenderingChart(featuresForLayer, tagRendering, { + chartclasses: "w-full", + chartstyle: "height: 60rem", + includeTitle: false + }) + const title = new Title(tagRendering.question?.Clone() ?? tagRendering.id, 4).SetClass("mt-8") + if(!chart.HasClass("hidden")){ + layerStats.push(new Combine([title, chart]).SetClass("flex flex-col w-full lg:w-1/3")) + } + } + els.push(new Combine(layerStats).SetClass("flex flex-wrap")) + } + return new Combine(els) + }, [Locale.language])); + } +} \ No newline at end of file diff --git a/UI/DashboardGui.ts b/UI/DashboardGui.ts index 02dfddd206..d657f9667a 100644 --- a/UI/DashboardGui.ts +++ b/UI/DashboardGui.ts @@ -12,7 +12,6 @@ import {MinimapObj} from "./Base/Minimap"; import BaseUIElement from "./BaseUIElement"; import {VariableUiElement} from "./Base/VariableUIElement"; import {GeoOperations} from "../Logic/GeoOperations"; -import {BBox} from "../Logic/BBox"; import {OsmFeature} from "../Models/OsmFeature"; import SearchAndGo from "./BigComponents/SearchAndGo"; import FeatureInfoBox from "./Popup/FeatureInfoBox"; @@ -22,14 +21,11 @@ import Lazy from "./Base/Lazy"; import TagRenderingAnswer from "./Popup/TagRenderingAnswer"; import Hash from "../Logic/Web/Hash"; import FilterView from "./BigComponents/FilterView"; -import {FilterState} from "../Models/FilteredLayer"; import Translations from "./i18n/Translations"; import Constants from "../Models/Constants"; import SimpleAddUI from "./BigComponents/SimpleAddUI"; -import TagRenderingChart from "./BigComponents/TagRenderingChart"; -import Loading from "./Base/Loading"; import BackToIndex from "./BigComponents/BackToIndex"; -import Locale from "./i18n/Locale"; +import StatisticsPanel from "./BigComponents/StatisticsPanel"; export default class DashboardGui { @@ -94,63 +90,7 @@ export default class DashboardGui { return new Combine(elements.map(e => self.singleElementView(e.element, e.layer, e.distance))) } - private visibleElements(map: MinimapObj & BaseUIElement, layers: Record): { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] { - const bbox = map.bounds.data - if (bbox === undefined) { - console.warn("No bbox") - return undefined - } - const location = map.location.data; - const loc: [number, number] = [location.lon, location.lat] - - const elementsWithMeta: { features: OsmFeature[], layer: string }[] = this.state.featurePipeline.GetAllFeaturesAndMetaWithin(bbox) - - let elements: { distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[] = [] - let seenElements = new Set() - for (const elementsWithMetaElement of elementsWithMeta) { - const layer = layers[elementsWithMetaElement.layer] - if(layer.title === undefined){ - continue - } - const filtered = this.state.filteredLayers.data.find(fl => fl.layerDef == layer); - for (let i = 0; i < elementsWithMetaElement.features.length; i++) { - const element = elementsWithMetaElement.features[i]; - if (!filtered.isDisplayed.data) { - continue - } - if (seenElements.has(element.properties.id)) { - continue - } - seenElements.add(element.properties.id) - if (!bbox.overlapsWith(BBox.get(element))) { - continue - } - if (layer?.isShown !== undefined && !layer.isShown.matchesProperties(element)) { - continue - } - const activeFilters: FilterState[] = Array.from(filtered.appliedFilters.data.values()); - if (!activeFilters.every(filter => filter?.currentFilter === undefined || filter?.currentFilter?.matchesProperties(element.properties))) { - continue - } - const center = GeoOperations.centerpointCoordinates(element); - elements.push({ - element, - center, - layer: layers[elementsWithMetaElement.layer], - distance: GeoOperations.distanceBetween(loc, center) - }) - - } - } - - - elements.sort((e0, e1) => e0.distance - e1.distance) - - - return elements; - } - - private documentationButtonFor(layerConfig: LayerConfig): BaseUIElement { + private documentationButtonFor(layerConfig: LayerConfig): BaseUIElement { return this.viewSelector(Translations.W(layerConfig.name?.Clone() ?? layerConfig.id), new Combine(["Documentation about ", layerConfig.name?.Clone() ?? layerConfig.id]), layerConfig.GenerateDocumentation([]), "documentation-" + layerConfig.id) @@ -166,6 +106,7 @@ export default class DashboardGui { return this.viewSelector(new FixedUiElement("Documentation"), "Documentation", new Combine(layers.map(l => this.documentationButtonFor(l).SetClass("flex flex-col")))) } + public setup(): void { @@ -191,7 +132,14 @@ export default class DashboardGui { const elementsInview = new UIEventSource<{ distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[]>([]); function update() { - elementsInview.setData(self.visibleElements(map, layers)) + const mapCenter = <[number,number]> [self.state.locationControl.data.lon, self.state.locationControl.data.lon] + const elements = self.state.featurePipeline.getAllVisibleElementsWithmeta(self.state.currentBounds.data).map(el => { + const distance = GeoOperations.distanceBetween(el.center, mapCenter) + return {...el, distance } + }) + elements.sort((e0, e1) => e0.distance - e1.distance) + elementsInview.setData(elements) + } map.bounds.addCallbackAndRun(update) @@ -235,60 +183,6 @@ export default class DashboardGui { } }) - const statistics = - new VariableUiElement(elementsInview.stabilized(1000).map(features => { - if (features === undefined) { - return new Loading("Loading data") - } - if (features.length === 0) { - return "No elements in view" - } - const els = [] - for (const layer of state.layoutToUse.layers) { - if(layer.name === undefined){ - continue - } - const featuresForLayer = features.filter(f => f.layer === layer).map(f => f.element) - if(featuresForLayer.length === 0){ - continue - } - els.push(new Title(layer.name)) - - const layerStats = [] - for (const tagRendering of (layer?.tagRenderings ?? [])) { - const chart = new TagRenderingChart(featuresForLayer, tagRendering, { - chartclasses: "w-full", - chartstyle: "height: 60rem", - includeTitle: false - }) - const full = new Lazy(() => - new TagRenderingChart(featuresForLayer, tagRendering, { - chartstyle: "max-height: calc(100vh - 10rem)", - groupToOtherCutoff: 0 - }) - ) - const title = new Title(tagRendering.question?.Clone() ?? tagRendering.id) - title.onClick(() => { - const current = self.currentView.data - full.onClick(() => { - self.currentView.setData(current) - }) - self.currentView.setData( - { - title: new Title(tagRendering.question.Clone() ?? tagRendering.id), - contents: full - }) - } - ) - if(!chart.HasClass("hidden")){ - layerStats.push(new Combine([title, chart]).SetClass("flex flex-col w-full lg:w-1/3")) - } - } - els.push(new Combine(layerStats).SetClass("flex flex-wrap")) - } - return new Combine(els) - }, [Locale.language])) - new Combine([ new Combine([ @@ -298,7 +192,7 @@ export default class DashboardGui { this.viewSelector(new Title( new VariableUiElement(elementsInview.map(elements => "There are " + elements?.length + " elements in view"))), "Statistics", - statistics, "statistics"), + new StatisticsPanel(elementsInview, this.state), "statistics"), this.viewSelector(new FixedUiElement("Filter"), "Filters", filterView, "filters"), diff --git a/UI/LanguagePicker.ts b/UI/LanguagePicker.ts index 6084688163..60c8eae585 100644 --- a/UI/LanguagePicker.ts +++ b/UI/LanguagePicker.ts @@ -16,6 +16,7 @@ export default class LanguagePicker extends Toggle { if (languages === undefined || languages.length <= 1) { + super(undefined,undefined,undefined) return undefined; } diff --git a/UI/SpecialVisualizations.ts b/UI/SpecialVisualizations.ts index ea538f4abd..4d70c850c1 100644 --- a/UI/SpecialVisualizations.ts +++ b/UI/SpecialVisualizations.ts @@ -57,7 +57,8 @@ import {SaveButton} from "./Popup/SaveButton"; import {MapillaryLink} from "./BigComponents/MapillaryLink"; import {CheckBox} from "./Input/Checkboxes"; import Slider from "./Input/Slider"; -import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig"; +import {OsmFeature} from "../Models/OsmFeature"; +import StatisticsPanel from "./BigComponents/StatisticsPanel"; export interface SpecialVisualization { funcName: string, @@ -1098,7 +1099,36 @@ export default class SpecialVisualizations { })) }, new NearbyImageVis(), - new MapillaryLinkVis() + new MapillaryLinkVis(), + { + funcName: "statistics", + docs: "Show general statistics about the elements currently in view. Intended to use on the `current_view`-layer", + args: [], + constr : (state, tagsSource, args, guiState) => { + const elementsInview = new UIEventSource<{ distance: number, center: [number, number], element: OsmFeature, layer: LayerConfig }[]>([]); + function update() { + const mapCenter = <[number,number]> [state.locationControl.data.lon, state.locationControl.data.lon] + const bbox = state.currentBounds.data + const elements = state.featurePipeline.getAllVisibleElementsWithmeta(bbox).map(el => { + const distance = GeoOperations.distanceBetween(el.center, mapCenter) + return {...el, distance } + }) + elements.sort((e0, e1) => e0.distance - e1.distance) + elementsInview.setData(elements) + + } + + state.currentBounds.addCallbackAndRun(update) + state.featurePipeline.newDataLoadedSignal.addCallback(update); + state.filteredLayers.addCallbackAndRun(fls => { + for (const fl of fls) { + fl.isDisplayed.addCallback(update) + fl.appliedFilters.addCallback(update) + } + }) + return new StatisticsPanel(elementsInview, state) + } + } ] specialVisualizations.push(new AutoApplyButton(specialVisualizations)) diff --git a/Utils.ts b/Utils.ts index 0da5a205e5..370e76f5f9 100644 --- a/Utils.ts +++ b/Utils.ts @@ -1031,5 +1031,13 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be private static colorDiff(c0: { r: number, g: number, b: number }, c1: { r: number, g: number, b: number }) { return Math.abs(c0.r - c1.r) + Math.abs(c0.g - c1.g) + Math.abs(c0.b - c1.b); } + + static toIdRecord(ts: T[]): Record { + const result : Record = {} + for (const t of ts) { + result[t.id] = t + } + return result + } } diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 2a822fe20c..15a0637da6 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -176,6 +176,30 @@ } ] } + }, + { + "builtin": "current_view", + "override": { + "+mapRendering": [ + { + "location": [ + "point", "centroid" + ], + "icon": "statistics" + } + ], + "=title": { + "render": { + "en": "Statistics" + } + }, + "tagRenderings": [ + { + "id": "stats", + "render": "{statistics()}" + } + ] + } } ], "overrideAll": { @@ -190,13 +214,14 @@ "condition": { "and": [ "entrance=", - "kerb=" + "kerb=", + "current_view!=yes" ] }, "render": { "en": "This door has a width of {canonical(_poi_entrance:width)} meters", "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", - "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "de": "Diese Tür hat eine Drchgangsbreite von {canonical(_poi_entrance:width)} Meter", "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" }, "freeform": { diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index d242eee6c9..5b3eb4abf2 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -866,6 +866,14 @@ video { margin-bottom: 1rem; } +.mt-8 { + margin-top: 2rem; +} + +.mt-4 { + margin-top: 1rem; +} + .mt-2 { margin-top: 0.5rem; } @@ -878,10 +886,6 @@ video { margin-right: 2rem; } -.mt-4 { - margin-top: 1rem; -} - .mt-6 { margin-top: 1.5rem; } @@ -1515,11 +1519,6 @@ video { background-color: rgba(224, 231, 255, var(--tw-bg-opacity)); } -.bg-red-500 { - --tw-bg-opacity: 1; - background-color: rgba(239, 68, 68, var(--tw-bg-opacity)); -} - .bg-black { --tw-bg-opacity: 1; background-color: rgba(0, 0, 0, var(--tw-bg-opacity)); @@ -1540,6 +1539,11 @@ video { background-color: rgba(209, 213, 219, var(--tw-bg-opacity)); } +.bg-red-500 { + --tw-bg-opacity: 1; + background-color: rgba(239, 68, 68, var(--tw-bg-opacity)); +} + .bg-red-200 { --tw-bg-opacity: 1; background-color: rgba(254, 202, 202, var(--tw-bg-opacity)); From 5efe14a76b3783187ecb50bd4bb52a81f8e2eb43 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 19:12:34 +0200 Subject: [PATCH 59/82] Fix tests --- test/scripts/GenerateCache.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/scripts/GenerateCache.spec.ts b/test/scripts/GenerateCache.spec.ts index a57e598b99..a74f4178e1 100644 --- a/test/scripts/GenerateCache.spec.ts +++ b/test/scripts/GenerateCache.spec.ts @@ -38,8 +38,7 @@ describe("GenerateCache", () => { rmdirSync(dir+"np-cache") } mkdirSync(dir+"np-cache") - initDownloads( - "(nwr%5B%22amenity%22%3D%22toilets%22%5D%3Bnwr%5B%22amenity%22%3D%22parking%22%5D%3Bnwr%5B%22amenity%22%3D%22bench%22%5D%3Bnwr%5B%22id%22%3D%22location_track%22%5D%3Bnwr%5B%22id%22%3D%22gps%22%5D%3Bnwr%5B%22information%22%3D%22board%22%5D%3Bnwr%5B%22leisure%22%3D%22picnic_table%22%5D%3Bnwr%5B%22man_made%22%3D%22watermill%22%5D%3Bnwr%5B%22user%3Ahome%22%3D%22yes%22%5D%3Bnwr%5B%22user%3Alocation%22%3D%22yes%22%5D%3Bnwr%5B%22leisure%22%3D%22nature_reserve%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22boundary%22%3D%22protected_area%22%5D%5B%22protect_class%22!%3D%2298%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22visitor_centre%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22office%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*foot.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*hiking.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*bycicle.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*horse.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22leisure%22%3D%22bird_hide%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3B)%3Bout%20body%3Bout%20meta%3B%3E%3Bout%20skel%20qt%3B" + initDownloads("(nwr%5B%22amenity%22%3D%22toilets%22%5D%3Bnwr%5B%22amenity%22%3D%22parking%22%5D%3Bnwr%5B%22amenity%22%3D%22bench%22%5D%3Bnw%5B%22id%22%3D%22location_track%22%5D%3Bnwr%5B%22id%22%3D%22gps%22%5D%3Bnwr%5B%22information%22%3D%22board%22%5D%3Bnwr%5B%22leisure%22%3D%22picnic_table%22%5D%3Bnwr%5B%22man_made%22%3D%22watermill%22%5D%3Bnwr%5B%22user%3Ahome%22%3D%22yes%22%5D%3Bnwr%5B%22user%3Alocation%22%3D%22yes%22%5D%3Bnwr%5B%22leisure%22%3D%22nature_reserve%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22boundary%22%3D%22protected_area%22%5D%5B%22protect_class%22!%3D%2298%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22visitor_centre%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22office%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*foot.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*hiking.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*bycicle.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*horse.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22leisure%22%3D%22bird_hide%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3Bnwr%5B%22drinking_water%22%3D%22yes%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3B)%3Bout%20body%3Bout%20meta%3B%3E%3Bout%20skel%20qt%3B )" ); await main([ "natuurpunt", From 4f488fab8673bf8e39371f36695ea68aae1893f8 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 25 Jul 2022 19:17:02 +0200 Subject: [PATCH 60/82] --amend --- test/scripts/GenerateCache.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/scripts/GenerateCache.spec.ts b/test/scripts/GenerateCache.spec.ts index a74f4178e1..dec2721b33 100644 --- a/test/scripts/GenerateCache.spec.ts +++ b/test/scripts/GenerateCache.spec.ts @@ -38,7 +38,7 @@ describe("GenerateCache", () => { rmdirSync(dir+"np-cache") } mkdirSync(dir+"np-cache") - initDownloads("(nwr%5B%22amenity%22%3D%22toilets%22%5D%3Bnwr%5B%22amenity%22%3D%22parking%22%5D%3Bnwr%5B%22amenity%22%3D%22bench%22%5D%3Bnw%5B%22id%22%3D%22location_track%22%5D%3Bnwr%5B%22id%22%3D%22gps%22%5D%3Bnwr%5B%22information%22%3D%22board%22%5D%3Bnwr%5B%22leisure%22%3D%22picnic_table%22%5D%3Bnwr%5B%22man_made%22%3D%22watermill%22%5D%3Bnwr%5B%22user%3Ahome%22%3D%22yes%22%5D%3Bnwr%5B%22user%3Alocation%22%3D%22yes%22%5D%3Bnwr%5B%22leisure%22%3D%22nature_reserve%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22boundary%22%3D%22protected_area%22%5D%5B%22protect_class%22!%3D%2298%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22visitor_centre%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22office%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*foot.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*hiking.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*bycicle.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*horse.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22leisure%22%3D%22bird_hide%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3Bnwr%5B%22drinking_water%22%3D%22yes%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3B)%3Bout%20body%3Bout%20meta%3B%3E%3Bout%20skel%20qt%3B )" + initDownloads("(nwr%5B%22amenity%22%3D%22toilets%22%5D%3Bnwr%5B%22amenity%22%3D%22parking%22%5D%3Bnwr%5B%22amenity%22%3D%22bench%22%5D%3Bnwr%5B%22id%22%3D%22location_track%22%5D%3Bnwr%5B%22id%22%3D%22gps%22%5D%3Bnwr%5B%22information%22%3D%22board%22%5D%3Bnwr%5B%22leisure%22%3D%22picnic_table%22%5D%3Bnwr%5B%22man_made%22%3D%22watermill%22%5D%3Bnwr%5B%22user%3Ahome%22%3D%22yes%22%5D%3Bnwr%5B%22user%3Alocation%22%3D%22yes%22%5D%3Bnwr%5B%22leisure%22%3D%22nature_reserve%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22boundary%22%3D%22protected_area%22%5D%5B%22protect_class%22!%3D%2298%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22visitor_centre%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22information%22%3D%22office%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*foot.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*hiking.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*bycicle.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22route%22~%22%5E.*horse.*%24%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22leisure%22%3D%22bird_hide%22%5D%5B%22operator%22~%22%5E.*%5BnN%5Datuurpunt.*%24%22%5D%3Bnwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3Bnwr%5B%22drinking_water%22%3D%22yes%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D%3B)%3Bout%20body%3Bout%20meta%3B%3E%3Bout%20skel%20qt%3B" ); await main([ "natuurpunt", @@ -47,7 +47,7 @@ describe("GenerateCache", () => { "51.15423567022531", "3.250579833984375", "51.162821593316934", "3.262810707092285", "--generate-point-overview", "nature_reserve,visitor_information_centre" ]) - await ScriptUtils.sleep(500) + await ScriptUtils.sleep(250) const birdhides = JSON.parse(readFileSync(dir+"np-cache/natuurpunt_birdhide_12_2085_1368.geojson", "UTF8")) expect(birdhides.features.length).deep.equal(5) expect(birdhides.features.some(f => f.properties.id === "node/5158056232"), "Didn't find birdhide node/5158056232 ").true From 9c9977f04ff607c7629b1f332e2347a71ab43a8c Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 14:26:29 +0000 Subject: [PATCH 61/82] Translated using Weblate (English) Currently translated at 100.0% (2103 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/en/ --- langs/layers/en.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/langs/layers/en.json b/langs/layers/en.json index b7ba9d66c6..355fa11373 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -3266,7 +3266,7 @@ } } }, - "name": "doctors", + "name": "Doctors", "presets": { "0": { "title": "a doctors office" @@ -4050,11 +4050,11 @@ } }, "hospital": { - "name": "Hospital", + "name": "Hospitals", "tagRenderings": { "name": { - "question": "What does the of the hospital ?", - "render": "Name of the hospital name is {name}" + "question": "What is the name of this hospital?", + "render": "This hospital is called {name}" } }, "title": { @@ -6766,4 +6766,4 @@ } } } -} \ No newline at end of file +} From fff518665555a050a5dd0ef4b1a8b38d42f17d71 Mon Sep 17 00:00:00 2001 From: kjon Date: Sun, 24 Jul 2022 09:48:48 +0000 Subject: [PATCH 62/82] Translated using Weblate (German) Currently translated at 99.8% (2100 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/de/ --- langs/layers/de.json | 299 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 293 insertions(+), 6 deletions(-) diff --git a/langs/layers/de.json b/langs/layers/de.json index 2376038350..76bd21ae3c 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -4663,8 +4663,15 @@ }, "5": { "then": "Dies ist eine Fahrspur zum Parken auf der Straße" + }, + "9": { + "then": "Hier gibt es Parkmöglichkeiten unter einer offenen Dachkonstruktion" + }, + "8": { + "then": "Hier gibt es Parkmöglichkeiten auf einem kleinen Rastplatz" } - } + }, + "question": "Was ist das für ein Parkplatz?" }, "capacity-disabled": { "freeform": { @@ -5184,7 +5191,12 @@ "tagRenderings": { "8": { "override": { - "question": "Was ist die Hauptsprache dieser Schule?
Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?
" + "question": "Was ist die Hauptsprache dieser Schule?
Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?
", + "+mappings": { + "0": { + "then": "Die Unterrichtssprache der Schule ist unbekannt" + } + } } }, "capacity": { @@ -5325,6 +5337,32 @@ "tagRenderings": { "shops-name": { "question": "Wie ist der Name dieses Geschäfts?" + }, + "copyshop-print-sizes": { + "mappings": { + "0": { + "then": "Das Geschäft kann Unterlagen auf A4 Papier drucken" + }, + "2": { + "then": "Das Geschäft kann Unterlagen auf A2 Papier drucken" + }, + "3": { + "then": "Das Geschäft kann Unterlagen auf A1 Papier drucken" + }, + "4": { + "then": "Das Geschäft kann Unterlagen auf A0 Papier drucken" + }, + "1": { + "then": "Das Geschäft kann Unterlagen auf A3 Papier drucken" + } + }, + "question": "Welche Papierformate bietet das Geschäft an?" + }, + "2": { + "override": { + "question": "Um was für ein Geschäft handelt es sich?", + "render": "Das ist ein {shop}" + } } }, "title": { @@ -5788,7 +5826,7 @@ "then": "Hier werden die Doktortitel verliehen" } }, - "question": "Welches Bildungsniveau wird hier gelehrt?" + "question": "Welche Bildungsabschlüsse werden hier verliehen?" } }, "title": { @@ -6182,7 +6220,12 @@ "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", "tagRenderings": { "_entrance:width": { - "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_entrance:width)} Meter " + "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_entrance:width)} Meter ", + "mappings": { + "0": { + "then": "Der Eingang hat keine Informationen zur Durchgangsbreite" + } + } } }, "title": { @@ -6462,12 +6505,256 @@ "hospital": { "tagRenderings": { "name": { - "render": "Der Name des Krankenhauses lautet {name}" + "render": "Der Name des Krankenhauses lautet {name}", + "question": "Wie lautet der Name des Krankenhauses?" } }, - "name": "Krankenhaus", + "name": "Krankenhäuser", "title": { "render": "Krankenhaus" } + }, + "pharmacy": { + "name": "Apotheke", + "tagRenderings": { + "wheelchair": { + "mappings": { + "0": { + "then": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich" + }, + "1": { + "then": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich" + }, + "2": { + "then": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich" + } + }, + "question": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?" + } + }, + "title": { + "render": "{name}", + "mappings": { + "0": { + "then": "Apotheke" + } + } + } + }, + "rainbow_crossings": { + "tagRenderings": { + "crossing-with-rainbow": { + "question": "Hat der Überweg eine Markierung in Regenbogenfarben?", + "mappings": { + "1": { + "then": "Hier gibt es kein Markierung in Regenbogenfarben" + }, + "0": { + "then": "Der Überweg hat eine Markierung in Regenbogenfarben" + }, + "2": { + "then": "Hier gibt es kein Markierung in Regenbogenfarben" + } + } + } + }, + "title": { + "render": "Überweg" + }, + "presets": { + "0": { + "title": "einen Überweg", + "description": "Fußgängerüberweg" + } + }, + "description": "Eine Ebene mit Fußgängerüberwegen in Regenbogenfarben", + "name": "Fußgängerüberwege in Regenbogenfarben" + }, + "transit_stops": { + "tagRenderings": { + "bin": { + "mappings": { + "2": { + "then": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist" + }, + "0": { + "then": "Die Haltestelle hat einen Mülleimer" + }, + "1": { + "then": "Die Haltestelle hat keinen Mülleimer" + } + }, + "question": "Hat die Haltestelle einen Mülleimer?" + }, + "lit": { + "mappings": { + "1": { + "then": "Die Haltestelle ist nicht beleuchtet" + }, + "0": { + "then": "Die Haltestelle ist beleuchtet" + } + }, + "question": "Ist die Haltestelle beleuchtet?" + }, + "bench": { + "mappings": { + "1": { + "then": "Die Haltestelle hat keine Bank" + }, + "0": { + "then": "Die Haltestelle hat eine Bank" + }, + "2": { + "then": "Die Haltestelle hat eine Bank, die separat kartiert ist" + } + }, + "question": "Gibt es an der Haltestelle eine Sitzbank?" + }, + "contained_routes": { + "render": "

{_contained_routes_count} Linien halten an der Haltestelle

    {_contained_routes}
" + }, + "departures_board": { + "mappings": { + "0": { + "then": "Die Haltestelle hat einen Fahrplan, der nicht näher definiert ist" + }, + "3": { + "then": "Die Haltestelle hat einen Fahrplan, der die regulären Abfahrtszeiten anzeigt" + }, + "2": { + "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" + }, + "1": { + "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" + }, + "4": { + "then": "Die Haltestelle hat einen Fahrplan, der den Abstand zwischen Abfahrten anzeigt" + }, + "5": { + "then": "Die Haltestelle hat keinen Fahrplan" + } + } + }, + "stop_name": { + "freeform": { + "placeholder": "Name der Haltestelle" + }, + "mappings": { + "0": { + "then": "Die Haltestelle hat keinen Namen" + } + }, + "question": "Wie lautet der Name der Haltestelle?", + "render": "Der Name der Haltestelle lautet {name}" + }, + "shelter": { + "mappings": { + "0": { + "then": "Die Haltestelle hat einen Unterstand" + }, + "1": { + "then": "Die Haltestelle hat keinen Unterstand" + }, + "2": { + "then": "Die Haltestelle hat einen Unterstand, der separat kariert ist" + } + }, + "question": "Hat die Haltestelle einen Unterstand?" + }, + "tactile_paving": { + "mappings": { + "1": { + "then": "Die Haltestelle hat kein taktiles Pflaster" + }, + "0": { + "then": "Die Haltestelle hat ein taktiles Pflaster" + } + }, + "question": "Hat die Haltestelle hat ein taktiles Pflaster?" + } + }, + "description": "Ebene mit verschiedenen Arten von Haltestellen.", + "name": "Haltestellen", + "title": { + "mappings": { + "0": { + "then": "Haltestelle {name}" + } + }, + "render": "Haltestelle" + } + }, + "shelter": { + "description": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt", + "name": "Unterstand", + "tagRenderings": { + "shelter-type": { + "mappings": { + "2": { + "then": "Das ist ein offener Gartenpavillon." + }, + "0": { + "then": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel." + }, + "1": { + "then": "Dies ist ein Unterstand zum Schutz vor Regen auf einem Picknickplatz." + } + }, + "question": "Um welche Art von Unterstand handelt es sich?", + "render": "Art des Unterstands: {shelter_type}" + } + }, + "title": { + "render": "Unterstand" + } + }, + "transit_routes": { + "tagRenderings": { + "via": { + "question": "Über welchen Zwischenhalt fährt die Buslinie?", + "render": "Die Buslinie fährt über {via}" + }, + "operator": { + "question": "Welches Unternehmen betreibt die Buslinie?", + "render": "Die Buslinie wird betrieben von {operator}" + }, + "from": { + "render": "Die Buslinie startet von {from}", + "question": "Wo ist der Startpunkt dieser Buslinie?" + }, + "name": { + "question": "Wie lautet der Name der Buslinie? (z.B. Bus XX: Von => Über => Nach)" + }, + "network": { + "render": "Die Buslinie gehört zum Verkehrsverbund {network}", + "question": "Zu welchem Verkehrsverbund gehört die Buslinie?" + }, + "colour": { + "question": "Welche Farbe hat diese Buslinie?", + "render": "Die Buslinie hat die Farbe {colour}" + }, + "to": { + "question": "Wo ist der Endpunkt der Buslinie?", + "render": "Der Endpunkt der Buslinie ist {to}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Buslinie" + }, + "name": "Buslinien", + "description": "Ebene mit Buslinien", + "mapRendering": { + "0": { + "color": { + "render": "#ff0000" + } + } + } } } From f8964320d9af8a9f4556b14ff89eabdbcb53c846 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Jul 2022 14:29:45 +0000 Subject: [PATCH 63/82] Translated using Weblate (Dutch) Currently translated at 92.6% (1949 of 2103 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/nl/ --- langs/layers/nl.json | 70 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 62b17eec8b..be3ec9149e 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1265,7 +1265,7 @@ "0": { "options": { "0": { - "question": "Nu geopened" + "question": "Nu geopend" } } } @@ -4216,7 +4216,8 @@ } } } - } + }, + "name": "Maximumsnelheid" }, "nature_reserve": { "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", @@ -6483,5 +6484,68 @@ } } } + }, + "doctors": { + "name": "Dokters", + "filter": { + "0": { + "options": { + "0": { + "question": "Nu geopend" + } + } + } + }, + "tagRenderings": { + "specialty": { + "mappings": { + "0": { + "then": "Dit is een huisarts" + }, + "1": { + "then": "Dit is een gynaecoloog" + }, + "2": { + "then": "Dit is een psychiater" + }, + "3": { + "then": "Dit is een kinderarts" + } + }, + "question": "Waar is deze dokter in gespecialiseerd?", + "render": "Deze dokter is gespecialiseerd in {healthcare:speciality}" + }, + "name": { + "question": "Wat is de naam van deze dokterspraktijk?", + "render": "Deze dokterspraktijk heet {name}" + } + }, + "presets": { + "0": { + "title": "een dokterspraktijk" + }, + "1": { + "title": "een tandartspraktijk" + }, + "2": { + "title": "een fysiotherapeutenpraktijk" + } + }, + "description": "Deze laag toont dokterspraktijken, tandartsen en andere gezondheidszorgfaciliteiten", + "title": { + "render": "Dokterspraktijk {name}" + } + }, + "hospital": { + "title": { + "render": "Ziekenhuis" + }, + "name": "Ziekenhuizen", + "tagRenderings": { + "name": { + "question": "Wat is de naam van dit ziekenhuis?", + "render": "Dit ziekenhuis heet {name}" + } + } } -} \ No newline at end of file +} From b4a2aa075d3acfb7ff77c4756268c1c5d7e01a43 Mon Sep 17 00:00:00 2001 From: Manuel Tassi Date: Mon, 25 Jul 2022 18:22:20 +0000 Subject: [PATCH 64/82] Translated using Weblate (Italian) Currently translated at 31.9% (216 of 677 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/it/ --- langs/it.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/langs/it.json b/langs/it.json index 1566d919ec..e75d67dc77 100644 --- a/langs/it.json +++ b/langs/it.json @@ -10,14 +10,16 @@ "cannotBeDeleted": "Questo oggetto non può essere rimosso", "delete": "Rimuovi", "explanations": { - "hardDelete": "Questo punto verrà rimosso da OpenStreetMap. Un utente esperto potrebbe recuperarlo", + "hardDelete": "Questo elemento verrà rimosso da OpenStreetMap. Un utente esperto potrebbe recuperarlo", "selectReason": "Si prega di selezionare il motivo della rimozione di questo oggetto", - "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}" + "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}", + "retagNoOtherThemes": "Questo elemento verrà riclassificato e nascosto da questa applicazione", + "retagOtherThemes": "Questo elemento verrà modificato e sarà visibile in {otherThemes}" }, "isDeleted": "Questo oggetto è stato rimosso", - "isntAPoint": "Solo i punti possono essere rimossi, l’oggetto selezionato è un percorso, un’area oppure una relazione.", + "isntAPoint": "Solo i nodi possono essere rimossi, l'elemento selezionato è un percorso, un’area oppure una relazione.", "loading": "Controllo delle proprietà per verificare se questo oggetto può essere rimosso.", - "loginToDelete": "Devi aver effettuato l’accesso per poter rimuovere un punto", + "loginToDelete": "Devi aver effettuato l’accesso per poter rimuovere un elemento", "notEnoughExperience": "Questo nodo è stato creato da un altro utente.", "onlyEditedByLoggedInUser": "Questo punto è stato modificato soltanto da te, puoi rimuoverlo in sicurezza.", "partOfOthers": "Questo punto fa parte di qualche percorso o relazione e non può essere rimosso direttamente.", From 9b40ccd6521b461e0b3d3b630b37df0af93b38da Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 09:56:07 +0200 Subject: [PATCH 65/82] Make Img-attributes readonly --- UI/Base/Img.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/UI/Base/Img.ts b/UI/Base/Img.ts index 96d93593e3..79839183ba 100644 --- a/UI/Base/Img.ts +++ b/UI/Base/Img.ts @@ -2,9 +2,10 @@ import {Utils} from "../../Utils"; import BaseUIElement from "../BaseUIElement"; export default class Img extends BaseUIElement { - private _src: string; + + private readonly _src: string; private readonly _rawSvg: boolean; - private _options: { fallbackImage?: string }; + private readonly _options: { readonly fallbackImage?: string }; constructor(src: string, rawSvg = false, options?: { fallbackImage?: string From 10e5d026af4b86f9d96b4d3bdc115728a9c2efab Mon Sep 17 00:00:00 2001 From: Andrews Leruth Date: Tue, 26 Jul 2022 08:43:27 +0000 Subject: [PATCH 66/82] Translated using Weblate (French) Currently translated at 92.8% (312 of 336 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/fr/ --- langs/themes/fr.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/langs/themes/fr.json b/langs/themes/fr.json index a38c30ad69..c27883b1a4 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -900,5 +900,21 @@ "description": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même", "shortDescription": "Une carte des poubelles", "title": "Poubelles" + }, + "onwheels": { + "overrideAll": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Cet accès n'a pas d'informations de largeur" + } + }, + "render": "Cet accès a une largeur de {canonical(_poi_entrance:width)}" + } + } + }, + "description": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes", + "title": "OnWheels" } -} \ No newline at end of file +} From 5ff1ad92828880cec3aa153f5abe4402efe17476 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Tue, 26 Jul 2022 07:50:40 +0000 Subject: [PATCH 67/82] Translated using Weblate (Dutch) Currently translated at 95.2% (320 of 336 strings) Translation: MapComplete/themes Translate-URL: https://hosted.weblate.org/projects/mapcomplete/themes/nl/ --- langs/themes/nl.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/langs/themes/nl.json b/langs/themes/nl.json index ebe921f8fd..fdf65b5acf 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -879,7 +879,12 @@ "overrideAll": { "+tagRenderings": { "0": { - "render": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter" + "render": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", + "mappings": { + "0": { + "then": "Deze ingang heeft geen informatie over de breedte" + } + } } } } @@ -1168,4 +1173,4 @@ "shortDescription": "Een kaart met vuilnisbakken", "title": "Vuilnisbak" } -} \ No newline at end of file +} From c992d7d9813f53cc1d1610fe41d1454656556ea5 Mon Sep 17 00:00:00 2001 From: Manuel Tassi Date: Mon, 25 Jul 2022 18:26:02 +0000 Subject: [PATCH 68/82] Translated using Weblate (Italian) Currently translated at 36.0% (244 of 677 strings) Translation: MapComplete/Core Translate-URL: https://hosted.weblate.org/projects/mapcomplete/core/it/ --- langs/it.json | 54 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/langs/it.json b/langs/it.json index e75d67dc77..db0c2e22bb 100644 --- a/langs/it.json +++ b/langs/it.json @@ -20,19 +20,19 @@ "isntAPoint": "Solo i nodi possono essere rimossi, l'elemento selezionato è un percorso, un’area oppure una relazione.", "loading": "Controllo delle proprietà per verificare se questo oggetto può essere rimosso.", "loginToDelete": "Devi aver effettuato l’accesso per poter rimuovere un elemento", - "notEnoughExperience": "Questo nodo è stato creato da un altro utente.", - "onlyEditedByLoggedInUser": "Questo punto è stato modificato soltanto da te, puoi rimuoverlo in sicurezza.", - "partOfOthers": "Questo punto fa parte di qualche percorso o relazione e non può essere rimosso direttamente.", - "readMessages": "Hai dei messaggi non letti. Leggili prima di rimuovere un punto (qualcuno potrebbe aver lasciato un commento)", + "notEnoughExperience": "Questo elemento è stato creato da un altro utente.", + "onlyEditedByLoggedInUser": "Questo elemento è stato modificato soltanto da te, puoi rimuoverlo in sicurezza.", + "partOfOthers": "Questo nodo fa parte di qualche percorso o relazione e non può essere rimosso direttamente.", + "readMessages": "Hai dei messaggi non letti. Leggili prima di rimuovere un elemento (qualcuno potrebbe aver lasciato un commento)", "reasons": { "disused": "L’oggetto è in disuso o è stato smantellato", - "duplicate": "Questo punto è un duplicato di un altro oggetto", + "duplicate": "Questo elemento è un duplicato di un altro elemento", "notFound": "Non è stato possibile trovare l’oggetto", - "test": "Si tratta di un punto di prova (l’oggetto non è mai esistito in quel punto)" + "test": "Si tratta di un elemento di prova (l'elemento non è mai esistito in quel punto)" }, - "safeDelete": "Questo punto può essere rimosso in sicurezza.", + "safeDelete": "Questo elemento può essere rimosso in sicurezza.", "useSomethingElse": "Per rimuoverlo usa un altro editor OpenStreetMap", - "whyDelete": "Perché questo nodo andrebbe rimosso?" + "whyDelete": "Perché questo elemento andrebbe rimosso?" }, "favourite": { "loginNeeded": "

Accedi

Il layout personale è disponibile soltanto per gli utenti OpenStreetMap", @@ -41,25 +41,35 @@ }, "general": { "about": "Modifica e aggiungi con semplicità OpenStreetMap per un certo tema", - "aboutMapcomplete": "

Informazioni su MapComplete

Con MapComplete puoi arricchire OpenStreetMap con informazioni su un singolo argomento. Rispondi a poche domande e in pochi minuti i tuoi contributi saranno disponibili a tutto il mondo! L’utente gestore del tema definisce gli elementi, le domande e le lingue per quel tema.

Scopri altro

MapComplete propone sempre un passo in più per imparare qualcosa di nuovo su OpenStreetMap.

  • Quando viene incorporato in un sito web, il collegamento dell’iframe punta a MapComplete a tutto schermo
  • La versione a tutto schermo fornisce informazioni su OpenStreetMap
  • La visualizzazione non necessita di alcun accesso ma per modificare occorre aver effettuato l’accesso su OSM.
  • Se non hai effettuato l’accesso, ti verrà richiesto di farlo
  • Dopo aver risposto ad una sola domanda potrai aggiungere dei nuovi punti alla mappa
  • Dopo qualche momento verranno mostrate le etichette effettive, in seguito i collegamenti alla wiki


Hai trovato un errore? Vuoi richiedere nuove funzionalità? Vuoi aiutare con la traduzione? Dai un’occhiata al codice sorgente oppure al tracker degli errori.

Vuoi vedere i tuoi progressi?Segui il contatore delle modifiche su OsmCha.

", + "aboutMapcomplete": "

Informazioni

Con MapComplete puoi arricchire OpenStreetMap con informazioni su un singolo argomento. Rispondi a poche domande e in pochi minuti i tuoi contributi saranno disponibili a tutto il mondo! L’utente gestore del tema definisce gli elementi, le domande e le lingue per quel tema.

Scopri altro

MapComplete propone sempre un passo in più per imparare qualcosa di nuovo su OpenStreetMap.

  • Quando viene incorporato in un sito web, il collegamento dell’iframe punta a MapComplete a tutto schermo
  • La versione a tutto schermo fornisce informazioni su OpenStreetMap
  • La visualizzazione non necessita di alcun accesso ma per modificare occorre aver effettuato l’accesso su OSM.
  • Se non hai effettuato l’accesso, ti verrà richiesto di farlo
  • Dopo aver risposto ad una sola domanda potrai aggiungere dei nuovi punti alla mappa
  • Dopo qualche momento verranno mostrate le etichette effettive, in seguito i collegamenti alla wiki


Hai trovato un errore? Vuoi richiedere nuove funzionalità? Vuoi aiutare con la traduzione? Dai un’occhiata al codice sorgente oppure al tracker degli errori.

Vuoi vedere i tuoi progressi?Segui il contatore delle modifiche su OsmCha.

", "add": { "addNew": "Aggiungi {category} qua", "addNewMapLabel": "Aggiungi nuovo elemento", "confirmButton": "Aggiungi una {category} qua.
La tua aggiunta è visibile a chiunque
", - "confirmIntro": "

Aggiungere un {title} qua?

Il punto che hai creato qua sarà visibile da chiunque. Per favore, aggiungi sulla mappa solo oggetti realmente esistenti. Molte applicazioni usano questi dati.", + "confirmIntro": "

Aggiungere un {title}?

L'elemento che hai creato qui sarà visibile da chiunque. Per favore, aggiungi sulla mappa solo oggetti realmente esistenti. Molte applicazioni usano questi dati.", "disableFilters": "Disabilita tutti i filtri", "disableFiltersExplanation": "Alcuni oggetti potrebbero essere nascosti da un filtro", - "hasBeenImported": "Questo punto è stato già importato", + "hasBeenImported": "Questo elemento è stato già importato", "intro": "Hai cliccato in un punto dove non ci sono ancora dei dati.
", - "layerNotEnabled": "Il livello {layer} non è abilitato. Abilita questo livello per aggiungere un punto", + "layerNotEnabled": "Il livello {layer} non è abilitato. Abilita questo livello per aggiungere un elemento", "openLayerControl": "Apri il pannello di controllo dei livelli", - "pleaseLogin": "Accedi per aggiungere un punto", + "pleaseLogin": "Accedi per aggiungere un nuovo elemento", "presetInfo": "Il nuovo PDI avrà {tags}", - "stillLoading": "Caricamento dei dati ancora in corso. Attendi un po’ prima di aggiungere un nuovo punto.", - "title": "Aggiungi un nuovo punto?", + "stillLoading": "Caricamento dei dati ancora in corso. Attendi un po’ prima di aggiungere un nuovo elemento.", + "title": "Aggiungi un nuovo elemento?", "warnVisibleForEveryone": "La tua aggiunta sarà visibile a tutti", - "zoomInFurther": "Ingrandisci la mappa per aggiungere un punto.", - "zoomInMore": "Ingrandisci ancora per importare questo oggetto" + "zoomInFurther": "Ingrandisci di più per aggiungere un elemento.", + "zoomInMore": "Ingrandisci ancora per importare questo oggetto", + "import": { + "howToTest": "Per testare, aggiungere test=true o backend=osm-test all'URL. Il set di modifiche verrà stampato nella console. Si prega di aprire una PR per ufficializzare questo argomento per abilitare effettivamente il pulsante di importazione.", + "zoomInMore": "Ingrandisci di più per importare questo elemento", + "wrongType": "Questo elemento non è un nodo o una via e non può essere importato", + "officialThemesOnly": "Il pulsante di importazione è disabilitato per gli argomenti non ufficiali per evitare incidenti", + "hasBeenImported": "Questo oggetto è stato importato", + "importTags": "L'elemento riceverà {tags}", + "wrongTypeToConflate": "Questo elemento non è un nodo o una via e non può essere aggiunto" + }, + "importTags": "L'elemento riceverà {tags}" }, "attribution": { "attributionContent": "

Tutti i dati sono forniti da OpenStreetMap, riutilizzabili liberamente con Open Database License

", @@ -79,17 +89,17 @@ "downloadAsPdf": "Scarica un PDF della mappa corrente", "downloadAsPdfHelper": "Ideale per stampare la mappa corrente", "downloadCSV": "Scarica i dati visibili come CSV", - "downloadCSVHelper": "Compatibile con LibreOffice Calc, Excel, etc.", - "downloadGeoJsonHelper": "Compatibile con QGIS, ArcGIS, ESRI, etc.", + "downloadCSVHelper": "Compatibile con LibreOffice Calc, Excel, …", + "downloadGeoJsonHelper": "Compatibile con QGIS, ArcGIS, ESRI, …", "downloadGeojson": "Scarica i dati visibili come GeoJSON", "exporting": "Esportazione in corso…", "includeMetaData": "Includi metadati (ultimo utente, valori calcolati, etc.)", - "licenseInfo": "

Informativa sul copyright

I dati forniti sono disponibili con licenza ODbL. Il riutilizzo di tali dati è libero per qualsiasi scopo ma
  • è richiesta l’attribuzione © OpenStreetMap contributors
  • qualsiasi modifica di questi data deve essere rilasciata con la stessa licenza
Per ulteriori dettagli si prega di leggere l’informativa completa sul copyright", + "licenseInfo": "

Informativa sul copyright

I dati forniti sono disponibili con licenza ODbL. Il riutilizzo di tali dati è libero per qualsiasi scopo ma
  • è richiesta l’attribuzione © OpenStreetMap contributors
  • qualsiasi modifica di questi data deve essere rilasciata con la stessa licenza
Per ulteriori dettagli si prega di leggere l’informativa completa sul copyright.", "noDataLoaded": "Nessun dato è stato ancora caricato. Lo scaricamento sarà disponibile a breve", "title": "Scarica i dati visibili" }, "example": "Esempio", - "fewChangesBefore": "Rispondi ad alcune domande di punti esistenti prima di aggiungere un nuovo punto.", + "fewChangesBefore": "Rispondi ad alcune domande di elementi esistenti prima di aggiungere un nuovo elemento.", "getStartedLogin": "Accedi con OpenStreetMap per iniziare", "getStartedNewAccount": " oppure crea un nuovo account", "goToInbox": "Apri posta in arrivo", @@ -150,7 +160,7 @@ "websiteIs": "Sito web: {website}", "websiteOf": "Qual è il sito web di {category}?" }, - "readYourMessages": "Leggi tutti i tuoi messaggi OpenStreetMap prima di aggiungere un nuovo punto.", + "readYourMessages": "Leggi tutti i tuoi messaggi OpenStreetMap prima di aggiungere un nuovo elemento.", "returnToTheMap": "Ritorna alla mappa", "save": "Salva", "search": { From 22d79b0dc2ccb093109204f92266409c4cbc877b Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 10:51:14 +0200 Subject: [PATCH 69/82] Housekeeping... --- Docs/BuiltinIndex.md | 23 + Docs/BuiltinLayers.md | 20 +- Docs/BuiltinQuestions.md | 15 + Docs/Layers/address.md | 10 +- Docs/Layers/all_streets.md | 14 +- Docs/Layers/ambulancestation.md | 10 +- Docs/Layers/artwork.md | 26 +- Docs/Layers/barrier.md | 26 +- Docs/Layers/bench.md | 36 +- Docs/Layers/bench_at_pt.md | 8 +- Docs/Layers/bicycle_library.md | 18 +- Docs/Layers/bicycle_rental.md | 48 +- Docs/Layers/bicycle_rental_non_docking.md | 52 +- Docs/Layers/bicycle_tube_vending_machine.md | 32 +- Docs/Layers/bike_cafe.md | 14 +- Docs/Layers/bike_cleaning.md | 14 +- Docs/Layers/bike_parking.md | 42 +- Docs/Layers/bike_repair_station.md | 58 +- Docs/Layers/bike_shop.md | 96 +- Docs/Layers/bike_themed_object.md | 8 +- Docs/Layers/binocular.md | 4 +- Docs/Layers/birdhide.md | 22 +- Docs/Layers/cafe_pub.md | 56 +- Docs/Layers/caravansites.md | 40 +- Docs/Layers/charging_station.md | 316 ++--- Docs/Layers/charging_station_ebikes.md | 320 +++--- Docs/Layers/climbing.md | 32 +- Docs/Layers/climbing_area.md | 24 +- Docs/Layers/climbing_club.md | 6 +- Docs/Layers/climbing_gym.md | 32 +- Docs/Layers/climbing_opportunity.md | 6 +- Docs/Layers/climbing_route.md | 6 +- Docs/Layers/cluster_style.md | 2 + Docs/Layers/crab_address.md | 2 +- Docs/Layers/crossings.md | 42 +- .../cultural_places_without_etymology.md | 2 +- Docs/Layers/cycleways_and_roads.md | 176 +-- Docs/Layers/defibrillator.md | 40 +- Docs/Layers/doctors.md | 16 +- Docs/Layers/dogfoodb.md | 132 ++- Docs/Layers/dogpark.md | 12 +- Docs/Layers/dogshop.md | 348 +++--- Docs/Layers/drinking_water.md | 12 +- Docs/Layers/dumpstations.md | 34 +- ...ducation_institutions_without_etymology.md | 2 +- Docs/Layers/elevator.md | 149 +++ Docs/Layers/entrance.md | 73 +- Docs/Layers/etymology.md | 2 +- Docs/Layers/extinguisher.md | 6 +- Docs/Layers/facadegardens.md | 28 +- Docs/Layers/fietsstraat.md | 14 +- Docs/Layers/fire_station.md | 12 +- Docs/Layers/food.md | 128 ++- Docs/Layers/friture.md | 132 ++- Docs/Layers/ghost_bike.md | 4 +- Docs/Layers/governments.md | 155 +++ Docs/Layers/grass_in_parks.md | 2 + Docs/Layers/hackerspace.md | 38 +- ...lth_and_social_places_without_etymology.md | 2 +- Docs/Layers/hospital.md | 12 +- Docs/Layers/hydrant.md | 24 +- Docs/Layers/id_presets.md | 626 +++++----- Docs/Layers/indoors.md | 67 ++ Docs/Layers/information_board.md | 2 + Docs/Layers/kerbs.md | 16 +- Docs/Layers/kindergarten_childcare.md | 10 +- Docs/Layers/lit_streets.md | 14 +- Docs/Layers/map.md | 14 +- Docs/Layers/maxspeed.md | 4 +- Docs/Layers/named_streets.md | 2 +- Docs/Layers/nature_reserve.md | 36 +- Docs/Layers/observation_tower.md | 34 +- Docs/Layers/parking.md | 26 +- .../parks_and_forests_without_etymology.md | 2 +- Docs/Layers/pedestrian_path.md | 2 +- Docs/Layers/pharmacy.md | 31 +- Docs/Layers/picnic_table.md | 8 +- Docs/Layers/play_forest.md | 10 +- Docs/Layers/playground.md | 46 +- Docs/Layers/postboxes.md | 2 + Docs/Layers/postoffices.md | 4 +- Docs/Layers/public_bookcase.md | 24 +- Docs/Layers/rainbow_crossing_high_zoom.md | 12 +- Docs/Layers/rainbow_crossings.md | 8 +- Docs/Layers/reception_desk.md | 99 ++ Docs/Layers/recycling.md | 66 +- Docs/Layers/school.md | 1018 +++++++++-------- Docs/Layers/shelter.md | 14 +- Docs/Layers/shops.md | 344 +++--- Docs/Layers/slow_roads.md | 34 +- Docs/Layers/sport_pitch.md | 44 +- Docs/Layers/sport_places_without_etymology.md | 2 +- Docs/Layers/street_lamps.md | 62 +- Docs/Layers/streets_without_etymology.md | 2 +- Docs/Layers/surveillance_camera.md | 44 +- Docs/Layers/tertiary_education.md | 24 +- Docs/Layers/toekomstige_fietsstraat.md | 14 +- Docs/Layers/toilet.md | 79 +- .../toursistic_places_without_etymology.md | 2 +- Docs/Layers/trail.md | 22 +- Docs/Layers/transit_stops.md | 50 +- Docs/Layers/tree_node.md | 42 +- Docs/Layers/veterinary.md | 6 +- Docs/Layers/viewpoint.md | 2 + Docs/Layers/village_green.md | 2 + Docs/Layers/walls_and_buildings.md | 4 +- Docs/Layers/waste_basket.md | 22 +- Docs/Layers/waste_disposal.md | 12 +- Docs/Layers/watermill.md | 18 +- Docs/Layers/windturbine.md | 2 + Docs/TagInfo/mapcomplete_cyclofix.json | 12 + Docs/TagInfo/mapcomplete_entrances.json | 9 + Docs/TagInfo/mapcomplete_governments.json | 63 + Docs/TagInfo/mapcomplete_healthcare.json | 60 +- Docs/TagInfo/mapcomplete_indoors.json | 55 + Docs/TagInfo/mapcomplete_nature.json | 4 + Docs/TagInfo/mapcomplete_personal.json | 175 ++- Docs/TagInfo/mapcomplete_shops.json | 4 + Docs/TagInfo/mapcomplete_toilets.json | 4 + assets/contributors.json | 20 +- assets/layers/cafe_pub/cafe_pub.json | 2 +- .../charging_station/charging_station.json | 1 + assets/layers/doctors/doctors.json | 60 +- assets/layers/elevator/elevator.json | 2 +- assets/layers/food/food.json | 6 +- assets/layers/hospital/hospital.json | 17 +- assets/layers/id_presets/id_presets.json | 2 +- .../kindergarten_childcare.json | 9 +- assets/layers/maxspeed/maxspeed.json | 3 +- assets/layers/parking/parking.json | 57 +- assets/layers/pharmacy/pharmacy.json | 22 +- .../rainbow_crossings/rainbow_crossings.json | 27 +- assets/layers/school/school.json | 3 +- assets/layers/shelter/shelter.json | 24 +- assets/layers/shops/shops.json | 24 +- .../tertiary_education.json | 2 +- .../layers/transit_routes/transit_routes.json | 54 +- .../layers/transit_stops/transit_stops.json | 99 +- .../walls_and_buildings.json | 5 +- assets/tagRenderings/questions.json | 1 - assets/themes/bicyclelib/bicyclelib.json | 6 +- assets/themes/campersite/campersite.json | 69 +- assets/themes/climbing/climbing.json | 3 +- .../themes/cycle_highways/cycle_highways.json | 3 +- assets/themes/cycle_infra/cycle_infra.json | 6 +- assets/themes/cyclenodes/cyclenodes.json | 12 +- assets/themes/cyclestreets/cyclestreets.json | 6 +- .../themes/drinking_water/drinking_water.json | 3 +- assets/themes/education/education.json | 6 +- assets/themes/etymology/etymology.json | 21 +- assets/themes/governments/governments.json | 36 +- assets/themes/healthcare/healthcare.json | 8 +- assets/themes/onwheels/onwheels.json | 22 +- .../rainbow_crossings/rainbow_crossings.json | 6 +- assets/themes/sidewalks/sidewalks.json | 2 +- assets/themes/transit/transit.json | 6 +- .../walls_and_buildings.json | 7 +- assets/translators.json | 34 +- langs/it.json | 28 +- langs/layers/ca.json | 72 +- langs/layers/da.json | 9 - langs/layers/de.json | 727 ++++++------ langs/layers/en.json | 189 ++- langs/layers/es.json | 9 - langs/layers/fr.json | 9 - langs/layers/gl.json | 9 - langs/layers/id.json | 7 - langs/layers/it.json | 9 - langs/layers/nl.json | 171 +-- langs/layers/pt.json | 9 - langs/layers/pt_BR.json | 9 - langs/layers/ru.json | 9 - langs/shared-questions/en.json | 11 + langs/themes/ca.json | 106 +- langs/themes/de.json | 40 +- langs/themes/en.json | 8 + langs/themes/fr.json | 34 +- langs/themes/nl.json | 6 +- 178 files changed, 5023 insertions(+), 3595 deletions(-) create mode 100644 Docs/Layers/elevator.md create mode 100644 Docs/Layers/governments.md create mode 100644 Docs/Layers/indoors.md create mode 100644 Docs/Layers/reception_desk.md create mode 100644 Docs/TagInfo/mapcomplete_governments.json create mode 100644 Docs/TagInfo/mapcomplete_indoors.json diff --git a/Docs/BuiltinIndex.md b/Docs/BuiltinIndex.md index 3b4f3e478b..4862e9248e 100644 --- a/Docs/BuiltinIndex.md +++ b/Docs/BuiltinIndex.md @@ -34,6 +34,7 @@ + [climbing.sportclimbing](#climbingsportclimbing) + [climbing.max_bolts](#climbingmax_bolts) + [all_tags](#all_tags) + + [induction-loop](#induction-loop) + [questions](#questions) + [export_as_gpx](#export_as_gpx) + [export_as_geojson](#export_as_geojson) @@ -86,13 +87,16 @@ - doctors - dogpark - drinking_water + - elevator - entrance - extinguisher - fire_station - food - ghost_bike + - governments - grass_in_parks - hydrant + - indoors - information_board - map - nature_reserve @@ -104,6 +108,7 @@ - playground - public_bookcase - rainbow_crossings + - reception_desk - recycling - shops - slow_roads @@ -131,12 +136,14 @@ - bicycle_library - bicycle_rental + - bike_shop - bike_themed_object - cafe_pub - climbing_club - climbing_gym - doctors - food + - governments - hackerspace - hospital - kindergarten_childcare @@ -161,12 +168,14 @@ - bicycle_library - bicycle_rental + - bike_shop - bike_themed_object - cafe_pub - climbing_club - climbing_gym - doctors - food + - governments - hackerspace - hospital - kindergarten_childcare @@ -188,12 +197,14 @@ - bicycle_library - bicycle_rental + - bike_shop - bike_themed_object - cafe_pub - climbing_club - climbing_gym - doctors - food + - governments - hackerspace - hospital - kindergarten_childcare @@ -475,6 +486,18 @@ +### induction-loop + + + + + + - elevator + - reception_desk + + + + ### questions diff --git a/Docs/BuiltinLayers.md b/Docs/BuiltinLayers.md index 20382a5c23..b4bc759eb7 100644 --- a/Docs/BuiltinLayers.md +++ b/Docs/BuiltinLayers.md @@ -108,7 +108,7 @@ Meta layer showing the current location of the user. Add this to your theme and - This layer is shown at zoomlevel **0** and higher - **This layer is included automatically in every theme. This layer might contain no points** - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` @@ -151,7 +151,7 @@ Meta layer which contains the previous locations of the user as single points. T - This layer is shown at zoomlevel **0** and higher - **This layer is included automatically in every theme. This layer might contain no points** - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` @@ -195,7 +195,7 @@ Meta layer showing the home location of the user. The home location can be set i - This layer is shown at zoomlevel **0** and higher - **This layer is included automatically in every theme. This layer might contain no points** - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` @@ -279,6 +279,8 @@ This tagrendering has no question and is thus read-only +Shows a button to export this feature as GPX. Especially useful for route relations + This tagrendering has no question and is thus read-only @@ -289,6 +291,8 @@ This tagrendering has no question and is thus read-only +Shows a button to export this feature as geojson. Especially useful for debugging or using this in other programs + This tagrendering has no question and is thus read-only @@ -299,6 +303,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only @@ -371,7 +377,7 @@ This layer shows notes on OpenStreetMap. Having this layer in your theme will tr - This layer is shown at zoomlevel **10** and higher - - This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}` + - This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}` @@ -525,7 +531,7 @@ This layer visualizes directions - This layer is shown at zoomlevel **16** and higher - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. @@ -803,12 +809,14 @@ The following layers are included in MapComplete: - [doctors](./Layers/doctors.md) - [dogpark](./Layers/dogpark.md) - [drinking_water](./Layers/drinking_water.md) + - [elevator](./Layers/elevator.md) - [entrance](./Layers/entrance.md) - [etymology](./Layers/etymology.md) - [extinguisher](./Layers/extinguisher.md) - [fire_station](./Layers/fire_station.md) - [food](./Layers/food.md) - [ghost_bike](./Layers/ghost_bike.md) + - [governments](./Layers/governments.md) - [gps_location](./Layers/gps_location.md) - [gps_location_history](./Layers/gps_location_history.md) - [gps_track](./Layers/gps_track.md) @@ -819,6 +827,7 @@ The following layers are included in MapComplete: - [hydrant](./Layers/hydrant.md) - [id_presets](./Layers/id_presets.md) - [import_candidate](./Layers/import_candidate.md) + - [indoors](./Layers/indoors.md) - [information_board](./Layers/information_board.md) - [kerbs](./Layers/kerbs.md) - [kindergarten_childcare](./Layers/kindergarten_childcare.md) @@ -838,6 +847,7 @@ The following layers are included in MapComplete: - [playground](./Layers/playground.md) - [public_bookcase](./Layers/public_bookcase.md) - [rainbow_crossings](./Layers/rainbow_crossings.md) + - [reception_desk](./Layers/reception_desk.md) - [recycling](./Layers/recycling.md) - [school](./Layers/school.md) - [shelter](./Layers/shelter.md) diff --git a/Docs/BuiltinQuestions.md b/Docs/BuiltinQuestions.md index 95ba3a4913..64b78f1b19 100644 --- a/Docs/BuiltinQuestions.md +++ b/Docs/BuiltinQuestions.md @@ -34,6 +34,7 @@ The following items can be easily reused in your layers + [all_tags](#all_tags) + [level](#level) + [smoking](#smoking) + + [induction-loop](#induction-loop) + [default](#default) + [defaults](#defaults) + [isOpen](#isopen) @@ -358,6 +359,20 @@ Is smoking allowed at {title()}? +### induction-loop + + + +Does this place have an audio induction loop for people with reduced hearing? + + + + - This place has an audio induction loop + - This place does not has an audio induction loop + + + + ### default diff --git a/Docs/Layers/address.md b/Docs/Layers/address.md index 9bb758194b..20f6a72d07 100644 --- a/Docs/Layers/address.md +++ b/Docs/Layers/address.md @@ -70,7 +70,7 @@ This is rendered with The house number is {addr:housenumber} - - This building has no house number corresponds with nohousenumber=yes + - This building has no house number corresponds with `nohousenumber=yes` @@ -89,9 +89,9 @@ This is rendered with This address is in street {addr:street} - - Located in {_closest_street:0:name} corresponds with addr:street= - - Located in {_closest_street:1:name} corresponds with addr:street= - - Located in {_closest_street:2:name} corresponds with addr:street= + - Located in {_closest_street:0:name} corresponds with `addr:street=` + - Located in {_closest_street:1:name} corresponds with `addr:street=` + - Located in {_closest_street:2:name} corresponds with `addr:street=` @@ -110,7 +110,7 @@ This is rendered with Fixme description{fixme} - - No fixme - write something here to explain complicated cases corresponds with + - No fixme - write something here to explain complicated cases corresponds with `` This document is autogenerated from [assets/layers/address/address.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/address/address.json) \ No newline at end of file diff --git a/Docs/Layers/all_streets.md b/Docs/Layers/all_streets.md index ae5e25bf95..8c9fc9f65d 100644 --- a/Docs/Layers/all_streets.md +++ b/Docs/Layers/all_streets.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -86,10 +88,10 @@ The question is Is the street {name} a cyclestreet? - - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no - - This street is a cyclestreet corresponds with cyclestreet=yes - - This street will become a cyclstreet soon corresponds with proposed:cyclestreet=yes - - This street is not a cyclestreet corresponds with + - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no` + - This street is a cyclestreet corresponds with `cyclestreet=yes` + - This street will become a cyclstreet soon corresponds with `proposed:cyclestreet=yes` + - This street is not a cyclestreet corresponds with `` @@ -114,6 +116,8 @@ Only visible if `proposed:cyclestreet=yes` is shown +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -124,6 +128,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/ambulancestation.md b/Docs/Layers/ambulancestation.md index d383d0882f..0060a30cab 100644 --- a/Docs/Layers/ambulancestation.md +++ b/Docs/Layers/ambulancestation.md @@ -144,10 +144,10 @@ This is rendered with The operator is a(n) {operator:type} entity. - - The station is operated by the government. corresponds with operator:type=government - - The station is operated by a community-based, or informal organization. corresponds with operator:type=community - - The station is operated by a formal group of volunteers. corresponds with operator:type=ngo - - The station is privately operated. corresponds with operator:type=private + - The station is operated by the government. corresponds with `operator:type=government` + - The station is operated by a community-based, or informal organization. corresponds with `operator:type=community` + - The station is operated by a formal group of volunteers. corresponds with `operator:type=ngo` + - The station is privately operated. corresponds with `operator:type=private` @@ -156,6 +156,8 @@ This is rendered with The operator is a(n) {operator:type} entity. +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/artwork.md b/Docs/Layers/artwork.md index 419f01994b..7e2bc046bd 100644 --- a/Docs/Layers/artwork.md +++ b/Docs/Layers/artwork.md @@ -72,6 +72,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -92,18 +94,18 @@ This is rendered with This is a {artwork_type} - - Architecture corresponds with artwork_type=architecture - - Mural corresponds with artwork_type=mural - - Painting corresponds with artwork_type=painting - - Sculpture corresponds with artwork_type=sculpture - - Statue corresponds with artwork_type=statue - - Bust corresponds with artwork_type=bust - - Stone corresponds with artwork_type=stone - - Installation corresponds with artwork_type=installation - - Graffiti corresponds with artwork_type=graffiti - - Relief corresponds with artwork_type=relief - - Azulejo (Spanish decorative tilework) corresponds with artwork_type=azulejo - - Tilework corresponds with artwork_type=tilework + - Architecture corresponds with `artwork_type=architecture` + - Mural corresponds with `artwork_type=mural` + - Painting corresponds with `artwork_type=painting` + - Sculpture corresponds with `artwork_type=sculpture` + - Statue corresponds with `artwork_type=statue` + - Bust corresponds with `artwork_type=bust` + - Stone corresponds with `artwork_type=stone` + - Installation corresponds with `artwork_type=installation` + - Graffiti corresponds with `artwork_type=graffiti` + - Relief corresponds with `artwork_type=relief` + - Azulejo (Spanish decorative tilework) corresponds with `artwork_type=azulejo` + - Tilework corresponds with `artwork_type=tilework` diff --git a/Docs/Layers/barrier.md b/Docs/Layers/barrier.md index fe1e4ac42c..2cf66e2623 100644 --- a/Docs/Layers/barrier.md +++ b/Docs/Layers/barrier.md @@ -84,8 +84,8 @@ The question is Can a bicycle go past this barrier? - - A cyclist can go past this. corresponds with bicycle=yes - - A cyclist can not go past this. corresponds with bicycle=no + - A cyclist can go past this. corresponds with `bicycle=yes` + - A cyclist can not go past this. corresponds with `bicycle=no` @@ -100,8 +100,8 @@ This tagrendering has no question and is thus read-only - - This is a single bollard in the road corresponds with barrier=bollard - - This is a cycle barrier slowing down cyclists corresponds with barrier=cycle_barrier + - This is a single bollard in the road corresponds with `barrier=bollard` + - This is a cycle barrier slowing down cyclists corresponds with `barrier=cycle_barrier` @@ -116,11 +116,11 @@ The question is What kind of bollard is this? - - Removable bollard corresponds with bollard=removable - - Fixed bollard corresponds with bollard=fixed - - Bollard that can be folded down corresponds with bollard=foldable - - Flexible bollard, usually plastic corresponds with bollard=flexible - - Rising bollard corresponds with bollard=rising + - Removable bollard corresponds with `bollard=removable` + - Fixed bollard corresponds with `bollard=fixed` + - Bollard that can be folded down corresponds with `bollard=foldable` + - Flexible bollard, usually plastic corresponds with `bollard=flexible` + - Rising bollard corresponds with `bollard=rising` Only visible if `barrier=bollard` is shown @@ -137,10 +137,10 @@ The question is What kind of cycling barrier is this? - - Single, just two barriers with a space inbetween corresponds with cycle_barrier=single - - Double, two barriers behind each other corresponds with cycle_barrier=double - - Triple, three barriers behind each other corresponds with cycle_barrier=triple - - Squeeze gate, gap is smaller at top, than at the bottom corresponds with cycle_barrier=squeeze + - Single, just two barriers with a space inbetween corresponds with `cycle_barrier=single` + - Double, two barriers behind each other corresponds with `cycle_barrier=double` + - Triple, three barriers behind each other corresponds with `cycle_barrier=triple` + - Squeeze gate, gap is smaller at top, than at the bottom corresponds with `cycle_barrier=squeeze` Only visible if `barrier=cycle_barrier` is shown diff --git a/Docs/Layers/bench.md b/Docs/Layers/bench.md index 3a62857c7b..113ba22792 100644 --- a/Docs/Layers/bench.md +++ b/Docs/Layers/bench.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -91,8 +93,8 @@ The question is Does this bench have a backrest? - - Backrest: Yes corresponds with backrest=yes - - Backrest: No corresponds with backrest=no + - Backrest: Yes corresponds with `backrest=yes` + - Backrest: No corresponds with `backrest=no` @@ -125,12 +127,12 @@ This is rendered with Material: {material} - - Material: wood corresponds with material=wood - - Material: metal corresponds with material=metal - - Material: stone corresponds with material=stone - - Material: concrete corresponds with material=concrete - - Material: plastic corresponds with material=plastic - - Material: steel corresponds with material=steel + - Material: wood corresponds with `material=wood` + - Material: metal corresponds with `material=metal` + - Material: stone corresponds with `material=stone` + - Material: concrete corresponds with `material=concrete` + - Material: plastic corresponds with `material=plastic` + - Material: steel corresponds with `material=steel` @@ -163,14 +165,14 @@ This is rendered with Colour: {colour} - - Colour: brown corresponds with colour=brown - - Colour: green corresponds with colour=green - - Colour: gray corresponds with colour=gray - - Colour: white corresponds with colour=white - - Colour: red corresponds with colour=red - - Colour: black corresponds with colour=black - - Colour: blue corresponds with colour=blue - - Colour: yellow corresponds with colour=yellow + - Colour: brown corresponds with `colour=brown` + - Colour: green corresponds with `colour=green` + - Colour: gray corresponds with `colour=gray` + - Colour: white corresponds with `colour=white` + - Colour: red corresponds with `colour=red` + - Colour: black corresponds with `colour=black` + - Colour: blue corresponds with `colour=blue` + - Colour: yellow corresponds with `colour=yellow` @@ -189,7 +191,7 @@ This is rendered with This bench was last surveyed on {survey:date} - - Surveyed today! corresponds with survey:date= + - Surveyed today! corresponds with `survey:date=` This document is autogenerated from [assets/layers/bench/bench.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench/bench.json) \ No newline at end of file diff --git a/Docs/Layers/bench_at_pt.md b/Docs/Layers/bench_at_pt.md index 23f2d11823..fbccd0888e 100644 --- a/Docs/Layers/bench_at_pt.md +++ b/Docs/Layers/bench_at_pt.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -100,9 +102,9 @@ The question is What kind of bench is this? - - There is a normal, sit-down bench here corresponds with bench=yes - - Stand up bench corresponds with bench=stand_up_bench - - There is no bench here corresponds with bench=no + - There is a normal, sit-down bench here corresponds with `bench=yes` + - Stand up bench corresponds with `bench=stand_up_bench` + - There is no bench here corresponds with `bench=no` This document is autogenerated from [assets/layers/bench_at_pt/bench_at_pt.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench_at_pt/bench_at_pt.json) \ No newline at end of file diff --git a/Docs/Layers/bicycle_library.md b/Docs/Layers/bicycle_library.md index 2f23f81223..0e010270c1 100644 --- a/Docs/Layers/bicycle_library.md +++ b/Docs/Layers/bicycle_library.md @@ -77,6 +77,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -111,7 +113,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -131,7 +133,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -151,7 +153,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -185,8 +187,8 @@ This is rendered with Lending a bicycle costs {charge} - - Lending a bicycle is free corresponds with fee=no - - Lending a bicycle costs €20/year and €20 warranty corresponds with fee=yes&charge=€20warranty + €20/year + - Lending a bicycle is free corresponds with `fee=no` + - Lending a bicycle costs €20/year and €20 warranty corresponds with `fee=yes&charge=€20warranty + €20/year` @@ -201,9 +203,9 @@ The question is Who can loan bicycles here? - - Bikes for children available corresponds with bicycle_library:for=child - - Bikes for adult available corresponds with bicycle_library:for=adult - - Bikes for disabled persons available corresponds with bicycle_library:for=disabled + - Bikes for children available corresponds with `bicycle_library:for=child` + - Bikes for adult available corresponds with `bicycle_library:for=adult` + - Bikes for disabled persons available corresponds with `bicycle_library:for=disabled` diff --git a/Docs/Layers/bicycle_rental.md b/Docs/Layers/bicycle_rental.md index c7a1699618..3f55881213 100644 --- a/Docs/Layers/bicycle_rental.md +++ b/Docs/Layers/bicycle_rental.md @@ -81,6 +81,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -97,12 +99,12 @@ The question is What kind of bicycle rental is this? - - This is a shop whose main focus is bicycle rental corresponds with shop=rental&bicycle_rental=shop - - This is a rental buisiness which rents out various objects and/or vehicles. It rents out bicycles too, but this is not the main focus corresponds with shop=rental - - This is a shop which sells or repairs bicycles, but also rents out bicycles corresponds with service:bicycle:rental=yes&shop=bicycle - - This is an automated docking station, where a bicycle is mechanically locked into a structure corresponds with bicycle_rental=docking_station - - A machine is present which dispenses and accepts keys, eventually after authentication and/or payment. The bicycles are parked nearby corresponds with bicycle_rental=key_dispensing_machine - - This is a dropoff point, e.g. a reserved parking to place the bicycles which clearly marked as being for the rental service only corresponds with bicycle_rental=dropoff_point + - This is a shop whose main focus is bicycle rental corresponds with `shop=rental&bicycle_rental=shop` + - This is a rental buisiness which rents out various objects and/or vehicles. It rents out bicycles too, but this is not the main focus corresponds with `shop=rental` + - This is a shop which sells or repairs bicycles, but also rents out bicycles corresponds with `service:bicycle:rental=yes&shop=bicycle` + - This is an automated docking station, where a bicycle is mechanically locked into a structure corresponds with `bicycle_rental=docking_station` + - A machine is present which dispenses and accepts keys, eventually after authentication and/or payment. The bicycles are parked nearby corresponds with `bicycle_rental=key_dispensing_machine` + - This is a dropoff point, e.g. a reserved parking to place the bicycles which clearly marked as being for the rental service only corresponds with `bicycle_rental=dropoff_point` Only visible if `amenity=bicycle_rental` is shown @@ -123,7 +125,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -143,7 +145,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -163,7 +165,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -195,9 +197,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -215,13 +217,13 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no - - Payment is done using a dedicated app corresponds with payment:app=yes + - Payment is done using a dedicated app corresponds with `payment:app=yes` - Unselecting this answer will add payment:app=no - - Payment is done using a membership card corresponds with payment:membership_card=yes + - Payment is done using a membership card corresponds with `payment:membership_card=yes` - Unselecting this answer will add payment:membership_card=no @@ -241,14 +243,14 @@ This is rendered with {rental} is rented here - - Normal city bikes can be rented here corresponds with rental=city_bike - - Electrical bikes can be rented here corresponds with rental=ebike - - BMX bikes can be rented here corresponds with rental=bmx - - Mountainbikes can be rented here corresponds with rental=mtb - - Bikes for children can be rented here corresponds with rental=kid_bike - - Tandem bicycles can be rented here corresponds with rental=tandem - - Race bicycles can be rented here corresponds with rental=racebike - - Bike helmets can be rented here corresponds with rental=bike_helmet + - Normal city bikes can be rented here corresponds with `rental=city_bike` + - Electrical bikes can be rented here corresponds with `rental=ebike` + - BMX bikes can be rented here corresponds with `rental=bmx` + - Mountainbikes can be rented here corresponds with `rental=mtb` + - Bikes for children can be rented here corresponds with `rental=kid_bike` + - Tandem bicycles can be rented here corresponds with `rental=tandem` + - Race bicycles can be rented here corresponds with `rental=racebike` + - Bike helmets can be rented here corresponds with `rental=bike_helmet` This tagrendering has labels `bicycle_rental` diff --git a/Docs/Layers/bicycle_rental_non_docking.md b/Docs/Layers/bicycle_rental_non_docking.md index 2eaf5e9c25..0cc8669c92 100644 --- a/Docs/Layers/bicycle_rental_non_docking.md +++ b/Docs/Layers/bicycle_rental_non_docking.md @@ -80,6 +80,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -96,12 +98,12 @@ The question is What kind of bicycle rental is this? - - This is a shop whose main focus is bicycle rental corresponds with shop=rental&bicycle_rental=shop - - This is a rental buisiness which rents out various objects and/or vehicles. It rents out bicycles too, but this is not the main focus corresponds with shop=rental - - This is a shop which sells or repairs bicycles, but also rents out bicycles corresponds with service:bicycle:rental=yes&shop=bicycle - - This is an automated docking station, where a bicycle is mechanically locked into a structure corresponds with bicycle_rental=docking_station - - A machine is present which dispenses and accepts keys, eventually after authentication and/or payment. The bicycles are parked nearby corresponds with bicycle_rental=key_dispensing_machine - - This is a dropoff point, e.g. a reserved parking to place the bicycles which clearly marked as being for the rental service only corresponds with bicycle_rental=dropoff_point + - This is a shop whose main focus is bicycle rental corresponds with `shop=rental&bicycle_rental=shop` + - This is a rental buisiness which rents out various objects and/or vehicles. It rents out bicycles too, but this is not the main focus corresponds with `shop=rental` + - This is a shop which sells or repairs bicycles, but also rents out bicycles corresponds with `service:bicycle:rental=yes&shop=bicycle` + - This is an automated docking station, where a bicycle is mechanically locked into a structure corresponds with `bicycle_rental=docking_station` + - A machine is present which dispenses and accepts keys, eventually after authentication and/or payment. The bicycles are parked nearby corresponds with `bicycle_rental=key_dispensing_machine` + - This is a dropoff point, e.g. a reserved parking to place the bicycles which clearly marked as being for the rental service only corresponds with `bicycle_rental=dropoff_point` Only visible if `amenity=bicycle_rental` is shown @@ -122,7 +124,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -142,7 +144,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -162,7 +164,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -194,9 +196,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -214,13 +216,13 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no - - Payment is done using a dedicated app corresponds with payment:app=yes + - Payment is done using a dedicated app corresponds with `payment:app=yes` - Unselecting this answer will add payment:app=no - - Payment is done using a membership card corresponds with payment:membership_card=yes + - Payment is done using a membership card corresponds with `payment:membership_card=yes` - Unselecting this answer will add payment:membership_card=no @@ -240,14 +242,14 @@ This is rendered with {rental} is rented here - - Normal city bikes can be rented here corresponds with rental=city_bike - - Electrical bikes can be rented here corresponds with rental=ebike - - BMX bikes can be rented here corresponds with rental=bmx - - Mountainbikes can be rented here corresponds with rental=mtb - - Bikes for children can be rented here corresponds with rental=kid_bike - - Tandem bicycles can be rented here corresponds with rental=tandem - - Race bicycles can be rented here corresponds with rental=racebike - - Bike helmets can be rented here corresponds with rental=bike_helmet + - Normal city bikes can be rented here corresponds with `rental=city_bike` + - Electrical bikes can be rented here corresponds with `rental=ebike` + - BMX bikes can be rented here corresponds with `rental=bmx` + - Mountainbikes can be rented here corresponds with `rental=mtb` + - Bikes for children can be rented here corresponds with `rental=kid_bike` + - Tandem bicycles can be rented here corresponds with `rental=tandem` + - Race bicycles can be rented here corresponds with `rental=racebike` + - Bike helmets can be rented here corresponds with `rental=bike_helmet` This tagrendering has labels `bicycle_rental` @@ -384,6 +386,8 @@ This tagrendering has labels `bicycle_rental` +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -394,6 +398,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/bicycle_tube_vending_machine.md b/Docs/Layers/bicycle_tube_vending_machine.md index c67cc6a790..fb4ac524bd 100644 --- a/Docs/Layers/bicycle_tube_vending_machine.md +++ b/Docs/Layers/bicycle_tube_vending_machine.md @@ -73,6 +73,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -93,9 +95,9 @@ This is rendered with The operational status is {operational_status} - - This vending machine works corresponds with - - This vending machine is broken corresponds with operational_status=broken - - This vending machine is closed corresponds with operational_status=closed + - This vending machine works corresponds with `` + - This vending machine is broken corresponds with `operational_status=broken` + - This vending machine is closed corresponds with `operational_status=closed` @@ -124,11 +126,11 @@ The question is How can one pay at this tube vending machine? - - Payment with coins is possible corresponds with payment:coins=yes + - Payment with coins is possible corresponds with `payment:coins=yes` - Unselecting this answer will add payment:coins=no - - Payment with notes is possible corresponds with payment:notes=yes + - Payment with notes is possible corresponds with `payment:notes=yes` - Unselecting this answer will add payment:notes=no - - Payment with cards is possible corresponds with payment:cards=yes + - Payment with cards is possible corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -148,8 +150,8 @@ This is rendered with {brand} tubes are sold here - - Continental tubes are sold here corresponds with brand=Continental - - Schwalbe tubes are sold here corresponds with brand=Schwalbe + - Continental tubes are sold here corresponds with `brand=Continental` + - Schwalbe tubes are sold here corresponds with `brand=Schwalbe` @@ -168,8 +170,8 @@ This is rendered with This vending machine is maintained by {operator} - - Maintained by Schwalbe corresponds with operator=Schwalbe - - Maintained by Continental corresponds with operator=Continental + - Maintained by Schwalbe corresponds with `operator=Schwalbe` + - Maintained by Continental corresponds with `operator=Continental` @@ -184,15 +186,15 @@ The question is Are other bicycle bicycle accessories sold here? - - Bicycle lights are sold here corresponds with vending:bicycle_light=yes + - Bicycle lights are sold here corresponds with `vending:bicycle_light=yes` - Unselecting this answer will add vending:bicycle_light=no - - Gloves are sold here corresponds with vending:gloves=yes + - Gloves are sold here corresponds with `vending:gloves=yes` - Unselecting this answer will add vending:gloves=no - - Bicycle repair kits are sold here corresponds with vending:bicycle_repair_kit=yes + - Bicycle repair kits are sold here corresponds with `vending:bicycle_repair_kit=yes` - Unselecting this answer will add vending:bicycle_repair_kit=no - - Bicycle pumps are sold here corresponds with vending:bicycle_pump=yes + - Bicycle pumps are sold here corresponds with `vending:bicycle_pump=yes` - Unselecting this answer will add vending:bicycle_pump=no - - Bicycle locks are sold here corresponds with vending:bicycle_lock=yes + - Bicycle locks are sold here corresponds with `vending:bicycle_lock=yes` - Unselecting this answer will add vending:bicycle_lock=no diff --git a/Docs/Layers/bike_cafe.md b/Docs/Layers/bike_cafe.md index c18a9d333a..7ffbe8d440 100644 --- a/Docs/Layers/bike_cafe.md +++ b/Docs/Layers/bike_cafe.md @@ -77,6 +77,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -107,8 +109,8 @@ The question is Does this bike cafe offer a bike pump for use by anyone? - - This bike cafe offers a bike pump for anyone corresponds with service:bicycle:pump=yes - - This bike cafe doesn't offer a bike pump for anyone corresponds with service:bicycle:pump=no + - This bike cafe offers a bike pump for anyone corresponds with `service:bicycle:pump=yes` + - This bike cafe doesn't offer a bike pump for anyone corresponds with `service:bicycle:pump=no` @@ -123,8 +125,8 @@ The question is Are there tools here to repair your own bike? - - This bike cafe offers tools for DIY repair corresponds with service:bicycle:diy=yes - - This bike cafe doesn't offer tools for DIY repair corresponds with service:bicycle:diy=no + - This bike cafe offers tools for DIY repair corresponds with `service:bicycle:diy=yes` + - This bike cafe doesn't offer tools for DIY repair corresponds with `service:bicycle:diy=no` @@ -139,8 +141,8 @@ The question is Does this bike cafe repair bikes? - - This bike cafe repairs bikes corresponds with service:bicycle:repair=yes - - This bike cafe doesn't repair bikes corresponds with service:bicycle:repair=no + - This bike cafe repairs bikes corresponds with `service:bicycle:repair=yes` + - This bike cafe doesn't repair bikes corresponds with `service:bicycle:repair=no` diff --git a/Docs/Layers/bike_cleaning.md b/Docs/Layers/bike_cleaning.md index 944a319766..ef9df21e1a 100644 --- a/Docs/Layers/bike_cleaning.md +++ b/Docs/Layers/bike_cleaning.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -90,10 +92,10 @@ This is rendered with Using the cleaning service costs {service:bicycle:cleanin - - The cleaning service is free to use corresponds with service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge= - - Free to use corresponds with service:bicycle:cleaning:fee=no + - The cleaning service is free to use corresponds with `service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=` + - Free to use corresponds with `service:bicycle:cleaning:fee=no` - This option cannot be chosen as answer - - The cleaning service has a fee, but the amount is not known corresponds with service:bicycle:cleaning:fee=yes&service:bicycle:cleaning:charge= + - The cleaning service has a fee, but the amount is not known corresponds with `service:bicycle:cleaning:fee=yes&service:bicycle:cleaning:charge=` - This option cannot be chosen as answer @@ -113,10 +115,10 @@ This is rendered with Using the cleaning service costs {charge} - - Free to use cleaning service corresponds with fee=no&charge= - - Free to use corresponds with fee=no + - Free to use cleaning service corresponds with `fee=no&charge=` + - Free to use corresponds with `fee=no` - This option cannot be chosen as answer - - The cleaning service has a fee corresponds with fee=yes + - The cleaning service has a fee corresponds with `fee=yes` Only visible if `amenity=bike_wash|amenity=bicycle_wash` is shown diff --git a/Docs/Layers/bike_parking.md b/Docs/Layers/bike_parking.md index 08a42bfaab..2b99d63bed 100644 --- a/Docs/Layers/bike_parking.md +++ b/Docs/Layers/bike_parking.md @@ -76,6 +76,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -96,14 +98,14 @@ This is rendered with This is a bicycle parking of the type: {bicycle_parking} - - Staple racks corresponds with bicycle_parking=stands - - Wheel rack/loops corresponds with bicycle_parking=wall_loops - - Handlebar holder corresponds with bicycle_parking=handlebar_holder - - Rack corresponds with bicycle_parking=rack - - Two-tiered corresponds with bicycle_parking=two_tier - - Shed corresponds with bicycle_parking=shed - - Bollard corresponds with bicycle_parking=bollard - - An area on the floor which is marked for bicycle parking corresponds with bicycle_parking=floor + - Staple racks corresponds with `bicycle_parking=stands` + - Wheel rack/loops corresponds with `bicycle_parking=wall_loops` + - Handlebar holder corresponds with `bicycle_parking=handlebar_holder` + - Rack corresponds with `bicycle_parking=rack` + - Two-tiered corresponds with `bicycle_parking=two_tier` + - Shed corresponds with `bicycle_parking=shed` + - Bollard corresponds with `bicycle_parking=bollard` + - An area on the floor which is marked for bicycle parking corresponds with `bicycle_parking=floor` @@ -118,10 +120,10 @@ The question is What is the relative location of this bicycle parking? - - Underground parking corresponds with location=underground - - Surface level parking corresponds with location=surface - - Rooftop parking corresponds with location=rooftop - - Surface level parking corresponds with + - Underground parking corresponds with `location=underground` + - Surface level parking corresponds with `location=surface` + - Rooftop parking corresponds with `location=rooftop` + - Surface level parking corresponds with `` - This option cannot be chosen as answer @@ -137,8 +139,8 @@ The question is Is this parking covered? Also select "covered" for indoor parki - - This parking is covered (it has a roof) corresponds with covered=yes - - This parking is not covered corresponds with covered=no + - This parking is covered (it has a roof) corresponds with `covered=yes` + - This parking is not covered corresponds with `covered=no` @@ -171,9 +173,9 @@ This is rendered with {access} - - Publicly accessible corresponds with access=yes - - Access is primarily for visitors to a business corresponds with access=customers - - Access is limited to members of a school, company or organisation corresponds with access=private + - Publicly accessible corresponds with `access=yes` + - Access is primarily for visitors to a business corresponds with `access=customers` + - Access is limited to members of a school, company or organisation corresponds with `access=private` @@ -188,9 +190,9 @@ The question is Does this bicycle parking have spots for cargo bikes? - - This parking has room for cargo bikes corresponds with cargo_bike=yes - - This parking has designated (official) spots for cargo bikes. corresponds with cargo_bike=designated - - You're not allowed to park cargo bikes corresponds with cargo_bike=no + - This parking has room for cargo bikes corresponds with `cargo_bike=yes` + - This parking has designated (official) spots for cargo bikes. corresponds with `cargo_bike=designated` + - You're not allowed to park cargo bikes corresponds with `cargo_bike=no` diff --git a/Docs/Layers/bike_repair_station.md b/Docs/Layers/bike_repair_station.md index d06f83a328..a66b855f86 100644 --- a/Docs/Layers/bike_repair_station.md +++ b/Docs/Layers/bike_repair_station.md @@ -81,6 +81,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -97,9 +99,9 @@ The question is Which services are available at this location? - - There is only a pump present corresponds with service:bicycle:tools=no&service:bicycle:pump=yes - - There are only tools (screwdrivers, pliers, …) present corresponds with service:bicycle:tools=yes&service:bicycle:pump=no - - There are both tools and a pump present corresponds with service:bicycle:tools=yes&service:bicycle:pump=yes + - There is only a pump present corresponds with `service:bicycle:tools=no&service:bicycle:pump=yes` + - There are only tools (screwdrivers, pliers, …) present corresponds with `service:bicycle:tools=yes&service:bicycle:pump=no` + - There are both tools and a pump present corresponds with `service:bicycle:tools=yes&service:bicycle:pump=yes` @@ -114,8 +116,8 @@ The question is Is the bike pump still operational? - - The bike pump is broken corresponds with service:bicycle:pump:operational_status=broken - - The bike pump is operational corresponds with service:bicycle:pump:operational_status=operational + - The bike pump is broken corresponds with `service:bicycle:pump:operational_status=broken` + - The bike pump is operational corresponds with `service:bicycle:pump:operational_status=operational` Only visible if `service:bicycle:pump=yes` is shown @@ -136,7 +138,7 @@ This is rendered with {opening_hours_table()} - - Always open corresponds with opening_hours=24/7 + - Always open corresponds with `opening_hours=24/7` @@ -151,12 +153,12 @@ The question is Who is allowed to use this repair station? - - Publicly accessible corresponds with access=yes - - Publicly accessible corresponds with access=public + - Publicly accessible corresponds with `access=yes` + - Publicly accessible corresponds with `access=public` - This option cannot be chosen as answer - - Only for customers corresponds with access=customers - - Not accessible to the general public corresponds with access=private - - Not accessible to the general public corresponds with access=no + - Only for customers corresponds with `access=customers` + - Not accessible to the general public corresponds with `access=private` + - Not accessible to the general public corresponds with `access=no` - This option cannot be chosen as answer @@ -220,8 +222,8 @@ The question is Does this bike repair station have a special tool to repair you - - There is a chain tool corresponds with service:bicycle:chain_tool=yes - - There is no chain tool corresponds with service:bicycle:chain_tool=no + - There is a chain tool corresponds with `service:bicycle:chain_tool=yes` + - There is no chain tool corresponds with `service:bicycle:chain_tool=no` Only visible if `service:bicycle:tools=yes` is shown @@ -238,8 +240,8 @@ The question is Does this bike station have a hook to hang your bike on or a st - - There is a hook or stand corresponds with service:bicycle:stand=yes - - There is no hook or stand corresponds with service:bicycle:stand=no + - There is a hook or stand corresponds with `service:bicycle:stand=yes` + - There is no hook or stand corresponds with `service:bicycle:stand=no` Only visible if `service:bicycle:tools=yes` is shown @@ -272,9 +274,9 @@ This is rendered with This pump supports the following valves: {valves} - - Sclaverand/Presta (narrow-width bike tires) corresponds with valves=sclaverand - - Dunlop corresponds with valves=dunlop - - Schrader (cars and mountainbikes) corresponds with valves=schrader + - Sclaverand/Presta (narrow-width bike tires) corresponds with `valves=sclaverand` + - Dunlop corresponds with `valves=dunlop` + - Schrader (cars and mountainbikes) corresponds with `valves=schrader` @@ -289,8 +291,8 @@ The question is Is this an electric bike pump? - - Manual pump corresponds with manual=yes - - Electrical pump corresponds with manual=no + - Manual pump corresponds with `manual=yes` + - Electrical pump corresponds with `manual=no` Only visible if `service:bicycle:pump=yes` is shown @@ -307,9 +309,9 @@ The question is Does the pump have a pressure indicator or manometer? - - There is a manometer corresponds with manometer=yes - - There is no manometer corresponds with manometer=no - - There is manometer but it is broken corresponds with manometer=broken + - There is a manometer corresponds with `manometer=yes` + - There is no manometer corresponds with `manometer=no` + - There is manometer but it is broken corresponds with `manometer=broken` Only visible if `service:bicycle:pump=yes` is shown @@ -330,13 +332,13 @@ This is rendered with Located on the {level}th floor - - Located underground corresponds with location=underground + - Located underground corresponds with `location=underground` - This option cannot be chosen as answer - - Located on the ground floor corresponds with level=0 - - Located on the ground floor corresponds with + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` - This option cannot be chosen as answer - - Located on the first floor corresponds with level=1 - - Located on the first basement level corresponds with level=-1 + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` This document is autogenerated from [assets/layers/bike_repair_station/bike_repair_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_repair_station/bike_repair_station.json) \ No newline at end of file diff --git a/Docs/Layers/bike_shop.md b/Docs/Layers/bike_shop.md index dc4ff20e99..8b8272b1ec 100644 --- a/Docs/Layers/bike_shop.md +++ b/Docs/Layers/bike_shop.md @@ -92,6 +92,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -108,7 +110,7 @@ This tagrendering has no question and is thus read-only - - This business focuses on rental corresponds with shop=rental + - This business focuses on rental corresponds with `shop=rental` Only visible if `shop~^..*$&shop!~^bicycle$&shop!~^sports$` is shown @@ -129,11 +131,11 @@ This is rendered with This bicycle shop is called {name} -### bike_shop-website +### website -The question is What is the website of {name}? +The question is What is the website of {title()}? This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website) @@ -143,11 +145,17 @@ This is rendered with {website} -### bike_shop-phone + - {contact:website} corresponds with `contact:website~^..*$` + - This option cannot be chosen as answer -The question is What is the phone number of {name}? + +### phone + + + +The question is What is the phone number of {title()}? This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) @@ -157,11 +165,17 @@ This is rendered with {phone} -### bike_shop-email + - {contact:phone} corresponds with `contact:phone~^..*$` + - This option cannot be chosen as answer -The question is What is the email address of {name}? + +### email + + + +The question is What is the email address of {title()}? This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) @@ -171,6 +185,12 @@ This is rendered with {email} + - {contact:email} corresponds with `contact:email~^..*$` + - This option cannot be chosen as answer + + + + ### opening_hours @@ -209,8 +229,8 @@ The question is Does this shop sell bikes? - - This shop sells bikes corresponds with service:bicycle:retail=yes - - This shop doesn't sell bikes corresponds with service:bicycle:retail=no + - This shop sells bikes corresponds with `service:bicycle:retail=yes` + - This shop doesn't sell bikes corresponds with `service:bicycle:retail=no` @@ -225,10 +245,10 @@ The question is Does this shop repair bikes? - - This shop repairs bikes corresponds with service:bicycle:repair=yes - - This shop doesn't repair bikes corresponds with service:bicycle:repair=no - - This shop only repairs bikes bought here corresponds with service:bicycle:repair=only_sold - - This shop only repairs bikes of a certain brand corresponds with service:bicycle:repair=brand + - This shop repairs bikes corresponds with `service:bicycle:repair=yes` + - This shop doesn't repair bikes corresponds with `service:bicycle:repair=no` + - This shop only repairs bikes bought here corresponds with `service:bicycle:repair=only_sold` + - This shop only repairs bikes of a certain brand corresponds with `service:bicycle:repair=brand` @@ -243,8 +263,8 @@ The question is Does this shop rent out bikes? - - This shop rents out bikes corresponds with service:bicycle:rental=yes - - This shop doesn't rent out bikes corresponds with service:bicycle:rental=no + - This shop rents out bikes corresponds with `service:bicycle:rental=yes` + - This shop doesn't rent out bikes corresponds with `service:bicycle:rental=no` @@ -263,14 +283,14 @@ This is rendered with {rental} is rented here - - Normal city bikes can be rented here corresponds with rental=city_bike - - Electrical bikes can be rented here corresponds with rental=ebike - - BMX bikes can be rented here corresponds with rental=bmx - - Mountainbikes can be rented here corresponds with rental=mtb - - Bikes for children can be rented here corresponds with rental=kid_bike - - Tandem bicycles can be rented here corresponds with rental=tandem - - Race bicycles can be rented here corresponds with rental=racebike - - Bike helmets can be rented here corresponds with rental=bike_helmet + - Normal city bikes can be rented here corresponds with `rental=city_bike` + - Electrical bikes can be rented here corresponds with `rental=ebike` + - BMX bikes can be rented here corresponds with `rental=bmx` + - Mountainbikes can be rented here corresponds with `rental=mtb` + - Bikes for children can be rented here corresponds with `rental=kid_bike` + - Tandem bicycles can be rented here corresponds with `rental=tandem` + - Race bicycles can be rented here corresponds with `rental=racebike` + - Bike helmets can be rented here corresponds with `rental=bike_helmet` Only visible if `amenity=bicycle_rental|bicycle_rental~^..*$|service:bicycle:rental=yes|rental~^.*bicycle.*$` is shown @@ -415,9 +435,9 @@ The question is Does this shop sell second-hand bikes? - - This shop sells second-hand bikes corresponds with service:bicycle:second_hand=yes - - This shop doesn't sell second-hand bikes corresponds with service:bicycle:second_hand=no - - This shop only sells second-hand bikes corresponds with service:bicycle:second_hand=only + - This shop sells second-hand bikes corresponds with `service:bicycle:second_hand=yes` + - This shop doesn't sell second-hand bikes corresponds with `service:bicycle:second_hand=no` + - This shop only sells second-hand bikes corresponds with `service:bicycle:second_hand=only` @@ -432,9 +452,9 @@ The question is Does this shop offer a bike pump for use by anyone? - - This shop offers a bike pump for anyone corresponds with service:bicycle:pump=yes - - This shop doesn't offer a bike pump for anyone corresponds with service:bicycle:pump=no - - There is bicycle pump, it is shown as a separate point corresponds with service:bicycle:pump=separate + - This shop offers a bike pump for anyone corresponds with `service:bicycle:pump=yes` + - This shop doesn't offer a bike pump for anyone corresponds with `service:bicycle:pump=no` + - There is bicycle pump, it is shown as a separate point corresponds with `service:bicycle:pump=separate` @@ -449,9 +469,9 @@ The question is Are there tools here to repair your own bike? - - This shop offers tools for DIY repair corresponds with service:bicycle:diy=yes - - This shop doesn't offer tools for DIY repair corresponds with service:bicycle:diy=no - - Tools for DIY repair are only available if you bought/hire the bike in the shop corresponds with service:bicycle:diy=only_sold + - This shop offers tools for DIY repair corresponds with `service:bicycle:diy=yes` + - This shop doesn't offer tools for DIY repair corresponds with `service:bicycle:diy=no` + - Tools for DIY repair are only available if you bought/hire the bike in the shop corresponds with `service:bicycle:diy=only_sold` @@ -466,9 +486,9 @@ The question is Are bicycles washed here? - - This shop cleans bicycles corresponds with service:bicycle:cleaning=yes - - This shop has an installation where one can clean bicycles themselves corresponds with service:bicycle:cleaning=diy - - This shop doesn't offer bicycle cleaning corresponds with service:bicycle:cleaning=no + - This shop cleans bicycles corresponds with `service:bicycle:cleaning=yes` + - This shop has an installation where one can clean bicycles themselves corresponds with `service:bicycle:cleaning=diy` + - This shop doesn't offer bicycle cleaning corresponds with `service:bicycle:cleaning=no` @@ -487,10 +507,10 @@ This is rendered with Using the cleaning service costs {service:bicycle:cleanin - - The cleaning service is free to use corresponds with service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge= - - Free to use corresponds with service:bicycle:cleaning:fee=no + - The cleaning service is free to use corresponds with `service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=` + - Free to use corresponds with `service:bicycle:cleaning:fee=no` - This option cannot be chosen as answer - - The cleaning service has a fee, but the amount is not known corresponds with service:bicycle:cleaning:fee=yes&service:bicycle:cleaning:charge= + - The cleaning service has a fee, but the amount is not known corresponds with `service:bicycle:cleaning:fee=yes&service:bicycle:cleaning:charge=` - This option cannot be chosen as answer diff --git a/Docs/Layers/bike_themed_object.md b/Docs/Layers/bike_themed_object.md index 07aa2588a7..8abfee10dd 100644 --- a/Docs/Layers/bike_themed_object.md +++ b/Docs/Layers/bike_themed_object.md @@ -73,6 +73,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -107,7 +109,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -127,7 +129,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -147,7 +149,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/binocular.md b/Docs/Layers/binocular.md index a0940ca2ba..0f0ea605b1 100644 --- a/Docs/Layers/binocular.md +++ b/Docs/Layers/binocular.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -90,7 +92,7 @@ This is rendered with Using these binoculars costs {charge} - - Free to use corresponds with fee=no + - Free to use corresponds with `fee=no` diff --git a/Docs/Layers/birdhide.md b/Docs/Layers/birdhide.md index 621318510c..5be27ad09e 100644 --- a/Docs/Layers/birdhide.md +++ b/Docs/Layers/birdhide.md @@ -71,6 +71,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -87,10 +89,10 @@ The question is Is this a bird blind or a bird watching shelter? - - Bird blind corresponds with shelter=no - - Bird hide corresponds with amenity=shelter&building=yes&shelter=yes - - Bird tower hide corresponds with building=tower&bird_hide=tower - - Bird hide shelter corresponds with amenity=shelter|building=yes|shelter=yes + - Bird blind corresponds with `shelter=no` + - Bird hide corresponds with `amenity=shelter&building=yes&shelter=yes` + - Bird tower hide corresponds with `building=tower&bird_hide=tower` + - Bird hide shelter corresponds with `amenity=shelter|building=yes|shelter=yes` - This option cannot be chosen as answer @@ -106,10 +108,10 @@ The question is Is this bird hide accessible to wheelchair users? - - There are special provisions for wheelchair users corresponds with wheelchair=designated - - A wheelchair can easily use this birdhide corresponds with wheelchair=yes - - This birdhide is reachable by wheelchair, but it is not easy corresponds with wheelchair=limited - - Not accessible to wheelchair users corresponds with wheelchair=no + - There are special provisions for wheelchair users corresponds with `wheelchair=designated` + - A wheelchair can easily use this birdhide corresponds with `wheelchair=yes` + - This birdhide is reachable by wheelchair, but it is not easy corresponds with `wheelchair=limited` + - Not accessible to wheelchair users corresponds with `wheelchair=no` @@ -128,8 +130,8 @@ This is rendered with Operated by {operator} - - Operated by Natuurpunt corresponds with operator=Natuurpunt - - Operated by the Agency for Nature and Forests corresponds with operator=Agentschap Natuur en Bos + - Operated by Natuurpunt corresponds with `operator=Natuurpunt` + - Operated by the Agency for Nature and Forests corresponds with `operator=Agentschap Natuur en Bos` This document is autogenerated from [assets/layers/birdhide/birdhide.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/birdhide/birdhide.json) \ No newline at end of file diff --git a/Docs/Layers/cafe_pub.md b/Docs/Layers/cafe_pub.md index 3b98fa7d9f..146196a0d4 100644 --- a/Docs/Layers/cafe_pub.md +++ b/Docs/Layers/cafe_pub.md @@ -78,6 +78,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -108,12 +110,12 @@ The question is What kind of cafe is this? - - A pub, mostly for drinking beers in a warm, relaxed interior corresponds with amenity=pub - - A more modern and commercial bar, possibly with a music and light installation corresponds with amenity=bar - - A cafe to drink tea, coffee or an alcoholical bevarage in a quiet environment corresponds with amenity=cafe - - A restuarant where one can get a proper meal corresponds with amenity=restaurant - - An open space where beer is served, typically seen in Germany corresponds with amenity=biergarten - - This is a nightclub or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks corresponds with amenity=nightclub + - A pub, mostly for drinking beers in a warm, relaxed interior corresponds with `amenity=pub` + - A more modern and commercial bar, possibly with a music and light installation corresponds with `amenity=bar` + - A cafe to drink tea, coffee or an alcoholical bevarage in a quiet environment corresponds with `amenity=cafe` + - A restuarant where one can get a proper meal corresponds with `amenity=restaurant` + - An open space where beer is served, typically seen in Germany corresponds with `amenity=biergarten` + - This is a nightclub or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks corresponds with `amenity=nightclub` @@ -146,7 +148,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -166,7 +168,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -186,7 +188,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -202,9 +204,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -220,10 +222,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -238,9 +240,9 @@ The question is Is smoking allowed at {title()}? - - Smoking is allowed corresponds with smoking=yes - - Smoking is not allowed corresponds with smoking=no - - Smoking is allowed outside. corresponds with smoking=outside + - Smoking is allowed corresponds with `smoking=yes` + - Smoking is not allowed corresponds with `smoking=no` + - Smoking is allowed outside. corresponds with `smoking=outside` @@ -255,10 +257,10 @@ The question is Does this amenity have electrical outlets, available to custome - - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=yes - - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=limited - - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with service:electricity=ask - - There are a no domestic sockets available to customers seated indoors corresponds with service:electricity=no + - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=yes` + - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=limited` + - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with `service:electricity=ask` + - There are a no domestic sockets available to customers seated indoors corresponds with `service:electricity=no` @@ -273,10 +275,10 @@ The question is Are dogs allowed in this business? - - Dogs are allowed corresponds with dog=yes - - Dogs are not allowed corresponds with dog=no - - Dogs are allowed, but they have to be leashed corresponds with dog=leashed - - Dogs are allowed and can run around freely corresponds with dog=unleashed + - Dogs are allowed corresponds with `dog=yes` + - Dogs are not allowed corresponds with `dog=no` + - Dogs are allowed, but they have to be leashed corresponds with `dog=leashed` + - Dogs are allowed and can run around freely corresponds with `dog=unleashed` @@ -285,6 +287,8 @@ The question is Are dogs allowed in this business? +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/caravansites.md b/Docs/Layers/caravansites.md index 0e0c05e548..7b3a5701dc 100644 --- a/Docs/Layers/caravansites.md +++ b/Docs/Layers/caravansites.md @@ -81,6 +81,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -111,8 +113,8 @@ The question is Does this place charge a fee? - - You need to pay for use corresponds with fee=yes - - Can be used for free corresponds with fee=no + - You need to pay for use corresponds with `fee=yes` + - Can be used for free corresponds with `fee=no` @@ -143,8 +145,8 @@ The question is Does this place have a sanitary dump station? - - This place has a sanitary dump station corresponds with sanitary_dump_station=yes - - This place does not have a sanitary dump station corresponds with sanitary_dump_station=no + - This place has a sanitary dump station corresponds with `sanitary_dump_station=yes` + - This place does not have a sanitary dump station corresponds with `sanitary_dump_station=no` @@ -173,10 +175,10 @@ The question is Does this place provide internet access? - - There is internet access corresponds with internet_access=yes - - There is internet access corresponds with internet_access=wifi|internet_access=wlan + - There is internet access corresponds with `internet_access=yes` + - There is internet access corresponds with `internet_access=wifi|internet_access=wlan` - This option cannot be chosen as answer - - There is no internet access corresponds with internet_access=no + - There is no internet access corresponds with `internet_access=no` @@ -191,8 +193,8 @@ The question is Do you have to pay for the internet access? - - You need to pay extra for internet access corresponds with internet_access:fee=yes - - You do not need to pay extra for internet access corresponds with internet_access:fee=no + - You need to pay extra for internet access corresponds with `internet_access:fee=yes` + - You do not need to pay extra for internet access corresponds with `internet_access:fee=no` Only visible if `internet_access=yes` is shown @@ -209,8 +211,8 @@ The question is Does this place have toilets? - - This place has toilets corresponds with toilets=yes - - This place does not have toilets corresponds with toilets=no + - This place has toilets corresponds with `toilets=yes` + - This place does not have toilets corresponds with `toilets=no` @@ -239,9 +241,9 @@ The question is Does this place offer spots for long term rental? - - There are some spots for long term rental, but you can also stay on a daily basis corresponds with permanent_camping=yes - - There are no permanent guests here corresponds with permanent_camping=no - - It is only possible to stay here if you have a long term contract(this place will disappear from this map if you choose this) corresponds with permanent_camping=only + - There are some spots for long term rental, but you can also stay on a daily basis corresponds with `permanent_camping=yes` + - There are no permanent guests here corresponds with `permanent_camping=no` + - It is only possible to stay here if you have a long term contract(this place will disappear from this map if you choose this) corresponds with `permanent_camping=only` @@ -274,6 +276,8 @@ This tagrendering has no question and is thus read-only +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -304,8 +308,8 @@ The question is Does this place have a power supply? - - This place has a power supply corresponds with power_supply=yes - - This place does not have power supply corresponds with power_supply=no + - This place has a power supply corresponds with `power_supply=yes` + - This place does not have power supply corresponds with `power_supply=no` @@ -314,6 +318,8 @@ The question is Does this place have a power supply? +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -324,6 +330,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/charging_station.md b/Docs/Layers/charging_station.md index 6e714b95e0..153e335c84 100644 --- a/Docs/Layers/charging_station.md +++ b/Docs/Layers/charging_station.md @@ -149,6 +149,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -165,15 +167,15 @@ The question is Which vehicles are allowed to charge here? - - Bicycles can be charged here corresponds with bicycle=yes + - Bicycles can be charged here corresponds with `bicycle=yes` - Unselecting this answer will add bicycle=no - - Cars can be charged here corresponds with motorcar=yes + - Cars can be charged here corresponds with `motorcar=yes` - Unselecting this answer will add motorcar=no - - Scooters can be charged here corresponds with scooter=yes + - Scooters can be charged here corresponds with `scooter=yes` - Unselecting this answer will add scooter=no - - Heavy good vehicles (such as trucks) can be charged here corresponds with hgv=yes + - Heavy good vehicles (such as trucks) can be charged here corresponds with `hgv=yes` - Unselecting this answer will add hgv=no - - Buses can be charged here corresponds with bus=yes + - Buses can be charged here corresponds with `bus=yes` - Unselecting this answer will add bus=no @@ -193,12 +195,12 @@ This is rendered with Access is {access} - - Anyone can use this charging station (payment might be needed) corresponds with access=yes - - Anyone can use this charging station (payment might be needed) corresponds with access=permissive|access=public + - Anyone can use this charging station (payment might be needed) corresponds with `access=yes` + - Anyone can use this charging station (payment might be needed) corresponds with `access=permissive|access=public` - This option cannot be chosen as answer - - Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests corresponds with access=customers - - A key must be requested to access this charging station
E.g. a charging station operated by hotel which is only usable by their guests, which receive a key from the reception to unlock the charging station corresponds with access=key - - Not accessible to the general public (e.g. only accessible to the owners, employees, …) corresponds with access=private + - Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests corresponds with `access=customers` + - A key must be requested to access this charging station
E.g. a charging station operated by hotel which is only usable by their guests, which receive a key from the reception to unlock the charging station corresponds with `access=key` + - Not accessible to the general public (e.g. only accessible to the owners, employees, …) corresponds with `access=private` @@ -227,69 +229,69 @@ The question is Which charging connections are available here? - - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with socket:schuko=1 + - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with `socket:schuko=1` - Unselecting this answer will add - - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with socket:schuko~^..*$&socket:schuko!=1 + - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with `socket:schuko~^..*$&socket:schuko!=1` - This option cannot be chosen as answer - - European wall plug with ground pin (CEE7/4 type E) corresponds with socket:typee=1 + - European wall plug with ground pin (CEE7/4 type E) corresponds with `socket:typee=1` - Unselecting this answer will add - - European wall plug with ground pin (CEE7/4 type E) corresponds with socket:typee~^..*$&socket:typee!=1 + - European wall plug with ground pin (CEE7/4 type E) corresponds with `socket:typee~^..*$&socket:typee!=1` - This option cannot be chosen as answer - - Chademo corresponds with socket:chademo=1 + - Chademo corresponds with `socket:chademo=1` - Unselecting this answer will add - - Chademo corresponds with socket:chademo~^..*$&socket:chademo!=1 + - Chademo corresponds with `socket:chademo~^..*$&socket:chademo!=1` - This option cannot be chosen as answer - - Type 1 with cable (J1772) corresponds with socket:type1_cable=1 + - Type 1 with cable (J1772) corresponds with `socket:type1_cable=1` - Unselecting this answer will add - - Type 1 with cable (J1772) corresponds with socket:type1_cable~^..*$&socket:type1_cable!=1 + - Type 1 with cable (J1772) corresponds with `socket:type1_cable~^..*$&socket:type1_cable!=1` - This option cannot be chosen as answer - - Type 1 without cable (J1772) corresponds with socket:type1=1 + - Type 1 without cable (J1772) corresponds with `socket:type1=1` - Unselecting this answer will add - - Type 1 without cable (J1772) corresponds with socket:type1~^..*$&socket:type1!=1 + - Type 1 without cable (J1772) corresponds with `socket:type1~^..*$&socket:type1!=1` - This option cannot be chosen as answer - - Type 1 CCS (aka Type 1 Combo) corresponds with socket:type1_combo=1 + - Type 1 CCS (aka Type 1 Combo) corresponds with `socket:type1_combo=1` - Unselecting this answer will add - - Type 1 CCS (aka Type 1 Combo) corresponds with socket:type1_combo~^..*$&socket:type1_combo!=1 + - Type 1 CCS (aka Type 1 Combo) corresponds with `socket:type1_combo~^..*$&socket:type1_combo!=1` - This option cannot be chosen as answer - - Tesla Supercharger corresponds with socket:tesla_supercharger=1 + - Tesla Supercharger corresponds with `socket:tesla_supercharger=1` - Unselecting this answer will add - - Tesla Supercharger corresponds with socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=1 + - Tesla Supercharger corresponds with `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=1` - This option cannot be chosen as answer - - Type 2 (mennekes) corresponds with socket:type2=1 + - Type 2 (mennekes) corresponds with `socket:type2=1` - Unselecting this answer will add - - Type 2 (mennekes) corresponds with socket:type2~^..*$&socket:type2!=1 + - Type 2 (mennekes) corresponds with `socket:type2~^..*$&socket:type2!=1` - This option cannot be chosen as answer - - Type 2 CCS (mennekes) corresponds with socket:type2_combo=1 + - Type 2 CCS (mennekes) corresponds with `socket:type2_combo=1` - Unselecting this answer will add - - Type 2 CCS (mennekes) corresponds with socket:type2_combo~^..*$&socket:type2_combo!=1 + - Type 2 CCS (mennekes) corresponds with `socket:type2_combo~^..*$&socket:type2_combo!=1` - This option cannot be chosen as answer - - Type 2 with cable (mennekes) corresponds with socket:type2_cable=1 + - Type 2 with cable (mennekes) corresponds with `socket:type2_cable=1` - Unselecting this answer will add - - Type 2 with cable (mennekes) corresponds with socket:type2_cable~^..*$&socket:type2_cable!=1 + - Type 2 with cable (mennekes) corresponds with `socket:type2_cable~^..*$&socket:type2_cable!=1` - This option cannot be chosen as answer - - Tesla Supercharger CCS (a branded type2_css) corresponds with socket:tesla_supercharger_ccs=1 + - Tesla Supercharger CCS (a branded type2_css) corresponds with `socket:tesla_supercharger_ccs=1` - Unselecting this answer will add - - Tesla Supercharger CCS (a branded type2_css) corresponds with socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=1 + - Tesla Supercharger CCS (a branded type2_css) corresponds with `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=1` - This option cannot be chosen as answer - - Tesla Supercharger (destination) corresponds with socket:tesla_destination=1 + - Tesla Supercharger (destination) corresponds with `socket:tesla_destination=1` - Unselecting this answer will add - - Tesla Supercharger (destination) corresponds with socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country=us + - Tesla Supercharger (destination) corresponds with `socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country=us` - This option cannot be chosen as answer - - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with socket:tesla_destination=1 + - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with `socket:tesla_destination=1` - Unselecting this answer will add - - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country!=us + - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with `socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country!=us` - This option cannot be chosen as answer - - USB to charge phones and small electronics corresponds with socket:USB-A=1 + - USB to charge phones and small electronics corresponds with `socket:USB-A=1` - Unselecting this answer will add - - USB to charge phones and small electronics corresponds with socket:USB-A~^..*$&socket:USB-A!=1 + - USB to charge phones and small electronics corresponds with `socket:USB-A~^..*$&socket:USB-A!=1` - This option cannot be chosen as answer - - Bosch Active Connect with 3 pins and cable corresponds with socket:bosch_3pin=1 + - Bosch Active Connect with 3 pins and cable corresponds with `socket:bosch_3pin=1` - Unselecting this answer will add - - Bosch Active Connect with 3 pins and cable corresponds with socket:bosch_3pin~^..*$&socket:bosch_3pin!=1 + - Bosch Active Connect with 3 pins and cable corresponds with `socket:bosch_3pin~^..*$&socket:bosch_3pin!=1` - This option cannot be chosen as answer - - Bosch Active Connect with 5 pins and cable corresponds with socket:bosch_5pin=1 + - Bosch Active Connect with 5 pins and cable corresponds with `socket:bosch_5pin=1` - Unselecting this answer will add - - Bosch Active Connect with 5 pins and cable corresponds with socket:bosch_5pin~^..*$&socket:bosch_5pin!=1 + - Bosch Active Connect with 5 pins and cable corresponds with `socket:bosch_5pin~^..*$&socket:bosch_5pin!=1` - This option cannot be chosen as answer @@ -565,7 +567,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs 230 volt corresponds with socket:schuko:voltage=230 V + - Schuko wall plug without ground pin (CEE7/4 type F) outputs 230 volt corresponds with `socket:schuko:voltage=230 V` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -588,7 +590,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 16 A corresponds with socket:schuko:current=16 A + - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 16 A corresponds with `socket:schuko:current=16 A` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -611,7 +613,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 3.6 kw A corresponds with socket:schuko:output=3.6 kW + - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 3.6 kw A corresponds with `socket:schuko:output=3.6 kW` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -634,7 +636,7 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs 230 volt corresponds with socket:typee:voltage=230 V + - European wall plug with ground pin (CEE7/4 type E) outputs 230 volt corresponds with `socket:typee:voltage=230 V` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -657,7 +659,7 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs at most 16 A corresponds with socket:typee:current=16 A + - European wall plug with ground pin (CEE7/4 type E) outputs at most 16 A corresponds with `socket:typee:current=16 A` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -680,8 +682,8 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs at most 3 kw A corresponds with socket:typee:output=3 kW - - European wall plug with ground pin (CEE7/4 type E) outputs at most 22 kw A corresponds with socket:typee:output=22 kW + - European wall plug with ground pin (CEE7/4 type E) outputs at most 3 kw A corresponds with `socket:typee:output=3 kW` + - European wall plug with ground pin (CEE7/4 type E) outputs at most 22 kw A corresponds with `socket:typee:output=22 kW` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -704,7 +706,7 @@ This is rendered with
Chademo - - Chademo outputs 500 volt corresponds with socket:chademo:voltage=500 V + - Chademo outputs 500 volt corresponds with `socket:chademo:voltage=500 V` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -727,7 +729,7 @@ This is rendered with
Chademo - - Chademo outputs at most 120 A corresponds with socket:chademo:current=120 A + - Chademo outputs at most 120 A corresponds with `socket:chademo:current=120 A` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -750,7 +752,7 @@ This is rendered with
Chademo - - Chademo outputs at most 50 kw A corresponds with socket:chademo:output=50 kW + - Chademo outputs at most 50 kw A corresponds with `socket:chademo:output=50 kW` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -773,8 +775,8 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs 200 volt corresponds with socket:type1_cable:voltage=200 V - - Type 1 with cable (J1772) outputs 240 volt corresponds with socket:type1_cable:voltage=240 V + - Type 1 with cable (J1772) outputs 200 volt corresponds with `socket:type1_cable:voltage=200 V` + - Type 1 with cable (J1772) outputs 240 volt corresponds with `socket:type1_cable:voltage=240 V` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -797,7 +799,7 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs at most 32 A corresponds with socket:type1_cable:current=32 A + - Type 1 with cable (J1772) outputs at most 32 A corresponds with `socket:type1_cable:current=32 A` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -820,8 +822,8 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs at most 3.7 kw A corresponds with socket:type1_cable:output=3.7 kW - - Type 1 with cable (J1772) outputs at most 7 kw A corresponds with socket:type1_cable:output=7 kW + - Type 1 with cable (J1772) outputs at most 3.7 kw A corresponds with `socket:type1_cable:output=3.7 kW` + - Type 1 with cable (J1772) outputs at most 7 kw A corresponds with `socket:type1_cable:output=7 kW` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -844,8 +846,8 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs 200 volt corresponds with socket:type1:voltage=200 V - - Type 1 without cable (J1772) outputs 240 volt corresponds with socket:type1:voltage=240 V + - Type 1 without cable (J1772) outputs 200 volt corresponds with `socket:type1:voltage=200 V` + - Type 1 without cable (J1772) outputs 240 volt corresponds with `socket:type1:voltage=240 V` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -868,7 +870,7 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs at most 32 A corresponds with socket:type1:current=32 A + - Type 1 without cable (J1772) outputs at most 32 A corresponds with `socket:type1:current=32 A` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -891,10 +893,10 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs at most 3.7 kw A corresponds with socket:type1:output=3.7 kW - - Type 1 without cable (J1772) outputs at most 6.6 kw A corresponds with socket:type1:output=6.6 kW - - Type 1 without cable (J1772) outputs at most 7 kw A corresponds with socket:type1:output=7 kW - - Type 1 without cable (J1772) outputs at most 7.2 kw A corresponds with socket:type1:output=7.2 kW + - Type 1 without cable (J1772) outputs at most 3.7 kw A corresponds with `socket:type1:output=3.7 kW` + - Type 1 without cable (J1772) outputs at most 6.6 kw A corresponds with `socket:type1:output=6.6 kW` + - Type 1 without cable (J1772) outputs at most 7 kw A corresponds with `socket:type1:output=7 kW` + - Type 1 without cable (J1772) outputs at most 7.2 kw A corresponds with `socket:type1:output=7.2 kW` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -917,8 +919,8 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs 400 volt corresponds with socket:type1_combo:voltage=400 V - - Type 1 CCS (aka Type 1 Combo) outputs 1000 volt corresponds with socket:type1_combo:voltage=1000 V + - Type 1 CCS (aka Type 1 Combo) outputs 400 volt corresponds with `socket:type1_combo:voltage=400 V` + - Type 1 CCS (aka Type 1 Combo) outputs 1000 volt corresponds with `socket:type1_combo:voltage=1000 V` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -941,8 +943,8 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs at most 50 A corresponds with socket:type1_combo:current=50 A - - Type 1 CCS (aka Type 1 Combo) outputs at most 125 A corresponds with socket:type1_combo:current=125 A + - Type 1 CCS (aka Type 1 Combo) outputs at most 50 A corresponds with `socket:type1_combo:current=50 A` + - Type 1 CCS (aka Type 1 Combo) outputs at most 125 A corresponds with `socket:type1_combo:current=125 A` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -965,10 +967,10 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs at most 50 kw A corresponds with socket:type1_combo:output=50 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 62.5 kw A corresponds with socket:type1_combo:output=62.5 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 150 kw A corresponds with socket:type1_combo:output=150 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 350 kw A corresponds with socket:type1_combo:output=350 kW + - Type 1 CCS (aka Type 1 Combo) outputs at most 50 kw A corresponds with `socket:type1_combo:output=50 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 62.5 kw A corresponds with `socket:type1_combo:output=62.5 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 150 kw A corresponds with `socket:type1_combo:output=150 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 350 kw A corresponds with `socket:type1_combo:output=350 kW` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -991,7 +993,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs 480 volt corresponds with socket:tesla_supercharger:voltage=480 V + - Tesla Supercharger outputs 480 volt corresponds with `socket:tesla_supercharger:voltage=480 V` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1014,8 +1016,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs at most 125 A corresponds with socket:tesla_supercharger:current=125 A - - Tesla Supercharger outputs at most 350 A corresponds with socket:tesla_supercharger:current=350 A + - Tesla Supercharger outputs at most 125 A corresponds with `socket:tesla_supercharger:current=125 A` + - Tesla Supercharger outputs at most 350 A corresponds with `socket:tesla_supercharger:current=350 A` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1038,9 +1040,9 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs at most 120 kw A corresponds with socket:tesla_supercharger:output=120 kW - - Tesla Supercharger outputs at most 150 kw A corresponds with socket:tesla_supercharger:output=150 kW - - Tesla Supercharger outputs at most 250 kw A corresponds with socket:tesla_supercharger:output=250 kW + - Tesla Supercharger outputs at most 120 kw A corresponds with `socket:tesla_supercharger:output=120 kW` + - Tesla Supercharger outputs at most 150 kw A corresponds with `socket:tesla_supercharger:output=150 kW` + - Tesla Supercharger outputs at most 250 kw A corresponds with `socket:tesla_supercharger:output=250 kW` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1063,8 +1065,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs 230 volt corresponds with socket:type2:voltage=230 V - - Type 2 (mennekes) outputs 400 volt corresponds with socket:type2:voltage=400 V + - Type 2 (mennekes) outputs 230 volt corresponds with `socket:type2:voltage=230 V` + - Type 2 (mennekes) outputs 400 volt corresponds with `socket:type2:voltage=400 V` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1087,8 +1089,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs at most 16 A corresponds with socket:type2:current=16 A - - Type 2 (mennekes) outputs at most 32 A corresponds with socket:type2:current=32 A + - Type 2 (mennekes) outputs at most 16 A corresponds with `socket:type2:current=16 A` + - Type 2 (mennekes) outputs at most 32 A corresponds with `socket:type2:current=32 A` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1111,8 +1113,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs at most 11 kw A corresponds with socket:type2:output=11 kW - - Type 2 (mennekes) outputs at most 22 kw A corresponds with socket:type2:output=22 kW + - Type 2 (mennekes) outputs at most 11 kw A corresponds with `socket:type2:output=11 kW` + - Type 2 (mennekes) outputs at most 22 kw A corresponds with `socket:type2:output=22 kW` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1135,8 +1137,8 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs 500 volt corresponds with socket:type2_combo:voltage=500 V - - Type 2 CCS (mennekes) outputs 920 volt corresponds with socket:type2_combo:voltage=920 V + - Type 2 CCS (mennekes) outputs 500 volt corresponds with `socket:type2_combo:voltage=500 V` + - Type 2 CCS (mennekes) outputs 920 volt corresponds with `socket:type2_combo:voltage=920 V` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1159,8 +1161,8 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs at most 125 A corresponds with socket:type2_combo:current=125 A - - Type 2 CCS (mennekes) outputs at most 350 A corresponds with socket:type2_combo:current=350 A + - Type 2 CCS (mennekes) outputs at most 125 A corresponds with `socket:type2_combo:current=125 A` + - Type 2 CCS (mennekes) outputs at most 350 A corresponds with `socket:type2_combo:current=350 A` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1183,7 +1185,7 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs at most 50 kw A corresponds with socket:type2_combo:output=50 kW + - Type 2 CCS (mennekes) outputs at most 50 kw A corresponds with `socket:type2_combo:output=50 kW` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1206,8 +1208,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs 230 volt corresponds with socket:type2_cable:voltage=230 V - - Type 2 with cable (mennekes) outputs 400 volt corresponds with socket:type2_cable:voltage=400 V + - Type 2 with cable (mennekes) outputs 230 volt corresponds with `socket:type2_cable:voltage=230 V` + - Type 2 with cable (mennekes) outputs 400 volt corresponds with `socket:type2_cable:voltage=400 V` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1230,8 +1232,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs at most 16 A corresponds with socket:type2_cable:current=16 A - - Type 2 with cable (mennekes) outputs at most 32 A corresponds with socket:type2_cable:current=32 A + - Type 2 with cable (mennekes) outputs at most 16 A corresponds with `socket:type2_cable:current=16 A` + - Type 2 with cable (mennekes) outputs at most 32 A corresponds with `socket:type2_cable:current=32 A` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1254,8 +1256,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs at most 11 kw A corresponds with socket:type2_cable:output=11 kW - - Type 2 with cable (mennekes) outputs at most 22 kw A corresponds with socket:type2_cable:output=22 kW + - Type 2 with cable (mennekes) outputs at most 11 kw A corresponds with `socket:type2_cable:output=11 kW` + - Type 2 with cable (mennekes) outputs at most 22 kw A corresponds with `socket:type2_cable:output=22 kW` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1278,8 +1280,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 500 volt corresponds with socket:tesla_supercharger_ccs:voltage=500 V - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 920 volt corresponds with socket:tesla_supercharger_ccs:voltage=920 V + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 500 volt corresponds with `socket:tesla_supercharger_ccs:voltage=500 V` + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 920 volt corresponds with `socket:tesla_supercharger_ccs:voltage=920 V` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1302,8 +1304,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded type2_css) outputs at most 125 A corresponds with socket:tesla_supercharger_ccs:current=125 A - - Tesla Supercharger CCS (a branded type2_css) outputs at most 350 A corresponds with socket:tesla_supercharger_ccs:current=350 A + - Tesla Supercharger CCS (a branded type2_css) outputs at most 125 A corresponds with `socket:tesla_supercharger_ccs:current=125 A` + - Tesla Supercharger CCS (a branded type2_css) outputs at most 350 A corresponds with `socket:tesla_supercharger_ccs:current=350 A` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1326,7 +1328,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs at most 50 kw A corresponds with socket:tesla_supercharger_ccs:output=50 kW + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs at most 50 kw A corresponds with `socket:tesla_supercharger_ccs:output=50 kW` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1349,7 +1351,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs 480 volt corresponds with socket:tesla_destination:voltage=480 V + - Tesla Supercharger (Destination) outputs 480 volt corresponds with `socket:tesla_destination:voltage=480 V` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1372,8 +1374,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs at most 125 A corresponds with socket:tesla_destination:current=125 A - - Tesla Supercharger (Destination) outputs at most 350 A corresponds with socket:tesla_destination:current=350 A + - Tesla Supercharger (Destination) outputs at most 125 A corresponds with `socket:tesla_destination:current=125 A` + - Tesla Supercharger (Destination) outputs at most 350 A corresponds with `socket:tesla_destination:current=350 A` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1396,9 +1398,9 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs at most 120 kw A corresponds with socket:tesla_destination:output=120 kW - - Tesla Supercharger (Destination) outputs at most 150 kw A corresponds with socket:tesla_destination:output=150 kW - - Tesla Supercharger (Destination) outputs at most 250 kw A corresponds with socket:tesla_destination:output=250 kW + - Tesla Supercharger (Destination) outputs at most 120 kw A corresponds with `socket:tesla_destination:output=120 kW` + - Tesla Supercharger (Destination) outputs at most 150 kw A corresponds with `socket:tesla_destination:output=150 kW` + - Tesla Supercharger (Destination) outputs at most 250 kw A corresponds with `socket:tesla_destination:output=250 kW` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1421,8 +1423,8 @@ This is rendered with
Tesla supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 230 volt corresponds with socket:tesla_destination:voltage=230 V - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 400 volt corresponds with socket:tesla_destination:voltage=400 V + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 230 volt corresponds with `socket:tesla_destination:voltage=230 V` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 400 volt corresponds with `socket:tesla_destination:voltage=400 V` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1445,8 +1447,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as tesla) outputs at most 16 A corresponds with socket:tesla_destination:current=16 A - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 32 A corresponds with socket:tesla_destination:current=32 A + - Tesla Supercharger (Destination) (A Type 2 with cable branded as tesla) outputs at most 16 A corresponds with `socket:tesla_destination:current=16 A` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 32 A corresponds with `socket:tesla_destination:current=32 A` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1469,8 +1471,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 11 kw A corresponds with socket:tesla_destination:output=11 kW - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 22 kw A corresponds with socket:tesla_destination:output=22 kW + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 11 kw A corresponds with `socket:tesla_destination:output=11 kW` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 22 kw A corresponds with `socket:tesla_destination:output=22 kW` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1493,7 +1495,7 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs 5 volt corresponds with socket:USB-A:voltage=5 V + - USB to charge phones and small electronics outputs 5 volt corresponds with `socket:USB-A:voltage=5 V` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1516,8 +1518,8 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs at most 1 A corresponds with socket:USB-A:current=1 A - - USB to charge phones and small electronics outputs at most 2 A corresponds with socket:USB-A:current=2 A + - USB to charge phones and small electronics outputs at most 1 A corresponds with `socket:USB-A:current=1 A` + - USB to charge phones and small electronics outputs at most 2 A corresponds with `socket:USB-A:current=2 A` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1540,8 +1542,8 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs at most 5w A corresponds with socket:USB-A:output=5W - - USB to charge phones and small electronics outputs at most 10w A corresponds with socket:USB-A:output=10W + - USB to charge phones and small electronics outputs at most 5w A corresponds with `socket:USB-A:output=5W` + - USB to charge phones and small electronics outputs at most 10w A corresponds with `socket:USB-A:output=10W` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1702,7 +1704,7 @@ This is rendered with {opening_hours_table(opening_hours)} - - 24/7 opened (including holidays) corresponds with opening_hours=24/7 + - 24/7 opened (including holidays) corresponds with `opening_hours=24/7` @@ -1717,12 +1719,12 @@ The question is Does one have to pay to use this charging station? - - Free to use (without authenticating) corresponds with fee=no&authentication:none=yes - - Free to use, but one has to authenticate corresponds with fee=no&authentication:none=no - - Free to use corresponds with fee=no + - Free to use (without authenticating) corresponds with `fee=no&authentication:none=yes` + - Free to use, but one has to authenticate corresponds with `fee=no&authentication:none=no` + - Free to use corresponds with `fee=no` - This option cannot be chosen as answer - - Paid use, but free for customers of the hotel/pub/hospital/… who operates the charging station corresponds with fee=yes&fee:conditional=no @ customers - - Paid use corresponds with fee=yes + - Paid use, but free for customers of the hotel/pub/hospital/… who operates the charging station corresponds with `fee=yes&fee:conditional=no @ customers` + - Paid use corresponds with `fee=yes` @@ -1753,13 +1755,13 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no - - Payment is done using a dedicated app corresponds with payment:app=yes + - Payment is done using a dedicated app corresponds with `payment:app=yes` - Unselecting this answer will add payment:app=no - - Payment is done using a membership card corresponds with payment:membership_card=yes + - Payment is done using a membership card corresponds with `payment:membership_card=yes` - Unselecting this answer will add payment:membership_card=no @@ -1777,21 +1779,21 @@ The question is What kind of authentication is available at the charging statio - - Authentication by a membership card corresponds with authentication:membership_card=yes + - Authentication by a membership card corresponds with `authentication:membership_card=yes` - Unselecting this answer will add authentication:membership_card=no - - Authentication by an app corresponds with authentication:app=yes + - Authentication by an app corresponds with `authentication:app=yes` - Unselecting this answer will add authentication:app=no - - Authentication via phone call is available corresponds with authentication:phone_call=yes + - Authentication via phone call is available corresponds with `authentication:phone_call=yes` - Unselecting this answer will add authentication:phone_call=no - - Authentication via SMS is available corresponds with authentication:short_message=yes + - Authentication via SMS is available corresponds with `authentication:short_message=yes` - Unselecting this answer will add authentication:short_message=no - - Authentication via NFC is available corresponds with authentication:nfc=yes + - Authentication via NFC is available corresponds with `authentication:nfc=yes` - Unselecting this answer will add authentication:nfc=no - - Authentication via Money Card is available corresponds with authentication:money_card=yes + - Authentication via Money Card is available corresponds with `authentication:money_card=yes` - Unselecting this answer will add authentication:money_card=no - - Authentication via debit card is available corresponds with authentication:debit_card=yes + - Authentication via debit card is available corresponds with `authentication:debit_card=yes` - Unselecting this answer will add authentication:debit_card=no - - Charging here is (also) possible without authentication corresponds with authentication:none=yes + - Charging here is (also) possible without authentication corresponds with `authentication:none=yes` - Unselecting this answer will add authentication:none=no @@ -1827,7 +1829,7 @@ This is rendered with One can stay at most {canonical(maxstay)} - - No timelimit on leaving your vehicle here corresponds with maxstay=unlimited + - No timelimit on leaving your vehicle here corresponds with `maxstay=unlimited` Only visible if `maxstay~^..*$|motorcar=yes|hgv=yes|bus=yes` is shown @@ -1848,15 +1850,15 @@ This is rendered with Part of the network {network} - - Not part of a bigger network, e.g. because the charging station is maintained by a local business corresponds with no:network=yes - - Not part of a bigger network corresponds with network=none + - Not part of a bigger network, e.g. because the charging station is maintained by a local business corresponds with `no:network=yes` + - Not part of a bigger network corresponds with `network=none` - This option cannot be chosen as answer - - AeroVironment corresponds with network=AeroVironment - - Blink corresponds with network=Blink - - EVgo corresponds with network=EVgo - - Allego corresponds with network=Allego - - Blue Corner corresponds with network=Blue Corner - - Tesla corresponds with network=Tesla + - AeroVironment corresponds with `network=AeroVironment` + - Blink corresponds with `network=Blink` + - EVgo corresponds with `network=EVgo` + - Allego corresponds with `network=Allego` + - Blue Corner corresponds with `network=Blue Corner` + - Tesla corresponds with `network=Tesla` @@ -1875,7 +1877,7 @@ This is rendered with This charging station is operated by {operator} - - Actually, {operator} is the network corresponds with network= + - Actually, {operator} is the network corresponds with `network=` @@ -1936,13 +1938,13 @@ This is rendered with Located on the {level}th floor - - Located underground corresponds with location=underground + - Located underground corresponds with `location=underground` - This option cannot be chosen as answer - - Located on the ground floor corresponds with level=0 - - Located on the ground floor corresponds with + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` - This option cannot be chosen as answer - - Located on the first floor corresponds with level=1 - - Located on the first basement level corresponds with level=-1 + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` @@ -1973,11 +1975,11 @@ The question is Is this charging point in use? - - This charging station works corresponds with amenity=charging_station - - This charging station is broken corresponds with operational_status=broken&amenity=charging_station - - A charging station is planned here corresponds with planned:amenity=charging_station - - A charging station is constructed here corresponds with construction:amenity=charging_station - - This charging station has beed permanently disabled and is not in use anymore but is still visible corresponds with disused:amenity=charging_station + - This charging station works corresponds with `amenity=charging_station` + - This charging station is broken corresponds with `operational_status=broken&amenity=charging_station` + - A charging station is planned here corresponds with `planned:amenity=charging_station` + - A charging station is constructed here corresponds with `construction:amenity=charging_station` + - This charging station has beed permanently disabled and is not in use anymore but is still visible corresponds with `disused:amenity=charging_station` @@ -1992,8 +1994,8 @@ The question is Does one have to pay a parking fee while charging? - - No additional parking cost while charging corresponds with parking:fee=no - - An additional parking fee should be paid while charging corresponds with parking:fee=yes + - No additional parking cost while charging corresponds with `parking:fee=no` + - An additional parking fee should be paid while charging corresponds with `parking:fee=yes` diff --git a/Docs/Layers/charging_station_ebikes.md b/Docs/Layers/charging_station_ebikes.md index 90fc1a563a..0791d31242 100644 --- a/Docs/Layers/charging_station_ebikes.md +++ b/Docs/Layers/charging_station_ebikes.md @@ -148,6 +148,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -164,15 +166,15 @@ The question is Which vehicles are allowed to charge here? - - Bicycles can be charged here corresponds with bicycle=yes + - Bicycles can be charged here corresponds with `bicycle=yes` - Unselecting this answer will add bicycle=no - - Cars can be charged here corresponds with motorcar=yes + - Cars can be charged here corresponds with `motorcar=yes` - Unselecting this answer will add motorcar=no - - Scooters can be charged here corresponds with scooter=yes + - Scooters can be charged here corresponds with `scooter=yes` - Unselecting this answer will add scooter=no - - Heavy good vehicles (such as trucks) can be charged here corresponds with hgv=yes + - Heavy good vehicles (such as trucks) can be charged here corresponds with `hgv=yes` - Unselecting this answer will add hgv=no - - Buses can be charged here corresponds with bus=yes + - Buses can be charged here corresponds with `bus=yes` - Unselecting this answer will add bus=no @@ -192,12 +194,12 @@ This is rendered with Access is {access} - - Anyone can use this charging station (payment might be needed) corresponds with access=yes - - Anyone can use this charging station (payment might be needed) corresponds with access=permissive|access=public + - Anyone can use this charging station (payment might be needed) corresponds with `access=yes` + - Anyone can use this charging station (payment might be needed) corresponds with `access=permissive|access=public` - This option cannot be chosen as answer - - Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests corresponds with access=customers - - A key must be requested to access this charging station
E.g. a charging station operated by hotel which is only usable by their guests, which receive a key from the reception to unlock the charging station corresponds with access=key - - Not accessible to the general public (e.g. only accessible to the owners, employees, …) corresponds with access=private + - Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests corresponds with `access=customers` + - A key must be requested to access this charging station
E.g. a charging station operated by hotel which is only usable by their guests, which receive a key from the reception to unlock the charging station corresponds with `access=key` + - Not accessible to the general public (e.g. only accessible to the owners, employees, …) corresponds with `access=private` @@ -226,69 +228,69 @@ The question is Which charging connections are available here? - - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with socket:schuko=1 + - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with `socket:schuko=1` - Unselecting this answer will add - - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with socket:schuko~^..*$&socket:schuko!=1 + - Schuko wall plug without ground pin (CEE7/4 type F) corresponds with `socket:schuko~^..*$&socket:schuko!=1` - This option cannot be chosen as answer - - European wall plug with ground pin (CEE7/4 type E) corresponds with socket:typee=1 + - European wall plug with ground pin (CEE7/4 type E) corresponds with `socket:typee=1` - Unselecting this answer will add - - European wall plug with ground pin (CEE7/4 type E) corresponds with socket:typee~^..*$&socket:typee!=1 + - European wall plug with ground pin (CEE7/4 type E) corresponds with `socket:typee~^..*$&socket:typee!=1` - This option cannot be chosen as answer - - Chademo corresponds with socket:chademo=1 + - Chademo corresponds with `socket:chademo=1` - Unselecting this answer will add - - Chademo corresponds with socket:chademo~^..*$&socket:chademo!=1 + - Chademo corresponds with `socket:chademo~^..*$&socket:chademo!=1` - This option cannot be chosen as answer - - Type 1 with cable (J1772) corresponds with socket:type1_cable=1 + - Type 1 with cable (J1772) corresponds with `socket:type1_cable=1` - Unselecting this answer will add - - Type 1 with cable (J1772) corresponds with socket:type1_cable~^..*$&socket:type1_cable!=1 + - Type 1 with cable (J1772) corresponds with `socket:type1_cable~^..*$&socket:type1_cable!=1` - This option cannot be chosen as answer - - Type 1 without cable (J1772) corresponds with socket:type1=1 + - Type 1 without cable (J1772) corresponds with `socket:type1=1` - Unselecting this answer will add - - Type 1 without cable (J1772) corresponds with socket:type1~^..*$&socket:type1!=1 + - Type 1 without cable (J1772) corresponds with `socket:type1~^..*$&socket:type1!=1` - This option cannot be chosen as answer - - Type 1 CCS (aka Type 1 Combo) corresponds with socket:type1_combo=1 + - Type 1 CCS (aka Type 1 Combo) corresponds with `socket:type1_combo=1` - Unselecting this answer will add - - Type 1 CCS (aka Type 1 Combo) corresponds with socket:type1_combo~^..*$&socket:type1_combo!=1 + - Type 1 CCS (aka Type 1 Combo) corresponds with `socket:type1_combo~^..*$&socket:type1_combo!=1` - This option cannot be chosen as answer - - Tesla Supercharger corresponds with socket:tesla_supercharger=1 + - Tesla Supercharger corresponds with `socket:tesla_supercharger=1` - Unselecting this answer will add - - Tesla Supercharger corresponds with socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=1 + - Tesla Supercharger corresponds with `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=1` - This option cannot be chosen as answer - - Type 2 (mennekes) corresponds with socket:type2=1 + - Type 2 (mennekes) corresponds with `socket:type2=1` - Unselecting this answer will add - - Type 2 (mennekes) corresponds with socket:type2~^..*$&socket:type2!=1 + - Type 2 (mennekes) corresponds with `socket:type2~^..*$&socket:type2!=1` - This option cannot be chosen as answer - - Type 2 CCS (mennekes) corresponds with socket:type2_combo=1 + - Type 2 CCS (mennekes) corresponds with `socket:type2_combo=1` - Unselecting this answer will add - - Type 2 CCS (mennekes) corresponds with socket:type2_combo~^..*$&socket:type2_combo!=1 + - Type 2 CCS (mennekes) corresponds with `socket:type2_combo~^..*$&socket:type2_combo!=1` - This option cannot be chosen as answer - - Type 2 with cable (mennekes) corresponds with socket:type2_cable=1 + - Type 2 with cable (mennekes) corresponds with `socket:type2_cable=1` - Unselecting this answer will add - - Type 2 with cable (mennekes) corresponds with socket:type2_cable~^..*$&socket:type2_cable!=1 + - Type 2 with cable (mennekes) corresponds with `socket:type2_cable~^..*$&socket:type2_cable!=1` - This option cannot be chosen as answer - - Tesla Supercharger CCS (a branded type2_css) corresponds with socket:tesla_supercharger_ccs=1 + - Tesla Supercharger CCS (a branded type2_css) corresponds with `socket:tesla_supercharger_ccs=1` - Unselecting this answer will add - - Tesla Supercharger CCS (a branded type2_css) corresponds with socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=1 + - Tesla Supercharger CCS (a branded type2_css) corresponds with `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=1` - This option cannot be chosen as answer - - Tesla Supercharger (destination) corresponds with socket:tesla_destination=1 + - Tesla Supercharger (destination) corresponds with `socket:tesla_destination=1` - Unselecting this answer will add - - Tesla Supercharger (destination) corresponds with socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country=us + - Tesla Supercharger (destination) corresponds with `socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country=us` - This option cannot be chosen as answer - - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with socket:tesla_destination=1 + - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with `socket:tesla_destination=1` - Unselecting this answer will add - - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country!=us + - Tesla supercharger (destination) (A Type 2 with cable branded as tesla) corresponds with `socket:tesla_destination~^..*$&socket:tesla_destination!=1&_country!=us` - This option cannot be chosen as answer - - USB to charge phones and small electronics corresponds with socket:USB-A=1 + - USB to charge phones and small electronics corresponds with `socket:USB-A=1` - Unselecting this answer will add - - USB to charge phones and small electronics corresponds with socket:USB-A~^..*$&socket:USB-A!=1 + - USB to charge phones and small electronics corresponds with `socket:USB-A~^..*$&socket:USB-A!=1` - This option cannot be chosen as answer - - Bosch Active Connect with 3 pins and cable corresponds with socket:bosch_3pin=1 + - Bosch Active Connect with 3 pins and cable corresponds with `socket:bosch_3pin=1` - Unselecting this answer will add - - Bosch Active Connect with 3 pins and cable corresponds with socket:bosch_3pin~^..*$&socket:bosch_3pin!=1 + - Bosch Active Connect with 3 pins and cable corresponds with `socket:bosch_3pin~^..*$&socket:bosch_3pin!=1` - This option cannot be chosen as answer - - Bosch Active Connect with 5 pins and cable corresponds with socket:bosch_5pin=1 + - Bosch Active Connect with 5 pins and cable corresponds with `socket:bosch_5pin=1` - Unselecting this answer will add - - Bosch Active Connect with 5 pins and cable corresponds with socket:bosch_5pin~^..*$&socket:bosch_5pin!=1 + - Bosch Active Connect with 5 pins and cable corresponds with `socket:bosch_5pin~^..*$&socket:bosch_5pin!=1` - This option cannot be chosen as answer @@ -564,7 +566,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs 230 volt corresponds with socket:schuko:voltage=230 V + - Schuko wall plug without ground pin (CEE7/4 type F) outputs 230 volt corresponds with `socket:schuko:voltage=230 V` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -587,7 +589,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 16 A corresponds with socket:schuko:current=16 A + - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 16 A corresponds with `socket:schuko:current=16 A` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -610,7 +612,7 @@ This is rendered with
Schuko wall plug - - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 3.6 kw A corresponds with socket:schuko:output=3.6 kW + - Schuko wall plug without ground pin (CEE7/4 type F) outputs at most 3.6 kw A corresponds with `socket:schuko:output=3.6 kW` Only visible if `socket:schuko~^..*$&socket:schuko!=0` is shown @@ -633,7 +635,7 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs 230 volt corresponds with socket:typee:voltage=230 V + - European wall plug with ground pin (CEE7/4 type E) outputs 230 volt corresponds with `socket:typee:voltage=230 V` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -656,7 +658,7 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs at most 16 A corresponds with socket:typee:current=16 A + - European wall plug with ground pin (CEE7/4 type E) outputs at most 16 A corresponds with `socket:typee:current=16 A` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -679,8 +681,8 @@ This is rendered with
European wall pl - - European wall plug with ground pin (CEE7/4 type E) outputs at most 3 kw A corresponds with socket:typee:output=3 kW - - European wall plug with ground pin (CEE7/4 type E) outputs at most 22 kw A corresponds with socket:typee:output=22 kW + - European wall plug with ground pin (CEE7/4 type E) outputs at most 3 kw A corresponds with `socket:typee:output=3 kW` + - European wall plug with ground pin (CEE7/4 type E) outputs at most 22 kw A corresponds with `socket:typee:output=22 kW` Only visible if `socket:typee~^..*$&socket:typee!=0` is shown @@ -703,7 +705,7 @@ This is rendered with
Chademo - - Chademo outputs 500 volt corresponds with socket:chademo:voltage=500 V + - Chademo outputs 500 volt corresponds with `socket:chademo:voltage=500 V` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -726,7 +728,7 @@ This is rendered with
Chademo - - Chademo outputs at most 120 A corresponds with socket:chademo:current=120 A + - Chademo outputs at most 120 A corresponds with `socket:chademo:current=120 A` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -749,7 +751,7 @@ This is rendered with
Chademo - - Chademo outputs at most 50 kw A corresponds with socket:chademo:output=50 kW + - Chademo outputs at most 50 kw A corresponds with `socket:chademo:output=50 kW` Only visible if `socket:chademo~^..*$&socket:chademo!=0` is shown @@ -772,8 +774,8 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs 200 volt corresponds with socket:type1_cable:voltage=200 V - - Type 1 with cable (J1772) outputs 240 volt corresponds with socket:type1_cable:voltage=240 V + - Type 1 with cable (J1772) outputs 200 volt corresponds with `socket:type1_cable:voltage=200 V` + - Type 1 with cable (J1772) outputs 240 volt corresponds with `socket:type1_cable:voltage=240 V` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -796,7 +798,7 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs at most 32 A corresponds with socket:type1_cable:current=32 A + - Type 1 with cable (J1772) outputs at most 32 A corresponds with `socket:type1_cable:current=32 A` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -819,8 +821,8 @@ This is rendered with
Type 1 with cabl - - Type 1 with cable (J1772) outputs at most 3.7 kw A corresponds with socket:type1_cable:output=3.7 kW - - Type 1 with cable (J1772) outputs at most 7 kw A corresponds with socket:type1_cable:output=7 kW + - Type 1 with cable (J1772) outputs at most 3.7 kw A corresponds with `socket:type1_cable:output=3.7 kW` + - Type 1 with cable (J1772) outputs at most 7 kw A corresponds with `socket:type1_cable:output=7 kW` Only visible if `socket:type1_cable~^..*$&socket:type1_cable!=0` is shown @@ -843,8 +845,8 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs 200 volt corresponds with socket:type1:voltage=200 V - - Type 1 without cable (J1772) outputs 240 volt corresponds with socket:type1:voltage=240 V + - Type 1 without cable (J1772) outputs 200 volt corresponds with `socket:type1:voltage=200 V` + - Type 1 without cable (J1772) outputs 240 volt corresponds with `socket:type1:voltage=240 V` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -867,7 +869,7 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs at most 32 A corresponds with socket:type1:current=32 A + - Type 1 without cable (J1772) outputs at most 32 A corresponds with `socket:type1:current=32 A` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -890,10 +892,10 @@ This is rendered with
Type 1 withou - - Type 1 without cable (J1772) outputs at most 3.7 kw A corresponds with socket:type1:output=3.7 kW - - Type 1 without cable (J1772) outputs at most 6.6 kw A corresponds with socket:type1:output=6.6 kW - - Type 1 without cable (J1772) outputs at most 7 kw A corresponds with socket:type1:output=7 kW - - Type 1 without cable (J1772) outputs at most 7.2 kw A corresponds with socket:type1:output=7.2 kW + - Type 1 without cable (J1772) outputs at most 3.7 kw A corresponds with `socket:type1:output=3.7 kW` + - Type 1 without cable (J1772) outputs at most 6.6 kw A corresponds with `socket:type1:output=6.6 kW` + - Type 1 without cable (J1772) outputs at most 7 kw A corresponds with `socket:type1:output=7 kW` + - Type 1 without cable (J1772) outputs at most 7.2 kw A corresponds with `socket:type1:output=7.2 kW` Only visible if `socket:type1~^..*$&socket:type1!=0` is shown @@ -916,8 +918,8 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs 400 volt corresponds with socket:type1_combo:voltage=400 V - - Type 1 CCS (aka Type 1 Combo) outputs 1000 volt corresponds with socket:type1_combo:voltage=1000 V + - Type 1 CCS (aka Type 1 Combo) outputs 400 volt corresponds with `socket:type1_combo:voltage=400 V` + - Type 1 CCS (aka Type 1 Combo) outputs 1000 volt corresponds with `socket:type1_combo:voltage=1000 V` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -940,8 +942,8 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs at most 50 A corresponds with socket:type1_combo:current=50 A - - Type 1 CCS (aka Type 1 Combo) outputs at most 125 A corresponds with socket:type1_combo:current=125 A + - Type 1 CCS (aka Type 1 Combo) outputs at most 50 A corresponds with `socket:type1_combo:current=50 A` + - Type 1 CCS (aka Type 1 Combo) outputs at most 125 A corresponds with `socket:type1_combo:current=125 A` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -964,10 +966,10 @@ This is rendered with
Type 1 CCS ( - - Type 1 CCS (aka Type 1 Combo) outputs at most 50 kw A corresponds with socket:type1_combo:output=50 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 62.5 kw A corresponds with socket:type1_combo:output=62.5 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 150 kw A corresponds with socket:type1_combo:output=150 kW - - Type 1 CCS (aka Type 1 Combo) outputs at most 350 kw A corresponds with socket:type1_combo:output=350 kW + - Type 1 CCS (aka Type 1 Combo) outputs at most 50 kw A corresponds with `socket:type1_combo:output=50 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 62.5 kw A corresponds with `socket:type1_combo:output=62.5 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 150 kw A corresponds with `socket:type1_combo:output=150 kW` + - Type 1 CCS (aka Type 1 Combo) outputs at most 350 kw A corresponds with `socket:type1_combo:output=350 kW` Only visible if `socket:type1_combo~^..*$&socket:type1_combo!=0` is shown @@ -990,7 +992,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs 480 volt corresponds with socket:tesla_supercharger:voltage=480 V + - Tesla Supercharger outputs 480 volt corresponds with `socket:tesla_supercharger:voltage=480 V` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1013,8 +1015,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs at most 125 A corresponds with socket:tesla_supercharger:current=125 A - - Tesla Supercharger outputs at most 350 A corresponds with socket:tesla_supercharger:current=350 A + - Tesla Supercharger outputs at most 125 A corresponds with `socket:tesla_supercharger:current=125 A` + - Tesla Supercharger outputs at most 350 A corresponds with `socket:tesla_supercharger:current=350 A` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1037,9 +1039,9 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger outputs at most 120 kw A corresponds with socket:tesla_supercharger:output=120 kW - - Tesla Supercharger outputs at most 150 kw A corresponds with socket:tesla_supercharger:output=150 kW - - Tesla Supercharger outputs at most 250 kw A corresponds with socket:tesla_supercharger:output=250 kW + - Tesla Supercharger outputs at most 120 kw A corresponds with `socket:tesla_supercharger:output=120 kW` + - Tesla Supercharger outputs at most 150 kw A corresponds with `socket:tesla_supercharger:output=150 kW` + - Tesla Supercharger outputs at most 250 kw A corresponds with `socket:tesla_supercharger:output=250 kW` Only visible if `socket:tesla_supercharger~^..*$&socket:tesla_supercharger!=0` is shown @@ -1062,8 +1064,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs 230 volt corresponds with socket:type2:voltage=230 V - - Type 2 (mennekes) outputs 400 volt corresponds with socket:type2:voltage=400 V + - Type 2 (mennekes) outputs 230 volt corresponds with `socket:type2:voltage=230 V` + - Type 2 (mennekes) outputs 400 volt corresponds with `socket:type2:voltage=400 V` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1086,8 +1088,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs at most 16 A corresponds with socket:type2:current=16 A - - Type 2 (mennekes) outputs at most 32 A corresponds with socket:type2:current=32 A + - Type 2 (mennekes) outputs at most 16 A corresponds with `socket:type2:current=16 A` + - Type 2 (mennekes) outputs at most 32 A corresponds with `socket:type2:current=32 A` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1110,8 +1112,8 @@ This is rendered with
Type 2 (menn - - Type 2 (mennekes) outputs at most 11 kw A corresponds with socket:type2:output=11 kW - - Type 2 (mennekes) outputs at most 22 kw A corresponds with socket:type2:output=22 kW + - Type 2 (mennekes) outputs at most 11 kw A corresponds with `socket:type2:output=11 kW` + - Type 2 (mennekes) outputs at most 22 kw A corresponds with `socket:type2:output=22 kW` Only visible if `socket:type2~^..*$&socket:type2!=0` is shown @@ -1134,8 +1136,8 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs 500 volt corresponds with socket:type2_combo:voltage=500 V - - Type 2 CCS (mennekes) outputs 920 volt corresponds with socket:type2_combo:voltage=920 V + - Type 2 CCS (mennekes) outputs 500 volt corresponds with `socket:type2_combo:voltage=500 V` + - Type 2 CCS (mennekes) outputs 920 volt corresponds with `socket:type2_combo:voltage=920 V` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1158,8 +1160,8 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs at most 125 A corresponds with socket:type2_combo:current=125 A - - Type 2 CCS (mennekes) outputs at most 350 A corresponds with socket:type2_combo:current=350 A + - Type 2 CCS (mennekes) outputs at most 125 A corresponds with `socket:type2_combo:current=125 A` + - Type 2 CCS (mennekes) outputs at most 350 A corresponds with `socket:type2_combo:current=350 A` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1182,7 +1184,7 @@ This is rendered with
Type 2 CCS ( - - Type 2 CCS (mennekes) outputs at most 50 kw A corresponds with socket:type2_combo:output=50 kW + - Type 2 CCS (mennekes) outputs at most 50 kw A corresponds with `socket:type2_combo:output=50 kW` Only visible if `socket:type2_combo~^..*$&socket:type2_combo!=0` is shown @@ -1205,8 +1207,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs 230 volt corresponds with socket:type2_cable:voltage=230 V - - Type 2 with cable (mennekes) outputs 400 volt corresponds with socket:type2_cable:voltage=400 V + - Type 2 with cable (mennekes) outputs 230 volt corresponds with `socket:type2_cable:voltage=230 V` + - Type 2 with cable (mennekes) outputs 400 volt corresponds with `socket:type2_cable:voltage=400 V` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1229,8 +1231,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs at most 16 A corresponds with socket:type2_cable:current=16 A - - Type 2 with cable (mennekes) outputs at most 32 A corresponds with socket:type2_cable:current=32 A + - Type 2 with cable (mennekes) outputs at most 16 A corresponds with `socket:type2_cable:current=16 A` + - Type 2 with cable (mennekes) outputs at most 32 A corresponds with `socket:type2_cable:current=32 A` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1253,8 +1255,8 @@ This is rendered with
Type 2 with cabl - - Type 2 with cable (mennekes) outputs at most 11 kw A corresponds with socket:type2_cable:output=11 kW - - Type 2 with cable (mennekes) outputs at most 22 kw A corresponds with socket:type2_cable:output=22 kW + - Type 2 with cable (mennekes) outputs at most 11 kw A corresponds with `socket:type2_cable:output=11 kW` + - Type 2 with cable (mennekes) outputs at most 22 kw A corresponds with `socket:type2_cable:output=22 kW` Only visible if `socket:type2_cable~^..*$&socket:type2_cable!=0` is shown @@ -1277,8 +1279,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 500 volt corresponds with socket:tesla_supercharger_ccs:voltage=500 V - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 920 volt corresponds with socket:tesla_supercharger_ccs:voltage=920 V + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 500 volt corresponds with `socket:tesla_supercharger_ccs:voltage=500 V` + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs 920 volt corresponds with `socket:tesla_supercharger_ccs:voltage=920 V` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1301,8 +1303,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded type2_css) outputs at most 125 A corresponds with socket:tesla_supercharger_ccs:current=125 A - - Tesla Supercharger CCS (a branded type2_css) outputs at most 350 A corresponds with socket:tesla_supercharger_ccs:current=350 A + - Tesla Supercharger CCS (a branded type2_css) outputs at most 125 A corresponds with `socket:tesla_supercharger_ccs:current=125 A` + - Tesla Supercharger CCS (a branded type2_css) outputs at most 350 A corresponds with `socket:tesla_supercharger_ccs:current=350 A` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1325,7 +1327,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger CCS (a branded Type 2 CSS) outputs at most 50 kw A corresponds with socket:tesla_supercharger_ccs:output=50 kW + - Tesla Supercharger CCS (a branded Type 2 CSS) outputs at most 50 kw A corresponds with `socket:tesla_supercharger_ccs:output=50 kW` Only visible if `socket:tesla_supercharger_ccs~^..*$&socket:tesla_supercharger_ccs!=0` is shown @@ -1348,7 +1350,7 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs 480 volt corresponds with socket:tesla_destination:voltage=480 V + - Tesla Supercharger (Destination) outputs 480 volt corresponds with `socket:tesla_destination:voltage=480 V` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1371,8 +1373,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs at most 125 A corresponds with socket:tesla_destination:current=125 A - - Tesla Supercharger (Destination) outputs at most 350 A corresponds with socket:tesla_destination:current=350 A + - Tesla Supercharger (Destination) outputs at most 125 A corresponds with `socket:tesla_destination:current=125 A` + - Tesla Supercharger (Destination) outputs at most 350 A corresponds with `socket:tesla_destination:current=350 A` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1395,9 +1397,9 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) outputs at most 120 kw A corresponds with socket:tesla_destination:output=120 kW - - Tesla Supercharger (Destination) outputs at most 150 kw A corresponds with socket:tesla_destination:output=150 kW - - Tesla Supercharger (Destination) outputs at most 250 kw A corresponds with socket:tesla_destination:output=250 kW + - Tesla Supercharger (Destination) outputs at most 120 kw A corresponds with `socket:tesla_destination:output=120 kW` + - Tesla Supercharger (Destination) outputs at most 150 kw A corresponds with `socket:tesla_destination:output=150 kW` + - Tesla Supercharger (Destination) outputs at most 250 kw A corresponds with `socket:tesla_destination:output=250 kW` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1420,8 +1422,8 @@ This is rendered with
Tesla supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 230 volt corresponds with socket:tesla_destination:voltage=230 V - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 400 volt corresponds with socket:tesla_destination:voltage=400 V + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 230 volt corresponds with `socket:tesla_destination:voltage=230 V` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs 400 volt corresponds with `socket:tesla_destination:voltage=400 V` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1444,8 +1446,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as tesla) outputs at most 16 A corresponds with socket:tesla_destination:current=16 A - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 32 A corresponds with socket:tesla_destination:current=32 A + - Tesla Supercharger (Destination) (A Type 2 with cable branded as tesla) outputs at most 16 A corresponds with `socket:tesla_destination:current=16 A` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 32 A corresponds with `socket:tesla_destination:current=32 A` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1468,8 +1470,8 @@ This is rendered with
Tesla Supercharg - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 11 kw A corresponds with socket:tesla_destination:output=11 kW - - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 22 kw A corresponds with socket:tesla_destination:output=22 kW + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 11 kw A corresponds with `socket:tesla_destination:output=11 kW` + - Tesla Supercharger (Destination) (A Type 2 with cable branded as Tesla) outputs at most 22 kw A corresponds with `socket:tesla_destination:output=22 kW` Only visible if `socket:tesla_destination~^..*$&socket:tesla_destination!=0` is shown @@ -1492,7 +1494,7 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs 5 volt corresponds with socket:USB-A:voltage=5 V + - USB to charge phones and small electronics outputs 5 volt corresponds with `socket:USB-A:voltage=5 V` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1515,8 +1517,8 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs at most 1 A corresponds with socket:USB-A:current=1 A - - USB to charge phones and small electronics outputs at most 2 A corresponds with socket:USB-A:current=2 A + - USB to charge phones and small electronics outputs at most 1 A corresponds with `socket:USB-A:current=1 A` + - USB to charge phones and small electronics outputs at most 2 A corresponds with `socket:USB-A:current=2 A` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1539,8 +1541,8 @@ This is rendered with
USB to charg - - USB to charge phones and small electronics outputs at most 5w A corresponds with socket:USB-A:output=5W - - USB to charge phones and small electronics outputs at most 10w A corresponds with socket:USB-A:output=10W + - USB to charge phones and small electronics outputs at most 5w A corresponds with `socket:USB-A:output=5W` + - USB to charge phones and small electronics outputs at most 10w A corresponds with `socket:USB-A:output=10W` Only visible if `socket:USB-A~^..*$&socket:USB-A!=0` is shown @@ -1701,7 +1703,7 @@ This is rendered with {opening_hours_table(opening_hours)} - - 24/7 opened (including holidays) corresponds with opening_hours=24/7 + - 24/7 opened (including holidays) corresponds with `opening_hours=24/7` @@ -1716,12 +1718,12 @@ The question is Does one have to pay to use this charging station? - - Free to use (without authenticating) corresponds with fee=no&authentication:none=yes - - Free to use, but one has to authenticate corresponds with fee=no&authentication:none=no - - Free to use corresponds with fee=no + - Free to use (without authenticating) corresponds with `fee=no&authentication:none=yes` + - Free to use, but one has to authenticate corresponds with `fee=no&authentication:none=no` + - Free to use corresponds with `fee=no` - This option cannot be chosen as answer - - Paid use, but free for customers of the hotel/pub/hospital/… who operates the charging station corresponds with fee=yes&fee:conditional=no @ customers - - Paid use corresponds with fee=yes + - Paid use, but free for customers of the hotel/pub/hospital/… who operates the charging station corresponds with `fee=yes&fee:conditional=no @ customers` + - Paid use corresponds with `fee=yes` @@ -1752,13 +1754,13 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no - - Payment is done using a dedicated app corresponds with payment:app=yes + - Payment is done using a dedicated app corresponds with `payment:app=yes` - Unselecting this answer will add payment:app=no - - Payment is done using a membership card corresponds with payment:membership_card=yes + - Payment is done using a membership card corresponds with `payment:membership_card=yes` - Unselecting this answer will add payment:membership_card=no @@ -1776,21 +1778,21 @@ The question is What kind of authentication is available at the charging statio - - Authentication by a membership card corresponds with authentication:membership_card=yes + - Authentication by a membership card corresponds with `authentication:membership_card=yes` - Unselecting this answer will add authentication:membership_card=no - - Authentication by an app corresponds with authentication:app=yes + - Authentication by an app corresponds with `authentication:app=yes` - Unselecting this answer will add authentication:app=no - - Authentication via phone call is available corresponds with authentication:phone_call=yes + - Authentication via phone call is available corresponds with `authentication:phone_call=yes` - Unselecting this answer will add authentication:phone_call=no - - Authentication via SMS is available corresponds with authentication:short_message=yes + - Authentication via SMS is available corresponds with `authentication:short_message=yes` - Unselecting this answer will add authentication:short_message=no - - Authentication via NFC is available corresponds with authentication:nfc=yes + - Authentication via NFC is available corresponds with `authentication:nfc=yes` - Unselecting this answer will add authentication:nfc=no - - Authentication via Money Card is available corresponds with authentication:money_card=yes + - Authentication via Money Card is available corresponds with `authentication:money_card=yes` - Unselecting this answer will add authentication:money_card=no - - Authentication via debit card is available corresponds with authentication:debit_card=yes + - Authentication via debit card is available corresponds with `authentication:debit_card=yes` - Unselecting this answer will add authentication:debit_card=no - - Charging here is (also) possible without authentication corresponds with authentication:none=yes + - Charging here is (also) possible without authentication corresponds with `authentication:none=yes` - Unselecting this answer will add authentication:none=no @@ -1826,7 +1828,7 @@ This is rendered with One can stay at most {canonical(maxstay)} - - No timelimit on leaving your vehicle here corresponds with maxstay=unlimited + - No timelimit on leaving your vehicle here corresponds with `maxstay=unlimited` Only visible if `maxstay~^..*$|motorcar=yes|hgv=yes|bus=yes` is shown @@ -1847,15 +1849,15 @@ This is rendered with Part of the network {network} - - Not part of a bigger network, e.g. because the charging station is maintained by a local business corresponds with no:network=yes - - Not part of a bigger network corresponds with network=none + - Not part of a bigger network, e.g. because the charging station is maintained by a local business corresponds with `no:network=yes` + - Not part of a bigger network corresponds with `network=none` - This option cannot be chosen as answer - - AeroVironment corresponds with network=AeroVironment - - Blink corresponds with network=Blink - - EVgo corresponds with network=EVgo - - Allego corresponds with network=Allego - - Blue Corner corresponds with network=Blue Corner - - Tesla corresponds with network=Tesla + - AeroVironment corresponds with `network=AeroVironment` + - Blink corresponds with `network=Blink` + - EVgo corresponds with `network=EVgo` + - Allego corresponds with `network=Allego` + - Blue Corner corresponds with `network=Blue Corner` + - Tesla corresponds with `network=Tesla` @@ -1874,7 +1876,7 @@ This is rendered with This charging station is operated by {operator} - - Actually, {operator} is the network corresponds with network= + - Actually, {operator} is the network corresponds with `network=` @@ -1935,13 +1937,13 @@ This is rendered with Located on the {level}th floor - - Located underground corresponds with location=underground + - Located underground corresponds with `location=underground` - This option cannot be chosen as answer - - Located on the ground floor corresponds with level=0 - - Located on the ground floor corresponds with + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` - This option cannot be chosen as answer - - Located on the first floor corresponds with level=1 - - Located on the first basement level corresponds with level=-1 + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` @@ -1972,11 +1974,11 @@ The question is Is this charging point in use? - - This charging station works corresponds with amenity=charging_station - - This charging station is broken corresponds with operational_status=broken&amenity=charging_station - - A charging station is planned here corresponds with planned:amenity=charging_station - - A charging station is constructed here corresponds with construction:amenity=charging_station - - This charging station has beed permanently disabled and is not in use anymore but is still visible corresponds with disused:amenity=charging_station + - This charging station works corresponds with `amenity=charging_station` + - This charging station is broken corresponds with `operational_status=broken&amenity=charging_station` + - A charging station is planned here corresponds with `planned:amenity=charging_station` + - A charging station is constructed here corresponds with `construction:amenity=charging_station` + - This charging station has beed permanently disabled and is not in use anymore but is still visible corresponds with `disused:amenity=charging_station` @@ -1991,8 +1993,8 @@ The question is Does one have to pay a parking fee while charging? - - No additional parking cost while charging corresponds with parking:fee=no - - An additional parking fee should be paid while charging corresponds with parking:fee=yes + - No additional parking cost while charging corresponds with `parking:fee=no` + - An additional parking fee should be paid while charging corresponds with `parking:fee=yes` @@ -2023,6 +2025,8 @@ This tagrendering is part of group `technical` +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -2033,6 +2037,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/climbing.md b/Docs/Layers/climbing.md index 485c48098b..39f2ef4bae 100644 --- a/Docs/Layers/climbing.md +++ b/Docs/Layers/climbing.md @@ -15,7 +15,7 @@ A dummy layer which contains tagrenderings, shared among the climbing layers - This layer is shown at zoomlevel **25** and higher - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` @@ -135,10 +135,10 @@ The question is Is bouldering possible here? - - Bouldering is possible here corresponds with climbing:boulder=yes - - Bouldering is not possible here corresponds with climbing:boulder=no - - Bouldering is possible, allthough there are only a few routes corresponds with climbing:boulder=limited - - There are {climbing:boulder} boulder routes corresponds with climbing:boulder~^..*$ + - Bouldering is possible here corresponds with `climbing:boulder=yes` + - Bouldering is not possible here corresponds with `climbing:boulder=no` + - Bouldering is possible, allthough there are only a few routes corresponds with `climbing:boulder=limited` + - There are {climbing:boulder} boulder routes corresponds with `climbing:boulder~^..*$` - This option cannot be chosen as answer @@ -154,9 +154,9 @@ The question is Is toprope climbing possible here? - - Toprope climbing is possible here corresponds with climbing:toprope=yes - - Toprope climbing is not possible here corresponds with climbing:toprope=no - - There are {climbing:toprope} toprope routes corresponds with climbing:toprope~^..*$ + - Toprope climbing is possible here corresponds with `climbing:toprope=yes` + - Toprope climbing is not possible here corresponds with `climbing:toprope=no` + - There are {climbing:toprope} toprope routes corresponds with `climbing:toprope~^..*$` - This option cannot be chosen as answer @@ -172,9 +172,9 @@ The question is Is sport climbing possible here on fixed anchors? - - Sport climbing is possible here corresponds with climbing:sport=yes - - Sport climbing is not possible here corresponds with climbing:sport=no - - There are {climbing:sport} sport climbing routes corresponds with climbing:sport~^..*$ + - Sport climbing is possible here corresponds with `climbing:sport=yes` + - Sport climbing is not possible here corresponds with `climbing:sport=no` + - There are {climbing:sport} sport climbing routes corresponds with `climbing:sport~^..*$` - This option cannot be chosen as answer @@ -190,9 +190,9 @@ The question is Is traditional climbing possible here (using own gear e.g. choc - - Traditional climbing is possible here corresponds with climbing:traditional=yes - - Traditional climbing is not possible here corresponds with climbing:traditional=no - - There are {climbing:traditional} traditional climbing routes corresponds with climbing:traditional~^..*$ + - Traditional climbing is possible here corresponds with `climbing:traditional=yes` + - Traditional climbing is not possible here corresponds with `climbing:traditional=no` + - There are {climbing:traditional} traditional climbing routes corresponds with `climbing:traditional~^..*$` - This option cannot be chosen as answer @@ -226,8 +226,8 @@ This is rendered with A fee of {charge} should be paid for climbing here - - Climbing here is free of charge corresponds with fee=no - - Paying a fee is required to climb here corresponds with fee=yes + - Climbing here is free of charge corresponds with `fee=no` + - Paying a fee is required to climb here corresponds with `fee=yes` This document is autogenerated from [assets/layers/climbing/climbing.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing/climbing.json) \ No newline at end of file diff --git a/Docs/Layers/climbing_area.md b/Docs/Layers/climbing_area.md index 9f0a0264f0..c4d4c02fe5 100644 --- a/Docs/Layers/climbing_area.md +++ b/Docs/Layers/climbing_area.md @@ -79,6 +79,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -141,7 +143,7 @@ This is rendered with {name} - - This climbing opportunity doesn't have a name corresponds with noname=yes + - This climbing opportunity doesn't have a name corresponds with `noname=yes` @@ -156,9 +158,9 @@ The question is What kind of climbing opportunity is this? - - A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope corresponds with climbing=boulder - - A climbing crag - a single rock or cliff with at least a few climbing routes corresponds with climbing=crag - - A climbing area with one or more climbing crags and/or boulders corresponds with climbing=area + - A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope corresponds with `climbing=boulder` + - A climbing crag - a single rock or cliff with at least a few climbing routes corresponds with `climbing=crag` + - A climbing area with one or more climbing crags and/or boulders corresponds with `climbing=area` @@ -177,7 +179,7 @@ This is rendered with The rock type is {rock} - - Limestone corresponds with rock=limestone + - Limestone corresponds with `rock=limestone` Only visible if `climbing=crag|natural=cliff|natural=bare_rock` is shown @@ -214,8 +216,8 @@ This is rendered with A fee of {charge} should be paid for climbing here - - Climbing here is free of charge corresponds with fee=no - - Paying a fee is required to climb here corresponds with fee=yes + - Climbing here is free of charge corresponds with `fee=no` + - Paying a fee is required to climb here corresponds with `fee=yes` Only visible if `sport=climbing` is shown @@ -232,10 +234,10 @@ The question is Is bouldering possible here? - - Bouldering is possible here corresponds with climbing:boulder=yes - - Bouldering is not possible here corresponds with climbing:boulder=no - - Bouldering is possible, allthough there are only a few routes corresponds with climbing:boulder=limited - - There are {climbing:boulder} boulder routes corresponds with climbing:boulder~^..*$ + - Bouldering is possible here corresponds with `climbing:boulder=yes` + - Bouldering is not possible here corresponds with `climbing:boulder=no` + - Bouldering is possible, allthough there are only a few routes corresponds with `climbing:boulder=limited` + - There are {climbing:boulder} boulder routes corresponds with `climbing:boulder~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/climbing_club.md b/Docs/Layers/climbing_club.md index ee65f717ec..f8b09ec5cf 100644 --- a/Docs/Layers/climbing_club.md +++ b/Docs/Layers/climbing_club.md @@ -97,7 +97,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -117,7 +117,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -137,7 +137,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/climbing_gym.md b/Docs/Layers/climbing_gym.md index 0004705f99..69063818de 100644 --- a/Docs/Layers/climbing_gym.md +++ b/Docs/Layers/climbing_gym.md @@ -82,6 +82,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -116,7 +118,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -136,7 +138,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -156,7 +158,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -176,8 +178,8 @@ This is rendered with A fee of {charge} should be paid for climbing here - - Climbing here is free of charge corresponds with fee=no - - Paying a fee is required to climb here corresponds with fee=yes + - Climbing here is free of charge corresponds with `fee=no` + - Paying a fee is required to climb here corresponds with `fee=yes` Only visible if `sport=climbing` is shown @@ -256,10 +258,10 @@ The question is Is bouldering possible here? - - Bouldering is possible here corresponds with climbing:boulder=yes - - Bouldering is not possible here corresponds with climbing:boulder=no - - Bouldering is possible, allthough there are only a few routes corresponds with climbing:boulder=limited - - There are {climbing:boulder} boulder routes corresponds with climbing:boulder~^..*$ + - Bouldering is possible here corresponds with `climbing:boulder=yes` + - Bouldering is not possible here corresponds with `climbing:boulder=no` + - Bouldering is possible, allthough there are only a few routes corresponds with `climbing:boulder=limited` + - There are {climbing:boulder} boulder routes corresponds with `climbing:boulder~^..*$` - This option cannot be chosen as answer @@ -277,9 +279,9 @@ The question is Is sport climbing possible here on fixed anchors? - - Sport climbing is possible here corresponds with climbing:sport=yes - - Sport climbing is not possible here corresponds with climbing:sport=no - - There are {climbing:sport} sport climbing routes corresponds with climbing:sport~^..*$ + - Sport climbing is possible here corresponds with `climbing:sport=yes` + - Sport climbing is not possible here corresponds with `climbing:sport=no` + - There are {climbing:sport} sport climbing routes corresponds with `climbing:sport~^..*$` - This option cannot be chosen as answer @@ -313,9 +315,9 @@ The question is Is there a speed climbing wall? - - There is a speed climbing wall corresponds with climbing:speed=yes - - There is no speed climbing wall corresponds with climbing:speed=no - - There are {climbing:speed} speed climbing walls corresponds with climbing:speed~^..*$ + - There is a speed climbing wall corresponds with `climbing:speed=yes` + - There is no speed climbing wall corresponds with `climbing:speed=no` + - There are {climbing:speed} speed climbing walls corresponds with `climbing:speed~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/climbing_opportunity.md b/Docs/Layers/climbing_opportunity.md index 8133d6a300..d7df6c1e8c 100644 --- a/Docs/Layers/climbing_opportunity.md +++ b/Docs/Layers/climbing_opportunity.md @@ -77,9 +77,9 @@ The question is Is climbing possible here? - - Climbing is possible here corresponds with sport=climbing - - Climbing is not possible here corresponds with climbing=no - - Climbing is not possible here corresponds with sport!~^climbing$ + - Climbing is possible here corresponds with `sport=climbing` + - Climbing is not possible here corresponds with `climbing=no` + - Climbing is not possible here corresponds with `sport!~^climbing$` - This option cannot be chosen as answer diff --git a/Docs/Layers/climbing_route.md b/Docs/Layers/climbing_route.md index cae5cc3bb7..486fd71c8e 100644 --- a/Docs/Layers/climbing_route.md +++ b/Docs/Layers/climbing_route.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -95,7 +97,7 @@ This is rendered with {name} - - This climbing route doesn't have a name corresponds with noname=yes + - This climbing route doesn't have a name corresponds with `noname=yes` @@ -142,7 +144,7 @@ This is rendered with This route has {climbing:bolts} bolts
climbing:bolted=no + - This route is not bolted corresponds with `climbing:bolted=no` diff --git a/Docs/Layers/cluster_style.md b/Docs/Layers/cluster_style.md index 1bed189ce7..444b7596fb 100644 --- a/Docs/Layers/cluster_style.md +++ b/Docs/Layers/cluster_style.md @@ -47,6 +47,8 @@ Elements must have the all of following tags to be shown on this layer: +Shows a table with all the tags of the feature + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/crab_address.md b/Docs/Layers/crab_address.md index 576a70ab46..2783931371 100644 --- a/Docs/Layers/crab_address.md +++ b/Docs/Layers/crab_address.md @@ -15,7 +15,7 @@ Address data for Flanders by the governement, suited for import into OpenStreetM - This layer is shown at zoomlevel **0** and higher - - This layer is loaded from an external source, namely `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson` + - This layer is loaded from an external source, namely `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson` diff --git a/Docs/Layers/crossings.md b/Docs/Layers/crossings.md index 644447e109..b8451a2e8d 100644 --- a/Docs/Layers/crossings.md +++ b/Docs/Layers/crossings.md @@ -85,11 +85,11 @@ The question is What kind of crossing is this? - - Crossing, without traffic lights corresponds with crossing=uncontrolled - - Crossing with traffic signals corresponds with crossing=traffic_signals - - Zebra crossing corresponds with crossing=zebra + - Crossing, without traffic lights corresponds with `crossing=uncontrolled` + - Crossing with traffic signals corresponds with `crossing=traffic_signals` + - Zebra crossing corresponds with `crossing=zebra` - This option cannot be chosen as answer - - Crossing without crossing markings corresponds with crossing=unmarked + - Crossing without crossing markings corresponds with `crossing=unmarked` Only visible if `highway=crossing` is shown @@ -106,8 +106,8 @@ The question is Is this is a zebra crossing? - - This is a zebra crossing corresponds with crossing_ref=zebra - - This is not a zebra crossing corresponds with + - This is a zebra crossing corresponds with `crossing_ref=zebra` + - This is not a zebra crossing corresponds with `` Only visible if `crossing=uncontrolled` is shown @@ -124,8 +124,8 @@ The question is Is this crossing also for bicycles? - - A cyclist can use this crossing corresponds with bicycle=yes - - A cyclist can not use this crossing corresponds with bicycle=no + - A cyclist can use this crossing corresponds with `bicycle=yes` + - A cyclist can not use this crossing corresponds with `bicycle=no` Only visible if `highway=crossing` is shown @@ -142,8 +142,8 @@ The question is Does this crossing have an island in the middle? - - This crossing has an island in the middle corresponds with crossing:island=yes - - This crossing does not have an island in the middle corresponds with crossing:island=no + - This crossing has an island in the middle corresponds with `crossing:island=yes` + - This crossing does not have an island in the middle corresponds with `crossing:island=no` Only visible if `highway=crossing` is shown @@ -160,9 +160,9 @@ The question is Does this crossing have tactile paving? - - This crossing has tactile paving corresponds with tactile_paving=yes - - This crossing does not have tactile paving corresponds with tactile_paving=no - - This crossing has tactile paving, but is not correct corresponds with tactile_paving=incorrect + - This crossing has tactile paving corresponds with `tactile_paving=yes` + - This crossing does not have tactile paving corresponds with `tactile_paving=no` + - This crossing has tactile paving, but is not correct corresponds with `tactile_paving=incorrect` - This option cannot be chosen as answer @@ -180,8 +180,8 @@ The question is Does this traffic light have a button to request green light? - - This traffic light has a button to request green light corresponds with button_operated=yes - - This traffic light does not have a button to request green light corresponds with button_operated=no + - This traffic light has a button to request green light corresponds with `button_operated=yes` + - This traffic light does not have a button to request green light corresponds with `button_operated=no` Only visible if `highway=traffic_signals|crossing=traffic_signals` is shown @@ -198,9 +198,9 @@ The question is Can a cyclist turn right when the light is red? - - A cyclist can turn right if the light is red corresponds with red_turn:right:bicycle=yes - - A cyclist can turn right if the light is red corresponds with red_turn:right:bicycle=yes - - A cyclist can not turn right if the light is red corresponds with red_turn:right:bicycle=no + - A cyclist can turn right if the light is red corresponds with `red_turn:right:bicycle=yes` + - A cyclist can turn right if the light is red corresponds with `red_turn:right:bicycle=yes` + - A cyclist can not turn right if the light is red corresponds with `red_turn:right:bicycle=no` Only visible if `highway=traffic_signals` is shown @@ -217,9 +217,9 @@ The question is Can a cyclist go straight on when the light is red? - - A cyclist can go straight on if the light is red corresponds with red_turn:straight:bicycle=yes - - A cyclist can go straight on if the light is red corresponds with red_turn:straight:bicycle=yes - - A cyclist can not go straight on if the light is red corresponds with red_turn:straight:bicycle=no + - A cyclist can go straight on if the light is red corresponds with `red_turn:straight:bicycle=yes` + - A cyclist can go straight on if the light is red corresponds with `red_turn:straight:bicycle=yes` + - A cyclist can not go straight on if the light is red corresponds with `red_turn:straight:bicycle=no` Only visible if `highway=traffic_signals` is shown diff --git a/Docs/Layers/cultural_places_without_etymology.md b/Docs/Layers/cultural_places_without_etymology.md index a4a77f6f78..d304a8111d 100644 --- a/Docs/Layers/cultural_places_without_etymology.md +++ b/Docs/Layers/cultural_places_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/cycleways_and_roads.md b/Docs/Layers/cycleways_and_roads.md index c39cf5f744..7f9ae2d254 100644 --- a/Docs/Layers/cycleways_and_roads.md +++ b/Docs/Layers/cycleways_and_roads.md @@ -94,12 +94,12 @@ The question is What kind of cycleway is here? - - There is a shared lane corresponds with cycleway=shared_lane - - There is a lane next to the road (separated with paint) corresponds with cycleway=lane - - There is a track, but no cycleway drawn separately from this road on the map. corresponds with cycleway=track - - There is a separately drawn cycleway corresponds with cycleway=separate - - There is no cycleway corresponds with cycleway=no - - There is no cycleway corresponds with cycleway=no + - There is a shared lane corresponds with `cycleway=shared_lane` + - There is a lane next to the road (separated with paint) corresponds with `cycleway=lane` + - There is a track, but no cycleway drawn separately from this road on the map. corresponds with `cycleway=track` + - There is a separately drawn cycleway corresponds with `cycleway=separate` + - There is no cycleway corresponds with `cycleway=no` + - There is no cycleway corresponds with `cycleway=no` @@ -114,11 +114,11 @@ The question is Is this street lit? - - This street is lit corresponds with lit=yes - - This road is not lit corresponds with lit=no - - This road is lit at night corresponds with lit=sunset-sunrise + - This street is lit corresponds with `lit=yes` + - This road is not lit corresponds with `lit=no` + - This road is lit at night corresponds with `lit=sunset-sunrise` - This option cannot be chosen as answer - - This road is lit 24/7 corresponds with lit=24/7 + - This road is lit 24/7 corresponds with `lit=24/7` @@ -133,9 +133,9 @@ The question is Is this a cyclestreet? - - This is a cyclestreet, and a 30km/h zone. corresponds with cyclestreet=yes - - This is a cyclestreet corresponds with cyclestreet=yes - - This is not a cyclestreet. corresponds with + - This is a cyclestreet, and a 30km/h zone. corresponds with `cyclestreet=yes` + - This is a cyclestreet corresponds with `cyclestreet=yes` + - This is not a cyclestreet. corresponds with `` @@ -154,11 +154,11 @@ This is rendered with The maximum speed on this road is {maxspeed} km/h - - The maximum speed is 20 km/h corresponds with maxspeed=20 - - The maximum speed is 30 km/h corresponds with maxspeed=30 - - The maximum speed is 50 km/h corresponds with maxspeed=50 - - The maximum speed is 70 km/h corresponds with maxspeed=70 - - The maximum speed is 90 km/h corresponds with maxspeed=90 + - The maximum speed is 20 km/h corresponds with `maxspeed=20` + - The maximum speed is 30 km/h corresponds with `maxspeed=30` + - The maximum speed is 50 km/h corresponds with `maxspeed=50` + - The maximum speed is 70 km/h corresponds with `maxspeed=70` + - The maximum speed is 90 km/h corresponds with `maxspeed=90` @@ -177,22 +177,22 @@ This is rendered with This cyleway is made of {cycleway:surface} - - This cycleway is unpaved corresponds with cycleway:surface=unpaved + - This cycleway is unpaved corresponds with `cycleway:surface=unpaved` - This option cannot be chosen as answer - - This cycleway is paved corresponds with cycleway:surface=paved + - This cycleway is paved corresponds with `cycleway:surface=paved` - This option cannot be chosen as answer - - This cycleway is made of asphalt corresponds with cycleway:surface=asphalt - - This cycleway is made of smooth paving stones corresponds with cycleway:surface=paving_stones - - This cycleway is made of concrete corresponds with cycleway:surface=concrete - - This cycleway is made of cobblestone (unhewn or sett) corresponds with cycleway:surface=cobblestone + - This cycleway is made of asphalt corresponds with `cycleway:surface=asphalt` + - This cycleway is made of smooth paving stones corresponds with `cycleway:surface=paving_stones` + - This cycleway is made of concrete corresponds with `cycleway:surface=concrete` + - This cycleway is made of cobblestone (unhewn or sett) corresponds with `cycleway:surface=cobblestone` - This option cannot be chosen as answer - - This cycleway is made of raw, natural cobblestone corresponds with cycleway:surface=unhewn_cobblestone - - This cycleway is made of flat, square cobblestone corresponds with cycleway:surface=sett - - This cycleway is made of wood corresponds with cycleway:surface=wood - - This cycleway is made of gravel corresponds with cycleway:surface=gravel - - This cycleway is made of fine gravel corresponds with cycleway:surface=fine_gravel - - This cycleway is made of pebblestone corresponds with cycleway:surface=pebblestone - - This cycleway is made from raw ground corresponds with cycleway:surface=ground + - This cycleway is made of raw, natural cobblestone corresponds with `cycleway:surface=unhewn_cobblestone` + - This cycleway is made of flat, square cobblestone corresponds with `cycleway:surface=sett` + - This cycleway is made of wood corresponds with `cycleway:surface=wood` + - This cycleway is made of gravel corresponds with `cycleway:surface=gravel` + - This cycleway is made of fine gravel corresponds with `cycleway:surface=fine_gravel` + - This cycleway is made of pebblestone corresponds with `cycleway:surface=pebblestone` + - This cycleway is made from raw ground corresponds with `cycleway:surface=ground` Only visible if `cycleway=shared_lane|cycleway=lane|cycleway=track` is shown @@ -209,14 +209,14 @@ The question is What is the smoothness of this cycleway? - - Usable for thin rollers: rollerblade, skateboard corresponds with cycleway:smoothness=excellent - - Usable for thin wheels: racing bike corresponds with cycleway:smoothness=good - - Usable for normal wheels: city bike, wheelchair, scooter corresponds with cycleway:smoothness=intermediate - - Usable for robust wheels: trekking bike, car, rickshaw corresponds with cycleway:smoothness=bad - - Usable for vehicles with high clearance: light duty off-road vehicle corresponds with cycleway:smoothness=very_bad - - Usable for off-road vehicles: heavy duty off-road vehicle corresponds with cycleway:smoothness=horrible - - Usable for specialized off-road vehicles: tractor, ATV corresponds with cycleway:smoothness=very_horrible - - Impassable / No wheeled vehicle corresponds with cycleway:smoothness=impassable + - Usable for thin rollers: rollerblade, skateboard corresponds with `cycleway:smoothness=excellent` + - Usable for thin wheels: racing bike corresponds with `cycleway:smoothness=good` + - Usable for normal wheels: city bike, wheelchair, scooter corresponds with `cycleway:smoothness=intermediate` + - Usable for robust wheels: trekking bike, car, rickshaw corresponds with `cycleway:smoothness=bad` + - Usable for vehicles with high clearance: light duty off-road vehicle corresponds with `cycleway:smoothness=very_bad` + - Usable for off-road vehicles: heavy duty off-road vehicle corresponds with `cycleway:smoothness=horrible` + - Usable for specialized off-road vehicles: tractor, ATV corresponds with `cycleway:smoothness=very_horrible` + - Impassable / No wheeled vehicle corresponds with `cycleway:smoothness=impassable` Only visible if `cycleway=shared_lane|cycleway=lane|cycleway=track` is shown @@ -237,22 +237,22 @@ This is rendered with This road is made of {surface} - - This cycleway is unhardened corresponds with surface=unpaved + - This cycleway is unhardened corresponds with `surface=unpaved` - This option cannot be chosen as answer - - This cycleway is paved corresponds with surface=paved + - This cycleway is paved corresponds with `surface=paved` - This option cannot be chosen as answer - - This cycleway is made of asphalt corresponds with surface=asphalt - - This cycleway is made of smooth paving stones corresponds with surface=paving_stones - - This cycleway is made of concrete corresponds with surface=concrete - - This cycleway is made of cobblestone (unhewn or sett) corresponds with surface=cobblestone + - This cycleway is made of asphalt corresponds with `surface=asphalt` + - This cycleway is made of smooth paving stones corresponds with `surface=paving_stones` + - This cycleway is made of concrete corresponds with `surface=concrete` + - This cycleway is made of cobblestone (unhewn or sett) corresponds with `surface=cobblestone` - This option cannot be chosen as answer - - This cycleway is made of raw, natural cobblestone corresponds with surface=unhewn_cobblestone - - This cycleway is made of flat, square cobblestone corresponds with surface=sett - - This cycleway is made of wood corresponds with surface=wood - - This cycleway is made of gravel corresponds with surface=gravel - - This cycleway is made of fine gravel corresponds with surface=fine_gravel - - This cycleway is made of pebblestone corresponds with surface=pebblestone - - This cycleway is made from raw ground corresponds with surface=ground + - This cycleway is made of raw, natural cobblestone corresponds with `surface=unhewn_cobblestone` + - This cycleway is made of flat, square cobblestone corresponds with `surface=sett` + - This cycleway is made of wood corresponds with `surface=wood` + - This cycleway is made of gravel corresponds with `surface=gravel` + - This cycleway is made of fine gravel corresponds with `surface=fine_gravel` + - This cycleway is made of pebblestone corresponds with `surface=pebblestone` + - This cycleway is made from raw ground corresponds with `surface=ground` @@ -267,14 +267,14 @@ The question is What is the smoothness of this street? - - Usable for thin rollers: rollerblade, skateboard corresponds with smoothness=excellent - - Usable for thin wheels: racing bike corresponds with smoothness=good - - Usable for normal wheels: city bike, wheelchair, scooter corresponds with smoothness=intermediate - - Usable for robust wheels: trekking bike, car, rickshaw corresponds with smoothness=bad - - Usable for vehicles with high clearance: light duty off-road vehicle corresponds with smoothness=very_bad - - Usable for off-road vehicles: heavy duty off-road vehicle corresponds with smoothness=horrible - - Usable for specialized off-road vehicles: tractor, ATV corresponds with smoothness=very_horrible - - Impassable / No wheeled vehicle corresponds with smoothness=impassable + - Usable for thin rollers: rollerblade, skateboard corresponds with `smoothness=excellent` + - Usable for thin wheels: racing bike corresponds with `smoothness=good` + - Usable for normal wheels: city bike, wheelchair, scooter corresponds with `smoothness=intermediate` + - Usable for robust wheels: trekking bike, car, rickshaw corresponds with `smoothness=bad` + - Usable for vehicles with high clearance: light duty off-road vehicle corresponds with `smoothness=very_bad` + - Usable for off-road vehicles: heavy duty off-road vehicle corresponds with `smoothness=horrible` + - Usable for specialized off-road vehicles: tractor, ATV corresponds with `smoothness=very_horrible` + - Impassable / No wheeled vehicle corresponds with `smoothness=impassable` Only visible if `cycleway=no|highway=cycleway` is shown @@ -305,12 +305,12 @@ The question is What traffic sign does this cycleway have? - - Compulsory cycleway corresponds with cycleway:traffic_sign=BE:D7 - - Compulsory cycleway (with supplementary sign)
corresponds with cycleway:traffic_sign~^BE:D7;.*$ + - Compulsory cycleway corresponds with `cycleway:traffic_sign=BE:D7` + - Compulsory cycleway (with supplementary sign)
corresponds with `cycleway:traffic_sign~^BE:D7;.*$` - This option cannot be chosen as answer - - Segregated foot/cycleway corresponds with cycleway:traffic_sign=BE:D9 - - Unsegregated foot/cycleway corresponds with cycleway:traffic_sign=BE:D10 - - No traffic sign present corresponds with cycleway:traffic_sign=none + - Segregated foot/cycleway corresponds with `cycleway:traffic_sign=BE:D9` + - Unsegregated foot/cycleway corresponds with `cycleway:traffic_sign=BE:D10` + - No traffic sign present corresponds with `cycleway:traffic_sign=none` Only visible if `cycleway=lane|cycleway=track&_country=be` is shown @@ -327,15 +327,15 @@ The question is What traffic sign does this cycleway have? - - Compulsory cycleway corresponds with traffic_sign=BE:D7 - - Compulsory cycleway (with supplementary sign)
corresponds with traffic_sign~^BE:D7;.*$ + - Compulsory cycleway corresponds with `traffic_sign=BE:D7` + - Compulsory cycleway (with supplementary sign)
corresponds with `traffic_sign~^BE:D7;.*$` - This option cannot be chosen as answer - - Segregated foot/cycleway corresponds with traffic_sign=BE:D9 - - Unsegregated foot/cycleway corresponds with traffic_sign=BE:D10 - - Compulsory cycleway corresponds with traffic_sign=NL:G11 - - Compulsory (moped)cycleway corresponds with traffic_sign=NL:G12a - - Non-compulsory cycleway corresponds with traffic_sign=NL:G13 - - No traffic sign present corresponds with traffic_sign=none + - Segregated foot/cycleway corresponds with `traffic_sign=BE:D9` + - Unsegregated foot/cycleway corresponds with `traffic_sign=BE:D10` + - Compulsory cycleway corresponds with `traffic_sign=NL:G11` + - Compulsory (moped)cycleway corresponds with `traffic_sign=NL:G12a` + - Non-compulsory cycleway corresponds with `traffic_sign=NL:G13` + - No traffic sign present corresponds with `traffic_sign=none` Only visible if `highway=cycleway|highway=path&_country=be|_country=nl` is shown @@ -352,13 +352,13 @@ The question is Does the traffic sign D7 (cycleway:traffic_sign=BE:D7;BE:M6 - - Speedpedelecs must use the cycleway corresponds with cycleway:traffic_sign=BE:D7;BE:M13 - - Mopeds and speedpedelecs must use the cycleway corresponds with cycleway:traffic_sign=BE:D7;BE:M14 - - Mopeds are not allowed corresponds with cycleway:traffic_sign=BE:D7;BE:M7 - - Speedpedelecs are not allowed corresponds with cycleway:traffic_sign=BE:D7;BE:M15 - - Mopeds and speedpedelecs are not allowed corresponds with cycleway:traffic_sign=BE:D7;BE:M16 - - No supplementary traffic sign present corresponds with cycleway:traffic_sign:supplementary=none + - Mopeds must use the cycleway corresponds with `cycleway:traffic_sign=BE:D7;BE:M6` + - Speedpedelecs must use the cycleway corresponds with `cycleway:traffic_sign=BE:D7;BE:M13` + - Mopeds and speedpedelecs must use the cycleway corresponds with `cycleway:traffic_sign=BE:D7;BE:M14` + - Mopeds are not allowed corresponds with `cycleway:traffic_sign=BE:D7;BE:M7` + - Speedpedelecs are not allowed corresponds with `cycleway:traffic_sign=BE:D7;BE:M15` + - Mopeds and speedpedelecs are not allowed corresponds with `cycleway:traffic_sign=BE:D7;BE:M16` + - No supplementary traffic sign present corresponds with `cycleway:traffic_sign:supplementary=none` Only visible if `cycleway:traffic_sign=BE:D7|cycleway:traffic_sign~^BE:D7;.*$` is shown @@ -391,10 +391,10 @@ The question is How is this cycleway separated from the road? - - This cycleway is separated by a dashed line corresponds with cycleway:separation=dashed_line - - This cycleway is separated by a solid line corresponds with cycleway:separation=solid_line - - This cycleway is separated by a parking lane corresponds with cycleway:separation=parking_lane - - This cycleway is separated by a kerb corresponds with cycleway:separation=kerb + - This cycleway is separated by a dashed line corresponds with `cycleway:separation=dashed_line` + - This cycleway is separated by a solid line corresponds with `cycleway:separation=solid_line` + - This cycleway is separated by a parking lane corresponds with `cycleway:separation=parking_lane` + - This cycleway is separated by a kerb corresponds with `cycleway:separation=kerb` Only visible if `cycleway=track|cycleway=lane` is shown @@ -411,10 +411,10 @@ The question is How is this cycleway separated from the road? - - This cycleway is separated by a dashed line corresponds with separation=dashed_line - - This cycleway is separated by a solid line corresponds with separation=solid_line - - This cycleway is separated by a parking lane corresponds with separation=parking_lane - - This cycleway is separated by a kerb corresponds with separation=kerb + - This cycleway is separated by a dashed line corresponds with `separation=dashed_line` + - This cycleway is separated by a solid line corresponds with `separation=solid_line` + - This cycleway is separated by a parking lane corresponds with `separation=parking_lane` + - This cycleway is separated by a kerb corresponds with `separation=kerb` Only visible if `highway=cycleway|highway=path` is shown diff --git a/Docs/Layers/defibrillator.md b/Docs/Layers/defibrillator.md index 606fb3605a..4325027ecf 100644 --- a/Docs/Layers/defibrillator.md +++ b/Docs/Layers/defibrillator.md @@ -84,6 +84,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -100,8 +102,8 @@ The question is Is this defibrillator located indoors? - - This defibrillator is located indoors corresponds with indoor=yes - - This defibrillator is located outdoors corresponds with indoor=no + - This defibrillator is located indoors corresponds with `indoor=yes` + - This defibrillator is located outdoors corresponds with `indoor=no` @@ -120,12 +122,12 @@ This is rendered with Access is {access} - - Publicly accessible corresponds with access=yes - - Publicly accessible corresponds with access=public + - Publicly accessible corresponds with `access=yes` + - Publicly accessible corresponds with `access=public` - This option cannot be chosen as answer - - Only accessible to customers corresponds with access=customers - - Not accessible to the general public (e.g. only accesible to staff, the owners, …) corresponds with access=private - - Not accessible, possibly only for professional use corresponds with access=no + - Only accessible to customers corresponds with `access=customers` + - Not accessible to the general public (e.g. only accesible to staff, the owners, …) corresponds with `access=private` + - Not accessible, possibly only for professional use corresponds with `access=no` @@ -140,11 +142,11 @@ The question is Is this a a regular automatic defibrillator or a manual defibri - - There is no info about the type of device corresponds with + - There is no info about the type of device corresponds with `` - This option cannot be chosen as answer - - This is a manual defibrillator for professionals corresponds with defibrillator=manual - - This is a normal automatic defibrillator corresponds with defibrillator=automatic - - This is a special type of defibrillator: {defibrillator} corresponds with defibrillator~^..*$ + - This is a manual defibrillator for professionals corresponds with `defibrillator=manual` + - This is a normal automatic defibrillator corresponds with `defibrillator=automatic` + - This is a special type of defibrillator: {defibrillator} corresponds with `defibrillator~^..*$` - This option cannot be chosen as answer @@ -166,8 +168,8 @@ This is rendered with This defibrillator is on floor {level} - - This defibrillator is on the ground floor corresponds with level=0 - - This defibrillator is on the first floor corresponds with level=1 + - This defibrillator is on the ground floor corresponds with `level=0` + - This defibrillator is on the first floor corresponds with `level=1` Only visible if `indoor=yes` is shown @@ -226,10 +228,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -290,7 +292,7 @@ This is rendered with {opening_hours_table(opening_hours)} - - 24/7 opened (including holidays) corresponds with opening_hours=24/7 + - 24/7 opened (including holidays) corresponds with `opening_hours=24/7` @@ -323,7 +325,7 @@ This is rendered with This defibrillator was last surveyed on {survey:date} - - Checked today! corresponds with survey:date= + - Checked today! corresponds with `survey:date=` diff --git a/Docs/Layers/doctors.md b/Docs/Layers/doctors.md index 66d40b3086..de0de24072 100644 --- a/Docs/Layers/doctors.md +++ b/Docs/Layers/doctors.md @@ -74,6 +74,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -108,7 +110,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -128,7 +130,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -148,7 +150,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -182,10 +184,10 @@ This is rendered with This doctor is specialized in {healthcare:speciality} - - This is a general practitioner corresponds with healthcare:speciality=general - - This is a gynaecologist corresponds with healthcare:speciality=gynaecology - - This is a psychiatrist corresponds with healthcare:speciality=psychiatry - - This is a paediatrician corresponds with healthcare:speciality=paediatrics + - This is a general practitioner corresponds with `healthcare:speciality=general` + - This is a gynaecologist corresponds with `healthcare:speciality=gynaecology` + - This is a psychiatrist corresponds with `healthcare:speciality=psychiatry` + - This is a paediatrician corresponds with `healthcare:speciality=paediatrics` Only visible if `amenity=doctors` is shown diff --git a/Docs/Layers/dogfoodb.md b/Docs/Layers/dogfoodb.md index 5cb2f4b69f..a441323b1d 100644 --- a/Docs/Layers/dogfoodb.md +++ b/Docs/Layers/dogfoodb.md @@ -87,6 +87,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -117,8 +119,8 @@ The question is What type of business is this? - - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with amenity=fast_food - - A restaurant, focused on creating a nice experience where one is served at the table corresponds with amenity=restaurant + - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with `amenity=fast_food` + - A restaurant, focused on creating a nice experience where one is served at the table corresponds with `amenity=restaurant` @@ -151,7 +153,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -171,7 +173,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -191,7 +193,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -207,9 +209,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -225,10 +227,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -247,21 +249,21 @@ This is rendered with This place mostly serves {cuisine} - - This is a pizzeria corresponds with cuisine=pizza - - This is a friture corresponds with cuisine=friture - - Mainly serves pasta corresponds with cuisine=pasta - - This is kebab shop corresponds with cuisine=kebab - - This is a sandwichbar corresponds with cuisine=sandwich - - Burgers are served here corresponds with cuisine=burger - - Sushi is served here corresponds with cuisine=sushi - - Coffee is served here corresponds with cuisine=coffee - - This is an italian restaurant (which serves more then pasta and pizza) corresponds with cuisine=italian - - French dishes are served here corresponds with cuisine=french - - Chinese dishes are served here corresponds with cuisine=chinese - - Greek dishes are served here corresponds with cuisine=greek - - Indian dishes are served here corresponds with cuisine=indian - - Turkish dishes are served here corresponds with cuisine=turkish - - Thai dishes are served here corresponds with cuisine=thai + - This is a pizzeria corresponds with `cuisine=pizza` + - This is a friture corresponds with `cuisine=friture` + - Mainly serves pasta corresponds with `cuisine=pasta` + - This is kebab shop corresponds with `cuisine=kebab` + - This is a sandwichbar corresponds with `cuisine=sandwich` + - Burgers are served here corresponds with `cuisine=burger` + - Sushi is served here corresponds with `cuisine=sushi` + - Coffee is served here corresponds with `cuisine=coffee` + - This is an italian restaurant (which serves more then pasta and pizza) corresponds with `cuisine=italian` + - French dishes are served here corresponds with `cuisine=french` + - Chinese dishes are served here corresponds with `cuisine=chinese` + - Greek dishes are served here corresponds with `cuisine=greek` + - Indian dishes are served here corresponds with `cuisine=indian` + - Turkish dishes are served here corresponds with `cuisine=turkish` + - Thai dishes are served here corresponds with `cuisine=thai` @@ -276,9 +278,9 @@ The question is Does this place offer take-away? - - This is a take-away only business corresponds with takeaway=only - - Take-away is possible here corresponds with takeaway=yes - - Take-away is not possible here corresponds with takeaway=no + - This is a take-away only business corresponds with `takeaway=only` + - Take-away is possible here corresponds with `takeaway=yes` + - Take-away is not possible here corresponds with `takeaway=no` @@ -293,8 +295,8 @@ The question is Delivers {title()} their food at home? - - This business does home delivery (eventually via a third party) corresponds with delivery=yes - - This business does not deliver at home corresponds with delivery=no + - This business does home delivery (eventually via a third party) corresponds with `delivery=yes` + - This business does not deliver at home corresponds with `delivery=no` @@ -309,10 +311,10 @@ The question is Does this restaurant have a vegetarian option? - - No vegetarian options are available corresponds with diet:vegetarian=no - - Some vegetarian options are available corresponds with diet:vegetarian=limited - - Vegetarian options are available corresponds with diet:vegetarian=yes - - All dishes are vegetarian corresponds with diet:vegetarian=only + - No vegetarian options are available corresponds with `diet:vegetarian=no` + - Some vegetarian options are available corresponds with `diet:vegetarian=limited` + - Vegetarian options are available corresponds with `diet:vegetarian=yes` + - All dishes are vegetarian corresponds with `diet:vegetarian=only` @@ -327,10 +329,10 @@ The question is Does this business serve vegan meals? - - No vegan options available corresponds with diet:vegan=no - - Some vegan options are available corresponds with diet:vegan=limited - - Vegan options are available corresponds with diet:vegan=yes - - All dishes are vegan corresponds with diet:vegan=only + - No vegan options available corresponds with `diet:vegan=no` + - Some vegan options are available corresponds with `diet:vegan=limited` + - Vegan options are available corresponds with `diet:vegan=yes` + - All dishes are vegan corresponds with `diet:vegan=only` @@ -345,10 +347,10 @@ The question is Does this restaurant offer a halal menu? - - There are no halal options available corresponds with diet:halal=no - - There is a small halal menu corresponds with diet:halal=limited - - There is a halal menu corresponds with diet:halal=yes - - Only halal options are available corresponds with diet:halal=only + - There are no halal options available corresponds with `diet:halal=no` + - There is a small halal menu corresponds with `diet:halal=limited` + - There is a halal menu corresponds with `diet:halal=yes` + - Only halal options are available corresponds with `diet:halal=only` @@ -363,9 +365,9 @@ The question is Does this fries shop have vegetarian snacks? - - Vegetarian snacks are available corresponds with diet:vegetarian=yes - - Only a small selection of snacks are vegetarian corresponds with diet:vegetarian=limited - - No vegetarian snacks are available corresponds with diet:vegetarian=no + - Vegetarian snacks are available corresponds with `diet:vegetarian=yes` + - Only a small selection of snacks are vegetarian corresponds with `diet:vegetarian=limited` + - No vegetarian snacks are available corresponds with `diet:vegetarian=no` Only visible if `cuisine=friture` is shown @@ -382,9 +384,9 @@ The question is Does this fries shop have vegan snacks? - - Vegan snacks are available corresponds with diet:vegan=yes - - A small selection of vegan snacks are available corresponds with diet:vegan=limited - - No vegan snacks are available corresponds with diet:vegan=no + - Vegan snacks are available corresponds with `diet:vegan=yes` + - A small selection of vegan snacks are available corresponds with `diet:vegan=limited` + - No vegan snacks are available corresponds with `diet:vegan=no` Only visible if `cuisine=friture` is shown @@ -401,8 +403,8 @@ The question is Does this fries shop use vegetable or animal oil for cooking? - - The frying is done with vegetable oil corresponds with friture:oil=vegetable - - The frying is done with animal oil corresponds with friture:oil=animal + - The frying is done with vegetable oil corresponds with `friture:oil=vegetable` + - The frying is done with animal oil corresponds with `friture:oil=animal` Only visible if `cuisine=friture` is shown @@ -419,9 +421,9 @@ The question is If you bring your own container (such as a cooking pot and smal - - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with reusable_packaging:accept=yes - - Bringing your own container is not allowed corresponds with reusable_packaging:accept=no - - You must bring your own container to order here. corresponds with reusable_packaging:accept=only + - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with `reusable_packaging:accept=yes` + - Bringing your own container is not allowed corresponds with `reusable_packaging:accept=no` + - You must bring your own container to order here. corresponds with `reusable_packaging:accept=only` Only visible if `cuisine=friture` is shown @@ -438,10 +440,10 @@ The question is Does this amenity have electrical outlets, available to custome - - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=yes - - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=limited - - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with service:electricity=ask - - There are a no domestic sockets available to customers seated indoors corresponds with service:electricity=no + - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=yes` + - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=limited` + - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with `service:electricity=ask` + - There are a no domestic sockets available to customers seated indoors corresponds with `service:electricity=no` @@ -456,10 +458,10 @@ The question is Are dogs allowed in this business? - - Dogs are allowed corresponds with dog=yes - - Dogs are not allowed corresponds with dog=no - - Dogs are allowed, but they have to be leashed corresponds with dog=leashed - - Dogs are allowed and can run around freely corresponds with dog=unleashed + - Dogs are allowed corresponds with `dog=yes` + - Dogs are not allowed corresponds with `dog=no` + - Dogs are allowed, but they have to be leashed corresponds with `dog=leashed` + - Dogs are allowed and can run around freely corresponds with `dog=unleashed` @@ -468,6 +470,8 @@ The question is Are dogs allowed in this business? +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -478,6 +482,8 @@ This tagrendering has no question and is thus read-only +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -488,6 +494,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/dogpark.md b/Docs/Layers/dogpark.md index bf316106d1..60f6eb4dea 100644 --- a/Docs/Layers/dogpark.md +++ b/Docs/Layers/dogpark.md @@ -77,8 +77,8 @@ The question is It this dog park fenced in? - - This dogpark is fenced all around corresponds with barrier=fence - - This dogpark is not fenced all around corresponds with barrier=no + - This dogpark is fenced all around corresponds with `barrier=fence` + - This dogpark is not fenced all around corresponds with `barrier=no` @@ -93,8 +93,8 @@ The question is Does this dog park have a separate fenced in area for small dog - - Have separate area for puppies and small dogs corresponds with small_dog=separate - - Does not have a separate area for puppies and small dogs corresponds with small_dog=shared + - Have separate area for puppies and small dogs corresponds with `small_dog=separate` + - Does not have a separate area for puppies and small dogs corresponds with `small_dog=shared` @@ -127,6 +127,8 @@ This tagrendering has no question and is thus read-only +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -137,6 +139,8 @@ This tagrendering has no question and is thus read-only +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/dogshop.md b/Docs/Layers/dogshop.md index eba6f30cae..879c8b385e 100644 --- a/Docs/Layers/dogshop.md +++ b/Docs/Layers/dogshop.md @@ -74,6 +74,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -108,166 +110,166 @@ This is rendered with This is a {shop} - - Farm Supply Shop corresponds with shop=agrarian - - Liquor Store corresponds with shop=alcohol - - Anime / Manga Shop corresponds with shop=anime - - Antiques Shop corresponds with shop=antiques - - Appliance Store corresponds with shop=appliance - - Art Store corresponds with shop=art - - Baby Goods Store corresponds with shop=baby_goods - - Bag/Luggage Store corresponds with shop=bag - - Bakery corresponds with shop=bakery - - Bathroom Furnishing Store corresponds with shop=bathroom_furnishing - - Beauty Shop corresponds with shop=beauty - - Bedding/Mattress Store corresponds with shop=bed - - Beverage Store corresponds with shop=beverages - - Bicycle Shop corresponds with shop=bicycle - - Boat Store corresponds with shop=boat - - Bookmaker corresponds with shop=bookmaker - - Book Store corresponds with shop=books - - Brewing Supply Store corresponds with shop=brewing_supplies - - Butcher corresponds with shop=butcher - - Camera Equipment Store corresponds with shop=camera - - Candle Shop corresponds with shop=candles - - Cannabis Shop corresponds with shop=cannabis - - Car Dealership corresponds with shop=car - - Car Parts Store corresponds with shop=car_parts - - Car Repair Shop corresponds with shop=car_repair - - RV Dealership corresponds with shop=caravan - - Carpet Store corresponds with shop=carpet - - Catalog Shop corresponds with shop=catalogue - - Charity Store corresponds with shop=charity - - Cheese Store corresponds with shop=cheese - - Drugstore corresponds with shop=chemist - - Chocolate Store corresponds with shop=chocolate - - Clothing Store corresponds with shop=clothes - - Coffee Store corresponds with shop=coffee - - Collectibles Shop corresponds with shop=collector - - Computer Store corresponds with shop=computer - - Candy Store corresponds with shop=confectionery - - Convenience Store corresponds with shop=convenience - - Copy Store corresponds with shop=copyshop - - Cosmetics Store corresponds with shop=cosmetics - - Country Store corresponds with shop=country_store - - Arts & Crafts Store corresponds with shop=craft - - Curtain Store corresponds with shop=curtain - - Dairy Store corresponds with shop=dairy - - Deli corresponds with shop=deli - - Department Store corresponds with shop=department_store - - DIY Store corresponds with shop=doityourself - - Door Shop corresponds with shop=doors - - Dry Cleaner corresponds with shop=dry_cleaning - - E-Cigarette Shop corresponds with shop=e-cigarette - - Electrical Equipment Store corresponds with shop=electrical - - Electronics Store corresponds with shop=electronics - - Erotic Store corresponds with shop=erotic - - Fabric Store corresponds with shop=fabric - - Produce Stand corresponds with shop=farm - - Fashion Accessories Store corresponds with shop=fashion_accessories - - Fireplace Store corresponds with shop=fireplace - - Fishing Shop corresponds with shop=fishing - - Flooring Supply Shop corresponds with shop=flooring - - Florist corresponds with shop=florist - - Framing Shop corresponds with shop=frame - - Frozen Food Store corresponds with shop=frozen_food - - Fuel Shop corresponds with shop=fuel - - Funeral Home corresponds with shop=funeral_directors - - Furniture Store corresponds with shop=furniture - - Tabletop Game Store corresponds with shop=games - - Garden Center corresponds with shop=garden_centre - - Bottled Gas Shop corresponds with shop=gas - - General Store corresponds with shop=general - - Gift Shop corresponds with shop=gift - - Greengrocer corresponds with shop=greengrocer - - Hairdresser corresponds with shop=hairdresser - - Hairdresser Supply Store corresponds with shop=hairdresser_supply - - Hardware Store corresponds with shop=hardware - - Health Food Shop corresponds with shop=health_food - - Hearing Aids Store corresponds with shop=hearing_aids - - Herbalist corresponds with shop=herbalist - - Hifi Store corresponds with shop=hifi - - Hobby Shop corresponds with shop=hobby - - Household Linen Shop corresponds with shop=household_linen - - Houseware Store corresponds with shop=houseware - - Hunting Shop corresponds with shop=hunting - - Interior Decoration Store corresponds with shop=interior_decoration - - Jewelry Store corresponds with shop=jewelry - - Kiosk corresponds with shop=kiosk - - Kitchen Design Store corresponds with shop=kitchen - - Laundry corresponds with shop=laundry - - Leather Store corresponds with shop=leather - - Lighting Store corresponds with shop=lighting - - Locksmith corresponds with shop=locksmith - - Lottery Shop corresponds with shop=lottery - - Mall corresponds with shop=mall - - Massage Shop corresponds with shop=massage - - Medical Supply Store corresponds with shop=medical_supply - - Military Surplus Store corresponds with shop=military_surplus - - Mobile Phone Store corresponds with shop=mobile_phone - - Model Shop corresponds with shop=model - - Money Lender corresponds with shop=money_lender - - Motorcycle Dealership corresponds with shop=motorcycle - - Motorcycle Repair Shop corresponds with shop=motorcycle_repair - - Music Store corresponds with shop=music - - Musical Instrument Store corresponds with shop=musical_instrument - - Newspaper/Magazine Shop corresponds with shop=newsagent - - Nutrition Supplements Store corresponds with shop=nutrition_supplements - - Optician corresponds with shop=optician - - Outdoors Store corresponds with shop=outdoor - - Online Retailer Outpost corresponds with shop=outpost - - Paint Store corresponds with shop=paint - - Party Supply Store corresponds with shop=party - - Pastry Shop corresponds with shop=pastry - - Pawn Shop corresponds with shop=pawnbroker - - Perfume Store corresponds with shop=perfumery - - Pet Store corresponds with shop=pet - - Pet Grooming Store corresponds with shop=pet_grooming - - Photography Store corresponds with shop=photo - - Pottery Store corresponds with shop=pottery - - Printer Ink Store corresponds with shop=printer_ink - - Psychic corresponds with shop=psychic - - Fireworks Store corresponds with shop=pyrotechnics - - Radio/Electronic Component Store corresponds with shop=radiotechnics - - Religious Store corresponds with shop=religion - - Rental Shop corresponds with shop=rental - - Repair Shop corresponds with shop=repair - - Scuba Diving Shop corresponds with shop=scuba_diving - - Seafood Shop corresponds with shop=seafood - - Consignment/Thrift Store corresponds with shop=second_hand - - Sewing Supply Shop corresponds with shop=sewing - - Shoe Repair Shop corresponds with shop=shoe_repair - - Shoe Store corresponds with shop=shoes - - Spice Shop corresponds with shop=spices - - Sporting Goods Store corresponds with shop=sports - - Stationery Store corresponds with shop=stationery - - Storage Rental corresponds with shop=storage_rental - - Supermarket corresponds with shop=supermarket - - Pool Supply Store corresponds with shop=swimming_pool - - Tailor corresponds with shop=tailor - - Tattoo Parlor corresponds with shop=tattoo - - Tea Store corresponds with shop=tea - - Telecom Retail Store corresponds with shop=telecommunication - - Ticket Seller corresponds with shop=ticket - - Tile Shop corresponds with shop=tiles - - Tobacco Shop corresponds with shop=tobacco - - Tool Rental corresponds with shop=tool_hire - - Toy Store corresponds with shop=toys - - Trade Shop corresponds with shop=trade - - Travel Agency corresponds with shop=travel_agency - - Trophy Shop corresponds with shop=trophy - - Tire Store corresponds with shop=tyres - - Vacuum Cleaner Store corresponds with shop=vacuum_cleaner - - Variety Store corresponds with shop=variety_store - - Video Store corresponds with shop=video - - Video Game Store corresponds with shop=video_games - - Watches Shop corresponds with shop=watches - - Drinking Water Shop corresponds with shop=water - - Watersport/Swim Shop corresponds with shop=water_sports - - Weapon Shop corresponds with shop=weapons - - Wholesale Store corresponds with shop=wholesale - - Wig Shop corresponds with shop=wigs - - Window Blind Store corresponds with shop=window_blind - - Wine Shop corresponds with shop=wine + - Farm Supply Shop corresponds with `shop=agrarian` + - Liquor Store corresponds with `shop=alcohol` + - Anime / Manga Shop corresponds with `shop=anime` + - Antiques Shop corresponds with `shop=antiques` + - Appliance Store corresponds with `shop=appliance` + - Art Store corresponds with `shop=art` + - Baby Goods Store corresponds with `shop=baby_goods` + - Bag/Luggage Store corresponds with `shop=bag` + - Bakery corresponds with `shop=bakery` + - Bathroom Furnishing Store corresponds with `shop=bathroom_furnishing` + - Beauty Shop corresponds with `shop=beauty` + - Bedding/Mattress Store corresponds with `shop=bed` + - Beverage Store corresponds with `shop=beverages` + - Bicycle Shop corresponds with `shop=bicycle` + - Boat Store corresponds with `shop=boat` + - Bookmaker corresponds with `shop=bookmaker` + - Book Store corresponds with `shop=books` + - Brewing Supply Store corresponds with `shop=brewing_supplies` + - Butcher corresponds with `shop=butcher` + - Camera Equipment Store corresponds with `shop=camera` + - Candle Shop corresponds with `shop=candles` + - Cannabis Shop corresponds with `shop=cannabis` + - Car Dealership corresponds with `shop=car` + - Car Parts Store corresponds with `shop=car_parts` + - Car Repair Shop corresponds with `shop=car_repair` + - RV Dealership corresponds with `shop=caravan` + - Carpet Store corresponds with `shop=carpet` + - Catalog Shop corresponds with `shop=catalogue` + - Charity Store corresponds with `shop=charity` + - Cheese Store corresponds with `shop=cheese` + - Drugstore corresponds with `shop=chemist` + - Chocolate Store corresponds with `shop=chocolate` + - Clothing Store corresponds with `shop=clothes` + - Coffee Store corresponds with `shop=coffee` + - Collectibles Shop corresponds with `shop=collector` + - Computer Store corresponds with `shop=computer` + - Candy Store corresponds with `shop=confectionery` + - Convenience Store corresponds with `shop=convenience` + - Copy Store corresponds with `shop=copyshop` + - Cosmetics Store corresponds with `shop=cosmetics` + - Country Store corresponds with `shop=country_store` + - Arts & Crafts Store corresponds with `shop=craft` + - Curtain Store corresponds with `shop=curtain` + - Dairy Store corresponds with `shop=dairy` + - Deli corresponds with `shop=deli` + - Department Store corresponds with `shop=department_store` + - DIY Store corresponds with `shop=doityourself` + - Door Shop corresponds with `shop=doors` + - Dry Cleaner corresponds with `shop=dry_cleaning` + - E-Cigarette Shop corresponds with `shop=e-cigarette` + - Electrical Equipment Store corresponds with `shop=electrical` + - Electronics Store corresponds with `shop=electronics` + - Erotic Store corresponds with `shop=erotic` + - Fabric Store corresponds with `shop=fabric` + - Produce Stand corresponds with `shop=farm` + - Fashion Accessories Store corresponds with `shop=fashion_accessories` + - Fireplace Store corresponds with `shop=fireplace` + - Fishing Shop corresponds with `shop=fishing` + - Flooring Supply Shop corresponds with `shop=flooring` + - Florist corresponds with `shop=florist` + - Framing Shop corresponds with `shop=frame` + - Frozen Food Store corresponds with `shop=frozen_food` + - Fuel Shop corresponds with `shop=fuel` + - Funeral Home corresponds with `shop=funeral_directors` + - Furniture Store corresponds with `shop=furniture` + - Tabletop Game Store corresponds with `shop=games` + - Garden Center corresponds with `shop=garden_centre` + - Bottled Gas Shop corresponds with `shop=gas` + - General Store corresponds with `shop=general` + - Gift Shop corresponds with `shop=gift` + - Greengrocer corresponds with `shop=greengrocer` + - Hairdresser corresponds with `shop=hairdresser` + - Hairdresser Supply Store corresponds with `shop=hairdresser_supply` + - Hardware Store corresponds with `shop=hardware` + - Health Food Shop corresponds with `shop=health_food` + - Hearing Aids Store corresponds with `shop=hearing_aids` + - Herbalist corresponds with `shop=herbalist` + - Hifi Store corresponds with `shop=hifi` + - Hobby Shop corresponds with `shop=hobby` + - Household Linen Shop corresponds with `shop=household_linen` + - Houseware Store corresponds with `shop=houseware` + - Hunting Shop corresponds with `shop=hunting` + - Interior Decoration Store corresponds with `shop=interior_decoration` + - Jewelry Store corresponds with `shop=jewelry` + - Kiosk corresponds with `shop=kiosk` + - Kitchen Design Store corresponds with `shop=kitchen` + - Laundry corresponds with `shop=laundry` + - Leather Store corresponds with `shop=leather` + - Lighting Store corresponds with `shop=lighting` + - Locksmith corresponds with `shop=locksmith` + - Lottery Shop corresponds with `shop=lottery` + - Mall corresponds with `shop=mall` + - Massage Shop corresponds with `shop=massage` + - Medical Supply Store corresponds with `shop=medical_supply` + - Military Surplus Store corresponds with `shop=military_surplus` + - Mobile Phone Store corresponds with `shop=mobile_phone` + - Model Shop corresponds with `shop=model` + - Money Lender corresponds with `shop=money_lender` + - Motorcycle Dealership corresponds with `shop=motorcycle` + - Motorcycle Repair Shop corresponds with `shop=motorcycle_repair` + - Music Store corresponds with `shop=music` + - Musical Instrument Store corresponds with `shop=musical_instrument` + - Newspaper/Magazine Shop corresponds with `shop=newsagent` + - Nutrition Supplements Store corresponds with `shop=nutrition_supplements` + - Optician corresponds with `shop=optician` + - Outdoors Store corresponds with `shop=outdoor` + - Online Retailer Outpost corresponds with `shop=outpost` + - Paint Store corresponds with `shop=paint` + - Party Supply Store corresponds with `shop=party` + - Pastry Shop corresponds with `shop=pastry` + - Pawn Shop corresponds with `shop=pawnbroker` + - Perfume Store corresponds with `shop=perfumery` + - Pet Store corresponds with `shop=pet` + - Pet Grooming Store corresponds with `shop=pet_grooming` + - Photography Store corresponds with `shop=photo` + - Pottery Store corresponds with `shop=pottery` + - Printer Ink Store corresponds with `shop=printer_ink` + - Psychic corresponds with `shop=psychic` + - Fireworks Store corresponds with `shop=pyrotechnics` + - Radio/Electronic Component Store corresponds with `shop=radiotechnics` + - Religious Store corresponds with `shop=religion` + - Rental Shop corresponds with `shop=rental` + - Repair Shop corresponds with `shop=repair` + - Scuba Diving Shop corresponds with `shop=scuba_diving` + - Seafood Shop corresponds with `shop=seafood` + - Consignment/Thrift Store corresponds with `shop=second_hand` + - Sewing Supply Shop corresponds with `shop=sewing` + - Shoe Repair Shop corresponds with `shop=shoe_repair` + - Shoe Store corresponds with `shop=shoes` + - Spice Shop corresponds with `shop=spices` + - Sporting Goods Store corresponds with `shop=sports` + - Stationery Store corresponds with `shop=stationery` + - Storage Rental corresponds with `shop=storage_rental` + - Supermarket corresponds with `shop=supermarket` + - Pool Supply Store corresponds with `shop=swimming_pool` + - Tailor corresponds with `shop=tailor` + - Tattoo Parlor corresponds with `shop=tattoo` + - Tea Store corresponds with `shop=tea` + - Telecom Retail Store corresponds with `shop=telecommunication` + - Ticket Seller corresponds with `shop=ticket` + - Tile Shop corresponds with `shop=tiles` + - Tobacco Shop corresponds with `shop=tobacco` + - Tool Rental corresponds with `shop=tool_hire` + - Toy Store corresponds with `shop=toys` + - Trade Shop corresponds with `shop=trade` + - Travel Agency corresponds with `shop=travel_agency` + - Trophy Shop corresponds with `shop=trophy` + - Tire Store corresponds with `shop=tyres` + - Vacuum Cleaner Store corresponds with `shop=vacuum_cleaner` + - Variety Store corresponds with `shop=variety_store` + - Video Store corresponds with `shop=video` + - Video Game Store corresponds with `shop=video_games` + - Watches Shop corresponds with `shop=watches` + - Drinking Water Shop corresponds with `shop=water` + - Watersport/Swim Shop corresponds with `shop=water_sports` + - Weapon Shop corresponds with `shop=weapons` + - Wholesale Store corresponds with `shop=wholesale` + - Wig Shop corresponds with `shop=wigs` + - Window Blind Store corresponds with `shop=window_blind` + - Wine Shop corresponds with `shop=wine` Only visible if `id~^..*$` is shown @@ -302,7 +304,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -322,7 +324,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -342,7 +344,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -358,9 +360,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -376,15 +378,15 @@ The question is What paper formats does this shop offer? - - This shop can print on papers of size A4 corresponds with service:print:A4=yes + - This shop can print on papers of size A4 corresponds with `service:print:A4=yes` - Unselecting this answer will add service:print:A4=no - - This shop can print on papers of size A3 corresponds with service:print:A3=yes + - This shop can print on papers of size A3 corresponds with `service:print:A3=yes` - Unselecting this answer will add service:print:A3=no - - This shop can print on papers of size A2 corresponds with service:print:A2=yes + - This shop can print on papers of size A2 corresponds with `service:print:A2=yes` - Unselecting this answer will add service:print:A2=no - - This shop can print on papers of size A1 corresponds with service:print:A1=yes + - This shop can print on papers of size A1 corresponds with `service:print:A1=yes` - Unselecting this answer will add service:print:A1=no - - This shop can print on papers of size A0 corresponds with service:print:A0=yes + - This shop can print on papers of size A0 corresponds with `service:print:A0=yes` - Unselecting this answer will add service:print:A0=no @@ -406,6 +408,8 @@ This tagrendering has no question and is thus read-only +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -416,6 +420,8 @@ This tagrendering has no question and is thus read-only +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -426,6 +432,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/drinking_water.md b/Docs/Layers/drinking_water.md index b21731a3ca..60ec3a5782 100644 --- a/Docs/Layers/drinking_water.md +++ b/Docs/Layers/drinking_water.md @@ -76,6 +76,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -96,9 +98,9 @@ This is rendered with The operational status is {operational_status} - - This drinking water works corresponds with - - This drinking water is broken corresponds with operational_status=broken - - This drinking water is closed corresponds with operational_status=closed + - This drinking water works corresponds with `` + - This drinking water is broken corresponds with `operational_status=broken` + - This drinking water is closed corresponds with `operational_status=closed` @@ -113,8 +115,8 @@ The question is How easy is it to fill water bottles? - - It is easy to refill water bottles corresponds with bottle=yes - - Water bottles may not fit corresponds with bottle=no + - It is easy to refill water bottles corresponds with `bottle=yes` + - Water bottles may not fit corresponds with `bottle=no` diff --git a/Docs/Layers/dumpstations.md b/Docs/Layers/dumpstations.md index 1ef0ba472c..f3a57f9e7b 100644 --- a/Docs/Layers/dumpstations.md +++ b/Docs/Layers/dumpstations.md @@ -77,6 +77,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -93,8 +95,8 @@ The question is Does this place charge a fee? - - You need to pay for use corresponds with fee=yes - - Can be used for free corresponds with fee=no + - You need to pay for use corresponds with `fee=yes` + - Can be used for free corresponds with `fee=no` @@ -125,8 +127,8 @@ The question is Does this place have a water point? - - This place has a water point corresponds with water_point=yes - - This place does not have a water point corresponds with water_point=no + - This place has a water point corresponds with `water_point=yes` + - This place does not have a water point corresponds with `water_point=no` @@ -141,8 +143,8 @@ The question is Can you dispose of grey water here? - - You can dispose of grey water here corresponds with sanitary_dump_station:grey_water=yes - - You cannot dispose of gray water here corresponds with sanitary_dump_station:grey_water=no + - You can dispose of grey water here corresponds with `sanitary_dump_station:grey_water=yes` + - You cannot dispose of gray water here corresponds with `sanitary_dump_station:grey_water=no` @@ -157,8 +159,8 @@ The question is Can you dispose of chemical toilet waste here? - - You can dispose of chemical toilet waste here corresponds with sanitary_dump_station:chemical_toilet=yes - - You cannot dispose of chemical toilet waste here corresponds with sanitary_dump_station:chemical_toilet=no + - You can dispose of chemical toilet waste here corresponds with `sanitary_dump_station:chemical_toilet=yes` + - You cannot dispose of chemical toilet waste here corresponds with `sanitary_dump_station:chemical_toilet=no` @@ -173,11 +175,11 @@ The question is Who can use this dump station? - - You need a network key/code to use this corresponds with access=network - - You need to be a customer of camping/campersite to use this place corresponds with access=customers - - Anyone can use this dump station corresponds with access=public + - You need a network key/code to use this corresponds with `access=network` + - You need to be a customer of camping/campersite to use this place corresponds with `access=customers` + - Anyone can use this dump station corresponds with `access=public` - This option cannot be chosen as answer - - Anyone can use this dump station corresponds with access=yes + - Anyone can use this dump station corresponds with `access=yes` @@ -220,8 +222,8 @@ The question is Does this place have a power supply? - - This place has a power supply corresponds with power_supply=yes - - This place does not have power supply corresponds with power_supply=no + - This place has a power supply corresponds with `power_supply=yes` + - This place does not have power supply corresponds with `power_supply=no` @@ -230,6 +232,8 @@ The question is Does this place have a power supply? +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -240,6 +244,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/education_institutions_without_etymology.md b/Docs/Layers/education_institutions_without_etymology.md index 5a3bb40535..6068dd2142 100644 --- a/Docs/Layers/education_institutions_without_etymology.md +++ b/Docs/Layers/education_institutions_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/elevator.md b/Docs/Layers/elevator.md new file mode 100644 index 0000000000..42dd265890 --- /dev/null +++ b/Docs/Layers/elevator.md @@ -0,0 +1,149 @@ + + + elevator +========== + + + + + +This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information + + + + + + + - This layer is shown at zoomlevel **13** and higher + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - highway=elevator + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22highway%22%3D%22elevator%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/operational_status#values) [operational_status](https://wiki.openstreetmap.org/wiki/Key:operational_status) | Multiple choice | [broken](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dbroken) [closed](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dclosed) [ok](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dok) +[](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | +[](https://taginfo.openstreetmap.org/keys/elevator:width#values) [elevator:width](https://wiki.openstreetmap.org/wiki/Key:elevator:width) | [pfloat](../SpecialInputElements.md#pfloat) | +[](https://taginfo.openstreetmap.org/keys/elevator:depth#values) [elevator:depth](https://wiki.openstreetmap.org/wiki/Key:elevator:depth) | [pfloat](../SpecialInputElements.md#pfloat) | +[](https://taginfo.openstreetmap.org/keys/hearing_loop#values) [hearing_loop](https://wiki.openstreetmap.org/wiki/Key:hearing_loop) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dno) + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### operational_status + + + +The question is Does this elevator work? + + + + + + - This elevator is broken corresponds with `operational_status=broken` + - This elevator is closed e.g. because renovation works are going on corresponds with `operational_status=closed` + - This elevator works corresponds with `operational_status=ok` + - This elevator works corresponds with `` + - This option cannot be chosen as answer + + + + +### door-width + + + +The question is What is the width of this elevator's entrance? + +This rendering asks information about the property [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) + +This is rendered with This elevator's doors have a width of {canonical(door:width)} + + + + + +### elevator-width + + + +The question is What is the width of this elevator? + +This rendering asks information about the property [elevator:width](https://wiki.openstreetmap.org/wiki/Key:elevator:width) + +This is rendered with This elevator has a width of {canonical(elevator:width)} + + + + + +### elevator-depth + + + +The question is What is the depth of this elevator? + +This rendering asks information about the property [elevator:depth](https://wiki.openstreetmap.org/wiki/Key:elevator:depth) + +This is rendered with This elevator has a depth of {canonical(elevator:depth)} + + + + + +### induction-loop + + + +An accessibility feature: induction loops are for hard-hearing persons which have an FM-receiver. + +The question is Does this place have an audio induction loop for people with reduced hearing? + + + + + + - This place has an audio induction loop corresponds with `hearing_loop=yes` + - This place does not has an audio induction loop corresponds with `hearing_loop=no` + + +This document is autogenerated from [assets/layers/elevator/elevator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/elevator/elevator.json) \ No newline at end of file diff --git a/Docs/Layers/entrance.md b/Docs/Layers/entrance.md index c9bc3acd99..06143998a8 100644 --- a/Docs/Layers/entrance.md +++ b/Docs/Layers/entrance.md @@ -30,7 +30,6 @@ A layer showing entrances and offering capabilities to survey some advanced data - [entrances](https://mapcomplete.osm.be/entrances) - [personal](https://mapcomplete.osm.be/personal) - - [walls_and_buildings](https://mapcomplete.osm.be/walls_and_buildings) @@ -67,7 +66,8 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/entrance#values) [entrance](https://wiki.openstreetmap.org/wiki/Key:entrance) | Multiple choice | [](https://wiki.openstreetmap.org/wiki/Tag:entrance%3D) [main](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dmain) [secondary](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dsecondary) [service](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dservice) [exit](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dexit) [entrance](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dentrance) [emergency](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Demergency) [home](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dhome) [](https://taginfo.openstreetmap.org/keys/door#values) [door](https://wiki.openstreetmap.org/wiki/Key:door) | Multiple choice | [hinged](https://wiki.openstreetmap.org/wiki/Tag:door%3Dhinged) [revolving](https://wiki.openstreetmap.org/wiki/Tag:door%3Drevolving) [sliding](https://wiki.openstreetmap.org/wiki/Tag:door%3Dsliding) [overhead](https://wiki.openstreetmap.org/wiki/Tag:door%3Doverhead) [no](https://wiki.openstreetmap.org/wiki/Tag:door%3Dno) [](https://taginfo.openstreetmap.org/keys/automatic_door#values) [automatic_door](https://wiki.openstreetmap.org/wiki/Key:automatic_door) | Multiple choice | [no](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dno) [motion](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dmotion) [floor](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dfloor) [button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dbutton) [slowdown_button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dslowdown_button) [continuous](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dcontinuous) [serviced_on_button_press](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_button_press) [serviced_on_request](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_request) -[](https://taginfo.openstreetmap.org/keys/width#values) [width](https://wiki.openstreetmap.org/wiki/Key:width) | [distance](../SpecialInputElements.md#distance) | +[](https://taginfo.openstreetmap.org/keys/width#values) [width](https://wiki.openstreetmap.org/wiki/Key:width) | [string](../SpecialInputElements.md#string) | +[](https://taginfo.openstreetmap.org/keys/kerb:height#values) [kerb:height](https://wiki.openstreetmap.org/wiki/Key:kerb:height) | [pnat](../SpecialInputElements.md#pnat) | [0](https://wiki.openstreetmap.org/wiki/Tag:kerb:height%3D0) @@ -76,6 +76,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -92,16 +94,16 @@ The question is What type of entrance is this? - - No specific entrance type is known corresponds with entrance=yes + - No specific entrance type is known corresponds with `entrance=yes` - This option cannot be chosen as answer - - This is an indoor door, separating a room or a corridor within a single building corresponds with indoor=door - - This is the main entrance corresponds with entrance=main - - This is a secondary entrance corresponds with entrance=secondary - - This is a service entrance - normally only used for employees, delivery, … corresponds with entrance=service - - This is an exit where one can not enter corresponds with entrance=exit - - This is an entrance where one can only enter (but not exit) corresponds with entrance=entrance - - This is emergency exit corresponds with entrance=emergency - - This is the entrance to a private home corresponds with entrance=home + - This is an indoor door, separating a room or a corridor within a single building corresponds with `indoor=door` + - This is the main entrance corresponds with `entrance=main` + - This is a secondary entrance corresponds with `entrance=secondary` + - This is a service entrance - normally only used for employees, delivery, … corresponds with `entrance=service` + - This is an exit where one can not enter corresponds with `entrance=exit` + - This is an entrance where one can only enter (but not exit) corresponds with `entrance=entrance` + - This is emergency exit corresponds with `entrance=emergency` + - This is the entrance to a private home corresponds with `entrance=home` @@ -116,13 +118,13 @@ The question is What is the type of this door?
Wether - - The door type is not known corresponds with door=yes + - The door type is not known corresponds with `door=yes` - This option cannot be chosen as answer - - A classical, hinged door supported by joints corresponds with door=hinged - - A revolving door which hangs on a central shaft, rotating within a cylindrical enclosure corresponds with door=revolving - - A sliding door where the door slides sidewards, typically parallel with a wall corresponds with door=sliding - - A door which rolls from overhead, typically seen for garages corresponds with door=overhead - - This is an entrance without a physical door corresponds with door=no + - A classical, hinged door supported by joints corresponds with `door=hinged` + - A revolving door which hangs on a central shaft, rotating within a cylindrical enclosure corresponds with `door=revolving` + - A sliding door where the door slides sidewards, typically parallel with a wall corresponds with `door=sliding` + - A door which rolls from overhead, typically seen for garages corresponds with `door=overhead` + - This is an entrance without a physical door corresponds with `door=no` @@ -137,16 +139,16 @@ The question is Is this door automated? - - This is an automatic door corresponds with automatic_door=yes + - This is an automatic door corresponds with `automatic_door=yes` - This option cannot be chosen as answer - - This door is not automated corresponds with automatic_door=no - - This door will open automatically when motion is detected corresponds with automatic_door=motion - - This door will open automatically when a sensor in the floor is triggered corresponds with automatic_door=floor - - This door will open automatically when a button is pressed corresponds with automatic_door=button - - This door revolves automatically all the time, but has a button to slow it down, e.g. for wheelchair users corresponds with automatic_door=slowdown_button - - This door revolves automatically all the time corresponds with automatic_door=continuous - - This door will be opened by staff when requested by pressing a button corresponds with automatic_door=serviced_on_button_press - - This door will be opened by staff when requested corresponds with automatic_door=serviced_on_request + - This door is not automated corresponds with `automatic_door=no` + - This door will open automatically when motion is detected corresponds with `automatic_door=motion` + - This door will open automatically when a sensor in the floor is triggered corresponds with `automatic_door=floor` + - This door will open automatically when a button is pressed corresponds with `automatic_door=button` + - This door revolves automatically all the time, but has a button to slow it down, e.g. for wheelchair users corresponds with `automatic_door=slowdown_button` + - This door revolves automatically all the time corresponds with `automatic_door=continuous` + - This door will be opened by staff when requested by pressing a button corresponds with `automatic_door=serviced_on_button_press` + - This door will be opened by staff when requested corresponds with `automatic_door=serviced_on_request` @@ -161,6 +163,25 @@ This rendering asks information about the property [width](https://wiki.openstr This is rendered with This door has a width of {canonical(width)} meter + + + + +### kerb-height + + + +The question is What is the height of this kerb? + +This rendering asks information about the property [kerb:height](https://wiki.openstreetmap.org/wiki/Key:kerb:height) + +This is rendered with The kerb height of this door is {kerb:height} + + + + + + - This door does not have a kerb corresponds with `kerb:height=0` This document is autogenerated from [assets/layers/entrance/entrance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/entrance/entrance.json) \ No newline at end of file diff --git a/Docs/Layers/etymology.md b/Docs/Layers/etymology.md index f19e76d945..9e08edd96d 100644 --- a/Docs/Layers/etymology.md +++ b/Docs/Layers/etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/extinguisher.md b/Docs/Layers/extinguisher.md index 92b65cc008..cb5c81a156 100644 --- a/Docs/Layers/extinguisher.md +++ b/Docs/Layers/extinguisher.md @@ -79,8 +79,8 @@ This is rendered with Location: {location} - - Found indoors. corresponds with location=indoor - - Found outdoors. corresponds with location=outdoor + - Found indoors. corresponds with `location=indoor` + - Found outdoors. corresponds with `location=outdoor` @@ -89,6 +89,8 @@ This is rendered with Location: {location} +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/facadegardens.md b/Docs/Layers/facadegardens.md index 3a1548cda5..f43d47b7c0 100644 --- a/Docs/Layers/facadegardens.md +++ b/Docs/Layers/facadegardens.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -105,9 +107,9 @@ The question is Is the garden shaded or sunny? - - The garden is in full sun corresponds with direct_sunlight=yes - - The garden is in partial shade corresponds with direct_sunlight=partial - - The garden is in the shade corresponds with direct_sunlight=no + - The garden is in full sun corresponds with `direct_sunlight=yes` + - The garden is in partial shade corresponds with `direct_sunlight=partial` + - The garden is in the shade corresponds with `direct_sunlight=no` @@ -122,8 +124,8 @@ The question is Is there a water barrel installed for the garden? - - There is a rain barrel corresponds with rain_barrel=yes - - There is no rain barrel corresponds with rain_barrel=no + - There is a rain barrel corresponds with `rain_barrel=yes` + - There is no rain barrel corresponds with `rain_barrel=no` @@ -152,8 +154,8 @@ The question is Are there any edible plants? - - There are edible plants corresponds with edible=yes - - There are no edible plants corresponds with edible=no + - There are edible plants corresponds with `edible=yes` + - There are no edible plants corresponds with `edible=no` @@ -168,10 +170,10 @@ The question is What kinds of plants grow here? - - There are vines corresponds with plant=vine - - There are flowering plants corresponds with plant=flower - - There are shrubs corresponds with plant=shrub - - There are groundcovering plants corresponds with plant=groundcover + - There are vines corresponds with `plant=vine` + - There are flowering plants corresponds with `plant=flower` + - There are shrubs corresponds with `plant=shrub` + - There are groundcovering plants corresponds with `plant=groundcover` @@ -194,6 +196,8 @@ This is rendered with More details: {description} +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -204,6 +208,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/fietsstraat.md b/Docs/Layers/fietsstraat.md index 0b036fd9b9..e8f4bec0b4 100644 --- a/Docs/Layers/fietsstraat.md +++ b/Docs/Layers/fietsstraat.md @@ -69,6 +69,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -85,10 +87,10 @@ The question is Is the street {name} a cyclestreet? - - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no - - This street is a cyclestreet corresponds with cyclestreet=yes - - This street will become a cyclstreet soon corresponds with proposed:cyclestreet=yes - - This street is not a cyclestreet corresponds with + - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no` + - This street is a cyclestreet corresponds with `cyclestreet=yes` + - This street will become a cyclstreet soon corresponds with `proposed:cyclestreet=yes` + - This street is not a cyclestreet corresponds with `` @@ -113,6 +115,8 @@ Only visible if `proposed:cyclestreet=yes` is shown +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -123,6 +127,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/fire_station.md b/Docs/Layers/fire_station.md index 0050d9a9b1..6fc4a60eb2 100644 --- a/Docs/Layers/fire_station.md +++ b/Docs/Layers/fire_station.md @@ -125,7 +125,7 @@ This is rendered with This station is operated by {operator}. - - Bureau of Fire Protection corresponds with operator=Bureau of Fire Protection&operator:type=government + - Bureau of Fire Protection corresponds with `operator=Bureau of Fire Protection&operator:type=government` @@ -144,10 +144,10 @@ This is rendered with The operator is a(n) {operator:type} entity. - - The station is operated by the government. corresponds with operator:type=government - - The station is operated by a community-based, or informal organization. corresponds with operator:type=community - - The station is operated by a formal group of volunteers. corresponds with operator:type=ngo - - The station is privately operated. corresponds with operator:type=private + - The station is operated by the government. corresponds with `operator:type=government` + - The station is operated by a community-based, or informal organization. corresponds with `operator:type=community` + - The station is operated by a formal group of volunteers. corresponds with `operator:type=ngo` + - The station is privately operated. corresponds with `operator:type=private` @@ -156,6 +156,8 @@ This is rendered with The operator is a(n) {operator:type} entity. +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/food.md b/Docs/Layers/food.md index 296ec9c6ad..9710404a1b 100644 --- a/Docs/Layers/food.md +++ b/Docs/Layers/food.md @@ -89,6 +89,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -119,8 +121,8 @@ The question is What type of business is this? - - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with amenity=fast_food - - A restaurant, focused on creating a nice experience where one is served at the table corresponds with amenity=restaurant + - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with `amenity=fast_food` + - A restaurant, focused on creating a nice experience where one is served at the table corresponds with `amenity=restaurant` @@ -153,7 +155,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -173,7 +175,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -193,7 +195,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -209,9 +211,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -227,10 +229,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -249,21 +251,21 @@ This is rendered with This place mostly serves {cuisine} - - This is a pizzeria corresponds with cuisine=pizza - - This is a friture corresponds with cuisine=friture - - Mainly serves pasta corresponds with cuisine=pasta - - This is kebab shop corresponds with cuisine=kebab - - This is a sandwichbar corresponds with cuisine=sandwich - - Burgers are served here corresponds with cuisine=burger - - Sushi is served here corresponds with cuisine=sushi - - Coffee is served here corresponds with cuisine=coffee - - This is an italian restaurant (which serves more then pasta and pizza) corresponds with cuisine=italian - - French dishes are served here corresponds with cuisine=french - - Chinese dishes are served here corresponds with cuisine=chinese - - Greek dishes are served here corresponds with cuisine=greek - - Indian dishes are served here corresponds with cuisine=indian - - Turkish dishes are served here corresponds with cuisine=turkish - - Thai dishes are served here corresponds with cuisine=thai + - This is a pizzeria corresponds with `cuisine=pizza` + - This is a friture corresponds with `cuisine=friture` + - Mainly serves pasta corresponds with `cuisine=pasta` + - This is kebab shop corresponds with `cuisine=kebab` + - This is a sandwichbar corresponds with `cuisine=sandwich` + - Burgers are served here corresponds with `cuisine=burger` + - Sushi is served here corresponds with `cuisine=sushi` + - Coffee is served here corresponds with `cuisine=coffee` + - This is an italian restaurant (which serves more then pasta and pizza) corresponds with `cuisine=italian` + - French dishes are served here corresponds with `cuisine=french` + - Chinese dishes are served here corresponds with `cuisine=chinese` + - Greek dishes are served here corresponds with `cuisine=greek` + - Indian dishes are served here corresponds with `cuisine=indian` + - Turkish dishes are served here corresponds with `cuisine=turkish` + - Thai dishes are served here corresponds with `cuisine=thai` @@ -278,9 +280,9 @@ The question is Does this place offer take-away? - - This is a take-away only business corresponds with takeaway=only - - Take-away is possible here corresponds with takeaway=yes - - Take-away is not possible here corresponds with takeaway=no + - This is a take-away only business corresponds with `takeaway=only` + - Take-away is possible here corresponds with `takeaway=yes` + - Take-away is not possible here corresponds with `takeaway=no` @@ -295,8 +297,8 @@ The question is Delivers {title()} their food at home? - - This business does home delivery (eventually via a third party) corresponds with delivery=yes - - This business does not deliver at home corresponds with delivery=no + - This business does home delivery (eventually via a third party) corresponds with `delivery=yes` + - This business does not deliver at home corresponds with `delivery=no` @@ -311,10 +313,10 @@ The question is Does this restaurant have a vegetarian option? - - No vegetarian options are available corresponds with diet:vegetarian=no - - Some vegetarian options are available corresponds with diet:vegetarian=limited - - Vegetarian options are available corresponds with diet:vegetarian=yes - - All dishes are vegetarian corresponds with diet:vegetarian=only + - No vegetarian options are available corresponds with `diet:vegetarian=no` + - Some vegetarian options are available corresponds with `diet:vegetarian=limited` + - Vegetarian options are available corresponds with `diet:vegetarian=yes` + - All dishes are vegetarian corresponds with `diet:vegetarian=only` @@ -329,10 +331,10 @@ The question is Does this business serve vegan meals? - - No vegan options available corresponds with diet:vegan=no - - Some vegan options are available corresponds with diet:vegan=limited - - Vegan options are available corresponds with diet:vegan=yes - - All dishes are vegan corresponds with diet:vegan=only + - No vegan options available corresponds with `diet:vegan=no` + - Some vegan options are available corresponds with `diet:vegan=limited` + - Vegan options are available corresponds with `diet:vegan=yes` + - All dishes are vegan corresponds with `diet:vegan=only` @@ -347,10 +349,10 @@ The question is Does this restaurant offer a halal menu? - - There are no halal options available corresponds with diet:halal=no - - There is a small halal menu corresponds with diet:halal=limited - - There is a halal menu corresponds with diet:halal=yes - - Only halal options are available corresponds with diet:halal=only + - There are no halal options available corresponds with `diet:halal=no` + - There is a small halal menu corresponds with `diet:halal=limited` + - There is a halal menu corresponds with `diet:halal=yes` + - Only halal options are available corresponds with `diet:halal=only` @@ -365,9 +367,9 @@ The question is Does this fries shop have vegetarian snacks? - - Vegetarian snacks are available corresponds with diet:vegetarian=yes - - Only a small selection of snacks are vegetarian corresponds with diet:vegetarian=limited - - No vegetarian snacks are available corresponds with diet:vegetarian=no + - Vegetarian snacks are available corresponds with `diet:vegetarian=yes` + - Only a small selection of snacks are vegetarian corresponds with `diet:vegetarian=limited` + - No vegetarian snacks are available corresponds with `diet:vegetarian=no` Only visible if `cuisine=friture` is shown @@ -384,9 +386,9 @@ The question is Does this fries shop have vegan snacks? - - Vegan snacks are available corresponds with diet:vegan=yes - - A small selection of vegan snacks are available corresponds with diet:vegan=limited - - No vegan snacks are available corresponds with diet:vegan=no + - Vegan snacks are available corresponds with `diet:vegan=yes` + - A small selection of vegan snacks are available corresponds with `diet:vegan=limited` + - No vegan snacks are available corresponds with `diet:vegan=no` Only visible if `cuisine=friture` is shown @@ -403,8 +405,8 @@ The question is Does this fries shop use vegetable or animal oil for cooking? - - The frying is done with vegetable oil corresponds with friture:oil=vegetable - - The frying is done with animal oil corresponds with friture:oil=animal + - The frying is done with vegetable oil corresponds with `friture:oil=vegetable` + - The frying is done with animal oil corresponds with `friture:oil=animal` Only visible if `cuisine=friture` is shown @@ -421,9 +423,9 @@ The question is If you bring your own container (such as a cooking pot and smal - - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with reusable_packaging:accept=yes - - Bringing your own container is not allowed corresponds with reusable_packaging:accept=no - - You must bring your own container to order here. corresponds with reusable_packaging:accept=only + - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with `reusable_packaging:accept=yes` + - Bringing your own container is not allowed corresponds with `reusable_packaging:accept=no` + - You must bring your own container to order here. corresponds with `reusable_packaging:accept=only` Only visible if `cuisine=friture` is shown @@ -440,10 +442,10 @@ The question is Does this amenity have electrical outlets, available to custome - - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=yes - - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=limited - - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with service:electricity=ask - - There are a no domestic sockets available to customers seated indoors corresponds with service:electricity=no + - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=yes` + - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=limited` + - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with `service:electricity=ask` + - There are a no domestic sockets available to customers seated indoors corresponds with `service:electricity=no` @@ -458,10 +460,10 @@ The question is Are dogs allowed in this business? - - Dogs are allowed corresponds with dog=yes - - Dogs are not allowed corresponds with dog=no - - Dogs are allowed, but they have to be leashed corresponds with dog=leashed - - Dogs are allowed and can run around freely corresponds with dog=unleashed + - Dogs are allowed corresponds with `dog=yes` + - Dogs are not allowed corresponds with `dog=no` + - Dogs are allowed, but they have to be leashed corresponds with `dog=leashed` + - Dogs are allowed and can run around freely corresponds with `dog=unleashed` @@ -470,6 +472,8 @@ The question is Are dogs allowed in this business? +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/friture.md b/Docs/Layers/friture.md index 705c219256..2f1ced6e31 100644 --- a/Docs/Layers/friture.md +++ b/Docs/Layers/friture.md @@ -87,6 +87,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -117,8 +119,8 @@ The question is What type of business is this? - - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with amenity=fast_food - - A restaurant, focused on creating a nice experience where one is served at the table corresponds with amenity=restaurant + - This is a fastfood-business, focused on fast service. If seating is available, these are rather limited and functional. corresponds with `amenity=fast_food` + - A restaurant, focused on creating a nice experience where one is served at the table corresponds with `amenity=restaurant` @@ -151,7 +153,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -171,7 +173,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -191,7 +193,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -207,9 +209,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -225,10 +227,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -247,21 +249,21 @@ This is rendered with This place mostly serves {cuisine} - - This is a pizzeria corresponds with cuisine=pizza - - This is a friture corresponds with cuisine=friture - - Mainly serves pasta corresponds with cuisine=pasta - - This is kebab shop corresponds with cuisine=kebab - - This is a sandwichbar corresponds with cuisine=sandwich - - Burgers are served here corresponds with cuisine=burger - - Sushi is served here corresponds with cuisine=sushi - - Coffee is served here corresponds with cuisine=coffee - - This is an italian restaurant (which serves more then pasta and pizza) corresponds with cuisine=italian - - French dishes are served here corresponds with cuisine=french - - Chinese dishes are served here corresponds with cuisine=chinese - - Greek dishes are served here corresponds with cuisine=greek - - Indian dishes are served here corresponds with cuisine=indian - - Turkish dishes are served here corresponds with cuisine=turkish - - Thai dishes are served here corresponds with cuisine=thai + - This is a pizzeria corresponds with `cuisine=pizza` + - This is a friture corresponds with `cuisine=friture` + - Mainly serves pasta corresponds with `cuisine=pasta` + - This is kebab shop corresponds with `cuisine=kebab` + - This is a sandwichbar corresponds with `cuisine=sandwich` + - Burgers are served here corresponds with `cuisine=burger` + - Sushi is served here corresponds with `cuisine=sushi` + - Coffee is served here corresponds with `cuisine=coffee` + - This is an italian restaurant (which serves more then pasta and pizza) corresponds with `cuisine=italian` + - French dishes are served here corresponds with `cuisine=french` + - Chinese dishes are served here corresponds with `cuisine=chinese` + - Greek dishes are served here corresponds with `cuisine=greek` + - Indian dishes are served here corresponds with `cuisine=indian` + - Turkish dishes are served here corresponds with `cuisine=turkish` + - Thai dishes are served here corresponds with `cuisine=thai` @@ -276,9 +278,9 @@ The question is Does this place offer take-away? - - This is a take-away only business corresponds with takeaway=only - - Take-away is possible here corresponds with takeaway=yes - - Take-away is not possible here corresponds with takeaway=no + - This is a take-away only business corresponds with `takeaway=only` + - Take-away is possible here corresponds with `takeaway=yes` + - Take-away is not possible here corresponds with `takeaway=no` @@ -293,8 +295,8 @@ The question is Delivers {title()} their food at home? - - This business does home delivery (eventually via a third party) corresponds with delivery=yes - - This business does not deliver at home corresponds with delivery=no + - This business does home delivery (eventually via a third party) corresponds with `delivery=yes` + - This business does not deliver at home corresponds with `delivery=no` @@ -309,10 +311,10 @@ The question is Does this restaurant have a vegetarian option? - - No vegetarian options are available corresponds with diet:vegetarian=no - - Some vegetarian options are available corresponds with diet:vegetarian=limited - - Vegetarian options are available corresponds with diet:vegetarian=yes - - All dishes are vegetarian corresponds with diet:vegetarian=only + - No vegetarian options are available corresponds with `diet:vegetarian=no` + - Some vegetarian options are available corresponds with `diet:vegetarian=limited` + - Vegetarian options are available corresponds with `diet:vegetarian=yes` + - All dishes are vegetarian corresponds with `diet:vegetarian=only` @@ -327,10 +329,10 @@ The question is Does this business serve vegan meals? - - No vegan options available corresponds with diet:vegan=no - - Some vegan options are available corresponds with diet:vegan=limited - - Vegan options are available corresponds with diet:vegan=yes - - All dishes are vegan corresponds with diet:vegan=only + - No vegan options available corresponds with `diet:vegan=no` + - Some vegan options are available corresponds with `diet:vegan=limited` + - Vegan options are available corresponds with `diet:vegan=yes` + - All dishes are vegan corresponds with `diet:vegan=only` @@ -345,10 +347,10 @@ The question is Does this restaurant offer a halal menu? - - There are no halal options available corresponds with diet:halal=no - - There is a small halal menu corresponds with diet:halal=limited - - There is a halal menu corresponds with diet:halal=yes - - Only halal options are available corresponds with diet:halal=only + - There are no halal options available corresponds with `diet:halal=no` + - There is a small halal menu corresponds with `diet:halal=limited` + - There is a halal menu corresponds with `diet:halal=yes` + - Only halal options are available corresponds with `diet:halal=only` @@ -363,9 +365,9 @@ The question is Does this fries shop have vegetarian snacks? - - Vegetarian snacks are available corresponds with diet:vegetarian=yes - - Only a small selection of snacks are vegetarian corresponds with diet:vegetarian=limited - - No vegetarian snacks are available corresponds with diet:vegetarian=no + - Vegetarian snacks are available corresponds with `diet:vegetarian=yes` + - Only a small selection of snacks are vegetarian corresponds with `diet:vegetarian=limited` + - No vegetarian snacks are available corresponds with `diet:vegetarian=no` Only visible if `cuisine=friture` is shown @@ -382,9 +384,9 @@ The question is Does this fries shop have vegan snacks? - - Vegan snacks are available corresponds with diet:vegan=yes - - A small selection of vegan snacks are available corresponds with diet:vegan=limited - - No vegan snacks are available corresponds with diet:vegan=no + - Vegan snacks are available corresponds with `diet:vegan=yes` + - A small selection of vegan snacks are available corresponds with `diet:vegan=limited` + - No vegan snacks are available corresponds with `diet:vegan=no` Only visible if `cuisine=friture` is shown @@ -401,8 +403,8 @@ The question is Does this fries shop use vegetable or animal oil for cooking? - - The frying is done with vegetable oil corresponds with friture:oil=vegetable - - The frying is done with animal oil corresponds with friture:oil=animal + - The frying is done with vegetable oil corresponds with `friture:oil=vegetable` + - The frying is done with animal oil corresponds with `friture:oil=animal` Only visible if `cuisine=friture` is shown @@ -419,9 +421,9 @@ The question is If you bring your own container (such as a cooking pot and smal - - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with reusable_packaging:accept=yes - - Bringing your own container is not allowed corresponds with reusable_packaging:accept=no - - You must bring your own container to order here. corresponds with reusable_packaging:accept=only + - You can bring your own containers to get your order, saving on single-use packaging material and thus waste corresponds with `reusable_packaging:accept=yes` + - Bringing your own container is not allowed corresponds with `reusable_packaging:accept=no` + - You must bring your own container to order here. corresponds with `reusable_packaging:accept=only` Only visible if `cuisine=friture` is shown @@ -438,10 +440,10 @@ The question is Does this amenity have electrical outlets, available to custome - - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=yes - - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with service:electricity=limited - - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with service:electricity=ask - - There are a no domestic sockets available to customers seated indoors corresponds with service:electricity=no + - There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=yes` + - There are a few domestic sockets available to customers seated indoors, where they can charge their electronics corresponds with `service:electricity=limited` + - There are no sockets available indoors to customers, but charging might be possible if the staff is asked corresponds with `service:electricity=ask` + - There are a no domestic sockets available to customers seated indoors corresponds with `service:electricity=no` @@ -456,10 +458,10 @@ The question is Are dogs allowed in this business? - - Dogs are allowed corresponds with dog=yes - - Dogs are not allowed corresponds with dog=no - - Dogs are allowed, but they have to be leashed corresponds with dog=leashed - - Dogs are allowed and can run around freely corresponds with dog=unleashed + - Dogs are allowed corresponds with `dog=yes` + - Dogs are not allowed corresponds with `dog=no` + - Dogs are allowed, but they have to be leashed corresponds with `dog=leashed` + - Dogs are allowed and can run around freely corresponds with `dog=unleashed` @@ -468,6 +470,8 @@ The question is Are dogs allowed in this business? +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -478,6 +482,8 @@ This tagrendering has no question and is thus read-only +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -488,6 +494,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/ghost_bike.md b/Docs/Layers/ghost_bike.md index ed3d765a28..d4f58cdd2e 100644 --- a/Docs/Layers/ghost_bike.md +++ b/Docs/Layers/ghost_bike.md @@ -82,6 +82,8 @@ This tagrendering has no question and is thus read-only +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -102,7 +104,7 @@ This is rendered with In remembrance of {name} - - No name is marked on the bike corresponds with noname=yes + - No name is marked on the bike corresponds with `noname=yes` diff --git a/Docs/Layers/governments.md b/Docs/Layers/governments.md new file mode 100644 index 0000000000..f13618952b --- /dev/null +++ b/Docs/Layers/governments.md @@ -0,0 +1,155 @@ + + + governments +============= + + + + + +This layer show governmental buildings. It was setup as commissioned layer for the client of OSOC '22 + + + + + + + - This layer is shown at zoomlevel **13** and higher + + + + +#### Themes using this layer + + + + + + - [governments](https://mapcomplete.osm.be/governments) + - [personal](https://mapcomplete.osm.be/personal) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - office=government + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22office%22%3D%22government%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | +[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | +[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### phone + + + +The question is What is the phone number of {title()}? + +This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) + +This is rendered with {phone} + + + + + + - {contact:phone} corresponds with `contact:phone~^..*$` + - This option cannot be chosen as answer + + + + +### email + + + +The question is What is the email address of {title()}? + +This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) + +This is rendered with {email} + + + + + + - {contact:email} corresponds with `contact:email~^..*$` + - This option cannot be chosen as answer + + + + +### website + + + +The question is What is the website of {title()}? + +This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website) + +This is rendered with {website} + + + + + + - {contact:website} corresponds with `contact:website~^..*$` + - This option cannot be chosen as answer + + + + +### name + + + +The question is What is the name of this Governmental Office? + +This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) + +This is rendered with This Governmental Office is called {name} + + + +This document is autogenerated from [assets/layers/governments/governments.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/governments/governments.json) \ No newline at end of file diff --git a/Docs/Layers/grass_in_parks.md b/Docs/Layers/grass_in_parks.md index 2b4a011c8c..b03cd54197 100644 --- a/Docs/Layers/grass_in_parks.md +++ b/Docs/Layers/grass_in_parks.md @@ -46,6 +46,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/hackerspace.md b/Docs/Layers/hackerspace.md index 97a5856a02..3bc884a0db 100644 --- a/Docs/Layers/hackerspace.md +++ b/Docs/Layers/hackerspace.md @@ -86,8 +86,8 @@ The question is Is this a hackerspace or a makerspace? - - This is a makerspace corresponds with hackerspace=makerspace - - This is a traditional (software oriented) hackerspace corresponds with + - This is a makerspace corresponds with `hackerspace=makerspace` + - This is a traditional (software oriented) hackerspace corresponds with `` @@ -120,7 +120,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -140,7 +140,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -160,7 +160,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -180,7 +180,7 @@ This is rendered with {opening_hours_table()} - - Opened 24/7 corresponds with opening_hours=24/7 + - Opened 24/7 corresponds with `opening_hours=24/7` @@ -195,8 +195,8 @@ The question is Is a 3D-printer available at this hackerspace? - - There is a 3D-printer available at this hackerspace corresponds with service:3dprinter=yes - - There is no 3D-printer available at this hackerspace corresponds with service:3dprinter=no + - There is a 3D-printer available at this hackerspace corresponds with `service:3dprinter=yes` + - There is no 3D-printer available at this hackerspace corresponds with `service:3dprinter=no` @@ -211,8 +211,8 @@ The question is Is a laser cutter available at this hackerspace? - - There is a laser cutter available at this hackerspace corresponds with service:lasercutter=yes - - There is no laser cutter available at this hackerspace corresponds with service:lasercutter=no + - There is a laser cutter available at this hackerspace corresponds with `service:lasercutter=yes` + - There is no laser cutter available at this hackerspace corresponds with `service:lasercutter=no` @@ -227,8 +227,8 @@ The question is Is a CNC drill available at this hackerspace? - - There is a CNC drill available at this hackerspace corresponds with service:cnc_drilling_machine=yes - - There is no CNC drill available at this hackerspace corresponds with service:cnc_drilling_machine=no + - There is a CNC drill available at this hackerspace corresponds with `service:cnc_drilling_machine=yes` + - There is no CNC drill available at this hackerspace corresponds with `service:cnc_drilling_machine=no` @@ -237,6 +237,8 @@ The question is Is a CNC drill available at this hackerspace? +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -253,10 +255,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -271,8 +273,8 @@ The question is Does this hackerspace serve Club Mate? - - This hackerspace serves club mate corresponds with drink:club-mate=yes - - This hackerspace does not serve club mate corresponds with drink:club-mate=no + - This hackerspace serves club mate corresponds with `drink:club-mate=yes` + - This hackerspace does not serve club mate corresponds with `drink:club-mate=no` diff --git a/Docs/Layers/health_and_social_places_without_etymology.md b/Docs/Layers/health_and_social_places_without_etymology.md index 5818c8628d..f0a09340ec 100644 --- a/Docs/Layers/health_and_social_places_without_etymology.md +++ b/Docs/Layers/health_and_social_places_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/hospital.md b/Docs/Layers/hospital.md index 0d2a9f22f6..6a1fc33e6f 100644 --- a/Docs/Layers/hospital.md +++ b/Docs/Layers/hospital.md @@ -7,6 +7,8 @@ +A layer showing hospital grounds + @@ -70,11 +72,11 @@ attribute | type | values which are supported by this layer -The question is What does the of the hospital ? +The question is What is the name of this hospital? This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) -This is rendered with Name of the hospital name is {name} +This is rendered with This hospital is called {name} @@ -94,7 +96,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -114,7 +116,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -134,7 +136,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/hydrant.md b/Docs/Layers/hydrant.md index a24e5962c6..8ae1771c46 100644 --- a/Docs/Layers/hydrant.md +++ b/Docs/Layers/hydrant.md @@ -81,10 +81,10 @@ This is rendered with The hydrant color is {colour} - - The hydrant color is unknown. corresponds with + - The hydrant color is unknown. corresponds with `` - This option cannot be chosen as answer - - The hydrant color is yellow. corresponds with colour=yellow - - The hydrant color is red. corresponds with colour=red + - The hydrant color is yellow. corresponds with `colour=yellow` + - The hydrant color is red. corresponds with `colour=red` @@ -103,12 +103,12 @@ This is rendered with Hydrant type: {fire_hydrant:type} - - The hydrant type is unknown. corresponds with + - The hydrant type is unknown. corresponds with `` - This option cannot be chosen as answer - - Pillar type. corresponds with fire_hydrant:type=pillar - - Pipe type. corresponds with fire_hydrant:type=pipe - - Wall type. corresponds with fire_hydrant:type=wall - - Underground type. corresponds with fire_hydrant:type=underground + - Pillar type. corresponds with `fire_hydrant:type=pillar` + - Pipe type. corresponds with `fire_hydrant:type=pipe` + - Wall type. corresponds with `fire_hydrant:type=wall` + - Underground type. corresponds with `fire_hydrant:type=underground` @@ -123,9 +123,9 @@ The question is Is this hydrant still working? - - The hydrant is (fully or partially) working corresponds with emergency=fire_hydrant - - The hydrant is unavailable corresponds with disused:emergency=fire_hydrant - - The hydrant has been removed corresponds with removed:emergency=fire_hydrant + - The hydrant is (fully or partially) working corresponds with `emergency=fire_hydrant` + - The hydrant is unavailable corresponds with `disused:emergency=fire_hydrant` + - The hydrant has been removed corresponds with `removed:emergency=fire_hydrant` @@ -134,6 +134,8 @@ The question is Is this hydrant still working? +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/id_presets.md b/Docs/Layers/id_presets.md index 4acedc9a9a..da51ccd10e 100644 --- a/Docs/Layers/id_presets.md +++ b/Docs/Layers/id_presets.md @@ -15,7 +15,7 @@ Layer containing various presets and questions generated by ID. These are meant - This layer is shown at zoomlevel **0** and higher - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` @@ -67,166 +67,166 @@ This tagrendering has no question and is thus read-only - - Farm Supply Shop corresponds with shop=agrarian - - Liquor Store corresponds with shop=alcohol - - Anime / Manga Shop corresponds with shop=anime - - Antiques Shop corresponds with shop=antiques - - Appliance Store corresponds with shop=appliance - - Art Store corresponds with shop=art - - Baby Goods Store corresponds with shop=baby_goods - - Bag/Luggage Store corresponds with shop=bag - - Bakery corresponds with shop=bakery - - Bathroom Furnishing Store corresponds with shop=bathroom_furnishing - - Beauty Shop corresponds with shop=beauty - - Bedding/Mattress Store corresponds with shop=bed - - Beverage Store corresponds with shop=beverages - - Bicycle Shop corresponds with shop=bicycle - - Boat Store corresponds with shop=boat - - Bookmaker corresponds with shop=bookmaker - - Book Store corresponds with shop=books - - Brewing Supply Store corresponds with shop=brewing_supplies - - Butcher corresponds with shop=butcher - - Camera Equipment Store corresponds with shop=camera - - Candle Shop corresponds with shop=candles - - Cannabis Shop corresponds with shop=cannabis - - Car Dealership corresponds with shop=car - - Car Parts Store corresponds with shop=car_parts - - Car Repair Shop corresponds with shop=car_repair - - RV Dealership corresponds with shop=caravan - - Carpet Store corresponds with shop=carpet - - Catalog Shop corresponds with shop=catalogue - - Charity Store corresponds with shop=charity - - Cheese Store corresponds with shop=cheese - - Drugstore corresponds with shop=chemist - - Chocolate Store corresponds with shop=chocolate - - Clothing Store corresponds with shop=clothes - - Coffee Store corresponds with shop=coffee - - Collectibles Shop corresponds with shop=collector - - Computer Store corresponds with shop=computer - - Candy Store corresponds with shop=confectionery - - Convenience Store corresponds with shop=convenience - - Copy Store corresponds with shop=copyshop - - Cosmetics Store corresponds with shop=cosmetics - - Country Store corresponds with shop=country_store - - Arts & Crafts Store corresponds with shop=craft - - Curtain Store corresponds with shop=curtain - - Dairy Store corresponds with shop=dairy - - Deli corresponds with shop=deli - - Department Store corresponds with shop=department_store - - DIY Store corresponds with shop=doityourself - - Door Shop corresponds with shop=doors - - Dry Cleaner corresponds with shop=dry_cleaning - - E-Cigarette Shop corresponds with shop=e-cigarette - - Electrical Equipment Store corresponds with shop=electrical - - Electronics Store corresponds with shop=electronics - - Erotic Store corresponds with shop=erotic - - Fabric Store corresponds with shop=fabric - - Produce Stand corresponds with shop=farm - - Fashion Accessories Store corresponds with shop=fashion_accessories - - Fireplace Store corresponds with shop=fireplace - - Fishing Shop corresponds with shop=fishing - - Flooring Supply Shop corresponds with shop=flooring - - Florist corresponds with shop=florist - - Framing Shop corresponds with shop=frame - - Frozen Food Store corresponds with shop=frozen_food - - Fuel Shop corresponds with shop=fuel - - Funeral Home corresponds with shop=funeral_directors - - Furniture Store corresponds with shop=furniture - - Tabletop Game Store corresponds with shop=games - - Garden Center corresponds with shop=garden_centre - - Bottled Gas Shop corresponds with shop=gas - - General Store corresponds with shop=general - - Gift Shop corresponds with shop=gift - - Greengrocer corresponds with shop=greengrocer - - Hairdresser corresponds with shop=hairdresser - - Hairdresser Supply Store corresponds with shop=hairdresser_supply - - Hardware Store corresponds with shop=hardware - - Health Food Shop corresponds with shop=health_food - - Hearing Aids Store corresponds with shop=hearing_aids - - Herbalist corresponds with shop=herbalist - - Hifi Store corresponds with shop=hifi - - Hobby Shop corresponds with shop=hobby - - Household Linen Shop corresponds with shop=household_linen - - Houseware Store corresponds with shop=houseware - - Hunting Shop corresponds with shop=hunting - - Interior Decoration Store corresponds with shop=interior_decoration - - Jewelry Store corresponds with shop=jewelry - - Kiosk corresponds with shop=kiosk - - Kitchen Design Store corresponds with shop=kitchen - - Laundry corresponds with shop=laundry - - Leather Store corresponds with shop=leather - - Lighting Store corresponds with shop=lighting - - Locksmith corresponds with shop=locksmith - - Lottery Shop corresponds with shop=lottery - - Mall corresponds with shop=mall - - Massage Shop corresponds with shop=massage - - Medical Supply Store corresponds with shop=medical_supply - - Military Surplus Store corresponds with shop=military_surplus - - Mobile Phone Store corresponds with shop=mobile_phone - - Model Shop corresponds with shop=model - - Money Lender corresponds with shop=money_lender - - Motorcycle Dealership corresponds with shop=motorcycle - - Motorcycle Repair Shop corresponds with shop=motorcycle_repair - - Music Store corresponds with shop=music - - Musical Instrument Store corresponds with shop=musical_instrument - - Newspaper/Magazine Shop corresponds with shop=newsagent - - Nutrition Supplements Store corresponds with shop=nutrition_supplements - - Optician corresponds with shop=optician - - Outdoors Store corresponds with shop=outdoor - - Online Retailer Outpost corresponds with shop=outpost - - Paint Store corresponds with shop=paint - - Party Supply Store corresponds with shop=party - - Pastry Shop corresponds with shop=pastry - - Pawn Shop corresponds with shop=pawnbroker - - Perfume Store corresponds with shop=perfumery - - Pet Store corresponds with shop=pet - - Pet Grooming Store corresponds with shop=pet_grooming - - Photography Store corresponds with shop=photo - - Pottery Store corresponds with shop=pottery - - Printer Ink Store corresponds with shop=printer_ink - - Psychic corresponds with shop=psychic - - Fireworks Store corresponds with shop=pyrotechnics - - Radio/Electronic Component Store corresponds with shop=radiotechnics - - Religious Store corresponds with shop=religion - - Rental Shop corresponds with shop=rental - - Repair Shop corresponds with shop=repair - - Scuba Diving Shop corresponds with shop=scuba_diving - - Seafood Shop corresponds with shop=seafood - - Consignment/Thrift Store corresponds with shop=second_hand - - Sewing Supply Shop corresponds with shop=sewing - - Shoe Repair Shop corresponds with shop=shoe_repair - - Shoe Store corresponds with shop=shoes - - Spice Shop corresponds with shop=spices - - Sporting Goods Store corresponds with shop=sports - - Stationery Store corresponds with shop=stationery - - Storage Rental corresponds with shop=storage_rental - - Supermarket corresponds with shop=supermarket - - Pool Supply Store corresponds with shop=swimming_pool - - Tailor corresponds with shop=tailor - - Tattoo Parlor corresponds with shop=tattoo - - Tea Store corresponds with shop=tea - - Telecom Retail Store corresponds with shop=telecommunication - - Ticket Seller corresponds with shop=ticket - - Tile Shop corresponds with shop=tiles - - Tobacco Shop corresponds with shop=tobacco - - Tool Rental corresponds with shop=tool_hire - - Toy Store corresponds with shop=toys - - Trade Shop corresponds with shop=trade - - Travel Agency corresponds with shop=travel_agency - - Trophy Shop corresponds with shop=trophy - - Tire Store corresponds with shop=tyres - - Vacuum Cleaner Store corresponds with shop=vacuum_cleaner - - Variety Store corresponds with shop=variety_store - - Video Store corresponds with shop=video - - Video Game Store corresponds with shop=video_games - - Watches Shop corresponds with shop=watches - - Drinking Water Shop corresponds with shop=water - - Watersport/Swim Shop corresponds with shop=water_sports - - Weapon Shop corresponds with shop=weapons - - Wholesale Store corresponds with shop=wholesale - - Wig Shop corresponds with shop=wigs - - Window Blind Store corresponds with shop=window_blind - - Wine Shop corresponds with shop=wine + - Farm Supply Shop corresponds with `shop=agrarian` + - Liquor Store corresponds with `shop=alcohol` + - Anime / Manga Shop corresponds with `shop=anime` + - Antiques Shop corresponds with `shop=antiques` + - Appliance Store corresponds with `shop=appliance` + - Art Store corresponds with `shop=art` + - Baby Goods Store corresponds with `shop=baby_goods` + - Bag/Luggage Store corresponds with `shop=bag` + - Bakery corresponds with `shop=bakery` + - Bathroom Furnishing Store corresponds with `shop=bathroom_furnishing` + - Beauty Shop corresponds with `shop=beauty` + - Bedding/Mattress Store corresponds with `shop=bed` + - Beverage Store corresponds with `shop=beverages` + - Bicycle Shop corresponds with `shop=bicycle` + - Boat Store corresponds with `shop=boat` + - Bookmaker corresponds with `shop=bookmaker` + - Book Store corresponds with `shop=books` + - Brewing Supply Store corresponds with `shop=brewing_supplies` + - Butcher corresponds with `shop=butcher` + - Camera Equipment Store corresponds with `shop=camera` + - Candle Shop corresponds with `shop=candles` + - Cannabis Shop corresponds with `shop=cannabis` + - Car Dealership corresponds with `shop=car` + - Car Parts Store corresponds with `shop=car_parts` + - Car Repair Shop corresponds with `shop=car_repair` + - RV Dealership corresponds with `shop=caravan` + - Carpet Store corresponds with `shop=carpet` + - Catalog Shop corresponds with `shop=catalogue` + - Charity Store corresponds with `shop=charity` + - Cheese Store corresponds with `shop=cheese` + - Drugstore corresponds with `shop=chemist` + - Chocolate Store corresponds with `shop=chocolate` + - Clothing Store corresponds with `shop=clothes` + - Coffee Store corresponds with `shop=coffee` + - Collectibles Shop corresponds with `shop=collector` + - Computer Store corresponds with `shop=computer` + - Candy Store corresponds with `shop=confectionery` + - Convenience Store corresponds with `shop=convenience` + - Copy Store corresponds with `shop=copyshop` + - Cosmetics Store corresponds with `shop=cosmetics` + - Country Store corresponds with `shop=country_store` + - Arts & Crafts Store corresponds with `shop=craft` + - Curtain Store corresponds with `shop=curtain` + - Dairy Store corresponds with `shop=dairy` + - Deli corresponds with `shop=deli` + - Department Store corresponds with `shop=department_store` + - DIY Store corresponds with `shop=doityourself` + - Door Shop corresponds with `shop=doors` + - Dry Cleaner corresponds with `shop=dry_cleaning` + - E-Cigarette Shop corresponds with `shop=e-cigarette` + - Electrical Equipment Store corresponds with `shop=electrical` + - Electronics Store corresponds with `shop=electronics` + - Erotic Store corresponds with `shop=erotic` + - Fabric Store corresponds with `shop=fabric` + - Produce Stand corresponds with `shop=farm` + - Fashion Accessories Store corresponds with `shop=fashion_accessories` + - Fireplace Store corresponds with `shop=fireplace` + - Fishing Shop corresponds with `shop=fishing` + - Flooring Supply Shop corresponds with `shop=flooring` + - Florist corresponds with `shop=florist` + - Framing Shop corresponds with `shop=frame` + - Frozen Food Store corresponds with `shop=frozen_food` + - Fuel Shop corresponds with `shop=fuel` + - Funeral Home corresponds with `shop=funeral_directors` + - Furniture Store corresponds with `shop=furniture` + - Tabletop Game Store corresponds with `shop=games` + - Garden Center corresponds with `shop=garden_centre` + - Bottled Gas Shop corresponds with `shop=gas` + - General Store corresponds with `shop=general` + - Gift Shop corresponds with `shop=gift` + - Greengrocer corresponds with `shop=greengrocer` + - Hairdresser corresponds with `shop=hairdresser` + - Hairdresser Supply Store corresponds with `shop=hairdresser_supply` + - Hardware Store corresponds with `shop=hardware` + - Health Food Shop corresponds with `shop=health_food` + - Hearing Aids Store corresponds with `shop=hearing_aids` + - Herbalist corresponds with `shop=herbalist` + - Hifi Store corresponds with `shop=hifi` + - Hobby Shop corresponds with `shop=hobby` + - Household Linen Shop corresponds with `shop=household_linen` + - Houseware Store corresponds with `shop=houseware` + - Hunting Shop corresponds with `shop=hunting` + - Interior Decoration Store corresponds with `shop=interior_decoration` + - Jewelry Store corresponds with `shop=jewelry` + - Kiosk corresponds with `shop=kiosk` + - Kitchen Design Store corresponds with `shop=kitchen` + - Laundry corresponds with `shop=laundry` + - Leather Store corresponds with `shop=leather` + - Lighting Store corresponds with `shop=lighting` + - Locksmith corresponds with `shop=locksmith` + - Lottery Shop corresponds with `shop=lottery` + - Mall corresponds with `shop=mall` + - Massage Shop corresponds with `shop=massage` + - Medical Supply Store corresponds with `shop=medical_supply` + - Military Surplus Store corresponds with `shop=military_surplus` + - Mobile Phone Store corresponds with `shop=mobile_phone` + - Model Shop corresponds with `shop=model` + - Money Lender corresponds with `shop=money_lender` + - Motorcycle Dealership corresponds with `shop=motorcycle` + - Motorcycle Repair Shop corresponds with `shop=motorcycle_repair` + - Music Store corresponds with `shop=music` + - Musical Instrument Store corresponds with `shop=musical_instrument` + - Newspaper/Magazine Shop corresponds with `shop=newsagent` + - Nutrition Supplements Store corresponds with `shop=nutrition_supplements` + - Optician corresponds with `shop=optician` + - Outdoors Store corresponds with `shop=outdoor` + - Online Retailer Outpost corresponds with `shop=outpost` + - Paint Store corresponds with `shop=paint` + - Party Supply Store corresponds with `shop=party` + - Pastry Shop corresponds with `shop=pastry` + - Pawn Shop corresponds with `shop=pawnbroker` + - Perfume Store corresponds with `shop=perfumery` + - Pet Store corresponds with `shop=pet` + - Pet Grooming Store corresponds with `shop=pet_grooming` + - Photography Store corresponds with `shop=photo` + - Pottery Store corresponds with `shop=pottery` + - Printer Ink Store corresponds with `shop=printer_ink` + - Psychic corresponds with `shop=psychic` + - Fireworks Store corresponds with `shop=pyrotechnics` + - Radio/Electronic Component Store corresponds with `shop=radiotechnics` + - Religious Store corresponds with `shop=religion` + - Rental Shop corresponds with `shop=rental` + - Repair Shop corresponds with `shop=repair` + - Scuba Diving Shop corresponds with `shop=scuba_diving` + - Seafood Shop corresponds with `shop=seafood` + - Consignment/Thrift Store corresponds with `shop=second_hand` + - Sewing Supply Shop corresponds with `shop=sewing` + - Shoe Repair Shop corresponds with `shop=shoe_repair` + - Shoe Store corresponds with `shop=shoes` + - Spice Shop corresponds with `shop=spices` + - Sporting Goods Store corresponds with `shop=sports` + - Stationery Store corresponds with `shop=stationery` + - Storage Rental corresponds with `shop=storage_rental` + - Supermarket corresponds with `shop=supermarket` + - Pool Supply Store corresponds with `shop=swimming_pool` + - Tailor corresponds with `shop=tailor` + - Tattoo Parlor corresponds with `shop=tattoo` + - Tea Store corresponds with `shop=tea` + - Telecom Retail Store corresponds with `shop=telecommunication` + - Ticket Seller corresponds with `shop=ticket` + - Tile Shop corresponds with `shop=tiles` + - Tobacco Shop corresponds with `shop=tobacco` + - Tool Rental corresponds with `shop=tool_hire` + - Toy Store corresponds with `shop=toys` + - Trade Shop corresponds with `shop=trade` + - Travel Agency corresponds with `shop=travel_agency` + - Trophy Shop corresponds with `shop=trophy` + - Tire Store corresponds with `shop=tyres` + - Vacuum Cleaner Store corresponds with `shop=vacuum_cleaner` + - Variety Store corresponds with `shop=variety_store` + - Video Store corresponds with `shop=video` + - Video Game Store corresponds with `shop=video_games` + - Watches Shop corresponds with `shop=watches` + - Drinking Water Shop corresponds with `shop=water` + - Watersport/Swim Shop corresponds with `shop=water_sports` + - Weapon Shop corresponds with `shop=weapons` + - Wholesale Store corresponds with `shop=wholesale` + - Wig Shop corresponds with `shop=wigs` + - Window Blind Store corresponds with `shop=window_blind` + - Wine Shop corresponds with `shop=wine` @@ -241,158 +241,158 @@ This tagrendering has no question and is thus read-only - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=boutique - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=fashion - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=vacant - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=yes - - circle:white;./assets/layers/id_presets/fas-tractor.svg corresponds with shop=agrarian - - circle:white;./assets/layers/id_presets/fas-wine-bottle.svg corresponds with shop=alcohol - - circle:white;./assets/layers/id_presets/fas-dragon.svg corresponds with shop=anime - - circle:white;./assets/layers/id_presets/temaki-furniture.svg corresponds with shop=antiques - - circle:white;./assets/layers/id_presets/temaki-laundry.svg corresponds with shop=appliance - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=art - - circle:white;./assets/layers/id_presets/fas-baby-carriage.svg corresponds with shop=baby_goods - - circle:white;./assets/layers/id_presets/fas-suitcase-rolling.svg corresponds with shop=bag - - circle:white;./assets/layers/id_presets/maki-bakery.svg corresponds with shop=bakery - - circle:white;./assets/layers/id_presets/fas-bath.svg corresponds with shop=bathroom_furnishing - - circle:white;./assets/layers/id_presets/temaki-lipstick.svg corresponds with shop=beauty - - circle:white;./assets/layers/id_presets/maki-lodging.svg corresponds with shop=bed - - circle:white;./assets/layers/id_presets/temaki-bottles.svg corresponds with shop=beverages - - circle:white;./assets/layers/id_presets/maki-bicycle.svg corresponds with shop=bicycle - - circle:white;./assets/layers/id_presets/temaki-boat.svg corresponds with shop=boat - - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with shop=bookmaker - - circle:white;./assets/layers/id_presets/fas-book.svg corresponds with shop=books - - circle:white;./assets/layers/id_presets/temaki-storage_fermenter.svg corresponds with shop=brewing_supplies - - circle:white;./assets/layers/id_presets/temaki-cleaver.svg corresponds with shop=butcher - - circle:white;./assets/layers/id_presets/fas-camera-retro.svg corresponds with shop=camera - - circle:white;./assets/layers/id_presets/fas-cannabis.svg corresponds with shop=cannabis - - circle:white;./assets/layers/id_presets/maki-car.svg corresponds with shop=car - - circle:white;./assets/layers/id_presets/fas-car-battery.svg corresponds with shop=car_parts - - circle:white;./assets/layers/id_presets/maki-car-repair.svg corresponds with shop=car_repair - - circle:white;./assets/layers/id_presets/temaki-camper_trailer.svg corresponds with shop=caravan - - circle:white;./assets/layers/id_presets/fas-tape.svg corresponds with shop=carpet - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=catalogue - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=charity - - circle:white;./assets/layers/id_presets/fas-cheese.svg corresponds with shop=cheese - - circle:white;./assets/layers/id_presets/maki-confectionery.svg corresponds with shop=chocolate - - circle:white;./assets/layers/id_presets/maki-clothing-store.svg corresponds with shop=clothes - - circle:white;./assets/layers/id_presets/temaki-coffee.svg corresponds with shop=coffee - - circle:white;./assets/layers/id_presets/fas-laptop.svg corresponds with shop=computer - - circle:white;./assets/layers/id_presets/maki-confectionery.svg corresponds with shop=confectionery - - circle:white;./assets/layers/id_presets/fas-print.svg corresponds with shop=copyshop - - circle:white;./assets/layers/id_presets/temaki-lipstick.svg corresponds with shop=cosmetics - - circle:white;./assets/layers/id_presets/fas-hat-cowboy-side.svg corresponds with shop=country_store - - circle:white;./assets/layers/id_presets/temaki-curtains.svg corresponds with shop=curtain - - circle:white;./assets/layers/id_presets/fas-cheese.svg corresponds with shop=dairy - - circle:white;./assets/layers/id_presets/temaki-meat.svg corresponds with shop=deli - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=department_store - - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with shop=doityourself - - circle:white;./assets/layers/id_presets/fas-door-open.svg corresponds with shop=doors - - circle:white;./assets/layers/id_presets/temaki-clothes_hanger.svg corresponds with shop=dry_cleaning - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=e-cigarette - - circle:white;./assets/layers/id_presets/temaki-power.svg corresponds with shop=electrical - - circle:white;./assets/layers/id_presets/fas-plug.svg corresponds with shop=electronics - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=erotic - - circle:white;./assets/layers/id_presets/fas-tape.svg corresponds with shop=fabric - - circle:white;./assets/layers/id_presets/temaki-fashion_accessories.svg corresponds with shop=fashion_accessories - - circle:white;./assets/layers/id_presets/temaki-fireplace.svg corresponds with shop=fireplace - - circle:white;./assets/layers/id_presets/temaki-ice_fishing.svg corresponds with shop=fishing - - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with shop=flooring - - circle:white;./assets/layers/id_presets/maki-florist.svg corresponds with shop=florist - - circle:white;./assets/layers/id_presets/fas-vector-square.svg corresponds with shop=frame - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=frozen_food - - circle:white;./assets/layers/id_presets/temaki-propane_tank.svg corresponds with shop=fuel - - circle:white;./assets/layers/id_presets/maki-cemetery.svg corresponds with shop=funeral_directors - - circle:white;./assets/layers/id_presets/fas-couch.svg corresponds with shop=furniture - - circle:white;./assets/layers/id_presets/fas-dice.svg corresponds with shop=games - - circle:white;./assets/layers/id_presets/maki-garden-centre.svg corresponds with shop=garden_centre - - circle:white;./assets/layers/id_presets/temaki-propane_tank.svg corresponds with shop=gas - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=general - - circle:white;./assets/layers/id_presets/maki-gift.svg corresponds with shop=gift - - circle:white;./assets/layers/id_presets/fas-carrot.svg corresponds with shop=greengrocer - - circle:white;./assets/layers/id_presets/temaki-beauty_salon.svg corresponds with shop=hairdresser - - circle:white;./assets/layers/id_presets/temaki-hair_care.svg corresponds with shop=hairdresser_supply - - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with shop=hardware - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=health_food - - circle:white;./assets/layers/id_presets/temaki-hearing_aid.svg corresponds with shop=hearing_aids - - circle:white;./assets/layers/id_presets/fas-leaf.svg corresponds with shop=herbalist - - circle:white;./assets/layers/id_presets/temaki-speaker.svg corresponds with shop=hifi - - circle:white;./assets/layers/id_presets/fas-dragon.svg corresponds with shop=hobby - - circle:white;./assets/layers/id_presets/temaki-cloth.svg corresponds with shop=household_linen - - circle:white;./assets/layers/id_presets/fas-blender.svg corresponds with shop=houseware - - circle:white;./assets/layers/id_presets/temaki-bow_and_arrow.svg corresponds with shop=hunting - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=interior_decoration - - circle:white;./assets/layers/id_presets/maki-jewelry-store.svg corresponds with shop=jewelry - - circle:white;./assets/layers/id_presets/fas-store.svg corresponds with shop=kiosk - - circle:white;./assets/layers/id_presets/temaki-kitchen_sink.svg corresponds with shop=kitchen - - circle:white;./assets/layers/id_presets/temaki-laundry.svg corresponds with shop=laundry - - circle:white;./assets/layers/id_presets/temaki-handbag.svg corresponds with shop=leather - - circle:white;./assets/layers/id_presets/temaki-desk_lamp.svg corresponds with shop=lighting - - circle:white;./assets/layers/id_presets/fas-key.svg corresponds with shop=locksmith - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=mall - - circle:white;./assets/layers/id_presets/temaki-spa.svg corresponds with shop=massage - - circle:white;./assets/layers/id_presets/fas-crutch.svg corresponds with shop=medical_supply - - circle:white;./assets/layers/id_presets/temaki-military.svg corresponds with shop=military_surplus - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=model - - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with shop=money_lender - - circle:white;./assets/layers/id_presets/fas-motorcycle.svg corresponds with shop=motorcycle - - circle:white;./assets/layers/id_presets/temaki-motorcycle_repair.svg corresponds with shop=motorcycle_repair - - circle:white;./assets/layers/id_presets/fas-compact-disc.svg corresponds with shop=music - - circle:white;./assets/layers/id_presets/fas-guitar.svg corresponds with shop=musical_instrument - - circle:white;./assets/layers/id_presets/fas-newspaper.svg corresponds with shop=newsagent - - circle:white;./assets/layers/id_presets/fas-pills.svg corresponds with shop=nutrition_supplements - - circle:white;./assets/layers/id_presets/maki-optician.svg corresponds with shop=optician - - circle:white;./assets/layers/id_presets/temaki-compass.svg corresponds with shop=outdoor - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=outpost - - circle:white;./assets/layers/id_presets/fas-paint-roller.svg corresponds with shop=paint - - circle:white;./assets/layers/id_presets/temaki-balloon.svg corresponds with shop=party - - circle:white;./assets/layers/id_presets/maki-bakery.svg corresponds with shop=pastry - - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with shop=pawnbroker - - circle:white;./assets/layers/id_presets/temaki-perfume.svg corresponds with shop=perfumery - - circle:white;./assets/layers/id_presets/fas-cat.svg corresponds with shop=pet - - circle:white;./assets/layers/id_presets/temaki-pet_grooming.svg corresponds with shop=pet_grooming - - circle:white;./assets/layers/id_presets/fas-camera-retro.svg corresponds with shop=photo - - circle:white;./assets/layers/id_presets/temaki-vase.svg corresponds with shop=pottery - - circle:white;./assets/layers/id_presets/fas-print.svg corresponds with shop=printer_ink - - circle:white;./assets/layers/id_presets/temaki-psychic.svg corresponds with shop=psychic - - circle:white;./assets/layers/id_presets/temaki-rocket_firework.svg corresponds with shop=pyrotechnics - - circle:white;./assets/layers/id_presets/fas-microchip.svg corresponds with shop=radiotechnics - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=religion - - circle:white;./assets/layers/id_presets/fas-dolly.svg corresponds with shop=rental - - circle:white;./assets/layers/id_presets/temaki-scuba_diving.svg corresponds with shop=scuba_diving - - circle:white;./assets/layers/id_presets/temaki-fish_cleaning.svg corresponds with shop=seafood - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=second_hand - - circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg corresponds with shop=sewing - - circle:white;./assets/layers/id_presets/temaki-hammer_shoe.svg corresponds with shop=shoe_repair - - circle:white;./assets/layers/id_presets/maki-shoe.svg corresponds with shop=shoes - - circle:white;./assets/layers/id_presets/temaki-spice_bottle.svg corresponds with shop=spices - - circle:white;./assets/layers/id_presets/fas-futbol.svg corresponds with shop=sports - - circle:white;./assets/layers/id_presets/fas-paperclip.svg corresponds with shop=stationery - - circle:white;./assets/layers/id_presets/temaki-storage_rental.svg corresponds with shop=storage_rental - - circle:white;./assets/layers/id_presets/maki-grocery.svg corresponds with shop=supermarket - - circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg corresponds with shop=tailor - - circle:white;./assets/layers/id_presets/temaki-tattoo_machine.svg corresponds with shop=tattoo - - circle:white;./assets/layers/id_presets/maki-teahouse.svg corresponds with shop=tea - - circle:white;./assets/layers/id_presets/maki-telephone.svg corresponds with shop=telecommunication - - circle:white;./assets/layers/id_presets/temaki-tiling.svg corresponds with shop=tiles - - circle:white;./assets/layers/id_presets/temaki-pipe.svg corresponds with shop=tobacco - - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with shop=tool_hire - - circle:white;./assets/layers/id_presets/fas-rocket.svg corresponds with shop=toys - - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with shop=trade - - circle:white;./assets/layers/id_presets/fas-suitcase.svg corresponds with shop=travel_agency - - circle:white;./assets/layers/id_presets/fas-trophy.svg corresponds with shop=trophy - - circle:white;./assets/layers/id_presets/temaki-tire.svg corresponds with shop=tyres - - circle:white;./assets/layers/id_presets/temaki-vacuum.svg corresponds with shop=vacuum_cleaner - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=variety_store - - circle:white;./assets/layers/id_presets/temaki-movie_rental.svg corresponds with shop=video - - circle:white;./assets/layers/id_presets/maki-gaming.svg corresponds with shop=video_games - - circle:white;./assets/layers/id_presets/maki-watch.svg corresponds with shop=watches - - circle:white;./assets/layers/id_presets/temaki-water_bottle.svg corresponds with shop=water - - circle:white;./assets/layers/id_presets/temaki-dagger.svg corresponds with shop=weapons - - circle:white;./assets/layers/id_presets/maki-warehouse.svg corresponds with shop=wholesale - - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with shop=wigs - - circle:white;./assets/layers/id_presets/temaki-window.svg corresponds with shop=window_blind - - circle:white;./assets/layers/id_presets/maki-alcohol-shop.svg corresponds with shop=wine + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=boutique` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=fashion` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=vacant` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=yes` + - circle:white;./assets/layers/id_presets/fas-tractor.svg corresponds with `shop=agrarian` + - circle:white;./assets/layers/id_presets/fas-wine-bottle.svg corresponds with `shop=alcohol` + - circle:white;./assets/layers/id_presets/fas-dragon.svg corresponds with `shop=anime` + - circle:white;./assets/layers/id_presets/temaki-furniture.svg corresponds with `shop=antiques` + - circle:white;./assets/layers/id_presets/temaki-laundry.svg corresponds with `shop=appliance` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=art` + - circle:white;./assets/layers/id_presets/fas-baby-carriage.svg corresponds with `shop=baby_goods` + - circle:white;./assets/layers/id_presets/fas-suitcase-rolling.svg corresponds with `shop=bag` + - circle:white;./assets/layers/id_presets/maki-bakery.svg corresponds with `shop=bakery` + - circle:white;./assets/layers/id_presets/fas-bath.svg corresponds with `shop=bathroom_furnishing` + - circle:white;./assets/layers/id_presets/temaki-lipstick.svg corresponds with `shop=beauty` + - circle:white;./assets/layers/id_presets/maki-lodging.svg corresponds with `shop=bed` + - circle:white;./assets/layers/id_presets/temaki-bottles.svg corresponds with `shop=beverages` + - circle:white;./assets/layers/id_presets/maki-bicycle.svg corresponds with `shop=bicycle` + - circle:white;./assets/layers/id_presets/temaki-boat.svg corresponds with `shop=boat` + - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with `shop=bookmaker` + - circle:white;./assets/layers/id_presets/fas-book.svg corresponds with `shop=books` + - circle:white;./assets/layers/id_presets/temaki-storage_fermenter.svg corresponds with `shop=brewing_supplies` + - circle:white;./assets/layers/id_presets/temaki-cleaver.svg corresponds with `shop=butcher` + - circle:white;./assets/layers/id_presets/fas-camera-retro.svg corresponds with `shop=camera` + - circle:white;./assets/layers/id_presets/fas-cannabis.svg corresponds with `shop=cannabis` + - circle:white;./assets/layers/id_presets/maki-car.svg corresponds with `shop=car` + - circle:white;./assets/layers/id_presets/fas-car-battery.svg corresponds with `shop=car_parts` + - circle:white;./assets/layers/id_presets/maki-car-repair.svg corresponds with `shop=car_repair` + - circle:white;./assets/layers/id_presets/temaki-camper_trailer.svg corresponds with `shop=caravan` + - circle:white;./assets/layers/id_presets/fas-tape.svg corresponds with `shop=carpet` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=catalogue` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=charity` + - circle:white;./assets/layers/id_presets/fas-cheese.svg corresponds with `shop=cheese` + - circle:white;./assets/layers/id_presets/maki-confectionery.svg corresponds with `shop=chocolate` + - circle:white;./assets/layers/id_presets/maki-clothing-store.svg corresponds with `shop=clothes` + - circle:white;./assets/layers/id_presets/temaki-coffee.svg corresponds with `shop=coffee` + - circle:white;./assets/layers/id_presets/fas-laptop.svg corresponds with `shop=computer` + - circle:white;./assets/layers/id_presets/maki-confectionery.svg corresponds with `shop=confectionery` + - circle:white;./assets/layers/id_presets/fas-print.svg corresponds with `shop=copyshop` + - circle:white;./assets/layers/id_presets/temaki-lipstick.svg corresponds with `shop=cosmetics` + - circle:white;./assets/layers/id_presets/fas-hat-cowboy-side.svg corresponds with `shop=country_store` + - circle:white;./assets/layers/id_presets/temaki-curtains.svg corresponds with `shop=curtain` + - circle:white;./assets/layers/id_presets/fas-cheese.svg corresponds with `shop=dairy` + - circle:white;./assets/layers/id_presets/temaki-meat.svg corresponds with `shop=deli` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=department_store` + - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with `shop=doityourself` + - circle:white;./assets/layers/id_presets/fas-door-open.svg corresponds with `shop=doors` + - circle:white;./assets/layers/id_presets/temaki-clothes_hanger.svg corresponds with `shop=dry_cleaning` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=e-cigarette` + - circle:white;./assets/layers/id_presets/temaki-power.svg corresponds with `shop=electrical` + - circle:white;./assets/layers/id_presets/fas-plug.svg corresponds with `shop=electronics` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=erotic` + - circle:white;./assets/layers/id_presets/fas-tape.svg corresponds with `shop=fabric` + - circle:white;./assets/layers/id_presets/temaki-fashion_accessories.svg corresponds with `shop=fashion_accessories` + - circle:white;./assets/layers/id_presets/temaki-fireplace.svg corresponds with `shop=fireplace` + - circle:white;./assets/layers/id_presets/temaki-ice_fishing.svg corresponds with `shop=fishing` + - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with `shop=flooring` + - circle:white;./assets/layers/id_presets/maki-florist.svg corresponds with `shop=florist` + - circle:white;./assets/layers/id_presets/fas-vector-square.svg corresponds with `shop=frame` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=frozen_food` + - circle:white;./assets/layers/id_presets/temaki-propane_tank.svg corresponds with `shop=fuel` + - circle:white;./assets/layers/id_presets/maki-cemetery.svg corresponds with `shop=funeral_directors` + - circle:white;./assets/layers/id_presets/fas-couch.svg corresponds with `shop=furniture` + - circle:white;./assets/layers/id_presets/fas-dice.svg corresponds with `shop=games` + - circle:white;./assets/layers/id_presets/maki-garden-centre.svg corresponds with `shop=garden_centre` + - circle:white;./assets/layers/id_presets/temaki-propane_tank.svg corresponds with `shop=gas` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=general` + - circle:white;./assets/layers/id_presets/maki-gift.svg corresponds with `shop=gift` + - circle:white;./assets/layers/id_presets/fas-carrot.svg corresponds with `shop=greengrocer` + - circle:white;./assets/layers/id_presets/temaki-beauty_salon.svg corresponds with `shop=hairdresser` + - circle:white;./assets/layers/id_presets/temaki-hair_care.svg corresponds with `shop=hairdresser_supply` + - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with `shop=hardware` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=health_food` + - circle:white;./assets/layers/id_presets/temaki-hearing_aid.svg corresponds with `shop=hearing_aids` + - circle:white;./assets/layers/id_presets/fas-leaf.svg corresponds with `shop=herbalist` + - circle:white;./assets/layers/id_presets/temaki-speaker.svg corresponds with `shop=hifi` + - circle:white;./assets/layers/id_presets/fas-dragon.svg corresponds with `shop=hobby` + - circle:white;./assets/layers/id_presets/temaki-cloth.svg corresponds with `shop=household_linen` + - circle:white;./assets/layers/id_presets/fas-blender.svg corresponds with `shop=houseware` + - circle:white;./assets/layers/id_presets/temaki-bow_and_arrow.svg corresponds with `shop=hunting` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=interior_decoration` + - circle:white;./assets/layers/id_presets/maki-jewelry-store.svg corresponds with `shop=jewelry` + - circle:white;./assets/layers/id_presets/fas-store.svg corresponds with `shop=kiosk` + - circle:white;./assets/layers/id_presets/temaki-kitchen_sink.svg corresponds with `shop=kitchen` + - circle:white;./assets/layers/id_presets/temaki-laundry.svg corresponds with `shop=laundry` + - circle:white;./assets/layers/id_presets/temaki-handbag.svg corresponds with `shop=leather` + - circle:white;./assets/layers/id_presets/temaki-desk_lamp.svg corresponds with `shop=lighting` + - circle:white;./assets/layers/id_presets/fas-key.svg corresponds with `shop=locksmith` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=mall` + - circle:white;./assets/layers/id_presets/temaki-spa.svg corresponds with `shop=massage` + - circle:white;./assets/layers/id_presets/fas-crutch.svg corresponds with `shop=medical_supply` + - circle:white;./assets/layers/id_presets/temaki-military.svg corresponds with `shop=military_surplus` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=model` + - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with `shop=money_lender` + - circle:white;./assets/layers/id_presets/fas-motorcycle.svg corresponds with `shop=motorcycle` + - circle:white;./assets/layers/id_presets/temaki-motorcycle_repair.svg corresponds with `shop=motorcycle_repair` + - circle:white;./assets/layers/id_presets/fas-compact-disc.svg corresponds with `shop=music` + - circle:white;./assets/layers/id_presets/fas-guitar.svg corresponds with `shop=musical_instrument` + - circle:white;./assets/layers/id_presets/fas-newspaper.svg corresponds with `shop=newsagent` + - circle:white;./assets/layers/id_presets/fas-pills.svg corresponds with `shop=nutrition_supplements` + - circle:white;./assets/layers/id_presets/maki-optician.svg corresponds with `shop=optician` + - circle:white;./assets/layers/id_presets/temaki-compass.svg corresponds with `shop=outdoor` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=outpost` + - circle:white;./assets/layers/id_presets/fas-paint-roller.svg corresponds with `shop=paint` + - circle:white;./assets/layers/id_presets/temaki-balloon.svg corresponds with `shop=party` + - circle:white;./assets/layers/id_presets/maki-bakery.svg corresponds with `shop=pastry` + - circle:white;./assets/layers/id_presets/temaki-money_hand.svg corresponds with `shop=pawnbroker` + - circle:white;./assets/layers/id_presets/temaki-perfume.svg corresponds with `shop=perfumery` + - circle:white;./assets/layers/id_presets/fas-cat.svg corresponds with `shop=pet` + - circle:white;./assets/layers/id_presets/temaki-pet_grooming.svg corresponds with `shop=pet_grooming` + - circle:white;./assets/layers/id_presets/fas-camera-retro.svg corresponds with `shop=photo` + - circle:white;./assets/layers/id_presets/temaki-vase.svg corresponds with `shop=pottery` + - circle:white;./assets/layers/id_presets/fas-print.svg corresponds with `shop=printer_ink` + - circle:white;./assets/layers/id_presets/temaki-psychic.svg corresponds with `shop=psychic` + - circle:white;./assets/layers/id_presets/temaki-rocket_firework.svg corresponds with `shop=pyrotechnics` + - circle:white;./assets/layers/id_presets/fas-microchip.svg corresponds with `shop=radiotechnics` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=religion` + - circle:white;./assets/layers/id_presets/fas-dolly.svg corresponds with `shop=rental` + - circle:white;./assets/layers/id_presets/temaki-scuba_diving.svg corresponds with `shop=scuba_diving` + - circle:white;./assets/layers/id_presets/temaki-fish_cleaning.svg corresponds with `shop=seafood` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=second_hand` + - circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg corresponds with `shop=sewing` + - circle:white;./assets/layers/id_presets/temaki-hammer_shoe.svg corresponds with `shop=shoe_repair` + - circle:white;./assets/layers/id_presets/maki-shoe.svg corresponds with `shop=shoes` + - circle:white;./assets/layers/id_presets/temaki-spice_bottle.svg corresponds with `shop=spices` + - circle:white;./assets/layers/id_presets/fas-futbol.svg corresponds with `shop=sports` + - circle:white;./assets/layers/id_presets/fas-paperclip.svg corresponds with `shop=stationery` + - circle:white;./assets/layers/id_presets/temaki-storage_rental.svg corresponds with `shop=storage_rental` + - circle:white;./assets/layers/id_presets/maki-grocery.svg corresponds with `shop=supermarket` + - circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg corresponds with `shop=tailor` + - circle:white;./assets/layers/id_presets/temaki-tattoo_machine.svg corresponds with `shop=tattoo` + - circle:white;./assets/layers/id_presets/maki-teahouse.svg corresponds with `shop=tea` + - circle:white;./assets/layers/id_presets/maki-telephone.svg corresponds with `shop=telecommunication` + - circle:white;./assets/layers/id_presets/temaki-tiling.svg corresponds with `shop=tiles` + - circle:white;./assets/layers/id_presets/temaki-pipe.svg corresponds with `shop=tobacco` + - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with `shop=tool_hire` + - circle:white;./assets/layers/id_presets/fas-rocket.svg corresponds with `shop=toys` + - circle:white;./assets/layers/id_presets/temaki-tools.svg corresponds with `shop=trade` + - circle:white;./assets/layers/id_presets/fas-suitcase.svg corresponds with `shop=travel_agency` + - circle:white;./assets/layers/id_presets/fas-trophy.svg corresponds with `shop=trophy` + - circle:white;./assets/layers/id_presets/temaki-tire.svg corresponds with `shop=tyres` + - circle:white;./assets/layers/id_presets/temaki-vacuum.svg corresponds with `shop=vacuum_cleaner` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=variety_store` + - circle:white;./assets/layers/id_presets/temaki-movie_rental.svg corresponds with `shop=video` + - circle:white;./assets/layers/id_presets/maki-gaming.svg corresponds with `shop=video_games` + - circle:white;./assets/layers/id_presets/maki-watch.svg corresponds with `shop=watches` + - circle:white;./assets/layers/id_presets/temaki-water_bottle.svg corresponds with `shop=water` + - circle:white;./assets/layers/id_presets/temaki-dagger.svg corresponds with `shop=weapons` + - circle:white;./assets/layers/id_presets/maki-warehouse.svg corresponds with `shop=wholesale` + - circle:white;./assets/layers/id_presets/maki-shop.svg corresponds with `shop=wigs` + - circle:white;./assets/layers/id_presets/temaki-window.svg corresponds with `shop=window_blind` + - circle:white;./assets/layers/id_presets/maki-alcohol-shop.svg corresponds with `shop=wine` This document is autogenerated from [assets/layers/id_presets/id_presets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/id_presets/id_presets.json) \ No newline at end of file diff --git a/Docs/Layers/indoors.md b/Docs/Layers/indoors.md new file mode 100644 index 0000000000..a138c37bd4 --- /dev/null +++ b/Docs/Layers/indoors.md @@ -0,0 +1,67 @@ + + + indoors +========= + + + + + +Basic indoor mapping: shows room outlines + + + + + + + - This layer is shown at zoomlevel **13** and higher + + + + +#### Themes using this layer + + + + + + - [indoors](https://mapcomplete.osm.be/indoors) + - [personal](https://mapcomplete.osm.be/personal) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - indoor=room|indoor=area|indoor=wall|indoor=door|indoor=level + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22indoor%22%3D%22room%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22indoor%22%3D%22area%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22indoor%22%3D%22wall%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22indoor%22%3D%22door%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22indoor%22%3D%22level%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + +This document is autogenerated from [assets/layers/indoors/indoors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/indoors/indoors.json) \ No newline at end of file diff --git a/Docs/Layers/information_board.md b/Docs/Layers/information_board.md index 826f49ff44..4f1c10672a 100644 --- a/Docs/Layers/information_board.md +++ b/Docs/Layers/information_board.md @@ -58,6 +58,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/kerbs.md b/Docs/Layers/kerbs.md index 5292bf6423..884832d354 100644 --- a/Docs/Layers/kerbs.md +++ b/Docs/Layers/kerbs.md @@ -80,12 +80,12 @@ The question is What is the height of this kerb? - - This kerb is raised (>3 cm) corresponds with kerb=raised - - This kerb is lowered (~3 cm) corresponds with kerb=lowered - - This kerb is flush (~0cm) corresponds with kerb=flush - - There is no kerb here corresponds with kerb=no + - This kerb is raised (>3 cm) corresponds with `kerb=raised` + - This kerb is lowered (~3 cm) corresponds with `kerb=lowered` + - This kerb is flush (~0cm) corresponds with `kerb=flush` + - There is no kerb here corresponds with `kerb=no` - This option cannot be chosen as answer - - There is a kerb of unknown height corresponds with kerb=yes + - There is a kerb of unknown height corresponds with `kerb=yes` - This option cannot be chosen as answer @@ -103,9 +103,9 @@ The question is Is there tactile paving at this kerb? - - This kerb has tactile paving. corresponds with tactile_paving=yes - - This kerb does not have tactile paving. corresponds with tactile_paving=no - - This kerb has tactile paving, but it is incorrect corresponds with tactile_paving=incorrect + - This kerb has tactile paving. corresponds with `tactile_paving=yes` + - This kerb does not have tactile paving. corresponds with `tactile_paving=no` + - This kerb has tactile paving, but it is incorrect corresponds with `tactile_paving=incorrect` - This option cannot be chosen as answer diff --git a/Docs/Layers/kindergarten_childcare.md b/Docs/Layers/kindergarten_childcare.md index 291d764511..41b37ee6a6 100644 --- a/Docs/Layers/kindergarten_childcare.md +++ b/Docs/Layers/kindergarten_childcare.md @@ -81,8 +81,8 @@ The question is What type of facility is this? - - This is a kindergarten (also known as preschool) where small kids receive early education. corresponds with amenity=kindergarten - - This is a childcare facility, such as a nursery or daycare where small kids are looked after. They do not offer an education and are ofter run as private businesses corresponds with amenity=childcare + - This is a kindergarten (also known as preschool) where small kids receive early education. corresponds with `amenity=kindergarten` + - This is a childcare facility, such as a nursery or daycare where small kids are looked after. They do not offer an education and are ofter run as private businesses corresponds with `amenity=childcare` @@ -115,7 +115,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -135,7 +135,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -155,7 +155,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/lit_streets.md b/Docs/Layers/lit_streets.md index ae7d43085b..0e0ade82df 100644 --- a/Docs/Layers/lit_streets.md +++ b/Docs/Layers/lit_streets.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -86,11 +88,11 @@ The question is Is this street lit? - - This street is lit corresponds with lit=yes - - This street is not lit corresponds with lit=no - - This street is lit at night corresponds with lit=sunset-sunrise + - This street is lit corresponds with `lit=yes` + - This street is not lit corresponds with `lit=no` + - This street is lit at night corresponds with `lit=sunset-sunrise` - This option cannot be chosen as answer - - This street is lit 24/7 corresponds with lit=24/7 + - This street is lit 24/7 corresponds with `lit=24/7` @@ -99,6 +101,8 @@ The question is Is this street lit? +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -109,6 +113,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/map.md b/Docs/Layers/map.md index 97c4c8d759..7118c2ad3a 100644 --- a/Docs/Layers/map.md +++ b/Docs/Layers/map.md @@ -71,6 +71,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -91,7 +93,7 @@ This is rendered with This map is based on {map_source} - - This map is based on OpenStreetMap corresponds with map_source=OpenStreetMap + - This map is based on OpenStreetMap corresponds with `map_source=OpenStreetMap` @@ -106,11 +108,11 @@ The question is Is the OpenStreetMap-attribution given? - - OpenStreetMap is clearly attributed, including the ODBL-license corresponds with map_source:attribution=yes - - OpenStreetMap is clearly attributed, but the license is not mentioned corresponds with map_source:attribution=incomplete - - OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it corresponds with map_source:attribution=sticker - - There is no attribution at all corresponds with map_source:attribution=none - - There is no attribution at all corresponds with map_source:attribution=no + - OpenStreetMap is clearly attributed, including the ODBL-license corresponds with `map_source:attribution=yes` + - OpenStreetMap is clearly attributed, but the license is not mentioned corresponds with `map_source:attribution=incomplete` + - OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it corresponds with `map_source:attribution=sticker` + - There is no attribution at all corresponds with `map_source:attribution=none` + - There is no attribution at all corresponds with `map_source:attribution=no` - This option cannot be chosen as answer diff --git a/Docs/Layers/maxspeed.md b/Docs/Layers/maxspeed.md index 5f0a6b96c0..7810648d1e 100644 --- a/Docs/Layers/maxspeed.md +++ b/Docs/Layers/maxspeed.md @@ -81,9 +81,9 @@ This is rendered with The maximum allowed speed on this road is {maxspeed} - - This is a living street, which has a maxspeed of 20km/h corresponds with highway=living_street&_country!=be + - This is a living street, which has a maxspeed of 20km/h corresponds with `highway=living_street&_country!=be` - This option cannot be chosen as answer - - This is a living street, which has a maxspeed of 20km/h corresponds with highway=living_street + - This is a living street, which has a maxspeed of 20km/h corresponds with `highway=living_street` This document is autogenerated from [assets/layers/maxspeed/maxspeed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maxspeed/maxspeed.json) \ No newline at end of file diff --git a/Docs/Layers/named_streets.md b/Docs/Layers/named_streets.md index da4815c2e9..52a0c6a8bd 100644 --- a/Docs/Layers/named_streets.md +++ b/Docs/Layers/named_streets.md @@ -16,7 +16,7 @@ Hidden layer with all streets which have a name. Useful to detect addresses - This layer is shown at zoomlevel **18** and higher - This layer is not visible by default and must be enabled in the filter by the user. - - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable. + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-=true - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` diff --git a/Docs/Layers/nature_reserve.md b/Docs/Layers/nature_reserve.md index 88c7250316..9a511f64a0 100644 --- a/Docs/Layers/nature_reserve.md +++ b/Docs/Layers/nature_reserve.md @@ -79,6 +79,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -99,12 +101,12 @@ This is rendered with Accessin this nature reserve: {access:description} - - Publicly accessible corresponds with access=yes - - Not accessible corresponds with access=no - - Not accessible as this is a private area corresponds with access=private - - Accessible despite being a privately owned area corresponds with access=permissive - - Only accessible with a guide or during organised activities corresponds with access=guided - - Accessible with fee corresponds with access=yes&fee=yes + - Publicly accessible corresponds with `access=yes` + - Not accessible corresponds with `access=no` + - Not accessible as this is a private area corresponds with `access=private` + - Accessible despite being a privately owned area corresponds with `access=permissive` + - Only accessible with a guide or during organised activities corresponds with `access=guided` + - Accessible with fee corresponds with `access=yes&fee=yes` @@ -123,10 +125,10 @@ This is rendered with Operated by {operator} - - Operated by Natuurpunt corresponds with operator=Natuurpunt - - Operated by {operator} corresponds with operator~^(n|N)atuurpunt.*$ + - Operated by Natuurpunt corresponds with `operator=Natuurpunt` + - Operated by {operator} corresponds with `operator~^(n|N)atuurpunt.*$` - This option cannot be chosen as answer - - Operated by Agentschap Natuur en Bos corresponds with operator=Agentschap Natuur en Bos + - Operated by Agentschap Natuur en Bos corresponds with `operator=Agentschap Natuur en Bos` @@ -145,7 +147,7 @@ This is rendered with This area is named {name} - - This area doesn't have a name corresponds with noname=yes + - This area doesn't have a name corresponds with `noname=yes` @@ -160,9 +162,9 @@ The question is Are dogs allowed in this nature reserve? - - Dogs have to be leashed corresponds with dog=leashed - - No dogs allowed corresponds with dog=no - - Dogs are allowed to roam freely corresponds with dog=yes + - Dogs have to be leashed corresponds with `dog=leashed` + - No dogs allowed corresponds with `dog=no` + - Dogs are allowed to roam freely corresponds with `dog=yes` Only visible if `access=yes|access=permissive|access=guided` is shown @@ -183,7 +185,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -273,6 +275,8 @@ This tagrendering has no question and is thus read-only +Shows a wikipedia box with the corresponding wikipedia article + The question is What is the corresponding Wikidata entity? This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) @@ -283,9 +287,9 @@ This is rendered with {wikipedia():max-height:25rem} - - {wikipedia():max-height:25rem} corresponds with wikipedia~^..*$ + - {wikipedia():max-height:25rem} corresponds with `wikipedia~^..*$` - This option cannot be chosen as answer - - No Wikipedia page has been linked yet corresponds with + - No Wikipedia page has been linked yet corresponds with `` - This option cannot be chosen as answer diff --git a/Docs/Layers/observation_tower.md b/Docs/Layers/observation_tower.md index c173a784f8..051e15cff3 100644 --- a/Docs/Layers/observation_tower.md +++ b/Docs/Layers/observation_tower.md @@ -78,6 +78,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -98,7 +100,7 @@ This is rendered with This tower is called {name} - - This tower doesn't have a specific name corresponds with noname=yes + - This tower doesn't have a specific name corresponds with `noname=yes` @@ -127,8 +129,8 @@ The question is Can this tower be visited? - - This tower is publicly accessible corresponds with access=yes - - This tower can only be visited with a guide corresponds with access=guided + - This tower is publicly accessible corresponds with `access=yes` + - This tower can only be visited with a guide corresponds with `access=guided` @@ -147,7 +149,7 @@ This is rendered with Visiting this tower costs {charge} - - Free to visit corresponds with fee=no + - Free to visit corresponds with `fee=no` Only visible if `access=yes|access=guided` is shown @@ -164,9 +166,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -188,7 +190,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -220,8 +222,8 @@ The question is Does this tower have an elevator? - - This tower has an elevator which takes visitors to the top corresponds with elevator=yes - - This tower does not have an elevator corresponds with elevator=no + - This tower has an elevator which takes visitors to the top corresponds with `elevator=yes` + - This tower does not have an elevator corresponds with `elevator=no` Only visible if `access=yes|access=guided` is shown @@ -252,10 +254,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` Only visible if `elevator=yes&access=yes|access=guided` is shown @@ -266,6 +268,8 @@ Only visible if `elevator=yes&access=yes|access=guided` is shown +Shows a wikipedia box with the corresponding wikipedia article + The question is What is the corresponding Wikidata entity? This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) @@ -276,9 +280,9 @@ This is rendered with {wikipedia():max-height:25rem} - - {wikipedia():max-height:25rem} corresponds with wikipedia~^..*$ + - {wikipedia():max-height:25rem} corresponds with `wikipedia~^..*$` - This option cannot be chosen as answer - - No Wikipedia page has been linked yet corresponds with + - No Wikipedia page has been linked yet corresponds with `` - This option cannot be chosen as answer diff --git a/Docs/Layers/parking.md b/Docs/Layers/parking.md index 7bc232fea9..0d4ac02233 100644 --- a/Docs/Layers/parking.md +++ b/Docs/Layers/parking.md @@ -72,6 +72,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -88,16 +90,16 @@ The question is What kind of parking is this? - - This is a surface parking lot corresponds with parking=surface - - This is a parking bay next to a street corresponds with parking=street_side - - This is an underground parking garage corresponds with parking=underground - - This is a multi-storey parking garage corresponds with parking=multi-storey - - This is a rooftop parking deck corresponds with parking=rooftop - - This is a lane for parking on the road corresponds with parking=lane - - This is parking covered by carports corresponds with parking=carports - - This a parking consisting of garage boxes corresponds with parking=garage_boxes - - This is a parking on a layby corresponds with parking=layby - - This is a parking consisting of sheds corresponds with parking=sheds + - This is a surface parking lot corresponds with `parking=surface` + - This is a parking bay next to a street corresponds with `parking=street_side` + - This is an underground parking garage corresponds with `parking=underground` + - This is a multi-storey parking garage corresponds with `parking=multi-storey` + - This is a rooftop parking deck corresponds with `parking=rooftop` + - This is a lane for parking on the road corresponds with `parking=lane` + - This is parking covered by carports corresponds with `parking=carports` + - This a parking consisting of garage boxes corresponds with `parking=garage_boxes` + - This is a parking on a layby corresponds with `parking=layby` + - This is a parking consisting of sheds corresponds with `parking=sheds` @@ -116,9 +118,9 @@ This is rendered with There are {capacity:disabled} disabled parking spots - - There are disabled parking spots, but it is not known how many corresponds with capacity:disabled=yes + - There are disabled parking spots, but it is not known how many corresponds with `capacity:disabled=yes` - This option cannot be chosen as answer - - There are no disabled parking spots corresponds with capacity:disabled=no + - There are no disabled parking spots corresponds with `capacity:disabled=no` - This option cannot be chosen as answer diff --git a/Docs/Layers/parks_and_forests_without_etymology.md b/Docs/Layers/parks_and_forests_without_etymology.md index 8f51abab15..dd6d08a10b 100644 --- a/Docs/Layers/parks_and_forests_without_etymology.md +++ b/Docs/Layers/parks_and_forests_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/pedestrian_path.md b/Docs/Layers/pedestrian_path.md index 9cfdff0e6b..b4526194c6 100644 --- a/Docs/Layers/pedestrian_path.md +++ b/Docs/Layers/pedestrian_path.md @@ -15,6 +15,7 @@ Pedestrian footpaths, especially used for indoor navigation and snapping entranc - This layer is shown at zoomlevel **18** and higher + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. - This layer is needed as dependency for layer [entrance](#entrance) @@ -28,7 +29,6 @@ Pedestrian footpaths, especially used for indoor navigation and snapping entranc - [entrances](https://mapcomplete.osm.be/entrances) - [personal](https://mapcomplete.osm.be/personal) - - [walls_and_buildings](https://mapcomplete.osm.be/walls_and_buildings) diff --git a/Docs/Layers/pharmacy.md b/Docs/Layers/pharmacy.md index 8434ce7aed..0a144c789a 100644 --- a/Docs/Layers/pharmacy.md +++ b/Docs/Layers/pharmacy.md @@ -7,6 +7,8 @@ +A layer showing pharmacies, which (probably) dispense prescription drugs + @@ -59,6 +61,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | [](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | @@ -72,12 +75,28 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only +### name + + + +The question is What is the name of the pharmacy? + +This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) + +This is rendered with This pharmacy is called {name} + + + + + ### opening_hours @@ -106,7 +125,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -126,7 +145,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -146,7 +165,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -162,9 +181,9 @@ The question is Is this pharmacy easy to access on a wheelchair? - - This pharmacy is easy to access on a wheelchair corresponds with wheelchair=yes - - This pharmacy is hard to access on a wheelchair corresponds with wheelchair=no - - This pharmacy has limited access for wheelchair users corresponds with wheelchair=limited + - This pharmacy is easy to access on a wheelchair corresponds with `wheelchair=yes` + - This pharmacy is hard to access on a wheelchair corresponds with `wheelchair=no` + - This pharmacy has limited access for wheelchair users corresponds with `wheelchair=limited` This document is autogenerated from [assets/layers/pharmacy/pharmacy.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pharmacy/pharmacy.json) \ No newline at end of file diff --git a/Docs/Layers/picnic_table.md b/Docs/Layers/picnic_table.md index 9e8e1ee42c..137bebbabd 100644 --- a/Docs/Layers/picnic_table.md +++ b/Docs/Layers/picnic_table.md @@ -70,6 +70,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -90,9 +92,9 @@ This is rendered with This picnic table is made of {material} - - This is a wooden picnic table corresponds with material=wood - - This is a concrete picnic table corresponds with material=concrete - - This picnic table is made from (recycled) plastic corresponds with material=plastic + - This is a wooden picnic table corresponds with `material=wood` + - This is a concrete picnic table corresponds with `material=concrete` + - This picnic table is made from (recycled) plastic corresponds with `material=plastic` This document is autogenerated from [assets/layers/picnic_table/picnic_table.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/picnic_table/picnic_table.json) \ No newline at end of file diff --git a/Docs/Layers/play_forest.md b/Docs/Layers/play_forest.md index 5d55f6e16b..e01e5b3345 100644 --- a/Docs/Layers/play_forest.md +++ b/Docs/Layers/play_forest.md @@ -60,6 +60,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -80,9 +82,9 @@ This is rendered with Dit gebied wordt beheerd door {operator} - - Dit gebied wordt beheerd door het Agentschap Natuur en Bos corresponds with operator~^[aA][nN][bB]$ + - Dit gebied wordt beheerd door het Agentschap Natuur en Bos corresponds with `operator~^[aA][nN][bB]$` - This option cannot be chosen as answer - - Dit gebied wordt beheerd door het Agentschap Natuur en Bos corresponds with operator=Agenstchap Natuur en Bos + - Dit gebied wordt beheerd door het Agentschap Natuur en Bos corresponds with `operator=Agenstchap Natuur en Bos` @@ -97,8 +99,8 @@ The question is Wanneer is deze speelzone toegankelijk? - - Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00) corresponds with opening_hours=08:00-22:00 - - Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00 corresponds with opening_hours=Jul-Aug 08:00-22:00 + - Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00) corresponds with `opening_hours=08:00-22:00` + - Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00 corresponds with `opening_hours=Jul-Aug 08:00-22:00` diff --git a/Docs/Layers/playground.md b/Docs/Layers/playground.md index 731170a6b7..958dc54e5f 100644 --- a/Docs/Layers/playground.md +++ b/Docs/Layers/playground.md @@ -79,6 +79,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -99,15 +101,15 @@ This is rendered with The surface is {surface} - - The surface is grass corresponds with surface=grass - - The surface is sand corresponds with surface=sand - - The surface consist of woodchips corresponds with surface=woodchips - - The surface is paving stones corresponds with surface=paving_stones - - The surface is asphalt corresponds with surface=asphalt - - The surface is concrete corresponds with surface=concrete - - The surface is unpaved corresponds with surface=unpaved + - The surface is grass corresponds with `surface=grass` + - The surface is sand corresponds with `surface=sand` + - The surface consist of woodchips corresponds with `surface=woodchips` + - The surface is paving stones corresponds with `surface=paving_stones` + - The surface is asphalt corresponds with `surface=asphalt` + - The surface is concrete corresponds with `surface=concrete` + - The surface is unpaved corresponds with `surface=unpaved` - This option cannot be chosen as answer - - The surface is paved corresponds with surface=paved + - The surface is paved corresponds with `surface=paved` - This option cannot be chosen as answer @@ -123,8 +125,8 @@ The question is Is this playground lit at night? - - This playground is lit at night corresponds with lit=yes - - This playground is not lit at night corresponds with lit=no + - This playground is lit at night corresponds with `lit=yes` + - This playground is not lit at night corresponds with `lit=no` This tagrendering has labels `extra` @@ -187,13 +189,13 @@ The question is Is this playground accessible to the general public? - - Accessible to the general public corresponds with access=yes - - This is a paid playground corresponds with fee=yes - - Only accessible for clients of the operating business corresponds with access=customers - - Only accessible to students of the school corresponds with access=students + - Accessible to the general public corresponds with `access=yes` + - This is a paid playground corresponds with `fee=yes` + - Only accessible for clients of the operating business corresponds with `access=customers` + - Only accessible to students of the school corresponds with `access=students` - This option cannot be chosen as answer - - Not accessible corresponds with access=private - - This is a schoolyard - an outdoor area where the pupils can play during their breaks; but it is not accessible to the general public corresponds with leisure=schoolyard + - Not accessible corresponds with `access=private` + - This is a schoolyard - an outdoor area where the pupils can play during their breaks; but it is not accessible to the general public corresponds with `leisure=schoolyard` @@ -212,7 +214,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -256,9 +258,9 @@ The question is Is this playground accessible to wheelchair users? - - Completely accessible for wheelchair users corresponds with wheelchair=yes - - Limited accessibility for wheelchair users corresponds with wheelchair=limited - - Not accessible for wheelchair users corresponds with wheelchair=no + - Completely accessible for wheelchair users corresponds with `wheelchair=yes` + - Limited accessibility for wheelchair users corresponds with `wheelchair=limited` + - Not accessible for wheelchair users corresponds with `wheelchair=no` @@ -277,8 +279,8 @@ This is rendered with {opening_hours_table(opening_hours)} - - Accessible from sunrise till sunset corresponds with opening_hours=sunrise-sunset - - Always accessible corresponds with opening_hours=24/7 + - Accessible from sunrise till sunset corresponds with `opening_hours=sunrise-sunset` + - Always accessible corresponds with `opening_hours=24/7` diff --git a/Docs/Layers/postboxes.md b/Docs/Layers/postboxes.md index 9589295a44..e1094ca886 100644 --- a/Docs/Layers/postboxes.md +++ b/Docs/Layers/postboxes.md @@ -57,6 +57,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/postoffices.md b/Docs/Layers/postoffices.md index 7aa453ce53..06547ab309 100644 --- a/Docs/Layers/postoffices.md +++ b/Docs/Layers/postoffices.md @@ -68,6 +68,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -98,7 +100,7 @@ This is rendered with Opening Hours: {opening_hours_table()} - - 24/7 opened (including holidays) corresponds with opening_hours=24/7 + - 24/7 opened (including holidays) corresponds with `opening_hours=24/7` This document is autogenerated from [assets/themes/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postboxes/postboxes.json) \ No newline at end of file diff --git a/Docs/Layers/public_bookcase.md b/Docs/Layers/public_bookcase.md index e1a75cd4e9..bd9e97f96d 100644 --- a/Docs/Layers/public_bookcase.md +++ b/Docs/Layers/public_bookcase.md @@ -78,6 +78,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -98,7 +100,7 @@ This is rendered with The name of this bookcase is {name} - - This bookcase doesn't have a name corresponds with noname=yes + - This bookcase doesn't have a name corresponds with `noname=yes` @@ -131,8 +133,8 @@ This is rendered with This place mostly serves {books} - - Mostly children books corresponds with books=children - - Mostly books for adults corresponds with books=adults + - Mostly children books corresponds with `books=children` + - Mostly books for adults corresponds with `books=adults` @@ -147,9 +149,9 @@ The question is Is this bookcase located outdoors? - - This bookcase is located indoors corresponds with indoor=yes - - This bookcase is located outdoors corresponds with indoor=no - - This bookcase is located outdoors corresponds with + - This bookcase is located indoors corresponds with `indoor=yes` + - This bookcase is located outdoors corresponds with `indoor=no` + - This bookcase is located outdoors corresponds with `` - This option cannot be chosen as answer @@ -165,8 +167,8 @@ The question is Is this public bookcase freely accessible? - - Publicly accessible corresponds with access=yes - - Only accessible to customers corresponds with access=customers + - Publicly accessible corresponds with `access=yes` + - Only accessible to customers corresponds with `access=customers` Only visible if `indoor=yes` is shown @@ -201,8 +203,8 @@ This is rendered with This public bookcase is part of {brand} - - Part of the network 'Little Free Library' corresponds with brand=Little Free Library - - This public bookcase is not part of a bigger network corresponds with nobrand=yes + - Part of the network 'Little Free Library' corresponds with `brand=Little Free Library` + - This public bookcase is not part of a bigger network corresponds with `nobrand=yes` @@ -221,7 +223,7 @@ This is rendered with The reference number of this public bookcase within {bran - - This bookcase is not part of a bigger network corresponds with nobrand=yes + - This bookcase is not part of a bigger network corresponds with `nobrand=yes` Only visible if `brand~^..*$` is shown diff --git a/Docs/Layers/rainbow_crossing_high_zoom.md b/Docs/Layers/rainbow_crossing_high_zoom.md index f5ea2ab298..8de253429e 100644 --- a/Docs/Layers/rainbow_crossing_high_zoom.md +++ b/Docs/Layers/rainbow_crossing_high_zoom.md @@ -59,6 +59,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -75,9 +77,9 @@ The question is Does this crossing has rainbow paintings? - - This crossing has rainbow paintings corresponds with crossing:marking=rainbow - - No rainbow paintings here corresponds with not:crossing:marking=rainbow - - No rainbow paintings here corresponds with crossing:marking!=rainbow + - This crossing has rainbow paintings corresponds with `crossing:marking=rainbow` + - No rainbow paintings here corresponds with `not:crossing:marking=rainbow` + - No rainbow paintings here corresponds with `crossing:marking!=rainbow` - This option cannot be chosen as answer @@ -89,6 +91,8 @@ Only visible if `highway=crossing` is shown +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -99,6 +103,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/rainbow_crossings.md b/Docs/Layers/rainbow_crossings.md index b7990c47b5..ee309ee94e 100644 --- a/Docs/Layers/rainbow_crossings.md +++ b/Docs/Layers/rainbow_crossings.md @@ -59,6 +59,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -75,9 +77,9 @@ The question is Does this crossing has rainbow paintings? - - This crossing has rainbow paintings corresponds with crossing:marking=rainbow - - No rainbow paintings here corresponds with not:crossing:marking=rainbow - - No rainbow paintings here corresponds with crossing:marking!=rainbow + - This crossing has rainbow paintings corresponds with `crossing:marking=rainbow` + - No rainbow paintings here corresponds with `not:crossing:marking=rainbow` + - No rainbow paintings here corresponds with `crossing:marking!=rainbow` - This option cannot be chosen as answer diff --git a/Docs/Layers/reception_desk.md b/Docs/Layers/reception_desk.md new file mode 100644 index 0000000000..1d4937a054 --- /dev/null +++ b/Docs/Layers/reception_desk.md @@ -0,0 +1,99 @@ + + + reception_desk +================ + + + + + +A layer showing where the reception desks are and which asks some accessibility information + + + + + + + - This layer is shown at zoomlevel **0** and higher + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - amenity=reception_desk + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22reception_desk%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/desk:height#values) [desk:height](https://wiki.openstreetmap.org/wiki/Key:desk:height) | [pfloat](../SpecialInputElements.md#pfloat) | +[](https://taginfo.openstreetmap.org/keys/hearing_loop#values) [hearing_loop](https://wiki.openstreetmap.org/wiki/Key:hearing_loop) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dno) + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### desk-height + + + +The question is What is the height of the reception desk?
This is measured from the floor to the lowest usable part of the desk
+ +This rendering asks information about the property [desk:height](https://wiki.openstreetmap.org/wiki/Key:desk:height) + +This is rendered with The height of the desk is {canonical(desk:height)} + + + + + +### induction-loop + + + +An accessibility feature: induction loops are for hard-hearing persons which have an FM-receiver. + +The question is Does this place have an audio induction loop for people with reduced hearing? + + + + + + - This place has an audio induction loop corresponds with `hearing_loop=yes` + - This place does not has an audio induction loop corresponds with `hearing_loop=no` + + +This document is autogenerated from [assets/layers/reception_desk/reception_desk.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/reception_desk/reception_desk.json) \ No newline at end of file diff --git a/Docs/Layers/recycling.md b/Docs/Layers/recycling.md index 93608473ec..77e580f2ff 100644 --- a/Docs/Layers/recycling.md +++ b/Docs/Layers/recycling.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -91,9 +93,9 @@ The question is What type of recycling is this? - - This is a recycling container corresponds with recycling_type=container - - This is a recycling centre corresponds with recycling_type=centre - - Waste disposal container for residual waste corresponds with amenity=waste_disposal + - This is a recycling container corresponds with `recycling_type=container` + - This is a recycling centre corresponds with `recycling_type=centre` + - Waste disposal container for residual waste corresponds with `amenity=waste_disposal` @@ -112,7 +114,7 @@ This is rendered with This recycling centre is named {name} - - This recycling centre doesn't have a specific name corresponds with noname=yes + - This recycling centre doesn't have a specific name corresponds with `noname=yes` Only visible if `recycling_type=centre` is shown @@ -129,9 +131,9 @@ The question is Where is this container located? - - This is an underground container corresponds with location=underground - - This container is located indoors corresponds with location=indoor - - This container is located outdoors corresponds with + - This is an underground container corresponds with `location=underground` + - This container is located indoors corresponds with `location=indoor` + - This container is located outdoors corresponds with `` Only visible if `recycling_type=container` is shown @@ -148,49 +150,49 @@ The question is What can be recycled here? - - Batteries can be recycled here corresponds with recycling:batteries=yes + - Batteries can be recycled here corresponds with `recycling:batteries=yes` - Unselecting this answer will add - - Beverage cartons can be recycled here corresponds with recycling:beverage_cartons=yes + - Beverage cartons can be recycled here corresponds with `recycling:beverage_cartons=yes` - Unselecting this answer will add - - Cans can be recycled here corresponds with recycling:cans=yes + - Cans can be recycled here corresponds with `recycling:cans=yes` - Unselecting this answer will add - - Clothes can be recycled here corresponds with recycling:clothes=yes + - Clothes can be recycled here corresponds with `recycling:clothes=yes` - Unselecting this answer will add - - Cooking oil can be recycled here corresponds with recycling:cooking_oil=yes + - Cooking oil can be recycled here corresponds with `recycling:cooking_oil=yes` - Unselecting this answer will add - - Engine oil can be recycled here corresponds with recycling:engine_oil=yes + - Engine oil can be recycled here corresponds with `recycling:engine_oil=yes` - Unselecting this answer will add - - Green waste can be recycled here corresponds with recycling:green_waste=yes + - Green waste can be recycled here corresponds with `recycling:green_waste=yes` - Unselecting this answer will add - - Organic waste can be recycled here corresponds with recycling:organic=yes + - Organic waste can be recycled here corresponds with `recycling:organic=yes` - This option cannot be chosen as answer - Unselecting this answer will add - - Glass bottles can be recycled here corresponds with recycling:glass_bottles=yes + - Glass bottles can be recycled here corresponds with `recycling:glass_bottles=yes` - Unselecting this answer will add - - Glass can be recycled here corresponds with recycling:glass=yes + - Glass can be recycled here corresponds with `recycling:glass=yes` - Unselecting this answer will add - - Newspapers can be recycled here corresponds with recycling:newspaper=yes + - Newspapers can be recycled here corresponds with `recycling:newspaper=yes` - Unselecting this answer will add - - Paper can be recycled here corresponds with recycling:paper=yes + - Paper can be recycled here corresponds with `recycling:paper=yes` - Unselecting this answer will add - - Plastic bottles can be recycled here corresponds with recycling:plastic_bottles=yes + - Plastic bottles can be recycled here corresponds with `recycling:plastic_bottles=yes` - Unselecting this answer will add - - Plastic packaging can be recycled here corresponds with recycling:plastic_packaging=yes + - Plastic packaging can be recycled here corresponds with `recycling:plastic_packaging=yes` - Unselecting this answer will add - - Plastic can be recycled here corresponds with recycling:plastic=yes + - Plastic can be recycled here corresponds with `recycling:plastic=yes` - Unselecting this answer will add - - Scrap metal can be recycled here corresponds with recycling:scrap_metal=yes + - Scrap metal can be recycled here corresponds with `recycling:scrap_metal=yes` - Unselecting this answer will add - - Shoes can be recycled here corresponds with recycling:shoes=yes + - Shoes can be recycled here corresponds with `recycling:shoes=yes` - Unselecting this answer will add - - Small electrical appliances can be recycled here corresponds with recycling:small_appliances=yes + - Small electrical appliances can be recycled here corresponds with `recycling:small_appliances=yes` - Unselecting this answer will add - - Small electrical appliances can be recycled here corresponds with recycling:small_electrical_appliances=yes + - Small electrical appliances can be recycled here corresponds with `recycling:small_electrical_appliances=yes` - This option cannot be chosen as answer - Unselecting this answer will add - - Needles can be recycled here corresponds with recycling:needles=yes + - Needles can be recycled here corresponds with `recycling:needles=yes` - Unselecting this answer will add - - Residual waste can be recycled here corresponds with recycling:waste=yes + - Residual waste can be recycled here corresponds with `recycling:waste=yes` - Unselecting this answer will add @@ -224,7 +226,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -246,7 +248,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -268,7 +270,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -290,7 +292,7 @@ This is rendered with {opening_hours_table()} - - 24/7 corresponds with opening_hours=24/7 + - 24/7 corresponds with `opening_hours=24/7` This document is autogenerated from [assets/layers/recycling/recycling.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/recycling/recycling.json) \ No newline at end of file diff --git a/Docs/Layers/school.md b/Docs/Layers/school.md index f230a5f9f5..44326b4b19 100644 --- a/Docs/Layers/school.md +++ b/Docs/Layers/school.md @@ -113,13 +113,13 @@ The question is What level of education is given on this school? - - This is a school with a kindergarten section where young kids receive some education which prepares reading and writing. corresponds with school=kindergarten - - This is a school where one learns primary skills such as basic literacy and numerical skills.
Pupils typically enroll from 6 years old till 12 years old
corresponds with school=primary - - This is a secondary school which offers all grades corresponds with school=secondary - - This is a secondary school which does not have all grades, but offers first and second grade corresponds with school=lower_secondary - - This is a secondary school which does not have all grades, but offers third and fourth grade corresponds with school=middle_secondary - - This is a secondary school which does not have all grades, but offers fifth and sixth grade corresponds with school=upper_secondary - - This school offers post-secondary education (e.g. a seventh or eight specialisation year) corresponds with school=post_secondary + - This is a school with a kindergarten section where young kids receive some education which prepares reading and writing. corresponds with `school=kindergarten` + - This is a school where one learns primary skills such as basic literacy and numerical skills.
Pupils typically enroll from 6 years old till 12 years old
corresponds with `school=primary` + - This is a secondary school which offers all grades corresponds with `school=secondary` + - This is a secondary school which does not have all grades, but offers first and second grade corresponds with `school=lower_secondary` + - This is a secondary school which does not have all grades, but offers third and fourth grade corresponds with `school=middle_secondary` + - This is a secondary school which does not have all grades, but offers fifth and sixth grade corresponds with `school=upper_secondary` + - This school offers post-secondary education (e.g. a seventh or eight specialisation year) corresponds with `school=post_secondary` Only visible if `_country=be` is shown @@ -136,10 +136,10 @@ The question is Which genders can enroll at this school? - - Both boys and girls can enroll here and have classes together corresponds with school:gender=mixed - - Both boys and girls can enroll here but they are separated (e.g. they have lessons in different classrooms or at different times) corresponds with school:gender=separated - - This is a boys only-school corresponds with school:gender=male - - This is a girls-only school corresponds with school:gender=female + - Both boys and girls can enroll here and have classes together corresponds with `school:gender=mixed` + - Both boys and girls can enroll here but they are separated (e.g. they have lessons in different classrooms or at different times) corresponds with `school:gender=separated` + - This is a boys only-school corresponds with `school:gender=male` + - This is a girls-only school corresponds with `school:gender=female` @@ -158,16 +158,16 @@ This is rendered with This school has facilities for students with {school:for} - - This is a school where students study skills at their age-adequate level.
There are little or no special facilities to cater for students with special needs or facilities are ad-hoc
corresponds with + - This is a school where students study skills at their age-adequate level.
There are little or no special facilities to cater for students with special needs or facilities are ad-hoc
corresponds with `` - This option cannot be chosen as answer - - This is a school for students without special needs
This includes students who can follow the courses with small, ad hoc measurements
corresponds with school:for=mainstream - - This is a school where adults are taught skills on the level as specified. corresponds with school:for=adults - - This is a school for students with autism corresponds with school:for=autism - - This is a school for students with learning disabilities corresponds with school:for=learning_disabilities - - This is a school for blind students or students with sight impairments corresponds with school:for=blind - - This is a school for deaf students or students with hearing impairments corresponds with school:for=deaf - - This is a school for students with disabilities corresponds with school:for=disabilities - - This is a school for students with special needs corresponds with school:for=special_needs + - This is a school for students without special needs
This includes students who can follow the courses with small, ad hoc measurements
corresponds with `school:for=mainstream` + - This is a school where adults are taught skills on the level as specified. corresponds with `school:for=adults` + - This is a school for students with autism corresponds with `school:for=autism` + - This is a school for students with learning disabilities corresponds with `school:for=learning_disabilities` + - This is a school for blind students or students with sight impairments corresponds with `school:for=blind` + - This is a school for deaf students or students with hearing impairments corresponds with `school:for=deaf` + - This is a school for students with disabilities corresponds with `school:for=disabilities` + - This is a school for students with special needs corresponds with `school:for=special_needs` Only visible if `school:for~^..*$` is shown @@ -188,7 +188,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -208,7 +208,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -228,7 +228,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -238,498 +238,500 @@ This is rendered with {email} +Enables to pick a single 'school:language=' within the mappings + The question is What is the main language of this school?
What language is spoken with the students in non-language related courses and with the administration?
- - The main language of this school is unknown corresponds with + - The main language of this school is unknown corresponds with `` - This option cannot be chosen as answer - - Aymara corresponds with school:language=ay - - Abkhaz corresponds with school:language=ab - - Aragonese corresponds with school:language=an - - German corresponds with school:language=de - - Catalan corresponds with school:language=ca - - Azerbaijani corresponds with school:language=az - - Croatian corresponds with school:language=hr - - Esperanto corresponds with school:language=eo - - Bashkir corresponds with school:language=ba - - Arabic corresponds with school:language=ar - - Hebrew corresponds with school:language=he - - Galician corresponds with school:language=gl - - Modern Greek corresponds with school:language=el - - Czech corresponds with school:language=cs - - Danish corresponds with school:language=da - - Afrikaans corresponds with school:language=af - - Irish corresponds with school:language=ga - - Hindi corresponds with school:language=hi - - Bulgarian corresponds with school:language=bg - - Belarusian corresponds with school:language=be - - Gujarati corresponds with school:language=gu - - Welsh corresponds with school:language=cy - - French corresponds with school:language=fr - - Upper Sorbian corresponds with school:language=hsb - - West Frisian corresponds with school:language=fy - - Akan corresponds with school:language=ak - - Amharic corresponds with school:language=am - - Spanish corresponds with school:language=es - - Bosnian corresponds with school:language=bs - - Zazaki corresponds with school:language=diq - - Dzongkha corresponds with school:language=dz - - Corsican corresponds with school:language=co - - Cree corresponds with school:language=cr - - Kashubian corresponds with school:language=csb - - Manx corresponds with school:language=gv - - Chuvash corresponds with school:language=cv - - Bengali corresponds with school:language=bn - - Scottish Gaelic corresponds with school:language=gd - - Avaric corresponds with school:language=av - - Awadhi corresponds with school:language=awa - - Breton corresponds with school:language=br - - Ewe corresponds with school:language=ee - - Dagbani corresponds with school:language=dag - - Maldivian corresponds with school:language=dv - - Finnish corresponds with school:language=fi - - English corresponds with school:language=en - - Adyghe corresponds with school:language=ady - - Assamese corresponds with school:language=as - - Guarani corresponds with school:language=gn - - Fiji Hindi corresponds with school:language=hif - - Asturian corresponds with school:language=ast - - Lower Sorbian corresponds with school:language=dsb - - Hawaiian corresponds with school:language=haw - - Gilaki corresponds with school:language=glk - - Gagauz corresponds with school:language=gag - - Gan corresponds with school:language=gan - - American Sign Language corresponds with school:language=ase - - Carolinian corresponds with school:language=cal - - Gilbertese corresponds with school:language=gil - - Egyptian Arabic corresponds with school:language=arz - - Balinese corresponds with school:language=ban - - Hakka corresponds with school:language=hak - - Dinka corresponds with school:language=din - - Emilian corresponds with school:language=egl - - Doteli corresponds with school:language=dty - - Persian corresponds with school:language=fa - - Montenegrin corresponds with school:language=cnr - - Russia Buriat corresponds with school:language=bxr - - Sorani corresponds with school:language=ckb - - Basque corresponds with school:language=eu - - Estonian corresponds with school:language=et - - Bavarian corresponds with school:language=bar - - Faroese corresponds with school:language=fo - - North Frisian corresponds with school:language=frr - - Chamorro corresponds with school:language=ch - - Cheyenne corresponds with school:language=chy - - Chechen corresponds with school:language=ce - - Norwegian corresponds with school:language=no - - Banjar corresponds with school:language=bjn - - Cebuano corresponds with school:language=ceb - - Hausa corresponds with school:language=ha - - Franco-Provençal corresponds with school:language=frp - - Cherokee corresponds with school:language=chr - - Guianan Creole corresponds with school:language=gcr - - Gorontalo corresponds with school:language=gor - - Extremaduran corresponds with school:language=ext - - Fijian corresponds with school:language=fj - - Friulian corresponds with school:language=fur - - Kose corresponds with school:language=bss - - Old Prussian corresponds with school:language=prg - - Koyraboro Senni corresponds with school:language=ses - - Pökoot corresponds with school:language=pko - - Chakma corresponds with school:language=ccp - - Duala corresponds with school:language=dua - - Turkish corresponds with school:language=tr - - Urdu corresponds with school:language=ur - - Bambara corresponds with school:language=bm - - Fula corresponds with school:language=ff - - Russian corresponds with school:language=ru - - Sidamo corresponds with school:language=sid - - Niuean corresponds with school:language=niu - - Ojibwe corresponds with school:language=oj - - Votic corresponds with school:language=vot - - British Sign Language corresponds with school:language=bfi - - Blackfoot corresponds with school:language=bla - - Toba Batak corresponds with school:language=bbc - - Chittagonian corresponds with school:language=ctg - - Brahui corresponds with school:language=brh - - Bugis corresponds with school:language=bug - - Punjabi corresponds with school:language=pa - - Punjabi corresponds with school:language=pnb - - Bodo corresponds with school:language=brx - - Kildin Sami corresponds with school:language=sjd - - Tibetan corresponds with school:language=bo - - Bislama corresponds with school:language=bi - - Min Dong corresponds with school:language=cdo - - Swahili corresponds with school:language=sw - - Goan Konkani corresponds with school:language=gom - - Mauritian Creole corresponds with school:language=mfe - - Chinese corresponds with school:language=zh - - Sassarese corresponds with school:language=sdc - - Plautdietsch corresponds with school:language=pdt - - Siberian Tatar corresponds with school:language=sty - - Carpathian Romani corresponds with school:language=rmc - - Noongar corresponds with school:language=nys - - Alsatian corresponds with school:language=gsw-fr - - Zuni corresponds with school:language=zun - - Skolt Sami corresponds with school:language=sms - - Pijin corresponds with school:language=pis - - Southern Ndebele corresponds with school:language=nr - - Munsee corresponds with school:language=umu - - Ga corresponds with school:language=gaa - - Fon corresponds with school:language=fon - - Lozi corresponds with school:language=loz - - Seychellois Creole corresponds with school:language=crs - - Turoyo corresponds with school:language=tru - - Aghem corresponds with school:language=agq - - Moroccan Arabic corresponds with school:language=ary - - Atikamekw corresponds with school:language=atj - - Altai corresponds with school:language=alt - - Tamil corresponds with school:language=ta - - Pashto corresponds with school:language=ps - - N'Ko corresponds with school:language=nqo - - Romanian corresponds with school:language=ro - - Chavacano corresponds with school:language=cbk-zam - - Elfdalian corresponds with school:language=ovd - - Main-Franconian corresponds with school:language=vmf - - Rinconada Bikol corresponds with school:language=bto - - Southern Balochi corresponds with school:language=bcc - - Northern East Cree corresponds with school:language=crl - - Northern Luri corresponds with school:language=lrc - - Aklan corresponds with school:language=akl - - Bishnupriya Manipuri corresponds with school:language=bpy - - Mi'kmaq corresponds with school:language=mic - - Slovak corresponds with school:language=sk - - Slovene corresponds with school:language=sl - - Okinawan corresponds with school:language=ryu - - Yaghnobi corresponds with school:language=yai - - Efik corresponds with school:language=efi - - Telugu corresponds with school:language=te - - Yiddish corresponds with school:language=yi - - Tajik corresponds with school:language=tg - - Samogitian corresponds with school:language=bat-smg - - Northern Thai corresponds with school:language=nod - - Rangi corresponds with school:language=lag - - Kinaray-a corresponds with school:language=krj - - Yapese corresponds with school:language=yap - - Yidgha corresponds with school:language=ydg - - Vietnamese corresponds with school:language=vi - - Italian corresponds with school:language=it - - Babuza corresponds with school:language=bzg - - Puyuma corresponds with school:language=pyu - - Wayuu corresponds with school:language=guc - - O'odham corresponds with school:language=ood - - West Coast Bajau corresponds with school:language=bdr - - Mandailing corresponds with school:language=btm - - Guadeloupean Creole corresponds with school:language=gcf - - Sirionó corresponds with school:language=srq - - Indian Sign Language corresponds with school:language=ins - - Arakanese corresponds with school:language=rki - - Wallisian corresponds with school:language=wls - - Pite Sami corresponds with school:language=sje - - Lule Sami corresponds with school:language=smj - - Kumyk corresponds with school:language=kum - - Kombe corresponds with school:language=nui - - Southern Min corresponds with school:language=zh-min-nan - - Polish corresponds with school:language=pl - - Pu-Xian Min corresponds with school:language=cpx - - Khams Tibetan corresponds with school:language=khg - - Kven corresponds with school:language=fkv - - Pular corresponds with school:language=fuf - - Jambi Malay corresponds with school:language=jax - - Kadazandusun corresponds with school:language=dtp - - Standard Moroccan Berber corresponds with school:language=zgh - - Western Balochi corresponds with school:language=bgn - - Yangben corresponds with school:language=yav - - Swedish corresponds with school:language=sv - - South Azerbaijani corresponds with school:language=azb - - Kanakanavu corresponds with school:language=xnb - - Dari corresponds with school:language=fa-af - - Quechua corresponds with school:language=qu - - Seri corresponds with school:language=sei - - Albanian corresponds with school:language=sq - - Ukrainian corresponds with school:language=uk - - Uzbek corresponds with school:language=uz - - Georgian corresponds with school:language=ka - - Portuguese corresponds with school:language=pt - - Armenian corresponds with school:language=hy - - Dutch corresponds with school:language=nl - - Romansh corresponds with school:language=rm - - Gheg Albanian corresponds with school:language=aln - - Marathi corresponds with school:language=mr - - Malagasy corresponds with school:language=mg - - Serbo-Croatian corresponds with school:language=sh - - Zulu corresponds with school:language=zu - - Icelandic corresponds with school:language=is - - Luxembourgish corresponds with school:language=lb - - Turkmen corresponds with school:language=tk - - Thai corresponds with school:language=th - - Japanese corresponds with school:language=ja - - Latvian corresponds with school:language=lv - - Romani corresponds with school:language=rmy - - Khmer corresponds with school:language=km - - Lao corresponds with school:language=lo - - Somali corresponds with school:language=so - - Southern Sami corresponds with school:language=sma - - Innu-aimun corresponds with school:language=moe - - Serbian corresponds with school:language=sr - - Lithuanian corresponds with school:language=lt - - Hungarian corresponds with school:language=hu - - Burmese corresponds with school:language=my - - Malay corresponds with school:language=ms - - Xhosa corresponds with school:language=xh - - Udmurt corresponds with school:language=udm - - Rusyn corresponds with school:language=rue - - Saterland Frisian corresponds with school:language=stq - - Kyrgyz corresponds with school:language=ky - - Maltese corresponds with school:language=mt - - Macedonian corresponds with school:language=mk - - Zhuang corresponds with school:language=za - - Uyghur corresponds with school:language=ug - - Korean corresponds with school:language=ko - - Sinhala corresponds with school:language=si - - Kazakh corresponds with school:language=kk - - Nauruan corresponds with school:language=na - - Navajo corresponds with school:language=nv - - Meänkieli corresponds with school:language=fit - - Mingrelian corresponds with school:language=xmf - - Afar corresponds with school:language=aa - - Angika corresponds with school:language=anp - - Aromanian corresponds with school:language=rup - - Venetian corresponds with school:language=vec - - Veps corresponds with school:language=vep - - Bhojpuri corresponds with school:language=bh - - Shawiya corresponds with school:language=shy - - Herero corresponds with school:language=hz - - Mon corresponds with school:language=mnw - - Mazanderani corresponds with school:language=mzn - - Occitan corresponds with school:language=oc - - Indonesian corresponds with school:language=id - - Venda corresponds with school:language=ve - - Minangkabau corresponds with school:language=min - - Mirandese corresponds with school:language=mwl - - Pennsylvania German corresponds with school:language=pdc - - Palatinate German corresponds with school:language=pfl - - Nynorsk corresponds with school:language=nn - - Bokmål corresponds with school:language=nb - - Cornish corresponds with school:language=kw - - Scots corresponds with school:language=sco - - Moksha corresponds with school:language=mdf - - Sindhi corresponds with school:language=sd - - Tatar corresponds with school:language=tt - - Silesian corresponds with school:language=szl - - Karakalpak corresponds with school:language=kaa - - Javanese corresponds with school:language=jv - - Tagalog corresponds with school:language=tl - - Tongan corresponds with school:language=to - - Erzya corresponds with school:language=myv - - Lezgian corresponds with school:language=lez - - Choctaw corresponds with school:language=cho - - Greenlandic corresponds with school:language=kl - - Piedmontese corresponds with school:language=pms - - Crimean Tatar corresponds with school:language=crh - - Inari Sami corresponds with school:language=smn - - Ripuarian corresponds with school:language=ksh - - Chewa corresponds with school:language=ny - - Mongolian corresponds with school:language=mn - - Kashmiri corresponds with school:language=ks - - Igbo corresponds with school:language=ig - - Kinyarwanda corresponds with school:language=rw - - Low German corresponds with school:language=nds - - Ndonga corresponds with school:language=ng - - Saraiki corresponds with school:language=skr - - Northern Sami corresponds with school:language=se - - Inupiaq corresponds with school:language=ik - - Khakas corresponds with school:language=kjh - - Nepali corresponds with school:language=ne - - Neapolitan corresponds with school:language=nap - - Luganda corresponds with school:language=lg - - Haitian Creole corresponds with school:language=ht - - Ossetian corresponds with school:language=os - - Newar corresponds with school:language=new - - Sundanese corresponds with school:language=su - - Inuktitut corresponds with school:language=iu - - Gikuyu corresponds with school:language=ki - - Kannada corresponds with school:language=kn - - Ingush corresponds with school:language=inh - - Picard corresponds with school:language=pcd - - Sardinian corresponds with school:language=sc - - Sranan Tongo corresponds with school:language=srn - - Kirundi corresponds with school:language=rn - - Hiri Motu corresponds with school:language=ho - - Sango corresponds with school:language=sg - - Papiamento corresponds with school:language=pap - - Kabardian corresponds with school:language=kbd - - Odia corresponds with school:language=or - - Mapudungun corresponds with school:language=arn - - Oromo corresponds with school:language=om - - Santali corresponds with school:language=sat - - Nuosu corresponds with school:language=ii - - Kabiye corresponds with school:language=kbp - - Kabyle corresponds with school:language=kab - - Kongo corresponds with school:language=kg - - Karachay-Balkar corresponds with school:language=krc - - Tumbuka corresponds with school:language=tum - - Tausug corresponds with school:language=tsg - - Shilha corresponds with school:language=shi - - Shona corresponds with school:language=sn - - Tok Pisin corresponds with school:language=tpi - - Tarifit corresponds with school:language=rif - - Tuvan corresponds with school:language=tyv - - Tigrinya corresponds with school:language=ti - - Tetum corresponds with school:language=tet - - Sicilian corresponds with school:language=scn - - Lombard corresponds with school:language=lmo - - Ilocano corresponds with school:language=ilo - - Samoan corresponds with school:language=sm - - Swazi corresponds with school:language=ss - - Meitei corresponds with school:language=mni - - Komi corresponds with school:language=kv - - Kurdish corresponds with school:language=ku - - Judaeo-Spanish corresponds with school:language=lad - - Tsonga corresponds with school:language=ts - - Sesotho corresponds with school:language=st - - Ligurian corresponds with school:language=lij - - Maithili corresponds with school:language=mai - - Tuvaluan corresponds with school:language=tvl - - Tswana corresponds with school:language=tn - - Walloon corresponds with school:language=wa - - Southern Min corresponds with school:language=nan - - Pitkern corresponds with school:language=pih - - Ladin corresponds with school:language=lld - - Tahitian corresponds with school:language=ty - - Wolof corresponds with school:language=wo - - Waray corresponds with school:language=war - - Lak corresponds with school:language=lbe - - Latgalian corresponds with school:language=ltg - - Madurese corresponds with school:language=mad - - Marshallese corresponds with school:language=mh - - Moldovan corresponds with school:language=mo - - Nenets corresponds with school:language=yrk - - Chinook Jargon corresponds with school:language=chn - - Kanuri corresponds with school:language=kr - - Twi corresponds with school:language=tw - - Shan corresponds with school:language=shn - - West Flemish corresponds with school:language=vls - - Pangasinan corresponds with school:language=pag - - Northern Sotho corresponds with school:language=nso - - Lingala corresponds with school:language=ln - - Zeelandic corresponds with school:language=zea - - Atayal corresponds with school:language=tay - - Wu Chinese corresponds with school:language=wuu - - Sakha corresponds with school:language=sah - - Jamaican Creole corresponds with school:language=jam - - Lakota corresponds with school:language=lkt - - Karelian corresponds with school:language=krl - - Tulu corresponds with school:language=tcy - - Ume Sami corresponds with school:language=sju - - Southern Thai corresponds with school:language=sou - - Amdo Tibetan corresponds with school:language=adx - - Silesian German corresponds with school:language=sli - - Swiss German corresponds with school:language=als - - Khasi corresponds with school:language=kha - - Manchu corresponds with school:language=mnc - - Yoruba corresponds with school:language=yo - - Malayalam corresponds with school:language=ml - - Haida corresponds with school:language=hai - - Kutenai corresponds with school:language=kut - - Ho corresponds with school:language=hoc - - German Sign Language corresponds with school:language=gsg - - Limburgish corresponds with school:language=li - - Western Armenian corresponds with school:language=hyw - - Central Alaskan Yup'ik corresponds with school:language=esu - - Abaza corresponds with school:language=abq - - Tlingit corresponds with school:language=tli - - Seediq corresponds with school:language=trv - - Sakizaya corresponds with school:language=szy - - Mizo corresponds with school:language=lus - - Livvi-Karelian corresponds with school:language=olo - - Pontic Greek corresponds with school:language=pnt - - Permyak corresponds with school:language=koi - - Nogai corresponds with school:language=nog - - Wakhi corresponds with school:language=wbl - - Talysh corresponds with school:language=tly - - Meadow Mari corresponds with school:language=mhr - - Megleno-Romanian corresponds with school:language=ruq - - Mentawai corresponds with school:language=mwv - - Koyukon corresponds with school:language=koy - - Chilcotin corresponds with school:language=clc - - Võro corresponds with school:language=fiu-vro - - Louisiana French corresponds with school:language=frc - - Gun corresponds with school:language=guw - - Hakha-Chin corresponds with school:language=cnh - - Mapun corresponds with school:language=sjm - - Brazilian Sign Language corresponds with school:language=bzs - - Tyap corresponds with school:language=kcg - - Māori corresponds with school:language=mi - - Tunisian Arabic corresponds with school:language=aeb - - Guernésiais corresponds with school:language=nrf-gg - - Laki corresponds with school:language=lki - - Beja corresponds with school:language=bej - - Chukchi corresponds with school:language=ckt - - Muscogee corresponds with school:language=mus - - Paiwan corresponds with school:language=pwn - - Kwanyama corresponds with school:language=kj - - Romagnol corresponds with school:language=rgn - - Ambonese corresponds with school:language=abs - - Saaroa corresponds with school:language=sxr - - Kavalan corresponds with school:language=ckv - - Tsou corresponds with school:language=tsu - - Saisiyat corresponds with school:language=xsy - - Lavukaleve corresponds with school:language=lvk - - Yue Chinese corresponds with school:language=zh-yue - - Tavoyan corresponds with school:language=tvn - - Papuan Malay corresponds with school:language=pmy - - Khamba corresponds with school:language=kbg - - Marwari corresponds with school:language=rwr - - Northern Tutchone corresponds with school:language=ttm - - Hill Mari corresponds with school:language=mrj - - Nias corresponds with school:language=nia - - Nheengatu corresponds with school:language=yrl - - Kaqchikel corresponds with school:language=cak - - Amis corresponds with school:language=ami - - Karon corresponds with school:language=krx - - Hiligaynon corresponds with school:language=hil - - Pazeh corresponds with school:language=uun - - Ter Sami corresponds with school:language=sjt - - Wolaytta corresponds with school:language=wal - - Vilamovian corresponds with school:language=wym - - Algerian Arabic corresponds with school:language=arq - - Burushaski corresponds with school:language=bsk - - Bakhtiari corresponds with school:language=bqi - - Hunsrik corresponds with school:language=hrx - - Thao corresponds with school:language=ssf - - Mara corresponds with school:language=mrh - - Pemon corresponds with school:language=aoc - - Tseku corresponds with school:language=tsk - - Southern Luri corresponds with school:language=luz - - Southern Tutchone corresponds with school:language=tce - - K’iche’ corresponds with school:language=quc - - Bunun corresponds with school:language=bnn - - Laz corresponds with school:language=lzz - - Southern Kurdish corresponds with school:language=sdh - - Naskapi corresponds with school:language=nsk - - Alabama corresponds with school:language=akz - - Krio corresponds with school:language=kri - - Cape Verdean Creole corresponds with school:language=kea - - Rukai corresponds with school:language=dru - - Central Atlas Tamazight corresponds with school:language=tzm - - Badaga corresponds with school:language=bfq - - Khowar corresponds with school:language=khw - - Southern Uzbek corresponds with school:language=uzs - - Finnish Kalo corresponds with school:language=rmf - - Osage corresponds with school:language=osa - - Capiznon corresponds with school:language=cps - - Pitjantjatjara corresponds with school:language=pjt - - Eastern Pwo corresponds with school:language=kjp - - Ghanaian Pidgin English corresponds with school:language=gpe - - Kirmanjki corresponds with school:language=kiu - - Cook Islands Maori corresponds with school:language=rar - - S'gaw Karen corresponds with school:language=ksw - - Simplified Chinese corresponds with school:language=zh_Hant - - Brazilian Portuguese corresponds with school:language=pt_BR - - Filipino corresponds with school:language=fil + - Aymara corresponds with `school:language=ay` + - Abkhaz corresponds with `school:language=ab` + - Aragonese corresponds with `school:language=an` + - German corresponds with `school:language=de` + - Catalan corresponds with `school:language=ca` + - Azerbaijani corresponds with `school:language=az` + - Croatian corresponds with `school:language=hr` + - Esperanto corresponds with `school:language=eo` + - Bashkir corresponds with `school:language=ba` + - Arabic corresponds with `school:language=ar` + - Hebrew corresponds with `school:language=he` + - Galician corresponds with `school:language=gl` + - Modern Greek corresponds with `school:language=el` + - Czech corresponds with `school:language=cs` + - Danish corresponds with `school:language=da` + - Afrikaans corresponds with `school:language=af` + - Irish corresponds with `school:language=ga` + - Hindi corresponds with `school:language=hi` + - Bulgarian corresponds with `school:language=bg` + - Belarusian corresponds with `school:language=be` + - Gujarati corresponds with `school:language=gu` + - Welsh corresponds with `school:language=cy` + - French corresponds with `school:language=fr` + - Upper Sorbian corresponds with `school:language=hsb` + - West Frisian corresponds with `school:language=fy` + - Akan corresponds with `school:language=ak` + - Amharic corresponds with `school:language=am` + - Spanish corresponds with `school:language=es` + - Bosnian corresponds with `school:language=bs` + - Zazaki corresponds with `school:language=diq` + - Dzongkha corresponds with `school:language=dz` + - Corsican corresponds with `school:language=co` + - Cree corresponds with `school:language=cr` + - Kashubian corresponds with `school:language=csb` + - Manx corresponds with `school:language=gv` + - Chuvash corresponds with `school:language=cv` + - Bengali corresponds with `school:language=bn` + - Scottish Gaelic corresponds with `school:language=gd` + - Avaric corresponds with `school:language=av` + - Awadhi corresponds with `school:language=awa` + - Breton corresponds with `school:language=br` + - Ewe corresponds with `school:language=ee` + - Dagbani corresponds with `school:language=dag` + - Maldivian corresponds with `school:language=dv` + - Finnish corresponds with `school:language=fi` + - English corresponds with `school:language=en` + - Adyghe corresponds with `school:language=ady` + - Assamese corresponds with `school:language=as` + - Guarani corresponds with `school:language=gn` + - Fiji Hindi corresponds with `school:language=hif` + - Asturian corresponds with `school:language=ast` + - Lower Sorbian corresponds with `school:language=dsb` + - Hawaiian corresponds with `school:language=haw` + - Gilaki corresponds with `school:language=glk` + - Gagauz corresponds with `school:language=gag` + - Gan corresponds with `school:language=gan` + - American Sign Language corresponds with `school:language=ase` + - Carolinian corresponds with `school:language=cal` + - Gilbertese corresponds with `school:language=gil` + - Egyptian Arabic corresponds with `school:language=arz` + - Balinese corresponds with `school:language=ban` + - Hakka corresponds with `school:language=hak` + - Dinka corresponds with `school:language=din` + - Emilian corresponds with `school:language=egl` + - Doteli corresponds with `school:language=dty` + - Persian corresponds with `school:language=fa` + - Montenegrin corresponds with `school:language=cnr` + - Russia Buriat corresponds with `school:language=bxr` + - Sorani corresponds with `school:language=ckb` + - Basque corresponds with `school:language=eu` + - Estonian corresponds with `school:language=et` + - Bavarian corresponds with `school:language=bar` + - Faroese corresponds with `school:language=fo` + - North Frisian corresponds with `school:language=frr` + - Chamorro corresponds with `school:language=ch` + - Cheyenne corresponds with `school:language=chy` + - Chechen corresponds with `school:language=ce` + - Norwegian corresponds with `school:language=no` + - Banjar corresponds with `school:language=bjn` + - Cebuano corresponds with `school:language=ceb` + - Hausa corresponds with `school:language=ha` + - Franco-Provençal corresponds with `school:language=frp` + - Cherokee corresponds with `school:language=chr` + - Guianan Creole corresponds with `school:language=gcr` + - Gorontalo corresponds with `school:language=gor` + - Extremaduran corresponds with `school:language=ext` + - Fijian corresponds with `school:language=fj` + - Friulian corresponds with `school:language=fur` + - Kose corresponds with `school:language=bss` + - Old Prussian corresponds with `school:language=prg` + - Koyraboro Senni corresponds with `school:language=ses` + - Pökoot corresponds with `school:language=pko` + - Chakma corresponds with `school:language=ccp` + - Duala corresponds with `school:language=dua` + - Turkish corresponds with `school:language=tr` + - Urdu corresponds with `school:language=ur` + - Bambara corresponds with `school:language=bm` + - Fula corresponds with `school:language=ff` + - Russian corresponds with `school:language=ru` + - Sidamo corresponds with `school:language=sid` + - Niuean corresponds with `school:language=niu` + - Ojibwe corresponds with `school:language=oj` + - Votic corresponds with `school:language=vot` + - British Sign Language corresponds with `school:language=bfi` + - Blackfoot corresponds with `school:language=bla` + - Toba Batak corresponds with `school:language=bbc` + - Chittagonian corresponds with `school:language=ctg` + - Brahui corresponds with `school:language=brh` + - Bugis corresponds with `school:language=bug` + - Punjabi corresponds with `school:language=pa` + - Punjabi corresponds with `school:language=pnb` + - Bodo corresponds with `school:language=brx` + - Kildin Sami corresponds with `school:language=sjd` + - Tibetan corresponds with `school:language=bo` + - Bislama corresponds with `school:language=bi` + - Min Dong corresponds with `school:language=cdo` + - Swahili corresponds with `school:language=sw` + - Goan Konkani corresponds with `school:language=gom` + - Mauritian Creole corresponds with `school:language=mfe` + - Chinese corresponds with `school:language=zh` + - Sassarese corresponds with `school:language=sdc` + - Plautdietsch corresponds with `school:language=pdt` + - Siberian Tatar corresponds with `school:language=sty` + - Carpathian Romani corresponds with `school:language=rmc` + - Noongar corresponds with `school:language=nys` + - Alsatian corresponds with `school:language=gsw-fr` + - Zuni corresponds with `school:language=zun` + - Skolt Sami corresponds with `school:language=sms` + - Pijin corresponds with `school:language=pis` + - Southern Ndebele corresponds with `school:language=nr` + - Munsee corresponds with `school:language=umu` + - Ga corresponds with `school:language=gaa` + - Fon corresponds with `school:language=fon` + - Lozi corresponds with `school:language=loz` + - Seychellois Creole corresponds with `school:language=crs` + - Turoyo corresponds with `school:language=tru` + - Aghem corresponds with `school:language=agq` + - Moroccan Arabic corresponds with `school:language=ary` + - Atikamekw corresponds with `school:language=atj` + - Altai corresponds with `school:language=alt` + - Tamil corresponds with `school:language=ta` + - Pashto corresponds with `school:language=ps` + - N'Ko corresponds with `school:language=nqo` + - Romanian corresponds with `school:language=ro` + - Chavacano corresponds with `school:language=cbk-zam` + - Elfdalian corresponds with `school:language=ovd` + - Main-Franconian corresponds with `school:language=vmf` + - Rinconada Bikol corresponds with `school:language=bto` + - Southern Balochi corresponds with `school:language=bcc` + - Northern East Cree corresponds with `school:language=crl` + - Northern Luri corresponds with `school:language=lrc` + - Aklan corresponds with `school:language=akl` + - Bishnupriya Manipuri corresponds with `school:language=bpy` + - Mi'kmaq corresponds with `school:language=mic` + - Slovak corresponds with `school:language=sk` + - Slovene corresponds with `school:language=sl` + - Okinawan corresponds with `school:language=ryu` + - Yaghnobi corresponds with `school:language=yai` + - Efik corresponds with `school:language=efi` + - Telugu corresponds with `school:language=te` + - Yiddish corresponds with `school:language=yi` + - Tajik corresponds with `school:language=tg` + - Samogitian corresponds with `school:language=bat-smg` + - Northern Thai corresponds with `school:language=nod` + - Rangi corresponds with `school:language=lag` + - Kinaray-a corresponds with `school:language=krj` + - Yapese corresponds with `school:language=yap` + - Yidgha corresponds with `school:language=ydg` + - Vietnamese corresponds with `school:language=vi` + - Italian corresponds with `school:language=it` + - Babuza corresponds with `school:language=bzg` + - Puyuma corresponds with `school:language=pyu` + - Wayuu corresponds with `school:language=guc` + - O'odham corresponds with `school:language=ood` + - West Coast Bajau corresponds with `school:language=bdr` + - Mandailing corresponds with `school:language=btm` + - Guadeloupean Creole corresponds with `school:language=gcf` + - Sirionó corresponds with `school:language=srq` + - Indian Sign Language corresponds with `school:language=ins` + - Arakanese corresponds with `school:language=rki` + - Wallisian corresponds with `school:language=wls` + - Pite Sami corresponds with `school:language=sje` + - Lule Sami corresponds with `school:language=smj` + - Kumyk corresponds with `school:language=kum` + - Kombe corresponds with `school:language=nui` + - Southern Min corresponds with `school:language=zh-min-nan` + - Polish corresponds with `school:language=pl` + - Pu-Xian Min corresponds with `school:language=cpx` + - Khams Tibetan corresponds with `school:language=khg` + - Kven corresponds with `school:language=fkv` + - Pular corresponds with `school:language=fuf` + - Jambi Malay corresponds with `school:language=jax` + - Kadazandusun corresponds with `school:language=dtp` + - Standard Moroccan Berber corresponds with `school:language=zgh` + - Western Balochi corresponds with `school:language=bgn` + - Yangben corresponds with `school:language=yav` + - Swedish corresponds with `school:language=sv` + - South Azerbaijani corresponds with `school:language=azb` + - Kanakanavu corresponds with `school:language=xnb` + - Dari corresponds with `school:language=fa-af` + - Quechua corresponds with `school:language=qu` + - Seri corresponds with `school:language=sei` + - Albanian corresponds with `school:language=sq` + - Ukrainian corresponds with `school:language=uk` + - Uzbek corresponds with `school:language=uz` + - Georgian corresponds with `school:language=ka` + - Portuguese corresponds with `school:language=pt` + - Armenian corresponds with `school:language=hy` + - Dutch corresponds with `school:language=nl` + - Romansh corresponds with `school:language=rm` + - Gheg Albanian corresponds with `school:language=aln` + - Marathi corresponds with `school:language=mr` + - Malagasy corresponds with `school:language=mg` + - Serbo-Croatian corresponds with `school:language=sh` + - Zulu corresponds with `school:language=zu` + - Icelandic corresponds with `school:language=is` + - Luxembourgish corresponds with `school:language=lb` + - Turkmen corresponds with `school:language=tk` + - Thai corresponds with `school:language=th` + - Japanese corresponds with `school:language=ja` + - Latvian corresponds with `school:language=lv` + - Romani corresponds with `school:language=rmy` + - Khmer corresponds with `school:language=km` + - Lao corresponds with `school:language=lo` + - Somali corresponds with `school:language=so` + - Southern Sami corresponds with `school:language=sma` + - Innu-aimun corresponds with `school:language=moe` + - Serbian corresponds with `school:language=sr` + - Lithuanian corresponds with `school:language=lt` + - Hungarian corresponds with `school:language=hu` + - Burmese corresponds with `school:language=my` + - Malay corresponds with `school:language=ms` + - Xhosa corresponds with `school:language=xh` + - Udmurt corresponds with `school:language=udm` + - Rusyn corresponds with `school:language=rue` + - Saterland Frisian corresponds with `school:language=stq` + - Kyrgyz corresponds with `school:language=ky` + - Maltese corresponds with `school:language=mt` + - Macedonian corresponds with `school:language=mk` + - Zhuang corresponds with `school:language=za` + - Uyghur corresponds with `school:language=ug` + - Korean corresponds with `school:language=ko` + - Sinhala corresponds with `school:language=si` + - Kazakh corresponds with `school:language=kk` + - Nauruan corresponds with `school:language=na` + - Navajo corresponds with `school:language=nv` + - Meänkieli corresponds with `school:language=fit` + - Mingrelian corresponds with `school:language=xmf` + - Afar corresponds with `school:language=aa` + - Angika corresponds with `school:language=anp` + - Aromanian corresponds with `school:language=rup` + - Venetian corresponds with `school:language=vec` + - Veps corresponds with `school:language=vep` + - Bhojpuri corresponds with `school:language=bh` + - Shawiya corresponds with `school:language=shy` + - Herero corresponds with `school:language=hz` + - Mon corresponds with `school:language=mnw` + - Mazanderani corresponds with `school:language=mzn` + - Occitan corresponds with `school:language=oc` + - Indonesian corresponds with `school:language=id` + - Venda corresponds with `school:language=ve` + - Minangkabau corresponds with `school:language=min` + - Mirandese corresponds with `school:language=mwl` + - Pennsylvania German corresponds with `school:language=pdc` + - Palatinate German corresponds with `school:language=pfl` + - Nynorsk corresponds with `school:language=nn` + - Bokmål corresponds with `school:language=nb` + - Cornish corresponds with `school:language=kw` + - Scots corresponds with `school:language=sco` + - Moksha corresponds with `school:language=mdf` + - Sindhi corresponds with `school:language=sd` + - Tatar corresponds with `school:language=tt` + - Silesian corresponds with `school:language=szl` + - Karakalpak corresponds with `school:language=kaa` + - Javanese corresponds with `school:language=jv` + - Tagalog corresponds with `school:language=tl` + - Tongan corresponds with `school:language=to` + - Erzya corresponds with `school:language=myv` + - Lezgian corresponds with `school:language=lez` + - Choctaw corresponds with `school:language=cho` + - Greenlandic corresponds with `school:language=kl` + - Piedmontese corresponds with `school:language=pms` + - Crimean Tatar corresponds with `school:language=crh` + - Inari Sami corresponds with `school:language=smn` + - Ripuarian corresponds with `school:language=ksh` + - Chewa corresponds with `school:language=ny` + - Mongolian corresponds with `school:language=mn` + - Kashmiri corresponds with `school:language=ks` + - Igbo corresponds with `school:language=ig` + - Kinyarwanda corresponds with `school:language=rw` + - Low German corresponds with `school:language=nds` + - Ndonga corresponds with `school:language=ng` + - Saraiki corresponds with `school:language=skr` + - Northern Sami corresponds with `school:language=se` + - Inupiaq corresponds with `school:language=ik` + - Khakas corresponds with `school:language=kjh` + - Nepali corresponds with `school:language=ne` + - Neapolitan corresponds with `school:language=nap` + - Luganda corresponds with `school:language=lg` + - Haitian Creole corresponds with `school:language=ht` + - Ossetian corresponds with `school:language=os` + - Newar corresponds with `school:language=new` + - Sundanese corresponds with `school:language=su` + - Inuktitut corresponds with `school:language=iu` + - Gikuyu corresponds with `school:language=ki` + - Kannada corresponds with `school:language=kn` + - Ingush corresponds with `school:language=inh` + - Picard corresponds with `school:language=pcd` + - Sardinian corresponds with `school:language=sc` + - Sranan Tongo corresponds with `school:language=srn` + - Kirundi corresponds with `school:language=rn` + - Hiri Motu corresponds with `school:language=ho` + - Sango corresponds with `school:language=sg` + - Papiamento corresponds with `school:language=pap` + - Kabardian corresponds with `school:language=kbd` + - Odia corresponds with `school:language=or` + - Mapudungun corresponds with `school:language=arn` + - Oromo corresponds with `school:language=om` + - Santali corresponds with `school:language=sat` + - Nuosu corresponds with `school:language=ii` + - Kabiye corresponds with `school:language=kbp` + - Kabyle corresponds with `school:language=kab` + - Kongo corresponds with `school:language=kg` + - Karachay-Balkar corresponds with `school:language=krc` + - Tumbuka corresponds with `school:language=tum` + - Tausug corresponds with `school:language=tsg` + - Shilha corresponds with `school:language=shi` + - Shona corresponds with `school:language=sn` + - Tok Pisin corresponds with `school:language=tpi` + - Tarifit corresponds with `school:language=rif` + - Tuvan corresponds with `school:language=tyv` + - Tigrinya corresponds with `school:language=ti` + - Tetum corresponds with `school:language=tet` + - Sicilian corresponds with `school:language=scn` + - Lombard corresponds with `school:language=lmo` + - Ilocano corresponds with `school:language=ilo` + - Samoan corresponds with `school:language=sm` + - Swazi corresponds with `school:language=ss` + - Meitei corresponds with `school:language=mni` + - Komi corresponds with `school:language=kv` + - Kurdish corresponds with `school:language=ku` + - Judaeo-Spanish corresponds with `school:language=lad` + - Tsonga corresponds with `school:language=ts` + - Sesotho corresponds with `school:language=st` + - Ligurian corresponds with `school:language=lij` + - Maithili corresponds with `school:language=mai` + - Tuvaluan corresponds with `school:language=tvl` + - Tswana corresponds with `school:language=tn` + - Walloon corresponds with `school:language=wa` + - Southern Min corresponds with `school:language=nan` + - Pitkern corresponds with `school:language=pih` + - Ladin corresponds with `school:language=lld` + - Tahitian corresponds with `school:language=ty` + - Wolof corresponds with `school:language=wo` + - Waray corresponds with `school:language=war` + - Lak corresponds with `school:language=lbe` + - Latgalian corresponds with `school:language=ltg` + - Madurese corresponds with `school:language=mad` + - Marshallese corresponds with `school:language=mh` + - Moldovan corresponds with `school:language=mo` + - Nenets corresponds with `school:language=yrk` + - Chinook Jargon corresponds with `school:language=chn` + - Kanuri corresponds with `school:language=kr` + - Twi corresponds with `school:language=tw` + - Shan corresponds with `school:language=shn` + - West Flemish corresponds with `school:language=vls` + - Pangasinan corresponds with `school:language=pag` + - Northern Sotho corresponds with `school:language=nso` + - Lingala corresponds with `school:language=ln` + - Zeelandic corresponds with `school:language=zea` + - Atayal corresponds with `school:language=tay` + - Wu Chinese corresponds with `school:language=wuu` + - Sakha corresponds with `school:language=sah` + - Jamaican Creole corresponds with `school:language=jam` + - Lakota corresponds with `school:language=lkt` + - Karelian corresponds with `school:language=krl` + - Tulu corresponds with `school:language=tcy` + - Ume Sami corresponds with `school:language=sju` + - Southern Thai corresponds with `school:language=sou` + - Amdo Tibetan corresponds with `school:language=adx` + - Silesian German corresponds with `school:language=sli` + - Swiss German corresponds with `school:language=als` + - Khasi corresponds with `school:language=kha` + - Manchu corresponds with `school:language=mnc` + - Yoruba corresponds with `school:language=yo` + - Malayalam corresponds with `school:language=ml` + - Haida corresponds with `school:language=hai` + - Kutenai corresponds with `school:language=kut` + - Ho corresponds with `school:language=hoc` + - German Sign Language corresponds with `school:language=gsg` + - Limburgish corresponds with `school:language=li` + - Western Armenian corresponds with `school:language=hyw` + - Central Alaskan Yup'ik corresponds with `school:language=esu` + - Abaza corresponds with `school:language=abq` + - Tlingit corresponds with `school:language=tli` + - Seediq corresponds with `school:language=trv` + - Sakizaya corresponds with `school:language=szy` + - Mizo corresponds with `school:language=lus` + - Livvi-Karelian corresponds with `school:language=olo` + - Pontic Greek corresponds with `school:language=pnt` + - Permyak corresponds with `school:language=koi` + - Nogai corresponds with `school:language=nog` + - Wakhi corresponds with `school:language=wbl` + - Talysh corresponds with `school:language=tly` + - Meadow Mari corresponds with `school:language=mhr` + - Megleno-Romanian corresponds with `school:language=ruq` + - Mentawai corresponds with `school:language=mwv` + - Koyukon corresponds with `school:language=koy` + - Chilcotin corresponds with `school:language=clc` + - Võro corresponds with `school:language=fiu-vro` + - Louisiana French corresponds with `school:language=frc` + - Gun corresponds with `school:language=guw` + - Hakha-Chin corresponds with `school:language=cnh` + - Mapun corresponds with `school:language=sjm` + - Brazilian Sign Language corresponds with `school:language=bzs` + - Tyap corresponds with `school:language=kcg` + - Māori corresponds with `school:language=mi` + - Tunisian Arabic corresponds with `school:language=aeb` + - Guernésiais corresponds with `school:language=nrf-gg` + - Laki corresponds with `school:language=lki` + - Beja corresponds with `school:language=bej` + - Chukchi corresponds with `school:language=ckt` + - Muscogee corresponds with `school:language=mus` + - Paiwan corresponds with `school:language=pwn` + - Kwanyama corresponds with `school:language=kj` + - Romagnol corresponds with `school:language=rgn` + - Ambonese corresponds with `school:language=abs` + - Saaroa corresponds with `school:language=sxr` + - Kavalan corresponds with `school:language=ckv` + - Tsou corresponds with `school:language=tsu` + - Saisiyat corresponds with `school:language=xsy` + - Lavukaleve corresponds with `school:language=lvk` + - Yue Chinese corresponds with `school:language=zh-yue` + - Tavoyan corresponds with `school:language=tvn` + - Papuan Malay corresponds with `school:language=pmy` + - Khamba corresponds with `school:language=kbg` + - Marwari corresponds with `school:language=rwr` + - Northern Tutchone corresponds with `school:language=ttm` + - Hill Mari corresponds with `school:language=mrj` + - Nias corresponds with `school:language=nia` + - Nheengatu corresponds with `school:language=yrl` + - Kaqchikel corresponds with `school:language=cak` + - Amis corresponds with `school:language=ami` + - Karon corresponds with `school:language=krx` + - Hiligaynon corresponds with `school:language=hil` + - Pazeh corresponds with `school:language=uun` + - Ter Sami corresponds with `school:language=sjt` + - Wolaytta corresponds with `school:language=wal` + - Vilamovian corresponds with `school:language=wym` + - Algerian Arabic corresponds with `school:language=arq` + - Burushaski corresponds with `school:language=bsk` + - Bakhtiari corresponds with `school:language=bqi` + - Hunsrik corresponds with `school:language=hrx` + - Thao corresponds with `school:language=ssf` + - Mara corresponds with `school:language=mrh` + - Pemon corresponds with `school:language=aoc` + - Tseku corresponds with `school:language=tsk` + - Southern Luri corresponds with `school:language=luz` + - Southern Tutchone corresponds with `school:language=tce` + - K’iche’ corresponds with `school:language=quc` + - Bunun corresponds with `school:language=bnn` + - Laz corresponds with `school:language=lzz` + - Southern Kurdish corresponds with `school:language=sdh` + - Naskapi corresponds with `school:language=nsk` + - Alabama corresponds with `school:language=akz` + - Krio corresponds with `school:language=kri` + - Cape Verdean Creole corresponds with `school:language=kea` + - Rukai corresponds with `school:language=dru` + - Central Atlas Tamazight corresponds with `school:language=tzm` + - Badaga corresponds with `school:language=bfq` + - Khowar corresponds with `school:language=khw` + - Southern Uzbek corresponds with `school:language=uzs` + - Finnish Kalo corresponds with `school:language=rmf` + - Osage corresponds with `school:language=osa` + - Capiznon corresponds with `school:language=cps` + - Pitjantjatjara corresponds with `school:language=pjt` + - Eastern Pwo corresponds with `school:language=kjp` + - Ghanaian Pidgin English corresponds with `school:language=gpe` + - Kirmanjki corresponds with `school:language=kiu` + - Cook Islands Maori corresponds with `school:language=rar` + - S'gaw Karen corresponds with `school:language=ksw` + - Simplified Chinese corresponds with `school:language=zh_Hant` + - Brazilian Portuguese corresponds with `school:language=pt_BR` + - Filipino corresponds with `school:language=fil` Only visible if `id~^..*$` is shown diff --git a/Docs/Layers/shelter.md b/Docs/Layers/shelter.md index f3649328bf..4befae14ef 100644 --- a/Docs/Layers/shelter.md +++ b/Docs/Layers/shelter.md @@ -79,13 +79,13 @@ This is rendered with Shelter type: {shelter_type} - - This is a shelter at a public transport stop. corresponds with shelter_type=public_transport - - This is a shelter protecting from rain at a picnic site. corresponds with shelter_type=picnic_shelter - - This is a gazebo. corresponds with shelter_type=gazebo - - This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads. corresponds with shelter_type=weather_shelter - - This is a shed with 3 walls, primarily intended for camping. corresponds with shelter_type=lean_to - - This is a pavilion corresponds with shelter_type=pavilion - - This is a basic hut, providing basic shelter and sleeping facilities. corresponds with shelter_type=basic_hut + - This is a shelter at a public transport stop. corresponds with `shelter_type=public_transport` + - This is a shelter protecting from rain at a picnic site. corresponds with `shelter_type=picnic_shelter` + - This is a gazebo. corresponds with `shelter_type=gazebo` + - This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads. corresponds with `shelter_type=weather_shelter` + - This is a shed with 3 walls, primarily intended for camping. corresponds with `shelter_type=lean_to` + - This is a pavilion corresponds with `shelter_type=pavilion` + - This is a basic hut, providing basic shelter and sleeping facilities. corresponds with `shelter_type=basic_hut` This document is autogenerated from [assets/layers/shelter/shelter.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shelter/shelter.json) \ No newline at end of file diff --git a/Docs/Layers/shops.md b/Docs/Layers/shops.md index b3f29720bc..88b9cd86bc 100644 --- a/Docs/Layers/shops.md +++ b/Docs/Layers/shops.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -109,166 +111,166 @@ This is rendered with This is a {shop} - - Farm Supply Shop corresponds with shop=agrarian - - Liquor Store corresponds with shop=alcohol - - Anime / Manga Shop corresponds with shop=anime - - Antiques Shop corresponds with shop=antiques - - Appliance Store corresponds with shop=appliance - - Art Store corresponds with shop=art - - Baby Goods Store corresponds with shop=baby_goods - - Bag/Luggage Store corresponds with shop=bag - - Bakery corresponds with shop=bakery - - Bathroom Furnishing Store corresponds with shop=bathroom_furnishing - - Beauty Shop corresponds with shop=beauty - - Bedding/Mattress Store corresponds with shop=bed - - Beverage Store corresponds with shop=beverages - - Bicycle Shop corresponds with shop=bicycle - - Boat Store corresponds with shop=boat - - Bookmaker corresponds with shop=bookmaker - - Book Store corresponds with shop=books - - Brewing Supply Store corresponds with shop=brewing_supplies - - Butcher corresponds with shop=butcher - - Camera Equipment Store corresponds with shop=camera - - Candle Shop corresponds with shop=candles - - Cannabis Shop corresponds with shop=cannabis - - Car Dealership corresponds with shop=car - - Car Parts Store corresponds with shop=car_parts - - Car Repair Shop corresponds with shop=car_repair - - RV Dealership corresponds with shop=caravan - - Carpet Store corresponds with shop=carpet - - Catalog Shop corresponds with shop=catalogue - - Charity Store corresponds with shop=charity - - Cheese Store corresponds with shop=cheese - - Drugstore corresponds with shop=chemist - - Chocolate Store corresponds with shop=chocolate - - Clothing Store corresponds with shop=clothes - - Coffee Store corresponds with shop=coffee - - Collectibles Shop corresponds with shop=collector - - Computer Store corresponds with shop=computer - - Candy Store corresponds with shop=confectionery - - Convenience Store corresponds with shop=convenience - - Copy Store corresponds with shop=copyshop - - Cosmetics Store corresponds with shop=cosmetics - - Country Store corresponds with shop=country_store - - Arts & Crafts Store corresponds with shop=craft - - Curtain Store corresponds with shop=curtain - - Dairy Store corresponds with shop=dairy - - Deli corresponds with shop=deli - - Department Store corresponds with shop=department_store - - DIY Store corresponds with shop=doityourself - - Door Shop corresponds with shop=doors - - Dry Cleaner corresponds with shop=dry_cleaning - - E-Cigarette Shop corresponds with shop=e-cigarette - - Electrical Equipment Store corresponds with shop=electrical - - Electronics Store corresponds with shop=electronics - - Erotic Store corresponds with shop=erotic - - Fabric Store corresponds with shop=fabric - - Produce Stand corresponds with shop=farm - - Fashion Accessories Store corresponds with shop=fashion_accessories - - Fireplace Store corresponds with shop=fireplace - - Fishing Shop corresponds with shop=fishing - - Flooring Supply Shop corresponds with shop=flooring - - Florist corresponds with shop=florist - - Framing Shop corresponds with shop=frame - - Frozen Food Store corresponds with shop=frozen_food - - Fuel Shop corresponds with shop=fuel - - Funeral Home corresponds with shop=funeral_directors - - Furniture Store corresponds with shop=furniture - - Tabletop Game Store corresponds with shop=games - - Garden Center corresponds with shop=garden_centre - - Bottled Gas Shop corresponds with shop=gas - - General Store corresponds with shop=general - - Gift Shop corresponds with shop=gift - - Greengrocer corresponds with shop=greengrocer - - Hairdresser corresponds with shop=hairdresser - - Hairdresser Supply Store corresponds with shop=hairdresser_supply - - Hardware Store corresponds with shop=hardware - - Health Food Shop corresponds with shop=health_food - - Hearing Aids Store corresponds with shop=hearing_aids - - Herbalist corresponds with shop=herbalist - - Hifi Store corresponds with shop=hifi - - Hobby Shop corresponds with shop=hobby - - Household Linen Shop corresponds with shop=household_linen - - Houseware Store corresponds with shop=houseware - - Hunting Shop corresponds with shop=hunting - - Interior Decoration Store corresponds with shop=interior_decoration - - Jewelry Store corresponds with shop=jewelry - - Kiosk corresponds with shop=kiosk - - Kitchen Design Store corresponds with shop=kitchen - - Laundry corresponds with shop=laundry - - Leather Store corresponds with shop=leather - - Lighting Store corresponds with shop=lighting - - Locksmith corresponds with shop=locksmith - - Lottery Shop corresponds with shop=lottery - - Mall corresponds with shop=mall - - Massage Shop corresponds with shop=massage - - Medical Supply Store corresponds with shop=medical_supply - - Military Surplus Store corresponds with shop=military_surplus - - Mobile Phone Store corresponds with shop=mobile_phone - - Model Shop corresponds with shop=model - - Money Lender corresponds with shop=money_lender - - Motorcycle Dealership corresponds with shop=motorcycle - - Motorcycle Repair Shop corresponds with shop=motorcycle_repair - - Music Store corresponds with shop=music - - Musical Instrument Store corresponds with shop=musical_instrument - - Newspaper/Magazine Shop corresponds with shop=newsagent - - Nutrition Supplements Store corresponds with shop=nutrition_supplements - - Optician corresponds with shop=optician - - Outdoors Store corresponds with shop=outdoor - - Online Retailer Outpost corresponds with shop=outpost - - Paint Store corresponds with shop=paint - - Party Supply Store corresponds with shop=party - - Pastry Shop corresponds with shop=pastry - - Pawn Shop corresponds with shop=pawnbroker - - Perfume Store corresponds with shop=perfumery - - Pet Store corresponds with shop=pet - - Pet Grooming Store corresponds with shop=pet_grooming - - Photography Store corresponds with shop=photo - - Pottery Store corresponds with shop=pottery - - Printer Ink Store corresponds with shop=printer_ink - - Psychic corresponds with shop=psychic - - Fireworks Store corresponds with shop=pyrotechnics - - Radio/Electronic Component Store corresponds with shop=radiotechnics - - Religious Store corresponds with shop=religion - - Rental Shop corresponds with shop=rental - - Repair Shop corresponds with shop=repair - - Scuba Diving Shop corresponds with shop=scuba_diving - - Seafood Shop corresponds with shop=seafood - - Consignment/Thrift Store corresponds with shop=second_hand - - Sewing Supply Shop corresponds with shop=sewing - - Shoe Repair Shop corresponds with shop=shoe_repair - - Shoe Store corresponds with shop=shoes - - Spice Shop corresponds with shop=spices - - Sporting Goods Store corresponds with shop=sports - - Stationery Store corresponds with shop=stationery - - Storage Rental corresponds with shop=storage_rental - - Supermarket corresponds with shop=supermarket - - Pool Supply Store corresponds with shop=swimming_pool - - Tailor corresponds with shop=tailor - - Tattoo Parlor corresponds with shop=tattoo - - Tea Store corresponds with shop=tea - - Telecom Retail Store corresponds with shop=telecommunication - - Ticket Seller corresponds with shop=ticket - - Tile Shop corresponds with shop=tiles - - Tobacco Shop corresponds with shop=tobacco - - Tool Rental corresponds with shop=tool_hire - - Toy Store corresponds with shop=toys - - Trade Shop corresponds with shop=trade - - Travel Agency corresponds with shop=travel_agency - - Trophy Shop corresponds with shop=trophy - - Tire Store corresponds with shop=tyres - - Vacuum Cleaner Store corresponds with shop=vacuum_cleaner - - Variety Store corresponds with shop=variety_store - - Video Store corresponds with shop=video - - Video Game Store corresponds with shop=video_games - - Watches Shop corresponds with shop=watches - - Drinking Water Shop corresponds with shop=water - - Watersport/Swim Shop corresponds with shop=water_sports - - Weapon Shop corresponds with shop=weapons - - Wholesale Store corresponds with shop=wholesale - - Wig Shop corresponds with shop=wigs - - Window Blind Store corresponds with shop=window_blind - - Wine Shop corresponds with shop=wine + - Farm Supply Shop corresponds with `shop=agrarian` + - Liquor Store corresponds with `shop=alcohol` + - Anime / Manga Shop corresponds with `shop=anime` + - Antiques Shop corresponds with `shop=antiques` + - Appliance Store corresponds with `shop=appliance` + - Art Store corresponds with `shop=art` + - Baby Goods Store corresponds with `shop=baby_goods` + - Bag/Luggage Store corresponds with `shop=bag` + - Bakery corresponds with `shop=bakery` + - Bathroom Furnishing Store corresponds with `shop=bathroom_furnishing` + - Beauty Shop corresponds with `shop=beauty` + - Bedding/Mattress Store corresponds with `shop=bed` + - Beverage Store corresponds with `shop=beverages` + - Bicycle Shop corresponds with `shop=bicycle` + - Boat Store corresponds with `shop=boat` + - Bookmaker corresponds with `shop=bookmaker` + - Book Store corresponds with `shop=books` + - Brewing Supply Store corresponds with `shop=brewing_supplies` + - Butcher corresponds with `shop=butcher` + - Camera Equipment Store corresponds with `shop=camera` + - Candle Shop corresponds with `shop=candles` + - Cannabis Shop corresponds with `shop=cannabis` + - Car Dealership corresponds with `shop=car` + - Car Parts Store corresponds with `shop=car_parts` + - Car Repair Shop corresponds with `shop=car_repair` + - RV Dealership corresponds with `shop=caravan` + - Carpet Store corresponds with `shop=carpet` + - Catalog Shop corresponds with `shop=catalogue` + - Charity Store corresponds with `shop=charity` + - Cheese Store corresponds with `shop=cheese` + - Drugstore corresponds with `shop=chemist` + - Chocolate Store corresponds with `shop=chocolate` + - Clothing Store corresponds with `shop=clothes` + - Coffee Store corresponds with `shop=coffee` + - Collectibles Shop corresponds with `shop=collector` + - Computer Store corresponds with `shop=computer` + - Candy Store corresponds with `shop=confectionery` + - Convenience Store corresponds with `shop=convenience` + - Copy Store corresponds with `shop=copyshop` + - Cosmetics Store corresponds with `shop=cosmetics` + - Country Store corresponds with `shop=country_store` + - Arts & Crafts Store corresponds with `shop=craft` + - Curtain Store corresponds with `shop=curtain` + - Dairy Store corresponds with `shop=dairy` + - Deli corresponds with `shop=deli` + - Department Store corresponds with `shop=department_store` + - DIY Store corresponds with `shop=doityourself` + - Door Shop corresponds with `shop=doors` + - Dry Cleaner corresponds with `shop=dry_cleaning` + - E-Cigarette Shop corresponds with `shop=e-cigarette` + - Electrical Equipment Store corresponds with `shop=electrical` + - Electronics Store corresponds with `shop=electronics` + - Erotic Store corresponds with `shop=erotic` + - Fabric Store corresponds with `shop=fabric` + - Produce Stand corresponds with `shop=farm` + - Fashion Accessories Store corresponds with `shop=fashion_accessories` + - Fireplace Store corresponds with `shop=fireplace` + - Fishing Shop corresponds with `shop=fishing` + - Flooring Supply Shop corresponds with `shop=flooring` + - Florist corresponds with `shop=florist` + - Framing Shop corresponds with `shop=frame` + - Frozen Food Store corresponds with `shop=frozen_food` + - Fuel Shop corresponds with `shop=fuel` + - Funeral Home corresponds with `shop=funeral_directors` + - Furniture Store corresponds with `shop=furniture` + - Tabletop Game Store corresponds with `shop=games` + - Garden Center corresponds with `shop=garden_centre` + - Bottled Gas Shop corresponds with `shop=gas` + - General Store corresponds with `shop=general` + - Gift Shop corresponds with `shop=gift` + - Greengrocer corresponds with `shop=greengrocer` + - Hairdresser corresponds with `shop=hairdresser` + - Hairdresser Supply Store corresponds with `shop=hairdresser_supply` + - Hardware Store corresponds with `shop=hardware` + - Health Food Shop corresponds with `shop=health_food` + - Hearing Aids Store corresponds with `shop=hearing_aids` + - Herbalist corresponds with `shop=herbalist` + - Hifi Store corresponds with `shop=hifi` + - Hobby Shop corresponds with `shop=hobby` + - Household Linen Shop corresponds with `shop=household_linen` + - Houseware Store corresponds with `shop=houseware` + - Hunting Shop corresponds with `shop=hunting` + - Interior Decoration Store corresponds with `shop=interior_decoration` + - Jewelry Store corresponds with `shop=jewelry` + - Kiosk corresponds with `shop=kiosk` + - Kitchen Design Store corresponds with `shop=kitchen` + - Laundry corresponds with `shop=laundry` + - Leather Store corresponds with `shop=leather` + - Lighting Store corresponds with `shop=lighting` + - Locksmith corresponds with `shop=locksmith` + - Lottery Shop corresponds with `shop=lottery` + - Mall corresponds with `shop=mall` + - Massage Shop corresponds with `shop=massage` + - Medical Supply Store corresponds with `shop=medical_supply` + - Military Surplus Store corresponds with `shop=military_surplus` + - Mobile Phone Store corresponds with `shop=mobile_phone` + - Model Shop corresponds with `shop=model` + - Money Lender corresponds with `shop=money_lender` + - Motorcycle Dealership corresponds with `shop=motorcycle` + - Motorcycle Repair Shop corresponds with `shop=motorcycle_repair` + - Music Store corresponds with `shop=music` + - Musical Instrument Store corresponds with `shop=musical_instrument` + - Newspaper/Magazine Shop corresponds with `shop=newsagent` + - Nutrition Supplements Store corresponds with `shop=nutrition_supplements` + - Optician corresponds with `shop=optician` + - Outdoors Store corresponds with `shop=outdoor` + - Online Retailer Outpost corresponds with `shop=outpost` + - Paint Store corresponds with `shop=paint` + - Party Supply Store corresponds with `shop=party` + - Pastry Shop corresponds with `shop=pastry` + - Pawn Shop corresponds with `shop=pawnbroker` + - Perfume Store corresponds with `shop=perfumery` + - Pet Store corresponds with `shop=pet` + - Pet Grooming Store corresponds with `shop=pet_grooming` + - Photography Store corresponds with `shop=photo` + - Pottery Store corresponds with `shop=pottery` + - Printer Ink Store corresponds with `shop=printer_ink` + - Psychic corresponds with `shop=psychic` + - Fireworks Store corresponds with `shop=pyrotechnics` + - Radio/Electronic Component Store corresponds with `shop=radiotechnics` + - Religious Store corresponds with `shop=religion` + - Rental Shop corresponds with `shop=rental` + - Repair Shop corresponds with `shop=repair` + - Scuba Diving Shop corresponds with `shop=scuba_diving` + - Seafood Shop corresponds with `shop=seafood` + - Consignment/Thrift Store corresponds with `shop=second_hand` + - Sewing Supply Shop corresponds with `shop=sewing` + - Shoe Repair Shop corresponds with `shop=shoe_repair` + - Shoe Store corresponds with `shop=shoes` + - Spice Shop corresponds with `shop=spices` + - Sporting Goods Store corresponds with `shop=sports` + - Stationery Store corresponds with `shop=stationery` + - Storage Rental corresponds with `shop=storage_rental` + - Supermarket corresponds with `shop=supermarket` + - Pool Supply Store corresponds with `shop=swimming_pool` + - Tailor corresponds with `shop=tailor` + - Tattoo Parlor corresponds with `shop=tattoo` + - Tea Store corresponds with `shop=tea` + - Telecom Retail Store corresponds with `shop=telecommunication` + - Ticket Seller corresponds with `shop=ticket` + - Tile Shop corresponds with `shop=tiles` + - Tobacco Shop corresponds with `shop=tobacco` + - Tool Rental corresponds with `shop=tool_hire` + - Toy Store corresponds with `shop=toys` + - Trade Shop corresponds with `shop=trade` + - Travel Agency corresponds with `shop=travel_agency` + - Trophy Shop corresponds with `shop=trophy` + - Tire Store corresponds with `shop=tyres` + - Vacuum Cleaner Store corresponds with `shop=vacuum_cleaner` + - Variety Store corresponds with `shop=variety_store` + - Video Store corresponds with `shop=video` + - Video Game Store corresponds with `shop=video_games` + - Watches Shop corresponds with `shop=watches` + - Drinking Water Shop corresponds with `shop=water` + - Watersport/Swim Shop corresponds with `shop=water_sports` + - Weapon Shop corresponds with `shop=weapons` + - Wholesale Store corresponds with `shop=wholesale` + - Wig Shop corresponds with `shop=wigs` + - Window Blind Store corresponds with `shop=window_blind` + - Wine Shop corresponds with `shop=wine` Only visible if `id~^..*$` is shown @@ -303,7 +305,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -323,7 +325,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -343,7 +345,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer @@ -359,9 +361,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -377,15 +379,15 @@ The question is What paper formats does this shop offer? - - This shop can print on papers of size A4 corresponds with service:print:A4=yes + - This shop can print on papers of size A4 corresponds with `service:print:A4=yes` - Unselecting this answer will add service:print:A4=no - - This shop can print on papers of size A3 corresponds with service:print:A3=yes + - This shop can print on papers of size A3 corresponds with `service:print:A3=yes` - Unselecting this answer will add service:print:A3=no - - This shop can print on papers of size A2 corresponds with service:print:A2=yes + - This shop can print on papers of size A2 corresponds with `service:print:A2=yes` - Unselecting this answer will add service:print:A2=no - - This shop can print on papers of size A1 corresponds with service:print:A1=yes + - This shop can print on papers of size A1 corresponds with `service:print:A1=yes` - Unselecting this answer will add service:print:A1=no - - This shop can print on papers of size A0 corresponds with service:print:A0=yes + - This shop can print on papers of size A0 corresponds with `service:print:A0=yes` - Unselecting this answer will add service:print:A0=no @@ -407,6 +409,8 @@ This tagrendering has no question and is thus read-only +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/slow_roads.md b/Docs/Layers/slow_roads.md index 092104c0d7..ee7ab5074d 100644 --- a/Docs/Layers/slow_roads.md +++ b/Docs/Layers/slow_roads.md @@ -61,6 +61,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -77,12 +79,12 @@ This tagrendering has no question and is thus read-only - -
Dit is een woonerf:
  • Voetgangers mogen hier de volledige breedte van de straat gebruiken
  • Gemotoriseerd verkeer mag maximaal 20km/h rijden
corresponds with highway=living_street - - Dit is een brede, autovrije straat corresponds with highway=pedestrian - - Dit is een voetpaadje corresponds with highway=footway - - Dit is een wegeltje of bospad corresponds with highway=path - - Dit is een ruiterswegel corresponds with highway=bridleway - - Dit is een tractorspoor of weg om landbouwgrond te bereikken corresponds with highway=track + -
Dit is een woonerf:
  • Voetgangers mogen hier de volledige breedte van de straat gebruiken
  • Gemotoriseerd verkeer mag maximaal 20km/h rijden
corresponds with `highway=living_street` + - Dit is een brede, autovrije straat corresponds with `highway=pedestrian` + - Dit is een voetpaadje corresponds with `highway=footway` + - Dit is een wegeltje of bospad corresponds with `highway=path` + - Dit is een ruiterswegel corresponds with `highway=bridleway` + - Dit is een tractorspoor of weg om landbouwgrond te bereikken corresponds with `highway=track` @@ -101,15 +103,15 @@ This is rendered with The surface is {surface} - - The surface is grass corresponds with surface=grass - - The surface is ground corresponds with surface=ground - - The surface is unpaved corresponds with surface=unpaved + - The surface is grass corresponds with `surface=grass` + - The surface is ground corresponds with `surface=ground` + - The surface is unpaved corresponds with `surface=unpaved` - This option cannot be chosen as answer - - The surface is sand corresponds with surface=sand - - The surface is paving stones corresponds with surface=paving_stones - - The surface is asphalt corresponds with surface=asphalt - - The surface is concrete corresponds with surface=concrete - - The surface is paved corresponds with surface=paved + - The surface is sand corresponds with `surface=sand` + - The surface is paving stones corresponds with `surface=paving_stones` + - The surface is asphalt corresponds with `surface=asphalt` + - The surface is concrete corresponds with `surface=concrete` + - The surface is paved corresponds with `surface=paved` - This option cannot be chosen as answer @@ -125,8 +127,8 @@ The question is Is deze weg 's nachts verlicht? - - 's nachts verlicht corresponds with lit=yes - - Niet verlicht corresponds with lit=no + - 's nachts verlicht corresponds with `lit=yes` + - Niet verlicht corresponds with `lit=no` This document is autogenerated from [assets/layers/slow_roads/slow_roads.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/slow_roads/slow_roads.json) \ No newline at end of file diff --git a/Docs/Layers/sport_pitch.md b/Docs/Layers/sport_pitch.md index 300cdee324..db606f70aa 100644 --- a/Docs/Layers/sport_pitch.md +++ b/Docs/Layers/sport_pitch.md @@ -75,6 +75,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -95,12 +97,12 @@ This is rendered with {sport} is played here - - Basketball is played here corresponds with sport=basketball - - Soccer is played here corresponds with sport=soccer - - This is a pingpong table corresponds with sport=table_tennis - - Tennis is played here corresponds with sport=tennis - - Korfball is played here corresponds with sport=korfball - - Basketball is played here corresponds with sport=basket + - Basketball is played here corresponds with `sport=basketball` + - Soccer is played here corresponds with `sport=soccer` + - This is a pingpong table corresponds with `sport=table_tennis` + - Tennis is played here corresponds with `sport=tennis` + - Korfball is played here corresponds with `sport=korfball` + - Basketball is played here corresponds with `sport=basket` - This option cannot be chosen as answer @@ -120,11 +122,11 @@ This is rendered with The surface is {surface} - - The surface is grass corresponds with surface=grass - - The surface is sand corresponds with surface=sand - - The surface is paving stones corresponds with surface=paving_stones - - The surface is asphalt corresponds with surface=asphalt - - The surface is concrete corresponds with surface=concrete + - The surface is grass corresponds with `surface=grass` + - The surface is sand corresponds with `surface=sand` + - The surface is paving stones corresponds with `surface=paving_stones` + - The surface is asphalt corresponds with `surface=asphalt` + - The surface is concrete corresponds with `surface=concrete` @@ -139,10 +141,10 @@ The question is Is this sport pitch publicly accessible? - - Public access corresponds with access=public - - Limited access (e.g. only with an appointment, during certain hours, …) corresponds with access=limited - - Only accessible for members of the club corresponds with access=members - - Private - not accessible to the public corresponds with access=private + - Public access corresponds with `access=public` + - Limited access (e.g. only with an appointment, during certain hours, …) corresponds with `access=limited` + - Only accessible for members of the club corresponds with `access=members` + - Private - not accessible to the public corresponds with `access=private` @@ -157,10 +159,10 @@ The question is Does one have to make an appointment to use this sport pitch? - - Making an appointment is obligatory to use this sport pitch corresponds with reservation=required - - Making an appointment is recommended when using this sport pitch corresponds with reservation=recommended - - Making an appointment is possible, but not necessary to use this sport pitch corresponds with reservation=yes - - Making an appointment is not possible corresponds with reservation=no + - Making an appointment is obligatory to use this sport pitch corresponds with `reservation=required` + - Making an appointment is recommended when using this sport pitch corresponds with `reservation=recommended` + - Making an appointment is possible, but not necessary to use this sport pitch corresponds with `reservation=yes` + - Making an appointment is not possible corresponds with `reservation=no` @@ -207,9 +209,9 @@ This is rendered with Openingsuren: {opening_hours_table()} - - Always accessible corresponds with + - Always accessible corresponds with `` - This option cannot be chosen as answer - - Always accessible corresponds with opening_hours=24/7 + - Always accessible corresponds with `opening_hours=24/7` Only visible if `access~^..*$` is shown diff --git a/Docs/Layers/sport_places_without_etymology.md b/Docs/Layers/sport_places_without_etymology.md index fe354fba91..0406c941e6 100644 --- a/Docs/Layers/sport_places_without_etymology.md +++ b/Docs/Layers/sport_places_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/street_lamps.md b/Docs/Layers/street_lamps.md index fc10da2ad1..5d69cfa9e5 100644 --- a/Docs/Layers/street_lamps.md +++ b/Docs/Layers/street_lamps.md @@ -76,6 +76,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -106,13 +108,13 @@ The question is How is this street lamp mounted? - - This lamp is suspended using cables corresponds with support=catenary - - This lamp is mounted on a ceiling corresponds with support=ceiling - - This lamp is mounted in the ground corresponds with support=ground - - This lamp is mounted on a short pole (mostly < 1.5m) corresponds with support=pedestal - - This lamp is mounted on a pole corresponds with support=pole - - This lamp is mounted directly to the wall corresponds with support=wall - - This lamp is mounted to the wall using a metal bar corresponds with support=wall_mount + - This lamp is suspended using cables corresponds with `support=catenary` + - This lamp is mounted on a ceiling corresponds with `support=ceiling` + - This lamp is mounted in the ground corresponds with `support=ground` + - This lamp is mounted on a short pole (mostly < 1.5m) corresponds with `support=pedestal` + - This lamp is mounted on a pole corresponds with `support=pole` + - This lamp is mounted directly to the wall corresponds with `support=wall` + - This lamp is mounted to the wall using a metal bar corresponds with `support=wall_mount` @@ -127,8 +129,8 @@ The question is How is this lamp mounted to the pole? - - This lamp sits atop of a straight mast corresponds with lamp_mount=straight_mast - - This lamp sits at the end of a bent mast corresponds with lamp_mount=bent_mast + - This lamp sits atop of a straight mast corresponds with `lamp_mount=straight_mast` + - This lamp sits at the end of a bent mast corresponds with `lamp_mount=bent_mast` Only visible if `support=pole` is shown @@ -145,19 +147,19 @@ The question is What kind of lighting does this lamp use? - - This lamp is lit electrically corresponds with light:method=electric + - This lamp is lit electrically corresponds with `light:method=electric` - This option cannot be chosen as answer - - This lamp uses LEDs corresponds with light:method=LED - - This lamp uses incandescent lighting corresponds with light:method=incandescent - - This lamp uses halogen lighting corresponds with light:method=halogen - - This lamp uses discharge lamps (unknown type) corresponds with light:method=discharge - - This lamp uses a mercury-vapour lamp (lightly blueish) corresponds with light:method=mercury - - This lamp uses metal-halide lamps (bright white) corresponds with light:method=metal-halide - - This lamp uses fluorescent lighting corresponds with light:method=fluorescent - - This lamp uses sodium lamps (unknown type) corresponds with light:method=sodium - - This lamp uses low pressure sodium lamps (monochrome orange) corresponds with light:method=low_pressure_sodium - - This lamp uses high pressure sodium lamps (orange with white) corresponds with light:method=high_pressure_sodium - - This lamp is lit using gas corresponds with light:method=gas + - This lamp uses LEDs corresponds with `light:method=LED` + - This lamp uses incandescent lighting corresponds with `light:method=incandescent` + - This lamp uses halogen lighting corresponds with `light:method=halogen` + - This lamp uses discharge lamps (unknown type) corresponds with `light:method=discharge` + - This lamp uses a mercury-vapour lamp (lightly blueish) corresponds with `light:method=mercury` + - This lamp uses metal-halide lamps (bright white) corresponds with `light:method=metal-halide` + - This lamp uses fluorescent lighting corresponds with `light:method=fluorescent` + - This lamp uses sodium lamps (unknown type) corresponds with `light:method=sodium` + - This lamp uses low pressure sodium lamps (monochrome orange) corresponds with `light:method=low_pressure_sodium` + - This lamp uses high pressure sodium lamps (orange with white) corresponds with `light:method=high_pressure_sodium` + - This lamp is lit using gas corresponds with `light:method=gas` @@ -176,9 +178,9 @@ This is rendered with This lamp emits {light:colour} light - - This lamp emits white light corresponds with light:colour=white - - This lamp emits green light corresponds with light:colour=green - - This lamp emits orange light corresponds with light:colour=orange + - This lamp emits white light corresponds with `light:colour=white` + - This lamp emits green light corresponds with `light:colour=green` + - This lamp emits orange light corresponds with `light:colour=orange` @@ -197,8 +199,8 @@ This is rendered with This lamp has {light:count} fixtures - - This lamp has 1 fixture corresponds with light:count=1 - - This lamp has 2 fixtures corresponds with light:count=2 + - This lamp has 1 fixture corresponds with `light:count=1` + - This lamp has 2 fixtures corresponds with `light:count=2` Only visible if `support=pole` is shown @@ -215,10 +217,10 @@ The question is When is this lamp lit? - - This lamp is lit at night corresponds with light:lit=dusk-dawn - - This lamp is lit 24/7 corresponds with light:lit=24/7 - - This lamp is lit based on motion corresponds with light:lit=motion - - This lamp is lit based on demand (e.g. with a pushbutton) corresponds with light:lit=demand + - This lamp is lit at night corresponds with `light:lit=dusk-dawn` + - This lamp is lit 24/7 corresponds with `light:lit=24/7` + - This lamp is lit based on motion corresponds with `light:lit=motion` + - This lamp is lit based on demand (e.g. with a pushbutton) corresponds with `light:lit=demand` diff --git a/Docs/Layers/streets_without_etymology.md b/Docs/Layers/streets_without_etymology.md index c500d96342..b6fd5eeb3b 100644 --- a/Docs/Layers/streets_without_etymology.md +++ b/Docs/Layers/streets_without_etymology.md @@ -115,7 +115,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/surveillance_camera.md b/Docs/Layers/surveillance_camera.md index add3097063..511eaafa84 100644 --- a/Docs/Layers/surveillance_camera.md +++ b/Docs/Layers/surveillance_camera.md @@ -78,6 +78,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -94,9 +96,9 @@ The question is What kind of camera is this? - - A fixed (non-moving) camera corresponds with camera:type=fixed - - A dome camera (which can turn) corresponds with camera:type=dome - - A panning camera corresponds with camera:type=panning + - A fixed (non-moving) camera corresponds with `camera:type=fixed` + - A dome camera (which can turn) corresponds with `camera:type=dome` + - A panning camera corresponds with `camera:type=panning` @@ -115,7 +117,7 @@ This is rendered with Films to a compass heading of {camera:direction} - - Films to a compass heading of {direction} corresponds with direction~^..*$ + - Films to a compass heading of {direction} corresponds with `direction~^..*$` - This option cannot be chosen as answer @@ -145,9 +147,9 @@ The question is What kind of surveillance is this camera? - - A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel, … corresponds with surveillance=public - - An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …) corresponds with surveillance=outdoor - - A private indoor area is surveilled, e.g. a shop, a private underground parking, … corresponds with surveillance=indoor + - A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel, … corresponds with `surveillance=public` + - An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …) corresponds with `surveillance=outdoor` + - A private indoor area is surveilled, e.g. a shop, a private underground parking, … corresponds with `surveillance=indoor` @@ -162,9 +164,9 @@ The question is Is the public space surveilled by this camera an indoor or outd - - This camera is located indoors corresponds with indoor=yes - - This camera is located outdoors corresponds with indoor=no - - This camera is probably located outdoors corresponds with + - This camera is located indoors corresponds with `indoor=yes` + - This camera is located outdoors corresponds with `indoor=no` + - This camera is probably located outdoors corresponds with `` - This option cannot be chosen as answer @@ -202,12 +204,12 @@ This is rendered with Surveills a {surveillance:zone} - - Surveills a parking corresponds with surveillance:zone=parking - - Surveills the traffic corresponds with surveillance:zone=traffic - - Surveills an entrance corresponds with surveillance:zone=entrance - - Surveills a corridor corresponds with surveillance:zone=corridor - - Surveills a public tranport platform corresponds with surveillance:zone=public_transport_platform - - Surveills a shop corresponds with surveillance:zone=shop + - Surveills a parking corresponds with `surveillance:zone=parking` + - Surveills the traffic corresponds with `surveillance:zone=traffic` + - Surveills an entrance corresponds with `surveillance:zone=entrance` + - Surveills a corridor corresponds with `surveillance:zone=corridor` + - Surveills a public tranport platform corresponds with `surveillance:zone=public_transport_platform` + - Surveills a shop corresponds with `surveillance:zone=shop` @@ -226,11 +228,11 @@ This is rendered with Mounting method: {camera:mount} - - This camera is placed against a wall corresponds with camera:mount=wall - - This camera is placed on a pole corresponds with camera:mount=pole - - This camera is placed on the ceiling corresponds with camera:mount=ceiling - - This camera is placed on a street light corresponds with camera:mount=street_lamp - - This camera is placed on a tree corresponds with camera:mount=tree + - This camera is placed against a wall corresponds with `camera:mount=wall` + - This camera is placed on a pole corresponds with `camera:mount=pole` + - This camera is placed on the ceiling corresponds with `camera:mount=ceiling` + - This camera is placed on a street light corresponds with `camera:mount=street_lamp` + - This camera is placed on a tree corresponds with `camera:mount=tree` This document is autogenerated from [assets/layers/surveillance_camera/surveillance_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/surveillance_camera/surveillance_camera.json) \ No newline at end of file diff --git a/Docs/Layers/tertiary_education.md b/Docs/Layers/tertiary_education.md index 9a526a2f34..c729522def 100644 --- a/Docs/Layers/tertiary_education.md +++ b/Docs/Layers/tertiary_education.md @@ -81,8 +81,8 @@ The question is What kind of institution is this? - - This is an institution of post-secondary, non-tertiary education. One has to have completed secondary education to enroll here, but no bachelor (or higher) degrees are awarded here corresponds with amenity=college - - This is a university, an institution of tertiary education where bachelor degrees or higher are awarded. corresponds with amenity=university + - This is an institution of post-secondary, non-tertiary education. One has to have completed secondary education to enroll here, but no bachelor (or higher) degrees are awarded here corresponds with `amenity=college` + - This is a university, an institution of tertiary education where bachelor degrees or higher are awarded. corresponds with `amenity=university` @@ -97,9 +97,9 @@ The question is What level of education is given here? - - Bachelor degrees are awarded here corresponds with isced:2011:level=bachelor - - Master degrees are awarded here corresponds with isced:2011:level=master - - Doctorate degrees are awarded here corresponds with isced:2011:level=doctorate + - Bachelor degrees are awarded here corresponds with `isced:2011:level=bachelor` + - Master degrees are awarded here corresponds with `isced:2011:level=master` + - Doctorate degrees are awarded here corresponds with `isced:2011:level=doctorate` Only visible if `amenity=university` is shown @@ -130,10 +130,10 @@ The question is Which genders can enroll at this school? - - Both boys and girls can enroll here and have classes together corresponds with school:gender=mixed - - Both boys and girls can enroll here but they are separated (e.g. they have lessons in different classrooms or at different times) corresponds with school:gender=separated - - This is a boys only-school corresponds with school:gender=male - - This is a girls-only school corresponds with school:gender=female + - Both boys and girls can enroll here and have classes together corresponds with `school:gender=mixed` + - Both boys and girls can enroll here but they are separated (e.g. they have lessons in different classrooms or at different times) corresponds with `school:gender=separated` + - This is a boys only-school corresponds with `school:gender=male` + - This is a girls-only school corresponds with `school:gender=female` @@ -152,7 +152,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -172,7 +172,7 @@ This is rendered with {email} - - {contact:email} corresponds with contact:email~^..*$ + - {contact:email} corresponds with `contact:email~^..*$` - This option cannot be chosen as answer @@ -192,7 +192,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/toekomstige_fietsstraat.md b/Docs/Layers/toekomstige_fietsstraat.md index 869fef922a..b5eb375039 100644 --- a/Docs/Layers/toekomstige_fietsstraat.md +++ b/Docs/Layers/toekomstige_fietsstraat.md @@ -69,6 +69,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -85,10 +87,10 @@ The question is Is the street {name} a cyclestreet? - - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no - - This street is a cyclestreet corresponds with cyclestreet=yes - - This street will become a cyclstreet soon corresponds with proposed:cyclestreet=yes - - This street is not a cyclestreet corresponds with + - This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no` + - This street is a cyclestreet corresponds with `cyclestreet=yes` + - This street will become a cyclstreet soon corresponds with `proposed:cyclestreet=yes` + - This street is not a cyclestreet corresponds with `` @@ -113,6 +115,8 @@ Only visible if `proposed:cyclestreet=yes` is shown +Show the images block at this location + This tagrendering has no question and is thus read-only @@ -123,6 +127,8 @@ This tagrendering has no question and is thus read-only +Shows a small map with the feature. Added by default to every popup + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/toilet.md b/Docs/Layers/toilet.md index 0717b5afcd..71d425ef2d 100644 --- a/Docs/Layers/toilet.md +++ b/Docs/Layers/toilet.md @@ -66,6 +66,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7) [](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) +[](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | [](https://taginfo.openstreetmap.org/keys/toilets:position#values) [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal) [](https://taginfo.openstreetmap.org/keys/changing_table#values) [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno) [](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room) @@ -81,6 +82,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -101,11 +104,11 @@ This is rendered with Access is {access} - - Public access corresponds with access=yes - - Only access to customers corresponds with access=customers - - Not accessible corresponds with access=no - - Accessible, but one has to ask a key to enter corresponds with access=key - - Public access corresponds with access=public + - Public access corresponds with `access=yes` + - Only access to customers corresponds with `access=customers` + - Not accessible corresponds with `access=no` + - Accessible, but one has to ask a key to enter corresponds with `access=key` + - Public access corresponds with `access=public` - This option cannot be chosen as answer @@ -121,8 +124,8 @@ The question is Are these toilets free to use? - - These are paid toilets corresponds with fee=yes - - Free to use corresponds with fee=no + - These are paid toilets corresponds with `fee=yes` + - Free to use corresponds with `fee=no` @@ -153,9 +156,9 @@ The question is Which methods of payment are accepted here? - - Cash is accepted here corresponds with payment:cash=yes + - Cash is accepted here corresponds with `payment:cash=yes` - Unselecting this answer will add payment:cash=no - - Payment cards are accepted here corresponds with payment:cards=yes + - Payment cards are accepted here corresponds with `payment:cards=yes` - Unselecting this answer will add payment:cards=no @@ -177,7 +180,7 @@ This is rendered with {opening_hours_table()} - - Opened 24/7 corresponds with opening_hours=24/7 + - Opened 24/7 corresponds with `opening_hours=24/7` @@ -192,8 +195,22 @@ The question is Is there a dedicated toilet for wheelchair users? - - There is a dedicated toilet for wheelchair users corresponds with wheelchair=yes - - No wheelchair access corresponds with wheelchair=no + - There is a dedicated toilet for wheelchair users corresponds with `wheelchair=yes` + - No wheelchair access corresponds with `wheelchair=no` + + + + +### wheelchair-door-width + + + +The question is What is the width of the door to the wheelchair accessible toilet? + +This rendering asks information about the property [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) + +This is rendered with The door to the wheelchair-accessible toilet is {canonical(door:width)} wide + @@ -208,10 +225,10 @@ The question is Which kind of toilets are this? - - There are only seated toilets corresponds with toilets:position=seated - - There are only urinals here corresponds with toilets:position=urinal - - There are only squat toilets here corresponds with toilets:position=squat - - Both seated toilets and urinals are available here corresponds with toilets:position=seated;urinal + - There are only seated toilets corresponds with `toilets:position=seated` + - There are only urinals here corresponds with `toilets:position=urinal` + - There are only squat toilets here corresponds with `toilets:position=squat` + - Both seated toilets and urinals are available here corresponds with `toilets:position=seated;urinal` @@ -226,8 +243,8 @@ The question is Is a changing table (to change diapers) available? - - A changing table is available corresponds with changing_table=yes - - No changing table is available corresponds with changing_table=no + - A changing table is available corresponds with `changing_table=yes` + - No changing table is available corresponds with `changing_table=no` @@ -246,10 +263,10 @@ This is rendered with The changing table is located at {changing_table:location - - The changing table is in the toilet for women. corresponds with changing_table:location=female_toilet - - The changing table is in the toilet for men. corresponds with changing_table:location=male_toilet - - The changing table is in the toilet for wheelchair users. corresponds with changing_table:location=wheelchair_toilet - - The changing table is in a dedicated room. corresponds with changing_table:location=dedicated_room + - The changing table is in the toilet for women. corresponds with `changing_table:location=female_toilet` + - The changing table is in the toilet for men. corresponds with `changing_table:location=male_toilet` + - The changing table is in the toilet for wheelchair users. corresponds with `changing_table:location=wheelchair_toilet` + - The changing table is in a dedicated room. corresponds with `changing_table:location=dedicated_room` Only visible if `changing_table=yes` is shown @@ -266,8 +283,8 @@ The question is Do these toilets have a sink to wash your hands? - - This toilets have a sink to wash your hands corresponds with toilets:handwashing=yes - - This toilets don't have a sink to wash your hands corresponds with toilets:handwashing=no + - This toilets have a sink to wash your hands corresponds with `toilets:handwashing=yes` + - This toilets don't have a sink to wash your hands corresponds with `toilets:handwashing=no` @@ -282,8 +299,8 @@ The question is Does one have to bring their own toilet paper to this toilet? - - This toilet is equipped with toilet paper corresponds with toilets:paper_supplied=yes - - You have to bring your own toilet paper to this toilet corresponds with toilets:paper_supplied=no + - This toilet is equipped with toilet paper corresponds with `toilets:paper_supplied=yes` + - You have to bring your own toilet paper to this toilet corresponds with `toilets:paper_supplied=no` @@ -302,13 +319,13 @@ This is rendered with Located on the {level}th floor - - Located underground corresponds with location=underground + - Located underground corresponds with `location=underground` - This option cannot be chosen as answer - - Located on the ground floor corresponds with level=0 - - Located on the ground floor corresponds with + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` - This option cannot be chosen as answer - - Located on the first floor corresponds with level=1 - - Located on the first basement level corresponds with level=-1 + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` diff --git a/Docs/Layers/toursistic_places_without_etymology.md b/Docs/Layers/toursistic_places_without_etymology.md index f530c6ab17..e4b327f359 100644 --- a/Docs/Layers/toursistic_places_without_etymology.md +++ b/Docs/Layers/toursistic_places_without_etymology.md @@ -114,7 +114,7 @@ This is rendered with Named after {name:etymology} - - The origin of this name is unknown in all literature corresponds with name:etymology=unknown + - The origin of this name is unknown in all literature corresponds with `name:etymology=unknown` diff --git a/Docs/Layers/trail.md b/Docs/Layers/trail.md index 64dd79cc52..a81623dfad 100644 --- a/Docs/Layers/trail.md +++ b/Docs/Layers/trail.md @@ -61,6 +61,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -105,8 +107,8 @@ This is rendered with Beheer door {operator} - - Dit gebied wordt beheerd door Natuurpunt corresponds with operator=Natuurpunt - - Dit gebied wordt beheerd door {operator} corresponds with operator~^(n|N)atuurpunt.*$ + - Dit gebied wordt beheerd door Natuurpunt corresponds with `operator=Natuurpunt` + - Dit gebied wordt beheerd door {operator} corresponds with `operator~^(n|N)atuurpunt.*$` - This option cannot be chosen as answer @@ -126,10 +128,10 @@ This is rendered with Deze wandeling heeft kleur {colour} - - Blue trail corresponds with colour=blue - - Red trail corresponds with colour=red - - Green trail corresponds with colour=green - - Yellow trail corresponds with colour=yellow + - Blue trail corresponds with `colour=blue` + - Red trail corresponds with `colour=red` + - Green trail corresponds with `colour=green` + - Yellow trail corresponds with `colour=yellow` @@ -144,8 +146,8 @@ The question is Is deze wandeling toegankelijk met de rolstoel? - - deze wandeltocht is toegankelijk met de rolstoel corresponds with wheelchair=yes - - deze wandeltocht is niet toegankelijk met de rolstoel corresponds with wheelchair=no + - deze wandeltocht is toegankelijk met de rolstoel corresponds with `wheelchair=yes` + - deze wandeltocht is niet toegankelijk met de rolstoel corresponds with `wheelchair=no` @@ -160,8 +162,8 @@ The question is Is deze wandeltocht toegankelijk met de buggy? - - deze wandeltocht is toegankelijk met de buggy corresponds with pushchair=yes - - deze wandeltocht is niet toegankelijk met de buggy corresponds with pushchair=no + - deze wandeltocht is toegankelijk met de buggy corresponds with `pushchair=yes` + - deze wandeltocht is niet toegankelijk met de buggy corresponds with `pushchair=no` This document is autogenerated from [assets/layers/trail/trail.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/trail/trail.json) \ No newline at end of file diff --git a/Docs/Layers/transit_stops.md b/Docs/Layers/transit_stops.md index 562fd107b8..fc1899f9d1 100644 --- a/Docs/Layers/transit_stops.md +++ b/Docs/Layers/transit_stops.md @@ -86,7 +86,7 @@ This is rendered with This stop is called {name} - - This stop has no name corresponds with noname=yes + - This stop has no name corresponds with `noname=yes` @@ -95,6 +95,8 @@ This is rendered with This stop is called {name} +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -111,9 +113,9 @@ The question is Does this stop have a shelter? - - This stop has a shelter corresponds with shelter=yes - - This stop does not have a shelter corresponds with shelter=no - - This stop has a shelter, that's separately mapped corresponds with shelter=separate + - This stop has a shelter corresponds with `shelter=yes` + - This stop does not have a shelter corresponds with `shelter=no` + - This stop has a shelter, that's separately mapped corresponds with `shelter=separate` - This option cannot be chosen as answer @@ -129,9 +131,9 @@ The question is Does this stop have a bench? - - This stop has a bench corresponds with bench=yes - - This stop does not have a bench corresponds with bench=no - - This stop has a bench, that's separately mapped corresponds with bench=separate + - This stop has a bench corresponds with `bench=yes` + - This stop does not have a bench corresponds with `bench=no` + - This stop has a bench, that's separately mapped corresponds with `bench=separate` - This option cannot be chosen as answer @@ -147,9 +149,9 @@ The question is Does this stop have a bin? - - This stop has a bin corresponds with bin=yes - - This stop does not have a bin corresponds with bin=no - - This stop has a bin, that's separately mapped corresponds with bin=separate + - This stop has a bin corresponds with `bin=yes` + - This stop does not have a bin corresponds with `bin=no` + - This stop has a bin, that's separately mapped corresponds with `bin=separate` - This option cannot be chosen as answer @@ -165,10 +167,10 @@ The question is Is this place accessible with a wheelchair? - - This place is specially adapted for wheelchair users corresponds with wheelchair=designated - - This place is easily reachable with a wheelchair corresponds with wheelchair=yes - - It is possible to reach this place in a wheelchair, but it is not easy corresponds with wheelchair=limited - - This place is not reachable with a wheelchair corresponds with wheelchair=no + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` @@ -183,8 +185,8 @@ The question is Does this stop have tactile paving? - - This stop has tactile paving corresponds with tactile_paving=yes - - This stop does not have tactile paving corresponds with tactile_paving=no + - This stop has tactile paving corresponds with `tactile_paving=yes` + - This stop does not have tactile paving corresponds with `tactile_paving=no` @@ -199,8 +201,8 @@ The question is Is this stop lit? - - This stop is lit corresponds with lit=yes - - This stop is not lit corresponds with lit=no + - This stop is lit corresponds with `lit=yes` + - This stop is not lit corresponds with `lit=no` @@ -215,14 +217,14 @@ This tagrendering has no question and is thus read-only - - This stop has a departures board of unknown type corresponds with departures_board=yes + - This stop has a departures board of unknown type corresponds with `departures_board=yes` - This option cannot be chosen as answer - - This stop has a board showing realtime departure information corresponds with departures_board=realtime - - This stop has a board showing realtime departure information corresponds with passenger_information_display=yes + - This stop has a board showing realtime departure information corresponds with `departures_board=realtime` + - This stop has a board showing realtime departure information corresponds with `passenger_information_display=yes` - This option cannot be chosen as answer - - This stop has a timetable showing regular departures corresponds with departures_board=timetable - - This stop has a timetable containing just the interval between departures corresponds with departures_board=interval - - This stop does not have a departures board corresponds with departures_board=no + - This stop has a timetable showing regular departures corresponds with `departures_board=timetable` + - This stop has a timetable containing just the interval between departures corresponds with `departures_board=interval` + - This stop does not have a departures board corresponds with `departures_board=no` diff --git a/Docs/Layers/tree_node.md b/Docs/Layers/tree_node.md index 483db7442f..6290599681 100644 --- a/Docs/Layers/tree_node.md +++ b/Docs/Layers/tree_node.md @@ -77,6 +77,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -93,7 +95,7 @@ This tagrendering has no question and is thus read-only - - Height: {height} m corresponds with height~^^[0-9.]+$$ + - Height: {height} m corresponds with `height~^^[0-9.]+$$` Only visible if `height~^..*$` is shown @@ -110,9 +112,9 @@ The question is Is this a broadleaved or needleleaved tree? - - Broadleaved corresponds with leaf_type=broadleaved - - Needleleaved corresponds with leaf_type=needleleaved - - Permanently leafless corresponds with leaf_type=leafless + - Broadleaved corresponds with `leaf_type=broadleaved` + - Needleleaved corresponds with `leaf_type=needleleaved` + - Permanently leafless corresponds with `leaf_type=leafless` - This option cannot be chosen as answer @@ -128,14 +130,14 @@ The question is How significant is this tree? Choose the first answer that appl - - The tree is remarkable due to its size or prominent location. It is useful for navigation. corresponds with denotation=landmark - - The tree is a natural monument, e.g. because it is especially old, or of a valuable species. corresponds with denotation=natural_monument - - The tree is used for agricultural purposes, e.g. in an orchard. corresponds with denotation=agricultural - - The tree is in a park or similar (cemetery, school grounds, …). corresponds with denotation=park - - The tree is in a residential garden. corresponds with denotation=garden - - This is a tree along an avenue. corresponds with denotation=avenue - - The tree is in an urban area. corresponds with denotation=urban - - The tree is outside of an urban area. corresponds with denotation=none + - The tree is remarkable due to its size or prominent location. It is useful for navigation. corresponds with `denotation=landmark` + - The tree is a natural monument, e.g. because it is especially old, or of a valuable species. corresponds with `denotation=natural_monument` + - The tree is used for agricultural purposes, e.g. in an orchard. corresponds with `denotation=agricultural` + - The tree is in a park or similar (cemetery, school grounds, …). corresponds with `denotation=park` + - The tree is in a residential garden. corresponds with `denotation=garden` + - This is a tree along an avenue. corresponds with `denotation=avenue` + - The tree is in an urban area. corresponds with `denotation=urban` + - The tree is outside of an urban area. corresponds with `denotation=none` @@ -150,8 +152,8 @@ The question is Is this tree evergreen or deciduous? - - Deciduous: the tree loses its leaves for some time of the year. corresponds with leaf_cycle=deciduous - - Evergreen. corresponds with leaf_cycle=evergreen + - Deciduous: the tree loses its leaves for some time of the year. corresponds with `leaf_cycle=deciduous` + - Evergreen. corresponds with `leaf_cycle=evergreen` @@ -196,7 +198,7 @@ This is rendered with Name: {name} - - The tree does not have a name. corresponds with noname=yes + - The tree does not have a name. corresponds with `noname=yes` Only visible if `denotation=landmark|denotation=natural_monument|name~^..*$` is shown @@ -213,11 +215,11 @@ The question is Is this tree registered heritage? - - Registered as heritage by Onroerend Erfgoed Flanders corresponds with heritage=4&heritage:operator=OnroerendErfgoed - - Registered as heritage by Direction du Patrimoine culturel Brussels corresponds with heritage=4&heritage:operator=aatl - - Registered as heritage by a different organisation corresponds with heritage=yes - - Not registered as heritage corresponds with heritage=no - - Registered as heritage by a different organisation corresponds with heritage~^..*$ + - Registered as heritage by Onroerend Erfgoed Flanders corresponds with `heritage=4&heritage:operator=OnroerendErfgoed` + - Registered as heritage by Direction du Patrimoine culturel Brussels corresponds with `heritage=4&heritage:operator=aatl` + - Registered as heritage by a different organisation corresponds with `heritage=yes` + - Not registered as heritage corresponds with `heritage=no` + - Registered as heritage by a different organisation corresponds with `heritage~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/veterinary.md b/Docs/Layers/veterinary.md index cdf166fd0f..16d0b75693 100644 --- a/Docs/Layers/veterinary.md +++ b/Docs/Layers/veterinary.md @@ -82,7 +82,7 @@ This is rendered with {website} - - {contact:website} corresponds with contact:website~^..*$ + - {contact:website} corresponds with `contact:website~^..*$` - This option cannot be chosen as answer @@ -92,6 +92,8 @@ This is rendered with {website} +Shows the reviews module (including the possibility to leave a review) + This tagrendering has no question and is thus read-only @@ -112,7 +114,7 @@ This is rendered with {phone} - - {contact:phone} corresponds with contact:phone~^..*$ + - {contact:phone} corresponds with `contact:phone~^..*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/viewpoint.md b/Docs/Layers/viewpoint.md index 7ee32f4af5..36bbb68d0a 100644 --- a/Docs/Layers/viewpoint.md +++ b/Docs/Layers/viewpoint.md @@ -57,6 +57,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/village_green.md b/Docs/Layers/village_green.md index 1509ac5013..67dd28e93b 100644 --- a/Docs/Layers/village_green.md +++ b/Docs/Layers/village_green.md @@ -46,6 +46,8 @@ Elements must have the all of following tags to be shown on this layer: +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/Layers/walls_and_buildings.md b/Docs/Layers/walls_and_buildings.md index a9c7c19cd3..4f0dcdec5d 100644 --- a/Docs/Layers/walls_and_buildings.md +++ b/Docs/Layers/walls_and_buildings.md @@ -16,6 +16,7 @@ Special builtin layer providing all walls and buildings. This layer is useful in - This layer is shown at zoomlevel **18** and higher - This layer is not visible by default and must be enabled in the filter by the user. + - This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-=true - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` - This layer will automatically load [entrance](./entrance.md) into the layout as it depends on it: a calculated tag loads features from this layer (calculatedTag[0] which calculates the value for _entrance_properties) @@ -36,7 +37,6 @@ Special builtin layer providing all walls and buildings. This layer is useful in - [entrances](https://mapcomplete.osm.be/entrances) - [personal](https://mapcomplete.osm.be/personal) - [surveillance](https://mapcomplete.osm.be/surveillance) - - [walls_and_buildings](https://mapcomplete.osm.be/walls_and_buildings) @@ -89,7 +89,7 @@ This is rendered with This door has a width of {can - - This entrance has no width information corresponds with + - This entrance has no width information corresponds with `` This document is autogenerated from [assets/layers/walls_and_buildings/walls_and_buildings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/walls_and_buildings/walls_and_buildings.json) \ No newline at end of file diff --git a/Docs/Layers/waste_basket.md b/Docs/Layers/waste_basket.md index 5a5f3c4946..702fa1ac6f 100644 --- a/Docs/Layers/waste_basket.md +++ b/Docs/Layers/waste_basket.md @@ -72,6 +72,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -88,14 +90,14 @@ The question is What kind of waste basket is this? - - A waste basket for general waste corresponds with + - A waste basket for general waste corresponds with `` - This option cannot be chosen as answer - - A waste basket for general waste corresponds with waste=trash - - A waste basket for dog excrements corresponds with waste=dog_excrement - - A waste basket for cigarettes corresponds with waste=cigarettes - - A waste basket for drugs corresponds with waste=drugs - - A waste basket for needles and other sharp objects corresponds with waste=sharps - - A waste basket for plastic corresponds with waste=plastic + - A waste basket for general waste corresponds with `waste=trash` + - A waste basket for dog excrements corresponds with `waste=dog_excrement` + - A waste basket for cigarettes corresponds with `waste=cigarettes` + - A waste basket for drugs corresponds with `waste=drugs` + - A waste basket for needles and other sharp objects corresponds with `waste=sharps` + - A waste basket for plastic corresponds with `waste=plastic` @@ -110,9 +112,9 @@ The question is Does this waste basket have a dispenser for dog excrement bags? - - This waste basket has a dispenser for (dog) excrement bags corresponds with vending=dog_excrement_bag - - This waste basket does not have a dispenser for (dog) excrement bags corresponds with not:vending=dog_excrement_bag - - This waste basket does not have a dispenser for (dog) excrement bags corresponds with + - This waste basket has a dispenser for (dog) excrement bags corresponds with `vending=dog_excrement_bag` + - This waste basket does not have a dispenser for (dog) excrement bags corresponds with `not:vending=dog_excrement_bag` + - This waste basket does not have a dispenser for (dog) excrement bags corresponds with `` - This option cannot be chosen as answer diff --git a/Docs/Layers/waste_disposal.md b/Docs/Layers/waste_disposal.md index b57912f8dc..fdce75be1d 100644 --- a/Docs/Layers/waste_disposal.md +++ b/Docs/Layers/waste_disposal.md @@ -80,9 +80,9 @@ This is rendered with Access: {access} - - This bin can be used by anyone corresponds with access=yes - - This bin is private corresponds with access=no - - This bin is only for residents corresponds with access=residents + - This bin can be used by anyone corresponds with `access=yes` + - This bin is private corresponds with `access=no` + - This bin is only for residents corresponds with `access=residents` @@ -97,9 +97,9 @@ The question is Where is this container located? - - This is an underground container corresponds with location=underground - - This container is located indoors corresponds with location=indoor - - This container is located outdoors corresponds with + - This is an underground container corresponds with `location=underground` + - This container is located indoors corresponds with `location=indoor` + - This container is located outdoors corresponds with `` This document is autogenerated from [assets/layers/waste_disposal/waste_disposal.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/waste_disposal/waste_disposal.json) \ No newline at end of file diff --git a/Docs/Layers/watermill.md b/Docs/Layers/watermill.md index 5f70970718..5340e87ba4 100644 --- a/Docs/Layers/watermill.md +++ b/Docs/Layers/watermill.md @@ -58,6 +58,8 @@ attribute | type | values which are supported by this layer +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only @@ -78,12 +80,12 @@ This is rendered with De toegankelijkheid van dit gebied is: {access:descriptio - - Vrij toegankelijk corresponds with access=yes - - Niet toegankelijk corresponds with access=no - - Niet toegankelijk, want privégebied corresponds with access=private - - Toegankelijk, ondanks dat het privegebied is corresponds with access=permissive - - Enkel toegankelijk met een gids of tijdens een activiteit corresponds with access=guided - - Toegankelijk mits betaling corresponds with access=yes&fee=yes + - Vrij toegankelijk corresponds with `access=yes` + - Niet toegankelijk corresponds with `access=no` + - Niet toegankelijk, want privégebied corresponds with `access=private` + - Toegankelijk, ondanks dat het privegebied is corresponds with `access=permissive` + - Enkel toegankelijk met een gids of tijdens een activiteit corresponds with `access=guided` + - Toegankelijk mits betaling corresponds with `access=yes&fee=yes` @@ -102,8 +104,8 @@ This is rendered with Beheer door {operator} - - Dit gebied wordt beheerd door Natuurpunt corresponds with operator=Natuurpunt - - Dit gebied wordt beheerd door {operator} corresponds with operator~^(n|N)atuurpunt.*$ + - Dit gebied wordt beheerd door Natuurpunt corresponds with `operator=Natuurpunt` + - Dit gebied wordt beheerd door {operator} corresponds with `operator~^(n|N)atuurpunt.*$` - This option cannot be chosen as answer diff --git a/Docs/Layers/windturbine.md b/Docs/Layers/windturbine.md index 06f4fa211d..7e7149f65e 100644 --- a/Docs/Layers/windturbine.md +++ b/Docs/Layers/windturbine.md @@ -143,6 +143,8 @@ This is rendered with This wind turbine went into operation on/in {start_date}. +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + This tagrendering has no question and is thus read-only diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json index 0bb8996ba1..c94313ca32 100644 --- a/Docs/TagInfo/mapcomplete_cyclofix.json +++ b/Docs/TagInfo/mapcomplete_cyclofix.json @@ -384,14 +384,26 @@ "key": "website", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" }, + { + "key": "contact:website", + "description": "Layer 'Bike repair/shop' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" + }, { "key": "phone", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" }, + { + "key": "contact:phone", + "description": "Layer 'Bike repair/shop' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" + }, { "key": "email", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" }, + { + "key": "contact:email", + "description": "Layer 'Bike repair/shop' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" + }, { "key": "opening_hours", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" diff --git a/Docs/TagInfo/mapcomplete_entrances.json b/Docs/TagInfo/mapcomplete_entrances.json index 02d50b6f77..f0206422d3 100644 --- a/Docs/TagInfo/mapcomplete_entrances.json +++ b/Docs/TagInfo/mapcomplete_entrances.json @@ -218,6 +218,15 @@ { "key": "width", "description": "Layer 'Entrance' shows and asks freeform values for key 'width' (in the MapComplete.osm.be theme 'Entrances')" + }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'Entrances')" + }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows kerb:height=0 with a fixed text, namely 'This door does not have a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", + "value": "0" } ] } \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_governments.json b/Docs/TagInfo/mapcomplete_governments.json new file mode 100644 index 0000000000..a120d9068d --- /dev/null +++ b/Docs/TagInfo/mapcomplete_governments.json @@ -0,0 +1,63 @@ +{ + "data_format": 1, + "project": { + "name": "MapComplete Governmental Offices", + "description": "On this map, Governmental offices are shown and can be easily added", + "project_url": "https://mapcomplete.osm.be/governments", + "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", + "icon_url": "https://mapcomplete.osm.be/assets/themes/onwheels/crest.svg", + "contact_name": "Pieter Vander Vennet, MapComplete", + "contact_email": "pietervdvn@posteo.net" + }, + "tags": [ + { + "key": "office", + "description": "The MapComplete theme Governmental Offices has a layer governments showing features with this tag", + "value": "government" + }, + { + "key": "image", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "phone", + "description": "Layer 'governments' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "contact:phone", + "description": "Layer 'governments' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "email", + "description": "Layer 'governments' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "contact:email", + "description": "Layer 'governments' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "website", + "description": "Layer 'governments' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "contact:website", + "description": "Layer 'governments' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Governmental Offices')" + }, + { + "key": "name", + "description": "Layer 'governments' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Governmental Offices')" + } + ] +} \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_healthcare.json b/Docs/TagInfo/mapcomplete_healthcare.json index a3f63a874b..649fb2966e 100644 --- a/Docs/TagInfo/mapcomplete_healthcare.json +++ b/Docs/TagInfo/mapcomplete_healthcare.json @@ -12,123 +12,123 @@ "tags": [ { "key": "amenity", - "description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag", + "description": "The MapComplete theme Healthcare has a layer Doctors showing features with this tag", "value": "doctors" }, { "key": "amenity", - "description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag", + "description": "The MapComplete theme Healthcare has a layer Doctors showing features with this tag", "value": "dentist" }, { "key": "healthcare", - "description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag", + "description": "The MapComplete theme Healthcare has a layer Doctors showing features with this tag", "value": "physiotherapist" }, { "key": "image", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "opening_hours", - "description": "Layer 'doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "phone", - "description": "Layer 'doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:phone", - "description": "Layer 'doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "email", - "description": "Layer 'doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:email", - "description": "Layer 'doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "website", - "description": "Layer 'doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:website", - "description": "Layer 'doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "name", - "description": "Layer 'doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "description": "Layer 'Doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", "value": "general" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "description": "Layer 'Doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", "value": "gynaecology" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "description": "Layer 'Doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", "value": "psychiatry" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "description": "Layer 'Doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", "value": "paediatrics" }, { "key": "amenity", - "description": "The MapComplete theme Healthcare has a layer Hospital showing features with this tag", + "description": "The MapComplete theme Healthcare has a layer Hospitals showing features with this tag", "value": "hospital" }, { "key": "name", - "description": "Layer 'Hospital' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "phone", - "description": "Layer 'Hospital' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:phone", - "description": "Layer 'Hospital' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "email", - "description": "Layer 'Hospital' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:email", - "description": "Layer 'Hospital' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "website", - "description": "Layer 'Hospital' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "contact:website", - "description": "Layer 'Hospital' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" + "description": "Layer 'Hospitals' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" }, { "key": "amenity", @@ -151,6 +151,10 @@ "key": "wikipedia", "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "name", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" + }, { "key": "opening_hours", "description": "Layer 'pharmacy' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')" diff --git a/Docs/TagInfo/mapcomplete_indoors.json b/Docs/TagInfo/mapcomplete_indoors.json new file mode 100644 index 0000000000..cb82c0a4a5 --- /dev/null +++ b/Docs/TagInfo/mapcomplete_indoors.json @@ -0,0 +1,55 @@ +{ + "data_format": 1, + "project": { + "name": "MapComplete Indoors", + "description": "On this map, publicly accessible indoor places are shown", + "project_url": "https://mapcomplete.osm.be/indoors", + "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", + "icon_url": "https://mapcomplete.osm.be/assets/themes/onwheels/crest.svg", + "contact_name": "Pieter Vander Vennet, MapComplete", + "contact_email": "pietervdvn@posteo.net" + }, + "tags": [ + { + "key": "indoor", + "description": "The MapComplete theme Indoors has a layer indoors showing features with this tag", + "value": "room" + }, + { + "key": "indoor", + "description": "The MapComplete theme Indoors has a layer indoors showing features with this tag", + "value": "area" + }, + { + "key": "indoor", + "description": "The MapComplete theme Indoors has a layer indoors showing features with this tag", + "value": "wall" + }, + { + "key": "indoor", + "description": "The MapComplete theme Indoors has a layer indoors showing features with this tag", + "value": "door" + }, + { + "key": "indoor", + "description": "The MapComplete theme Indoors has a layer indoors showing features with this tag", + "value": "level" + }, + { + "key": "image", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + } + ] +} \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_nature.json b/Docs/TagInfo/mapcomplete_nature.json index 5ee8942ec4..7e3cacf7a9 100644 --- a/Docs/TagInfo/mapcomplete_nature.json +++ b/Docs/TagInfo/mapcomplete_nature.json @@ -693,6 +693,10 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", "value": "no" }, + { + "key": "door:width", + "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Into nature')" + }, { "key": "toilets:position", "description": "Layer 'Toilets' shows toilets:position=seated with a fixed text, namely 'There are only seated toilets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", diff --git a/Docs/TagInfo/mapcomplete_personal.json b/Docs/TagInfo/mapcomplete_personal.json index 3a26aac4bc..d9a4b828af 100644 --- a/Docs/TagInfo/mapcomplete_personal.json +++ b/Docs/TagInfo/mapcomplete_personal.json @@ -1447,14 +1447,26 @@ "key": "website", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "contact:website", + "description": "Layer 'Bike repair/shop' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "phone", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "contact:phone", + "description": "Layer 'Bike repair/shop' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "email", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "contact:email", + "description": "Layer 'Bike repair/shop' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "opening_hours", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')" @@ -4571,89 +4583,89 @@ }, { "key": "amenity", - "description": "The MapComplete theme Personal theme has a layer doctors showing features with this tag", + "description": "The MapComplete theme Personal theme has a layer Doctors showing features with this tag", "value": "doctors" }, { "key": "amenity", - "description": "The MapComplete theme Personal theme has a layer doctors showing features with this tag", + "description": "The MapComplete theme Personal theme has a layer Doctors showing features with this tag", "value": "dentist" }, { "key": "healthcare", - "description": "The MapComplete theme Personal theme has a layer doctors showing features with this tag", + "description": "The MapComplete theme Personal theme has a layer Doctors showing features with this tag", "value": "physiotherapist" }, { "key": "image", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "opening_hours", - "description": "Layer 'doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "phone", - "description": "Layer 'doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:phone", - "description": "Layer 'doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "email", - "description": "Layer 'doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:email", - "description": "Layer 'doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "website", - "description": "Layer 'doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:website", - "description": "Layer 'doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "name", - "description": "Layer 'doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "general" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "gynaecology" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "psychiatry" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "paediatrics" }, { @@ -4950,6 +4962,15 @@ "key": "width", "description": "Layer 'Entrance' shows and asks freeform values for key 'width' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows kerb:height=0 with a fixed text, namely 'This door does not have a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, { "key": "name:etymology:wikidata", "description": "The MapComplete theme Personal theme has a layer Has etymolgy showing features with this tag" @@ -5508,6 +5529,55 @@ "key": "start_date", "description": "Layer 'Ghost bikes' shows and asks freeform values for key 'start_date' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "office", + "description": "The MapComplete theme Personal theme has a layer governments showing features with this tag", + "value": "government" + }, + { + "key": "image", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "phone", + "description": "Layer 'governments' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:phone", + "description": "Layer 'governments' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "email", + "description": "Layer 'governments' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:email", + "description": "Layer 'governments' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "website", + "description": "Layer 'governments' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:website", + "description": "Layer 'governments' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "name", + "description": "Layer 'governments' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "leisure", "description": "The MapComplete theme Personal theme has a layer Hackerspace showing features with this tag", @@ -5626,36 +5696,36 @@ }, { "key": "amenity", - "description": "The MapComplete theme Personal theme has a layer Hospital showing features with this tag", + "description": "The MapComplete theme Personal theme has a layer Hospitals showing features with this tag", "value": "hospital" }, { "key": "name", - "description": "Layer 'Hospital' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "phone", - "description": "Layer 'Hospital' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:phone", - "description": "Layer 'Hospital' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "email", - "description": "Layer 'Hospital' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:email", - "description": "Layer 'Hospital' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "website", - "description": "Layer 'Hospital' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "contact:website", - "description": "Layer 'Hospital' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" + "description": "Layer 'Hospitals' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" }, { "key": "emergency", @@ -5751,6 +5821,47 @@ "key": "wikipedia", "description": "The layer 'Map of hydrants allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "indoor", + "description": "The MapComplete theme Personal theme has a layer indoors showing features with this tag", + "value": "room" + }, + { + "key": "indoor", + "description": "The MapComplete theme Personal theme has a layer indoors showing features with this tag", + "value": "area" + }, + { + "key": "indoor", + "description": "The MapComplete theme Personal theme has a layer indoors showing features with this tag", + "value": "wall" + }, + { + "key": "indoor", + "description": "The MapComplete theme Personal theme has a layer indoors showing features with this tag", + "value": "door" + }, + { + "key": "indoor", + "description": "The MapComplete theme Personal theme has a layer indoors showing features with this tag", + "value": "level" + }, + { + "key": "image", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, { "key": "information", "description": "The MapComplete theme Personal theme has a layer Information boards showing features with this tag", @@ -6446,6 +6557,10 @@ "key": "wikipedia", "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "name", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "opening_hours", "description": "Layer 'pharmacy' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')" @@ -11245,6 +11360,10 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, + { + "key": "door:width", + "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "toilets:position", "description": "Layer 'Toilets' shows toilets:position=seated with a fixed text, namely 'There are only seated toilets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", diff --git a/Docs/TagInfo/mapcomplete_shops.json b/Docs/TagInfo/mapcomplete_shops.json index 409f381f66..1441a98c61 100644 --- a/Docs/TagInfo/mapcomplete_shops.json +++ b/Docs/TagInfo/mapcomplete_shops.json @@ -922,6 +922,10 @@ "key": "wikipedia", "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "name", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Open Shop Map')" + }, { "key": "opening_hours", "description": "Layer 'pharmacy' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Shop Map')" diff --git a/Docs/TagInfo/mapcomplete_toilets.json b/Docs/TagInfo/mapcomplete_toilets.json index 22ba1c9797..00b58f8344 100644 --- a/Docs/TagInfo/mapcomplete_toilets.json +++ b/Docs/TagInfo/mapcomplete_toilets.json @@ -103,6 +103,10 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", "value": "no" }, + { + "key": "door:width", + "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Open Toilet Map')" + }, { "key": "toilets:position", "description": "Layer 'Toilets' shows toilets:position=seated with a fixed text, namely 'There are only seated toilets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", diff --git a/assets/contributors.json b/assets/contributors.json index dedd7be6a6..8ffa140c80 100644 --- a/assets/contributors.json +++ b/assets/contributors.json @@ -1,11 +1,11 @@ { "contributors": [ { - "commits": 4165, + "commits": 4227, "contributor": "Pieter Vander Vennet" }, { - "commits": 119, + "commits": 120, "contributor": "Robin van der Linde" }, { @@ -20,6 +20,10 @@ "commits": 33, "contributor": "Christian Neumann" }, + { + "commits": 31, + "contributor": "Andrews Leruth" + }, { "commits": 31, "contributor": "Pieter Fiers" @@ -37,7 +41,7 @@ "contributor": "Ward" }, { - "commits": 20, + "commits": 22, "contributor": "riQQ" }, { @@ -66,11 +70,11 @@ }, { "commits": 15, - "contributor": "Andrews Leruth" + "contributor": "ToastHawaii" }, { - "commits": 15, - "contributor": "ToastHawaii" + "commits": 13, + "contributor": "AlexanderRebai" }, { "commits": 13, @@ -92,10 +96,6 @@ "commits": 10, "contributor": "LiamSimons" }, - { - "commits": 9, - "contributor": "AlexanderRebai" - }, { "commits": 9, "contributor": "RobJN" diff --git a/assets/layers/cafe_pub/cafe_pub.json b/assets/layers/cafe_pub/cafe_pub.json index 5a5ff2c9f2..9eb7e66a67 100644 --- a/assets/layers/cafe_pub/cafe_pub.json +++ b/assets/layers/cafe_pub/cafe_pub.json @@ -272,7 +272,7 @@ { "question": { "en": "Opened now", - "nl": "Nu geopened", + "nl": "Nu geopend", "de": "Derzeit geöffnet", "fr": "Ouvert maintenant", "hu": "Most nyitva van", diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index 1cd0200fa2..4d047c9740 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -4162,6 +4162,7 @@ "then": { "en": "This charging station works", "nl": "Dit oplaadpunt werkt", + "ca": "Aquesta estació de càrrega funciona", "de": "Die Station ist in Betrieb", "es": "Esta estación de carga funciona" } diff --git a/assets/layers/doctors/doctors.json b/assets/layers/doctors/doctors.json index eefedaf8d5..ac7361341f 100644 --- a/assets/layers/doctors/doctors.json +++ b/assets/layers/doctors/doctors.json @@ -1,10 +1,14 @@ { "id": "doctors", "name": { - "en": "doctors" + "en": "Doctors", + "de": "Ärzte", + "nl": "Dokters" }, "description": { - "en": "This layer shows doctor offices, dentists and other healthcare facilities" + "en": "This layer shows doctor offices, dentists and other healthcare facilities", + "de": "Diese Ebene zeigt Arztpraxen, Zahnärzte und andere Gesundheitseinrichtungen", + "nl": "Deze laag toont dokterspraktijken, tandartsen en andere gezondheidszorgfaciliteiten" }, "source": { "osmTags": { @@ -17,7 +21,9 @@ }, "title": { "render": { - "en": "Doctors Office {name}" + "en": "Doctors Office {name}", + "de": "Arztpraxis {name}", + "nl": "Dokterspraktijk {name}" }, "mappings": [ { @@ -43,10 +49,14 @@ "website", { "question": { - "en": "What is the name of this doctors place?" + "en": "What is the name of this doctors place?", + "de": "Wie heißt diese Arztpraxis?", + "nl": "Wat is de naam van deze dokterspraktijk?" }, "render": { - "en": "This doctors place is called {name}" + "en": "This doctors place is called {name}", + "de": "Diese Arztpraxis heißt {name}", + "nl": "Deze dokterspraktijk heet {name}" }, "freeform": { "key": "name" @@ -57,10 +67,14 @@ "condition": "amenity=doctors", "id": "specialty", "render": { - "en": "This doctor is specialized in {healthcare:speciality}" + "en": "This doctor is specialized in {healthcare:speciality}", + "de": "Dieser Arzt ist spezialisiert auf {healthcare:speciality}", + "nl": "Deze dokter is gespecialiseerd in {healthcare:speciality}" }, "question": { - "en": "What is this doctor specialized in?" + "en": "What is this doctor specialized in?", + "de": "Worauf ist dieser Arzt spezialisiert?", + "nl": "Waar is deze dokter in gespecialiseerd?" }, "freeform": { "key": "healthcare:speciality" @@ -69,25 +83,33 @@ { "if": "healthcare:speciality=general", "then": { - "en": "This is a general practitioner" + "en": "This is a general practitioner", + "de": "Dies ist ein Allgemeinmediziner", + "nl": "Dit is een huisarts" } }, { "if": "healthcare:speciality=gynaecology", "then": { - "en": "This is a gynaecologist" + "en": "This is a gynaecologist", + "de": "Dies ist ein Gynäkologe", + "nl": "Dit is een gynaecoloog" } }, { "if": "healthcare:speciality=psychiatry", "then": { - "en": "This is a psychiatrist" + "en": "This is a psychiatrist", + "de": "Dies ist ein Psychiater", + "nl": "Dit is een psychiater" } }, { "if": "healthcare:speciality=paediatrics", "then": { - "en": "This is a paediatrician" + "en": "This is a paediatrician", + "de": "Dies ist ein Kinderarzt", + "nl": "Dit is een kinderarts" } } ] @@ -96,7 +118,9 @@ "presets": [ { "title": { - "en": "a doctors office" + "en": "a doctors office", + "de": "eine Arztpraxis", + "nl": "een dokterspraktijk" }, "tags": [ "amenity=doctors" @@ -104,7 +128,9 @@ }, { "title": { - "en": "a dentists office" + "en": "a dentists office", + "de": "eine Zahnarztpraxis", + "nl": "een tandartspraktijk" }, "tags": [ "amenity=dentist" @@ -112,7 +138,9 @@ }, { "title": { - "en": "a physiotherapists office" + "en": "a physiotherapists office", + "de": "Praxis eines Physiotherapeuten", + "nl": "een fysiotherapeutenpraktijk" }, "tags": [ "healthcare=physiotherapist" @@ -125,7 +153,9 @@ "options": [ { "question": { - "en": "Opened now" + "en": "Opened now", + "de": "Jetzt geöffnet", + "nl": "Nu geopend" }, "osmTags": "_isOpen=yes" } diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 1fd53a87f7..a36e5cad31 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -156,4 +156,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 107503c96d..0af0a699d1 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -818,13 +818,15 @@ { "if": "amenity=pub", "then": { - "en": "This is actually a pub" + "en": "This is actually a pub", + "de": "Dies ist eigentlich eine Kneipe" } }, { "if": "amenity=cafe", "then": { - "en": "This is actually a cafe" + "en": "This is actually a cafe", + "de": "Dies ist eigentlich ein Café" } } ], diff --git a/assets/layers/hospital/hospital.json b/assets/layers/hospital/hospital.json index e7eb846a96..8b3b4b62ce 100644 --- a/assets/layers/hospital/hospital.json +++ b/assets/layers/hospital/hospital.json @@ -1,11 +1,15 @@ { "id": "hospital", "name": { - "en": "Hospital" + "en": "Hospitals", + "de": "Krankenhäuser", + "nl": "Ziekenhuizen" }, "title": { "render": { - "en": "Hospital" + "en": "Hospital", + "de": "Krankenhaus", + "nl": "Ziekenhuis" } }, "description": { @@ -19,10 +23,15 @@ { "id": "name", "render": { - "en": "Name of the hospital name is {name}" + "en": "This hospital is called {name}", + "ca": "El nom del nom de l'hospital és {name}", + "de": "Der Name des Krankenhauses lautet {name}", + "nl": "Dit ziekenhuis heet {name}" }, "question": { - "en": "What does the of the hospital ?" + "en": "What is the name of this hospital?", + "de": "Wie lautet der Name des Krankenhauses?", + "nl": "Wat is de naam van dit ziekenhuis?" }, "freeform": { "key": "name" diff --git a/assets/layers/id_presets/id_presets.json b/assets/layers/id_presets/id_presets.json index acff2db91f..caf39d97a0 100644 --- a/assets/layers/id_presets/id_presets.json +++ b/assets/layers/id_presets/id_presets.json @@ -1,7 +1,7 @@ { "id": "id_presets", "description": { - "en": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset." + "en": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset." }, "#dont-translate": "*", "source": { diff --git a/assets/layers/kindergarten_childcare/kindergarten_childcare.json b/assets/layers/kindergarten_childcare/kindergarten_childcare.json index b178d9cb89..3d517ee2cf 100644 --- a/assets/layers/kindergarten_childcare/kindergarten_childcare.json +++ b/assets/layers/kindergarten_childcare/kindergarten_childcare.json @@ -50,7 +50,8 @@ "then": { "en": "This is a kindergarten (also known as preschool) where small kids receive early education.", "nl": "Dit is een kleuterschool waar kindjes (voorbereidend) onderwijs krijgen.", - "de": "Dies ist ein Kindergarten (auch bekannt als Vorschule), in dem kleine Kinder eine Früherziehung erhalten." + "de": "Dies ist ein Kindergarten (auch bekannt als Vorschule), in dem kleine Kinder eine Früherziehung erhalten.", + "ca": "Aquesta és una llar d'infants (també coneguda com a preescolar) on els nens petits reben educació primerenca." }, "addExtraTags": [ "isced:level=0", @@ -79,7 +80,8 @@ }, "render": { "en": "This facility is named {name}", - "de": "Diese Einrichtung hat den Namen {name}" + "de": "Diese Einrichtung hat den Namen {name}", + "ca": "Aquesta instal·lació s'anomena {name}" }, "freeform": { "key": "name" @@ -109,7 +111,8 @@ "render": { "en": "This facility has room for {capacity} kids", "nl": "Hier kunnen {capacity} kinderen terecht", - "de": "Diese Einrichtung bietet Platz für {capacity} Kinder" + "de": "Diese Einrichtung bietet Platz für {capacity} Kinder", + "ca": "Aquesta instal·lació té espai per a {capacity} nens" }, "freeform": { "key": "capacity", diff --git a/assets/layers/maxspeed/maxspeed.json b/assets/layers/maxspeed/maxspeed.json index ca0ff2dcbd..a3c7d005e0 100644 --- a/assets/layers/maxspeed/maxspeed.json +++ b/assets/layers/maxspeed/maxspeed.json @@ -4,7 +4,8 @@ "en": "Maxspeed", "es": "Velocidad", "ca": "Velocitat", - "de": "Höchstgeschwindigkeit" + "de": "Höchstgeschwindigkeit", + "nl": "Maximumsnelheid" }, "source": { "osmTags": { diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index 0e7d24f8cd..6c8cf21f9b 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -34,76 +34,87 @@ "if": "parking=surface", "then": { "en": "This is a surface parking lot", - "nl": "Dit is een bovengronds parkeerterrein" + "nl": "Dit is een bovengronds parkeerterrein", + "de": "Dies ist ein oberirdischer Parkplatz" } }, { "if": "parking=street_side", "then": { "en": "This is a parking bay next to a street", - "nl": "Dit is een parkeerplek langs een weg" + "nl": "Dit is een parkeerplek langs een weg", + "de": "Dies ist eine Parkbucht neben einer Straße" } }, { "if": "parking=underground", "then": { "en": "This is an underground parking garage", - "nl": "Dit is een ondergrondse parkeergarage" + "nl": "Dit is een ondergrondse parkeergarage", + "de": "Dies ist eine Tiefgarage" } }, { "if": "parking=multi-storey", "then": { "en": "This is a multi-storey parking garage", - "nl": "Dit is een bovengrondse parkeergarage met meerdere verdiepingen" + "nl": "Dit is een bovengrondse parkeergarage met meerdere verdiepingen", + "de": "Dies ist ein mehrstöckiges oberirdisches Parkhaus" } }, { "if": "parking=rooftop", "then": { "en": "This is a rooftop parking deck", - "nl": "Dit is een parkeerdek op een dak" + "nl": "Dit is een parkeerdek op een dak", + "de": "Dies ist ein Parkdeck auf dem Dach" } }, { "if": "parking=lane", "then": { "en": "This is a lane for parking on the road", - "nl": "Dit is een strook voor parkeren op de weg" + "nl": "Dit is een strook voor parkeren op de weg", + "de": "Dies ist eine Fahrspur zum Parken auf der Straße" } }, { "if": "parking=carports", "then": { "en": "This is parking covered by carports", - "nl": "Dit is parking overdekt met carports" + "nl": "Dit is parking overdekt met carports", + "de": "Dies ist ein durch Carports überdachter Parkplatz" } }, { "if": "parking=garage_boxes", "then": { "en": "This a parking consisting of garage boxes", - "nl": "Dit is een parking bestaande uit garageboxen" + "nl": "Dit is een parking bestaande uit garageboxen", + "de": "Dies ist ein Parkplatz bestehend aus Garagenboxen" } }, { "if": "parking=layby", "then": { "en": "This is a parking on a layby", - "nl": "Dit is een parkeerplek op een layby" + "nl": "Dit is een parkeerplek op een layby", + "de": "Hier gibt es Parkmöglichkeiten auf einem kleinen Rastplatz" } }, { "if": "parking=sheds", "then": { "en": "This is a parking consisting of sheds", - "nl": "Dit is een parking bestaande uit schuren" + "nl": "Dit is een parking bestaande uit schuren", + "de": "Hier gibt es Parkmöglichkeiten unter einer offenen Dachkonstruktion" } } ], "question": { "en": "What kind of parking is this?", - "nl": "Wat voor parking is dit?" + "nl": "Wat voor parking is dit?", + "de": "Was ist das für ein Parkplatz?" } }, { @@ -113,7 +124,8 @@ "type": "pnat", "placeholder": { "en": "Amount of parking spots reserved for disabled people", - "nl": "Aantal parkeerplaatsen voor gehandicapten" + "nl": "Aantal parkeerplaatsen voor gehandicapten", + "de": "Anzahl barrierefreier Stellplätze" } }, "mappings": [ @@ -121,7 +133,8 @@ "if": "capacity:disabled=yes", "then": { "en": "There are disabled parking spots, but it is not known how many", - "nl": "Er zijn parkeerplaatsen voor gehandicapten, maar het is niet bekend hoeveel er zijn" + "nl": "Er zijn parkeerplaatsen voor gehandicapten, maar het is niet bekend hoeveel er zijn", + "de": "Es gibt barrierefreie Stellplätze, aber die Anzahl ist unbekannt" }, "hideInAnswer": true }, @@ -129,18 +142,21 @@ "if": "capacity:disabled=no", "then": { "en": "There are no disabled parking spots", - "nl": "Er zijn geen parkeerplaatsen voor gehandicapten" + "nl": "Er zijn geen parkeerplaatsen voor gehandicapten", + "de": "Es gibt keine barrierefreien Stellplätze" }, "hideInAnswer": true } ], "question": { "en": "How many disabled parking spots are there at this parking?", - "nl": "Hoeveel parkeerplaatsen voor gehandicapten zijn er op deze parking?" + "nl": "Hoeveel parkeerplaatsen voor gehandicapten zijn er op deze parking?", + "de": "Wie viele barrierefreie Stellplätze gibt es auf diesem Parkplatz?" }, "render": { "en": "There are {capacity:disabled} disabled parking spots", - "nl": "Er zijn {capacity:disabled} parkeerplaatsen voor gehandicapten" + "nl": "Er zijn {capacity:disabled} parkeerplaatsen voor gehandicapten", + "de": "Es gibt {capacity:disabled} barrierefreie Stellplätze" } }, { @@ -150,16 +166,19 @@ "type": "pnat", "placeholder": { "en": "Amount of parking spots", - "nl": "Aantal parkeerplaatsen" + "nl": "Aantal parkeerplaatsen", + "de": "Anzahl der Parkplätze" } }, "question": { "en": "How many parking spots are there at this parking?", - "nl": "Hoeveel parkeerplaatsen zijn er op deze parking?" + "nl": "Hoeveel parkeerplaatsen zijn er op deze parking?", + "de": "Wie viele Stellplätze gibt es auf diesem Parkplatz?" }, "render": { "en": "There are {capacity} parking spots", - "nl": "Er zijn {capacity} parkeerplaatsen" + "nl": "Er zijn {capacity} parkeerplaatsen", + "de": "Es gibt {capacity} Stellplätze" } } ], diff --git a/assets/layers/pharmacy/pharmacy.json b/assets/layers/pharmacy/pharmacy.json index 8084bbb020..e85a8b8018 100644 --- a/assets/layers/pharmacy/pharmacy.json +++ b/assets/layers/pharmacy/pharmacy.json @@ -1,20 +1,23 @@ { "id": "pharmacy", "name": { - "en": "pharmacy" + "en": "pharmacy", + "de": "Apotheke" }, "description": { "en": "A layer showing pharmacies, which (probably) dispense prescription drugs" }, "title": { "render": { - "en": "{name}" + "en": "{name}", + "de": "{name}" }, "mappings": [ { "if": "name=", "then": { - "en": "Pharmacy" + "en": "Pharmacy", + "de": "Apotheke" } } ] @@ -52,25 +55,30 @@ { "id": "wheelchair", "question": { - "en": "Is this pharmacy easy to access on a wheelchair?" + "en": "Is this pharmacy easy to access on a wheelchair?", + "de": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?" }, "mappings": [ { "if": "wheelchair=yes", "then": { - "en": "This pharmacy is easy to access on a wheelchair" + "en": "This pharmacy is easy to access on a wheelchair", + "ca": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes", + "de": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich" } }, { "if": "wheelchair=no", "then": { - "en": "This pharmacy is hard to access on a wheelchair" + "en": "This pharmacy is hard to access on a wheelchair", + "de": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich" } }, { "if": "wheelchair=limited", "then": { - "en": "This pharmacy has limited access for wheelchair users" + "en": "This pharmacy has limited access for wheelchair users", + "de": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich" } } ] diff --git a/assets/layers/rainbow_crossings/rainbow_crossings.json b/assets/layers/rainbow_crossings/rainbow_crossings.json index d13fe3c038..55ed292003 100644 --- a/assets/layers/rainbow_crossings/rainbow_crossings.json +++ b/assets/layers/rainbow_crossings/rainbow_crossings.json @@ -1,10 +1,12 @@ { "id": "rainbow_crossings", "name": { - "en": "Crossings with rainbow paintings" + "en": "Crossings with rainbow paintings", + "de": "Fußgängerüberwege in Regenbogenfarben" }, "description": { - "en": "A layer showing pedestrian crossings with rainbow paintings" + "en": "A layer showing pedestrian crossings with rainbow paintings", + "de": "Eine Ebene mit Fußgängerüberwegen in Regenbogenfarben" }, "source": { "osmTags": "highway=crossing" @@ -12,19 +14,22 @@ "minzoom": 17, "title": { "render": { - "en": "Crossing" + "en": "Crossing", + "de": "Überweg" } }, "presets": [ { "title": { - "en": "a crossing" + "en": "a crossing", + "de": "einen Überweg" }, "tags": [ "highway=crossing" ], "description": { - "en": "Pedestrian crossing" + "en": "Pedestrian crossing", + "de": "Fußgängerüberweg" }, "preciseInput": { "preferredBackground": [ @@ -40,14 +45,16 @@ { "id": "crossing-with-rainbow", "question": { - "en": "Does this crossing has rainbow paintings?" + "en": "Does this crossing has rainbow paintings?", + "de": "Hat der Überweg eine Markierung in Regenbogenfarben?" }, "condition": "highway=crossing", "mappings": [ { "if": "crossing:marking=rainbow", "then": { - "en": "This crossing has rainbow paintings" + "en": "This crossing has rainbow paintings", + "de": "Der Überweg hat eine Markierung in Regenbogenfarben" }, "icon": { "path": "./assets/themes/rainbow_crossings/logo.svg", @@ -57,14 +64,16 @@ { "if": "not:crossing:marking=rainbow", "then": { - "en": "No rainbow paintings here" + "en": "No rainbow paintings here", + "de": "Hier gibt es kein Markierung in Regenbogenfarben" }, "icon": "./assets/themes/rainbow_crossings/crossing.svg" }, { "if": "crossing:marking!=rainbow", "then": { - "en": "No rainbow paintings here" + "en": "No rainbow paintings here", + "de": "Hier gibt es kein Markierung in Regenbogenfarben" }, "icon": "./assets/themes/rainbow_crossings/crossing.svg", "hideInAnswer": true diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json index 5d1024791f..15155bfe35 100644 --- a/assets/layers/school/school.json +++ b/assets/layers/school/school.json @@ -304,7 +304,8 @@ "hideInAnswer": true, "then": { "en": "The main language of this school is unknown", - "nl": "De voertaal van deze school is niet gekend" + "nl": "De voertaal van deze school is niet gekend", + "de": "Die Unterrichtssprache der Schule ist unbekannt" } } ], diff --git a/assets/layers/shelter/shelter.json b/assets/layers/shelter/shelter.json index 803b6ef424..8476583235 100644 --- a/assets/layers/shelter/shelter.json +++ b/assets/layers/shelter/shelter.json @@ -1,10 +1,12 @@ { "id": "shelter", "name": { - "en": "Shelter" + "en": "Shelter", + "de": "Unterstand" }, "description": { - "en": "Layer showing shelter structures" + "en": "Layer showing shelter structures", + "de": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt" }, "source": { "osmTags": { @@ -16,7 +18,8 @@ "minzoom": 13, "title": { "render": { - "en": "Shelter" + "en": "Shelter", + "de": "Unterstand" } }, "mapRendering": [ @@ -35,19 +38,22 @@ { "if": "shelter_type=public_transport", "then": { - "en": "This is a shelter at a public transport stop." + "en": "This is a shelter at a public transport stop.", + "de": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel." } }, { "if": "shelter_type=picnic_shelter", "then": { - "en": "This is a shelter protecting from rain at a picnic site." + "en": "This is a shelter protecting from rain at a picnic site.", + "de": "Dies ist ein Unterstand zum Schutz vor Regen auf einem Picknickplatz." } }, { "if": "shelter_type=gazebo", "then": { - "en": "This is a gazebo." + "en": "This is a gazebo.", + "de": "Das ist ein offener Gartenpavillon." } }, { @@ -74,10 +80,12 @@ } ], "question": { - "en": "What kind of shelter is this?" + "en": "What kind of shelter is this?", + "de": "Um welche Art von Unterstand handelt es sich?" }, "render": { - "en": "Shelter type: {shelter_type}" + "en": "Shelter type: {shelter_type}", + "de": "Art des Unterstands: {shelter_type}" }, "freeform": { "key": "shelter_type", diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 341fd4c0da..f23d6c0341 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -104,10 +104,12 @@ "override": { "question": { "en": "What kind of shop is this?", - "nl": "Wat voor soort winkel is dit?" + "nl": "Wat voor soort winkel is dit?", + "de": "Um was für ein Geschäft handelt es sich?" }, "render": { - "en": "This is a {shop}" + "en": "This is a {shop}", + "de": "Das ist ein {shop}" }, "freeform": { "key": "shop", @@ -132,42 +134,48 @@ ] }, "question": { - "en": "What paper formats does this shop offer?" + "en": "What paper formats does this shop offer?", + "de": "Welche Papierformate bietet das Geschäft an?" }, "multiAnswer": true, "mappings": [ { "if": "service:print:A4=yes", "then": { - "en": "This shop can print on papers of size A4" + "en": "This shop can print on papers of size A4", + "de": "Das Geschäft kann Unterlagen auf A4 Papier drucken" }, "ifnot": "service:print:A4=no" }, { "if": "service:print:A3=yes", "then": { - "en": "This shop can print on papers of size A3" + "en": "This shop can print on papers of size A3", + "de": "Das Geschäft kann Unterlagen auf A3 Papier drucken" }, "ifnot": "service:print:A3=no" }, { "if": "service:print:A2=yes", "then": { - "en": "This shop can print on papers of size A2" + "en": "This shop can print on papers of size A2", + "de": "Das Geschäft kann Unterlagen auf A2 Papier drucken" }, "ifnot": "service:print:A2=no" }, { "if": "service:print:A1=yes", "then": { - "en": "This shop can print on papers of size A1" + "en": "This shop can print on papers of size A1", + "de": "Das Geschäft kann Unterlagen auf A1 Papier drucken" }, "ifnot": "service:print:A1=no" }, { "if": "service:print:A0=yes", "then": { - "en": "This shop can print on papers of size A0" + "en": "This shop can print on papers of size A0", + "de": "Das Geschäft kann Unterlagen auf A0 Papier drucken" }, "ifnot": "service:print:A0=no" } diff --git a/assets/layers/tertiary_education/tertiary_education.json b/assets/layers/tertiary_education/tertiary_education.json index e898ac2746..86ee85a596 100644 --- a/assets/layers/tertiary_education/tertiary_education.json +++ b/assets/layers/tertiary_education/tertiary_education.json @@ -98,7 +98,7 @@ "question": { "en": "What level of education is given here?", "nl": "Wat is het niveau van onderwijs?", - "de": "Welches Bildungsniveau wird hier gelehrt?", + "de": "Welche Bildungsabschlüsse werden hier verliehen?", "fr": "Quel niveau d'éducation est donné ici ?" }, "multiAnswer": true, diff --git a/assets/layers/transit_routes/transit_routes.json b/assets/layers/transit_routes/transit_routes.json index b29464746f..542f5f36b3 100644 --- a/assets/layers/transit_routes/transit_routes.json +++ b/assets/layers/transit_routes/transit_routes.json @@ -1,10 +1,12 @@ { "id": "transit_routes", "name": { - "en": "Bus lines" + "en": "Bus lines", + "de": "Buslinien" }, "description": { - "en": "Layer showing bus lines" + "en": "Layer showing bus lines", + "de": "Ebene mit Buslinien" }, "source": { "osmTags": { @@ -17,13 +19,15 @@ "minzoom": 15, "title": { "render": { - "en": "Bus line" + "en": "Bus line", + "de": "Buslinie" }, "mappings": [ { "if": "name~*", "then": { - "en": "{name}" + "en": "{name}", + "de": "{name}" } } ] @@ -32,7 +36,8 @@ { "color": { "render": { - "en": "#ff0000" + "en": "#ff0000", + "de": "#ff0000" }, "mappings": [ { @@ -53,7 +58,8 @@ }, "render": "{name}", "question": { - "en": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)" + "en": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)", + "de": "Wie lautet der Name der Buslinie? (z.B. Bus XX: Von => Über => Nach)" } }, { @@ -64,10 +70,12 @@ "placeholder": "City, Stop Name" }, "render": { - "en": "This bus line begins at {from}" + "en": "This bus line begins at {from}", + "de": "Die Buslinie startet von {from}" }, "question": { - "en": "What is the starting point for this bus line?" + "en": "What is the starting point for this bus line?", + "de": "Wo ist der Startpunkt dieser Buslinie?" } }, { @@ -78,10 +86,12 @@ "placeholder": "City, Stop Name" }, "render": { - "en": "This bus line goes via {via}" + "en": "This bus line goes via {via}", + "de": "Die Buslinie fährt über {via}" }, "question": { - "en": "What is the via point for this bus line?" + "en": "What is the via point for this bus line?", + "de": "Über welchen Zwischenhalt fährt die Buslinie?" } }, { @@ -92,10 +102,12 @@ "placeholder": "City, Stop Name" }, "render": { - "en": "This bus line ends at {to}" + "en": "This bus line ends at {to}", + "de": "Der Endpunkt der Buslinie ist {to}" }, "question": { - "en": "What is the ending point for this bus line?" + "en": "What is the ending point for this bus line?", + "de": "Wo ist der Endpunkt der Buslinie?" } }, { @@ -105,10 +117,12 @@ "type": "color" }, "render": { - "en": "This bus line has the color {colour}" + "en": "This bus line has the color {colour}", + "de": "Die Buslinie hat die Farbe {colour}" }, "question": { - "en": "What is the colour for this bus line?" + "en": "What is the colour for this bus line?", + "de": "Welche Farbe hat diese Buslinie?" } }, { @@ -118,10 +132,12 @@ "type": "string" }, "render": { - "en": "This bus line is part of the {network} network" + "en": "This bus line is part of the {network} network", + "de": "Die Buslinie gehört zum Verkehrsverbund {network}" }, "question": { - "en": "What network does this bus line belong to?" + "en": "What network does this bus line belong to?", + "de": "Zu welchem Verkehrsverbund gehört die Buslinie?" } }, { @@ -131,10 +147,12 @@ "type": "string" }, "render": { - "en": "This bus line is operated by {operator}" + "en": "This bus line is operated by {operator}", + "de": "Die Buslinie wird betrieben von {operator}" }, "question": { - "en": "What company operates this bus line?" + "en": "What company operates this bus line?", + "de": "Welches Unternehmen betreibt die Buslinie?" } } ] diff --git a/assets/layers/transit_stops/transit_stops.json b/assets/layers/transit_stops/transit_stops.json index 43daa2ada0..2bc3e2f68b 100644 --- a/assets/layers/transit_stops/transit_stops.json +++ b/assets/layers/transit_stops/transit_stops.json @@ -1,10 +1,12 @@ { "id": "transit_stops", "name": { - "en": "Transit Stops" + "en": "Transit Stops", + "de": "Haltestellen" }, "description": { - "en": "Layer showing different types of transit stops." + "en": "Layer showing different types of transit stops.", + "de": "Ebene mit verschiedenen Arten von Haltestellen." }, "source": { "osmTags": { @@ -16,13 +18,15 @@ "minzoom": 15, "title": { "render": { - "en": "Transit Stop" + "en": "Transit Stop", + "de": "Haltestelle" }, "mappings": [ { "if": "name~*", "then": { - "en": "Stop {name}" + "en": "Stop {name}", + "de": "Haltestelle {name}" } } ] @@ -51,7 +55,8 @@ { "id": "stop_name", "render": { - "en": "This stop is called {name}" + "en": "This stop is called {name}", + "de": "Der Name der Haltestelle lautet {name}" }, "freeform": { "key": "name", @@ -60,7 +65,8 @@ "noname=" ], "placeholder": { - "en": "Name of the stop" + "en": "Name of the stop", + "de": "Name der Haltestelle" } }, "mappings": [ @@ -72,12 +78,14 @@ ] }, "then": { - "en": "This stop has no name" + "en": "This stop has no name", + "de": "Die Haltestelle hat keinen Namen" } } ], "question": { - "en": "What is the name of this stop?" + "en": "What is the name of this stop?", + "de": "Wie lautet der Name der Haltestelle?" }, "placeholder": "Name of the stop" }, @@ -88,25 +96,29 @@ { "if": "shelter=yes", "then": { - "en": "This stop has a shelter" + "en": "This stop has a shelter", + "de": "Die Haltestelle hat einen Unterstand" } }, { "if": "shelter=no", "then": { - "en": "This stop does not have a shelter" + "en": "This stop does not have a shelter", + "de": "Die Haltestelle hat keinen Unterstand" } }, { "if": "shelter=separate", "then": { - "en": "This stop has a shelter, that's separately mapped" + "en": "This stop has a shelter, that's separately mapped", + "de": "Die Haltestelle hat einen Unterstand, der separat kariert ist" }, "hideInAnswer": true } ], "question": { - "en": "Does this stop have a shelter?" + "en": "Does this stop have a shelter?", + "de": "Hat die Haltestelle einen Unterstand?" } }, { @@ -115,25 +127,29 @@ { "if": "bench=yes", "then": { - "en": "This stop has a bench" + "en": "This stop has a bench", + "de": "Die Haltestelle hat eine Bank" } }, { "if": "bench=no", "then": { - "en": "This stop does not have a bench" + "en": "This stop does not have a bench", + "de": "Die Haltestelle hat keine Bank" } }, { "if": "bench=separate", "then": { - "en": "This stop has a bench, that's separately mapped" + "en": "This stop has a bench, that's separately mapped", + "de": "Die Haltestelle hat eine Bank, die separat kartiert ist" }, "hideInAnswer": true } ], "question": { - "en": "Does this stop have a bench?" + "en": "Does this stop have a bench?", + "de": "Gibt es an der Haltestelle eine Sitzbank?" } }, { @@ -142,25 +158,29 @@ { "if": "bin=yes", "then": { - "en": "This stop has a bin" + "en": "This stop has a bin", + "de": "Die Haltestelle hat einen Mülleimer" } }, { "if": "bin=no", "then": { - "en": "This stop does not have a bin" + "en": "This stop does not have a bin", + "de": "Die Haltestelle hat keinen Mülleimer" } }, { "if": "bin=separate", "then": { - "en": "This stop has a bin, that's separately mapped" + "en": "This stop has a bin, that's separately mapped", + "de": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist" }, "hideInAnswer": true } ], "question": { - "en": "Does this stop have a bin?" + "en": "Does this stop have a bin?", + "de": "Hat die Haltestelle einen Mülleimer?" } }, "wheelchair-access", @@ -170,18 +190,21 @@ { "if": "tactile_paving=yes", "then": { - "en": "This stop has tactile paving" + "en": "This stop has tactile paving", + "de": "Die Haltestelle hat ein taktiles Pflaster" } }, { "if": "tactile_paving=no", "then": { - "en": "This stop does not have tactile paving" + "en": "This stop does not have tactile paving", + "de": "Die Haltestelle hat kein taktiles Pflaster" } } ], "question": { - "en": "Does this stop have tactile paving?" + "en": "Does this stop have tactile paving?", + "de": "Hat die Haltestelle hat ein taktiles Pflaster?" } }, { @@ -190,18 +213,21 @@ { "if": "lit=yes", "then": { - "en": "This stop is lit" + "en": "This stop is lit", + "de": "Die Haltestelle ist beleuchtet" } }, { "if": "lit=no", "then": { - "en": "This stop is not lit" + "en": "This stop is not lit", + "de": "Die Haltestelle ist nicht beleuchtet" } } ], "question": { - "en": "Is this stop lit?" + "en": "Is this stop lit?", + "de": "Ist die Haltestelle beleuchtet?" } }, { @@ -210,46 +236,53 @@ { "if": "departures_board=yes", "then": { - "en": "This stop has a departures board of unknown type" + "en": "This stop has a departures board of unknown type", + "de": "Die Haltestelle hat einen Fahrplan, der nicht näher definiert ist" }, "hideInAnswer": true }, { "if": "departures_board=realtime", "then": { - "en": "This stop has a board showing realtime departure information" + "en": "This stop has a board showing realtime departure information", + "de": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" } }, { "if": "passenger_information_display=yes", "then": { - "en": "This stop has a board showing realtime departure information" + "en": "This stop has a board showing realtime departure information", + "de": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" }, "hideInAnswer": true }, { "if": "departures_board=timetable", "then": { - "en": "This stop has a timetable showing regular departures" + "en": "This stop has a timetable showing regular departures", + "de": "Die Haltestelle hat einen Fahrplan, der die regulären Abfahrtszeiten anzeigt" } }, { "if": "departures_board=interval", "then": { - "en": "This stop has a timetable containing just the interval between departures" + "en": "This stop has a timetable containing just the interval between departures", + "de": "Die Haltestelle hat einen Fahrplan, der den Abstand zwischen Abfahrten anzeigt" } }, { "if": "departures_board=no", "then": { - "en": "This stop does not have a departures board" + "en": "This stop does not have a departures board", + "de": "Die Haltestelle hat keinen Fahrplan" } } ] }, { "render": { - "en": "

{_contained_routes_count} routes stop at this stop

    {_contained_routes}
" + "en": "

{_contained_routes_count} routes stop at this stop

    {_contained_routes}
", + "de": "

{_contained_routes_count} Linien halten an der Haltestelle

    {_contained_routes}
" }, "condition": "_contained_routes~*", "id": "contained_routes" diff --git a/assets/layers/walls_and_buildings/walls_and_buildings.json b/assets/layers/walls_and_buildings/walls_and_buildings.json index 4ef1816e6a..a50a7cf41f 100644 --- a/assets/layers/walls_and_buildings/walls_and_buildings.json +++ b/assets/layers/walls_and_buildings/walls_and_buildings.json @@ -12,7 +12,7 @@ "description": { "en": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, …). This layer is invisible by default and not toggleable by the user.", "nl": "Speciale laag met alle muren en gebouwen. Deze laag is nuttig om objecten toe te voegen die met een muur verbonden zijn (zoals AEDs, brievenbussen, adressen, bewakingscamera's,…). Deze laag is standaard onzichtbaar en kan niet aangezet worden door de gebruiker.", - "de": "Spezielle eingebaute Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist in Voreinstellungen für Objekte nützlich, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, …). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht eingeschaltet werden." + "de": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden." }, "source": { "osmTags": { @@ -65,7 +65,8 @@ { "if": "_entrance:width=", "then": { - "en": "This entrance has no width information" + "en": "This entrance has no width information", + "de": "Der Eingang hat keine Informationen zur Durchgangsbreite" } } ] diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index 8834489211..8f1fb3f711 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -100,7 +100,6 @@ }, "reviews": { "description": "Shows the reviews module (including the possibility to leave a review)", - "render": "{reviews()}" }, "minimap": { diff --git a/assets/themes/bicyclelib/bicyclelib.json b/assets/themes/bicyclelib/bicyclelib.json index 9d2723f84f..6cd3c3b1ac 100644 --- a/assets/themes/bicyclelib/bicyclelib.json +++ b/assets/themes/bicyclelib/bicyclelib.json @@ -15,7 +15,8 @@ "pt_BR": "Bibliotecas de bicicletas", "pl": "Wypożyczalnie rowerów", "hu": "Kerékpárkönyvtárak", - "id": "Perpustakaan sepeda" + "id": "Perpustakaan sepeda", + "ca": "Biblioteques de bicicletes" }, "description": { "nl": "Een fietsbibliotheek is een plaats waar men een fiets kan lenen, vaak voor een klein bedrag per jaar. Een typisch voorbeeld zijn kinderfietsbibliotheken, waar men een fiets op maat van het kind kan lenen. Is het kind de fiets ontgroeid, dan kan het te kleine fietsje omgeruild worden voor een grotere.", @@ -27,7 +28,8 @@ "zh_Hant": "單車圖書館是指每年支付小額費用,然後可以租用單車的地方。最有名的單車圖書館案例是給小孩的,能夠讓長大的小孩用目前的單車換成比較大的單車", "de": "Fahrradbibliotheken sind Orte, um Fahrräder auszuleihen, oft gegen eine geringe Gebühr. Ein wichtiger Anwendungsfall sind Fahrradbibliotheken für Kinder, die es ihnen ermöglichen, auf ein größeres Fahrrad umzusteigen, wenn sie aus ihrem aktuellen Fahrrad herausgewachsen sind", "hu": "A kerékpárkönyvtárak olyan helyek, ahol kerékpárokat lehet kölcsönözni, gyakran egy kis éves díj ellenében. Figyelemre méltó felhasználásuk a gyerekeknek szánt kerékpárkönyvtárak, amelyek segítségével nagyobb kerékpárra válthatnak, amikor jelenlegi kerékpárjukat kinőtték", - "nb_NO": "Et sykkelbibliotek er et sted der man kan låne sykler, ofte for en liten årlig sum. I særdeleshet finnes de for unger som lar dem bytte til en større sykkel når de har vokst fra den de har." + "nb_NO": "Et sykkelbibliotek er et sted der man kan låne sykler, ofte for en liten årlig sum. I særdeleshet finnes de for unger som lar dem bytte til en større sykkel når de har vokst fra den de har.", + "ca": "Una biblioteca de bicicletes és un lloc on es poden prestar bicicletes, sovint per una petita quota anual. Un cas d'ús notable són les biblioteques de bicicletes per als nens, que els permet canviar per una bicicleta més gran quan han superat la seva bicicleta actual" }, "icon": "./assets/themes/bicyclelib/logo.svg", "startLat": 0, diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json index 1b3baa8e91..dd5cfaf90d 100644 --- a/assets/themes/campersite/campersite.json +++ b/assets/themes/campersite/campersite.json @@ -86,7 +86,8 @@ "nl": "Camperplaats {name}", "pt_BR": "Local de acampamento {name}", "de": "Wohnmobilstellplatz {name}", - "id": "Tempat kemping {name}" + "id": "Tempat kemping {name}", + "ca": "Lloc d'acampada {name}" }, "mappings": [ { @@ -104,7 +105,8 @@ "zh_Hant": "沒有名稱的露營地", "nl": "Camper site", "pt_BR": "Locais de acampamento sem nome", - "de": "Unbenannter Wohnmobilstellplatz" + "de": "Unbenannter Wohnmobilstellplatz", + "ca": "Lloc d'acampada sense nom" } } ] @@ -141,7 +143,8 @@ "id": "Tempat ini disebut {name}", "es": "Este lugar se llama {name}", "da": "Dette sted hedder {name}", - "nb_NO": "Dette stedet heter {name}" + "nb_NO": "Dette stedet heter {name}", + "ca": "Aquest lloc s'anomena {name}" }, "question": { "en": "What is this place called?", @@ -156,7 +159,8 @@ "de": "Wie heißt dieser Ort?", "es": "¿Cómo se llama este lugar?", "da": "Hvad hedder dette sted?", - "nb_NO": "Hva heter dette stedet?" + "nb_NO": "Hva heter dette stedet?", + "ca": "Com es diu aquest lloc?" }, "freeform": { "key": "name" @@ -286,7 +290,8 @@ "de": "Hat dieser Ort eine sanitäre Entsorgungsstation?", "id": "Apakah tempat ini memiliki tempat pembuangan sanitasi?", "es": "¿Este lugar tiene un vertedero sanitario?", - "nl": "Heeft deze plaats een loosplaats?" + "nl": "Heeft deze plaats een loosplaats?", + "ca": "Aquest lloc té una estació d'abocament sanitari?" }, "mappings": [ { @@ -306,7 +311,8 @@ "de": "Dieser Ort hat eine sanitäre Entsorgungsstation", "id": "Tempat ini memiliki tempat pembuangan sanitasi", "es": "Este lugar tiene un vertedero sanitario", - "nl": "Deze plaats heeft een loosplaats" + "nl": "Deze plaats heeft een loosplaats", + "ca": "Aquest lloc té una estació d'abocament sanitari" } }, { @@ -326,7 +332,8 @@ "de": "Dieser Ort hat keine sanitäre Entsorgungsstation", "id": "Tempat ini tidak memiliki tempat pembuangan sampah sanitasi", "es": "Este lugar no tiene vertedero sanitario", - "nl": "Deze plaats heeft geen loosplaats" + "nl": "Deze plaats heeft geen loosplaats", + "ca": "Aquest lloc no té una estació d'abocament sanitari" } } ] @@ -542,7 +549,8 @@ "nl": "Heeft deze plaats toiletten?", "hu": "Van-e itt WC?", "da": "Har dette sted toiletter?", - "es": "¿Este lugar tiene baños?" + "es": "¿Este lugar tiene baños?", + "ca": "Aquest lloc té lavabos?" }, "mappings": [ { @@ -565,7 +573,8 @@ "nl": "Deze plaats heeft toiletten", "hu": "Itt van WC", "es": "Este lugar cuenta con sanitarios", - "da": "Dette sted har toiletter" + "da": "Dette sted har toiletter", + "ca": "Aquest lloc té lavabos" } }, { @@ -588,7 +597,8 @@ "nl": "Deze plaats heeft geen toiletten", "hu": "Itt nincs WC", "es": "Este lugar no tiene sanitarios", - "da": "Dette sted har ikke toiletter" + "da": "Dette sted har ikke toiletter", + "ca": "Aquest lloc no té lavabos" } } ] @@ -606,7 +616,8 @@ "fr": "Site officiel : {website}", "pt_BR": "Site oficial: {website}", "de": "Offizielle Webseite: {website}", - "es": "Sitio web oficial: {website}" + "es": "Sitio web oficial: {website}", + "ca": "Lloc web oficial: {website}" }, "freeform": { "type": "url", @@ -624,7 +635,8 @@ "pt_BR": "Este lugar tem um website?", "de": "Hat dieser Ort eine Webseite?", "nl": "Heeft deze plaats een website?", - "es": "¿Este lugar tiene un sitio web?" + "es": "¿Este lugar tiene un sitio web?", + "ca": "Aquest lloc té un lloc web?" }, "id": "caravansites-website" }, @@ -642,7 +654,8 @@ "es": "¿Este lugar ofrece huecos para alquilar a largo plazo?", "da": "Tilbyder dette sted pladser til langtidsleje?", "nl": "Kan men hier plekken huren voor langere termijn?", - "nb_NO": "Tilbyr dette stedet plasser for langtidsleie?" + "nb_NO": "Tilbyr dette stedet plasser for langtidsleie?", + "ca": "Aquest lloc ofereix llocs de lloguer a llarg termini?" }, "mappings": [ { @@ -704,7 +717,8 @@ "de": "Es sind nur Plätze für Dauercamper vorhanden (wenn Sie diese Antwort auswählen, wird dieser Ort wird von der Karte verschwinden)", "es": "Solo es posible permanecer aquí si tienes un contrato a largo plazo (este lugar desaparecerá de este mapa si escoges esto)", "da": "Det er kun muligt at bo her, hvis du har en langtidskontrakt (dette sted forsvinder fra kortet, hvis du vælger dette)", - "nl": "Hier kan je enkel verblijven met een langetermijnscontract (deze plaats zal verborgen worden van deze kaart als je dit kiest)" + "nl": "Hier kan je enkel verblijven met een langetermijnscontract (deze plaats zal verborgen worden van deze kaart als je dit kiest)", + "ca": "Només és possible romandre aquí si teniu un contracte a llarg termini (aquest lloc desapareixerà d'aquest mapa si trieu això)" } } ] @@ -826,7 +840,8 @@ "de": "Sanitäre Entsorgungsstationen", "zh_Hant": "垃圾處理站", "id": "Tempat pembuangan sanitasi", - "nl": "Loostplaatsen" + "nl": "Loostplaatsen", + "ca": "Estacions d'abocament sanitari" }, "minzoom": 10, "source": { @@ -880,7 +895,8 @@ "de": "Sanitäre Entsorgungsstationen", "zh_Hant": "垃圾處理站", "id": "Tempat pembuangan sanitasi", - "nl": "Loosplaatsen" + "nl": "Loosplaatsen", + "ca": "Estacions d'abocament sanitari" }, "tagRenderings": [ "images", @@ -953,7 +969,8 @@ "zh_Hant": "這個地方收費 {charge}", "nb_NO": "Dette stedet tar {charge}", "nl": "Deze loosplaats rekent {charge} aan", - "es": "Este lugar cobra {charge}" + "es": "Este lugar cobra {charge}", + "ca": "Aquest lloc costa {charge}" }, "question": { "en": "How much does this place charge?", @@ -965,7 +982,8 @@ "de": "Wie hoch ist die Gebühr an diesem Ort?", "zh_Hant": "這個地方收費多少?", "nl": "Hoeveel kost het gebruik van deze loosplaats?", - "es": "¿Cuánto cobra este lugar?" + "es": "¿Cuánto cobra este lugar?", + "ca": "Quant costa aquest lloc?" }, "freeform": { "key": "charge" @@ -1057,7 +1075,8 @@ "fr": "Il est possible d’y vidanger ses eaux usées", "de": "Hier können Sie Brauch-/Grauwasser entsorgen", "zh_Hant": "你可以在這裡排放洗滌水", - "nl": "Je kan hier grijs water lozen" + "nl": "Je kan hier grijs water lozen", + "ca": "Es pot desfer de les aigües grises aquí" } }, { @@ -1141,7 +1160,8 @@ "fr": "Qui peut utiliser le site de vidange ?", "de": "Wer darf diese sanitäre Entsorgungsstation nutzen?", "zh_Hant": "誰可以使用這個垃圾站?", - "nl": "Wie mag deze loosplaats gebruiken?" + "nl": "Wie mag deze loosplaats gebruiken?", + "ca": "Qui pot utilitzar aquesta estació d'abocament?" }, "mappings": [ { @@ -1174,7 +1194,8 @@ "fr": "Le site est réservés aux clients", "de": "Sie müssen Kunde des Campingplatzes sein, um diesen Ort nutzen zu können", "zh_Hant": "你需要是露營/露營地的客戶才能使用這一地方", - "nl": "Je moet een klant van de kampeerplaats zijn om dit te gebruiken" + "nl": "Je moet een klant van de kampeerplaats zijn om dit te gebruiken", + "ca": "Heu de ser client del càmping/lloc d'acampada per utilitzar aquest lloc" } }, { @@ -1191,7 +1212,8 @@ "fr": "Le site est en libre-service", "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen", "zh_Hant": "任何人都可以使用這個衛生廢棄物站", - "nl": "Deze loosplaats is voor iedereen toegankelijk" + "nl": "Deze loosplaats is voor iedereen toegankelijk", + "ca": "Qualsevol pot utilitzar aquesta estació d'abocament" }, "hideInAnswer": true }, @@ -1209,7 +1231,8 @@ "fr": "Le site est en libre-service", "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen", "zh_Hant": "任何人都可以使用這個垃圾站", - "nl": "Deze loosplaats is toegankelijk voor iedereen" + "nl": "Deze loosplaats is toegankelijk voor iedereen", + "ca": "Qualsevol pot utilitzar aquesta estació d'abocament" } } ] diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index 9dc46bdac1..7d03bb2ef9 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -215,7 +215,8 @@ "de": "Wer hat hier Zugang?", "it": "Chi può accedervi?", "nl": "Wie heeft hier toegang toe?", - "es": "¿Quién puede acceder aquí?" + "es": "¿Quién puede acceder aquí?", + "ca": "Qui pot accedir aquí?" }, "mappings": [ { diff --git a/assets/themes/cycle_highways/cycle_highways.json b/assets/themes/cycle_highways/cycle_highways.json index a3567a98d5..0737cc630e 100644 --- a/assets/themes/cycle_highways/cycle_highways.json +++ b/assets/themes/cycle_highways/cycle_highways.json @@ -22,7 +22,8 @@ "fr": "Cette carte affiche les aménagements cyclables", "nl": "Deze kaart toont fietssnelwegen", "es": "Este mapa muestra carriles bici", - "nb_NO": "Kart som viser sykkelmotorveier" + "nb_NO": "Kart som viser sykkelmotorveier", + "ca": "Aquest mapa mostra carrils bici" }, "version": "2021-08-23", "startLat": 51.1599, diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json index 2e1d5c71a9..aa74fa3451 100644 --- a/assets/themes/cycle_infra/cycle_infra.json +++ b/assets/themes/cycle_infra/cycle_infra.json @@ -22,7 +22,8 @@ "zh_Hant": "檢視與編輯單車相關設施的地圖。", "hu": "Olyan térkép, ahol a kerékpáros infrastruktúrával kapcsolatos dolgokat tekinthet meg és szerkeszthet.", "es": "Un mapa en el que puedes ver y editar cosas relacionadas con la infraestructura ciclista.", - "fr": "Une carte où vous pouvez visualiser et modifier les éléments relatifs à l'infrastructure cyclable." + "fr": "Une carte où vous pouvez visualiser et modifier les éléments relatifs à l'infrastructure cyclable.", + "ca": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista." }, "description": { "en": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.", @@ -32,7 +33,8 @@ "zh_Hant": "可以檢視與編輯單車相關設施的地圖,在 #os0c21時製作。", "hu": "Kerékpáros infrastruktúrával kapcsolatos dolgokat megjelenítő és szerkesztésre felkínáló térkép. Az #osoc21 (Open Summer of Code) alatt készült.", "fr": "Une carte montrant les aménagements cyclables et où l’on peut rajouter des informations. Réalisée durant #osoc21.", - "es": "Un mapa en el que puedes ver y editar cosas relacionadas con la infraestructura ciclista. Hecho durante #osoc21." + "es": "Un mapa en el que puedes ver y editar cosas relacionadas con la infraestructura ciclista. Hecho durante #osoc21.", + "ca": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista. Fet durant #osoc21." }, "maintainer": "MapComplete", "hideFromOverview": false, diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json index 2be45c90d8..13e9429065 100644 --- a/assets/themes/cyclenodes/cyclenodes.json +++ b/assets/themes/cyclenodes/cyclenodes.json @@ -6,14 +6,16 @@ "es": "Redes de Nodos Ciclistas", "nb_NO": "Sykkelnodenettverk", "nl": "Fietsknooppuntennetwerken", - "fr": "Réseau de Nœuds Cyclistes" + "fr": "Réseau de Nœuds Cyclistes", + "ca": "Xarxa de nodes ciclistes" }, "description": { "en": "This map shows cycle node networks and allows you to add new nodes easily", "de": "Diese Karte zeigt Knotenpunktnetzwerke für Radfahrer und erlaubt auch neue Knoten zu mappen", "es": "Este mapa muestra redes de nodos ciclistas y te permita añadir nodos nuevos de manera sencilla", "nl": "Deze kaart toont fietsknooppunten en laat je toe om eenvoudigweg nieuwe knooppunten toe te voegen", - "fr": "Cette carte montre les réseaux de nœuds cyclistes et vous permet d'ajouter facilement de nouveaux nœuds" + "fr": "Cette carte montre les réseaux de nœuds cyclistes et vous permet d'ajouter facilement de nouveaux nœuds", + "ca": "Aquest mapa mostra xarxes de nodes ciclistes i et permet afegir nodes nous de manera senzilla" }, "maintainer": "Sebastian Kürten", "icon": "./assets/themes/cyclenodes/logo.svg", @@ -35,7 +37,8 @@ "de": "Knotenpunktverbindungen", "es": "enlaces nodo a nodo", "nl": "verbindingen van node naar node", - "fr": "liens noeud à noeud" + "fr": "liens noeud à noeud", + "ca": "enllaços node a node" }, "source": { "osmTags": { @@ -85,7 +88,8 @@ "de": "Wann wurde diese Knotenpunktverbindung zuletzt überprüft?", "es": "¿Cuándo se sondeó este enlace nodo a nodo por última vez?", "nl": "Wanneer werd deze node-naar-node verbinding het laast gesurveyed?", - "fr": "Quand cette liaison de nœud à nœud a-t-elle été contrôlée sur le terrain pour la dernière fois ?" + "fr": "Quand cette liaison de nœud à nœud a-t-elle été contrôlée sur le terrain pour la dernière fois ?", + "ca": "Quan es va comprovar per última vegada aquest enllaç node a node presencialment?" }, "render": { "en": "This node to node link was last surveyed on {survey:date}", diff --git a/assets/themes/cyclestreets/cyclestreets.json b/assets/themes/cyclestreets/cyclestreets.json index 4218b0d1ff..0cddb4e0f5 100644 --- a/assets/themes/cyclestreets/cyclestreets.json +++ b/assets/themes/cyclestreets/cyclestreets.json @@ -319,7 +319,8 @@ "it": "Questa è una strada ciclabile", "hu": "Ez az utca kerékpárosutca", "es": "Esta calle es una ciclocalle", - "fr": "Cette rue est une rue cyclable" + "fr": "Cette rue est une rue cyclable", + "ca": "Aquest carrer és una ciclocarrer" }, "hideInAnswer": "_country=be" }, @@ -339,7 +340,8 @@ "it": "Diverrà tra poco una strada ciclabile", "hu": "Ez az utca hamarosan kerékpárosutcává válik", "es": "Esta calle se convertirá en una ciclocalle próximamente", - "fr": "Cette rue sera bientôt une rue cyclable" + "fr": "Cette rue sera bientôt une rue cyclable", + "ca": "Aquest carrer es convertirà en un ciclocarrer pròximament" } }, { diff --git a/assets/themes/drinking_water/drinking_water.json b/assets/themes/drinking_water/drinking_water.json index 9f86509111..cd8c9ec858 100644 --- a/assets/themes/drinking_water/drinking_water.json +++ b/assets/themes/drinking_water/drinking_water.json @@ -25,7 +25,8 @@ "de": "Eine Karte zum Anzeigen und Bearbeiten öffentlicher Trinkwasserstellen", "nb_NO": "Offentlig tilgjengelige drikkevannssteder", "hu": "Ezen a térképen a nyilvánosan hozzáférhető ivóvíznyerő helyek láthatók, szerkeszthetők és rajzolhatók fel könnyedén", - "es": "En este mapa, se muestran los puntos de agua potable accesibles públicamente y pueden añadirse fácilmente" + "es": "En este mapa, se muestran los puntos de agua potable accesibles públicamente y pueden añadirse fácilmente", + "ca": "En aquest mapa es mostren els punts d'aigua potable accessibles al públic i es poden afegir fàcilment" }, "maintainer": "MapComplete", "icon": "./assets/themes/drinking_water/logo.svg", diff --git a/assets/themes/education/education.json b/assets/themes/education/education.json index 0d4d9cd395..8d59e840fd 100644 --- a/assets/themes/education/education.json +++ b/assets/themes/education/education.json @@ -4,14 +4,16 @@ "en": "On this map, you'll find information about all types of schools and eduction and can easily add more information", "nl": "Deze kaart toont info over verschillende onderwijsinstellingen zoals kleuterscholen, middelbare scholen en tertiair onderwijs.", "de": "Auf dieser Karte können Sie Informationen über Bildungseinrichtungen finden und hinzufügen", - "fr": "Sur cette carte, vous trouverez des informations concernant tous les types d'écoles et d'enseignement. Vous pouvez facilement ajouter plus d'informations" + "fr": "Sur cette carte, vous trouverez des informations concernant tous les types d'écoles et d'enseignement. Vous pouvez facilement ajouter plus d'informations", + "ca": "En aquest mapa trobareu informació sobre tots els tipus d'escoles i educació i podreu afegir fàcilment més informació" }, "title": { "en": "Education", "nl": "Onderwijs", "de": "Bildung", "fr": "Enseignement", - "nb_NO": "Utdanning" + "nb_NO": "Utdanning", + "ca": "Educació" }, "defaultBackgroundId": "CartoDB.Voyager", "maintainer": "MapComplete", diff --git a/assets/themes/etymology/etymology.json b/assets/themes/etymology/etymology.json index e72a15cb65..bdda184894 100644 --- a/assets/themes/etymology/etymology.json +++ b/assets/themes/etymology/etymology.json @@ -56,7 +56,8 @@ "zh_Hant": "道路沒有詞源資訊", "hu": "Etimológiai adat nélküli utcák", "fr": "Route sans origine étymologique", - "es": "Calles sin información etimológica" + "es": "Calles sin información etimológica", + "ca": "Carrers sense informació etimològica" }, "minzoom": 18, "source": { @@ -82,7 +83,8 @@ "zh_Hant": "公園與森哥沒有詞源資訊", "hu": "Etimológiai adat nélküli parkok és erdők", "fr": "Parcs et forêts sans origine étymologique", - "es": "Parques y bosques sin información etimológica" + "es": "Parques y bosques sin información etimológica", + "ca": "Parcs i boscos sense informació etimològica" }, "minzoom": 18, "source": { @@ -109,7 +111,8 @@ "de": "Bildungseinrichtungen ohne Informationen zur Namensherkunft", "fr": "Institutions d'éducation sans origine étymologique", "es": "Instituciones educacionales sin información etimológica", - "nl": "Onderwijsinstelling zonder etymologische informatie" + "nl": "Onderwijsinstelling zonder etymologische informatie", + "ca": "Institucions educatives sense informació d'etimològica" }, "minzoom": 18, "source": { @@ -139,7 +142,8 @@ "de": "Kultureinrichtungen ohne Informationen zur Namensherkunft", "fr": "Lieux culturels sans origine étymologique", "es": "Lugares culturales sin información etimológica", - "nl": "Culturele plaatsen zonder etymologische informatie" + "nl": "Culturele plaatsen zonder etymologische informatie", + "ca": "Llocs culturals sense informació etimològica" }, "minzoom": 18, "source": { @@ -169,7 +173,8 @@ "de": "Touristische Einrichtungen ohne Informationen zur Namensherkunft", "fr": "Lieux touristiques sans origine étymologique", "es": "Lugares turísticos sin información etimológica", - "nl": "Toeristische plaatsen zonder etymologische informatie" + "nl": "Toeristische plaatsen zonder etymologische informatie", + "ca": "Llocs turístics sense informació etimològica" }, "minzoom": 18, "source": { @@ -197,7 +202,8 @@ "en": "Health and social places without etymology information", "de": "Gesundheits- und Sozialeinrichtungen ohne Informationen zur Namensherkunft", "fr": "Établissements sociaux ou de soins sans origine étymologique", - "nl": "Gezondheidsinstellingen en maatschappelijke plaatsen zonder etymologische informatie" + "nl": "Gezondheidsinstellingen en maatschappelijke plaatsen zonder etymologische informatie", + "ca": "Llocs socials i de salut sense informació etimològica" }, "minzoom": 18, "source": { @@ -225,7 +231,8 @@ "de": "Sporteinrichtungen ohne Informationen zur Namensherkunft", "fr": "Lieux sportifs sans origine étymologique", "es": "Lugares deportivos sin información etimológica", - "nl": "Sportplekken zonder etymologische informatie" + "nl": "Sportplekken zonder etymologische informatie", + "ca": "Llocs esportius sense informació etimològica" }, "minzoom": 18, "source": { diff --git a/assets/themes/governments/governments.json b/assets/themes/governments/governments.json index 405aea0c15..0ba98a85fb 100644 --- a/assets/themes/governments/governments.json +++ b/assets/themes/governments/governments.json @@ -1,20 +1,20 @@ { - "id": "governments", - "title": { - "en": "Governmental Offices" - }, - "description": { - "en": "On this map, Governmental offices are shown and can be easily added" - }, - "maintainer": "MapComplete", - "icon": "./assets/themes/onwheels/crest.svg", - "version": "0", - "startLat": 50.8465573, - "defaultBackgroundId": "CartoDB.Voyager", - "startLon": 4.351697, - "startZoom": 16, - "widenFactor": 2, - "layers": [ - "governments" - ] + "id": "governments", + "title": { + "en": "Governmental Offices" + }, + "description": { + "en": "On this map, Governmental offices are shown and can be easily added" + }, + "maintainer": "MapComplete", + "icon": "./assets/themes/onwheels/crest.svg", + "version": "0", + "startLat": 50.8465573, + "defaultBackgroundId": "CartoDB.Voyager", + "startLon": 4.351697, + "startZoom": 16, + "widenFactor": 2, + "layers": [ + "governments" + ] } \ No newline at end of file diff --git a/assets/themes/healthcare/healthcare.json b/assets/themes/healthcare/healthcare.json index 482d213966..36fad8d50b 100644 --- a/assets/themes/healthcare/healthcare.json +++ b/assets/themes/healthcare/healthcare.json @@ -1,10 +1,14 @@ { "id": "healthcare", "title": { - "en": "Healthcare" + "en": "Healthcare", + "ca": "Assistència sanitària", + "de": "Gesundheitswesen" }, "description": { - "en": "On this map, various healthcare related items are shown" + "en": "On this map, various healthcare related items are shown", + "ca": "En aquest mapa es mostren diversos elements relacionats amb la salut", + "de": "Auf dieser Karte werden verschiedene Gesundheitseinrichtungen angezeigt" }, "maintainer": "MapComplete", "icon": "./assets/layers/doctors/doctors.svg", diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 8125eea6d2..c7aac3fe25 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -1,10 +1,14 @@ { "id": "onwheels", "title": { - "en": "OnWheels" + "en": "OnWheels", + "de": "Auf Rädern", + "fr": "OnWheels" }, "description": { - "en": "On this map, publicly wheelchair accessible places are shown and can be easily added" + "en": "On this map, publicly weelchair accessible places are shown and can be easily added", + "de": "Auf dieser Karte werden öffentlich zugängliche Orte für Rollstuhlfahrer angezeigt und können leicht hinzugefügt werden", + "fr": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes" }, "maintainer": "MapComplete", "icon": "./assets/themes/onwheels/crest.svg", @@ -49,10 +53,11 @@ ] }, "render": { - "en": "This door has a width of {canonical(_poi_entrance:width)} meters", - "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", - "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", - "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" + "en": "This door has a width of {canonical(_poi_entrance:width)} meter", + "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", + "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros", + "fr": "Cet accès a une largeur de {canonical(_poi_entrance:width)}" }, "freeform": { "key": "_poi_entrance:width", @@ -62,7 +67,10 @@ { "if": "_poi_entrance:width=", "then": { - "en": "This entrance has no width information" + "en": "This entrance has no width information", + "de": "Dieser Eingang hat keine Breitenangabe", + "fr": "Cet accès n'a pas d'informations de largeur", + "nl": "Deze ingang heeft geen informatie over de breedte" } } ] diff --git a/assets/themes/rainbow_crossings/rainbow_crossings.json b/assets/themes/rainbow_crossings/rainbow_crossings.json index 1a63df6fc3..a01407c9d5 100644 --- a/assets/themes/rainbow_crossings/rainbow_crossings.json +++ b/assets/themes/rainbow_crossings/rainbow_crossings.json @@ -1,10 +1,12 @@ { "id": "rainbow_crossings", "title": { - "en": "Rainbow pedestrian crossings" + "en": "Rainbow pedestrian crossings", + "de": "Regenbogen-Fußgängerübergänge" }, "description": { - "en": "On this map, rainbow-painted pedestrian crossings are shown and can be easily added" + "en": "On this map, rainbow-painted pedestrian crossings are shown and can be easily added", + "de": "Auf dieser Karte sind Fußgängerüberwege mit Regenbogenfarben eingezeichnet und können leicht hinzugefügt werden" }, "maintainer": "", "icon": "./assets/themes/rainbow_crossings/logo.svg", diff --git a/assets/themes/sidewalks/sidewalks.json b/assets/themes/sidewalks/sidewalks.json index 4658be54fe..fcdf9349a3 100644 --- a/assets/themes/sidewalks/sidewalks.json +++ b/assets/themes/sidewalks/sidewalks.json @@ -228,4 +228,4 @@ "allowSplit": true } ] -} +} \ No newline at end of file diff --git a/assets/themes/transit/transit.json b/assets/themes/transit/transit.json index 271510c2f3..5fdee197db 100644 --- a/assets/themes/transit/transit.json +++ b/assets/themes/transit/transit.json @@ -3,10 +3,12 @@ "maintainer": "Robin van der Linde", "version": "20220406", "title": { - "en": "Bus routes" + "en": "Bus routes", + "de": "Buslinien" }, "description": { - "en": "Plan your trip with the help of the public transport system." + "en": "Plan your trip with the help of the public transport system.", + "de": "Planen Sie Ihre Reise mit Hilfe von öffentlichen Verkehrsmitteln." }, "icon": "./assets/layers/transit_stops/bus_stop.svg", "startZoom": 20, diff --git a/assets/themes/walls_and_buildings/walls_and_buildings.json b/assets/themes/walls_and_buildings/walls_and_buildings.json index 7b14bd13d5..1abc2f8e7d 100644 --- a/assets/themes/walls_and_buildings/walls_and_buildings.json +++ b/assets/themes/walls_and_buildings/walls_and_buildings.json @@ -1,10 +1,12 @@ { "id": "walls_and_buildings", "title": { - "en": "Walls and buildings" + "en": "Walls and buildings", + "de": "Wände und Gebäude" }, "description": { - "en": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, …). This layer is invisible by default and not toggleable by the user." + "en": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, …). This layer is invisible by default and not toggleable by the user.", + "de": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden." }, "maintainer": "MapComplete", "icon": "./assets/layers/walls_and_buildings/walls_and_buildings.png", @@ -19,5 +21,4 @@ "entrance" ], "hideFromOverview": true - } \ No newline at end of file diff --git a/assets/translators.json b/assets/translators.json index dc060e31c0..8edc37fb14 100644 --- a/assets/translators.json +++ b/assets/translators.json @@ -1,11 +1,11 @@ { "contributors": [ { - "commits": 177, + "commits": 180, "contributor": "Pieter Vander Vennet" }, { - "commits": 139, + "commits": 142, "contributor": "kjon" }, { @@ -18,11 +18,11 @@ }, { "commits": 31, - "contributor": "Iago" + "contributor": "Babos Gábor" }, { - "commits": 30, - "contributor": "Babos Gábor" + "commits": 31, + "contributor": "Iago" }, { "commits": 29, @@ -41,12 +41,12 @@ "contributor": "Anonymous" }, { - "commits": 19, - "contributor": "SC" + "commits": 20, + "contributor": "Robin van der Linde" }, { - "commits": 18, - "contributor": "Robin van der Linde" + "commits": 19, + "contributor": "SC" }, { "commits": 18, @@ -72,6 +72,10 @@ "commits": 13, "contributor": "Joost" }, + { + "commits": 12, + "contributor": "paunofu" + }, { "commits": 10, "contributor": "Win Olario" @@ -92,10 +96,6 @@ "commits": 9, "contributor": "Jacque Fresco" }, - { - "commits": 8, - "contributor": "paunofu" - }, { "commits": 7, "contributor": "Niels Elgaard Larsen" @@ -228,6 +228,10 @@ "commits": 3, "contributor": "SiegbjornSitumeang" }, + { + "commits": 2, + "contributor": "Manuel Tassi" + }, { "commits": 2, "contributor": "liimee" @@ -288,6 +292,10 @@ "commits": 2, "contributor": "Leo Alcaraz" }, + { + "commits": 1, + "contributor": "Andrews Leruth" + }, { "commits": 1, "contributor": "Hungarian_user" diff --git a/langs/it.json b/langs/it.json index db0c2e22bb..cbab0e51eb 100644 --- a/langs/it.json +++ b/langs/it.json @@ -11,10 +11,10 @@ "delete": "Rimuovi", "explanations": { "hardDelete": "Questo elemento verrà rimosso da OpenStreetMap. Un utente esperto potrebbe recuperarlo", - "selectReason": "Si prega di selezionare il motivo della rimozione di questo oggetto", - "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}", "retagNoOtherThemes": "Questo elemento verrà riclassificato e nascosto da questa applicazione", - "retagOtherThemes": "Questo elemento verrà modificato e sarà visibile in {otherThemes}" + "retagOtherThemes": "Questo elemento verrà modificato e sarà visibile in {otherThemes}", + "selectReason": "Si prega di selezionare il motivo della rimozione di questo oggetto", + "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}" }, "isDeleted": "Questo oggetto è stato rimosso", "isntAPoint": "Solo i nodi possono essere rimossi, l'elemento selezionato è un percorso, un’area oppure una relazione.", @@ -50,6 +50,16 @@ "disableFilters": "Disabilita tutti i filtri", "disableFiltersExplanation": "Alcuni oggetti potrebbero essere nascosti da un filtro", "hasBeenImported": "Questo elemento è stato già importato", + "import": { + "hasBeenImported": "Questo oggetto è stato importato", + "howToTest": "Per testare, aggiungere test=true o backend=osm-test all'URL. Il set di modifiche verrà stampato nella console. Si prega di aprire una PR per ufficializzare questo argomento per abilitare effettivamente il pulsante di importazione.", + "importTags": "L'elemento riceverà {tags}", + "officialThemesOnly": "Il pulsante di importazione è disabilitato per gli argomenti non ufficiali per evitare incidenti", + "wrongType": "Questo elemento non è un nodo o una via e non può essere importato", + "wrongTypeToConflate": "Questo elemento non è un nodo o una via e non può essere aggiunto", + "zoomInMore": "Ingrandisci di più per importare questo elemento" + }, + "importTags": "L'elemento riceverà {tags}", "intro": "Hai cliccato in un punto dove non ci sono ancora dei dati.
", "layerNotEnabled": "Il livello {layer} non è abilitato. Abilita questo livello per aggiungere un elemento", "openLayerControl": "Apri il pannello di controllo dei livelli", @@ -59,17 +69,7 @@ "title": "Aggiungi un nuovo elemento?", "warnVisibleForEveryone": "La tua aggiunta sarà visibile a tutti", "zoomInFurther": "Ingrandisci di più per aggiungere un elemento.", - "zoomInMore": "Ingrandisci ancora per importare questo oggetto", - "import": { - "howToTest": "Per testare, aggiungere test=true o backend=osm-test all'URL. Il set di modifiche verrà stampato nella console. Si prega di aprire una PR per ufficializzare questo argomento per abilitare effettivamente il pulsante di importazione.", - "zoomInMore": "Ingrandisci di più per importare questo elemento", - "wrongType": "Questo elemento non è un nodo o una via e non può essere importato", - "officialThemesOnly": "Il pulsante di importazione è disabilitato per gli argomenti non ufficiali per evitare incidenti", - "hasBeenImported": "Questo oggetto è stato importato", - "importTags": "L'elemento riceverà {tags}", - "wrongTypeToConflate": "Questo elemento non è un nodo o una via e non può essere aggiunto" - }, - "importTags": "L'elemento riceverà {tags}" + "zoomInMore": "Ingrandisci ancora per importare questo oggetto" }, "attribution": { "attributionContent": "

Tutti i dati sono forniti da OpenStreetMap, riutilizzabili liberamente con Open Database License

", diff --git a/langs/layers/ca.json b/langs/layers/ca.json index c57633307b..33d3729c13 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -685,6 +685,13 @@ } } }, + "hospital": { + "tagRenderings": { + "name": { + "render": "El nom del nom de l'hospital és {name}" + } + } + }, "hydrant": { "tagRenderings": { "hydrant-color": { @@ -712,6 +719,23 @@ "render": "Panell d'informació" } }, + "kindergarten_childcare": { + "tagRenderings": { + "capacity": { + "render": "Aquesta instal·lació té espai per a {capacity} nens" + }, + "childcare-type": { + "mappings": { + "0": { + "then": "Aquesta és una llar d'infants (també coneguda com a preescolar) on els nens petits reben educació primerenca." + } + } + }, + "name": { + "render": "Aquesta instal·lació s'anomena {name}" + } + } + }, "map": { "name": "Mapes", "presets": { @@ -780,6 +804,17 @@ "parking": { "name": "Aparcament" }, + "pharmacy": { + "tagRenderings": { + "wheelchair": { + "mappings": { + "0": { + "then": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes" + } + } + } + } + }, "picnic_table": { "name": "Taules de pícnic", "title": { @@ -1032,40 +1067,5 @@ } } } - }, - "kindergarten_childcare": { - "tagRenderings": { - "name": { - "render": "Aquesta instal·lació s'anomena {name}" - }, - "capacity": { - "render": "Aquesta instal·lació té espai per a {capacity} nens" - }, - "childcare-type": { - "mappings": { - "0": { - "then": "Aquesta és una llar d'infants (també coneguda com a preescolar) on els nens petits reben educació primerenca." - } - } - } - } - }, - "hospital": { - "tagRenderings": { - "name": { - "render": "El nom del nom de l'hospital és {name}" - } - } - }, - "pharmacy": { - "tagRenderings": { - "wheelchair": { - "mappings": { - "0": { - "then": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes" - } - } - } - } } -} +} \ No newline at end of file diff --git a/langs/layers/da.json b/langs/layers/da.json index 2e70a0a239..15ecec5d18 100644 --- a/langs/layers/da.json +++ b/langs/layers/da.json @@ -884,9 +884,6 @@ }, "question": "Er der værktøj her til at reparere din egen cykel?" }, - "bike_shop-email": { - "question": "Hvad er e-mailadressen på {name}?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -898,12 +895,6 @@ "bike_shop-name": { "question": "Hvad hedder denne cykelbutik?", "render": "Denne cykelbutik hedder {name}" - }, - "bike_shop-phone": { - "question": "Hvad er telefonnummeret på {name}?" - }, - "bike_shop-website": { - "question": "Hvad er webstedet for {name}?" } }, "title": { diff --git a/langs/layers/de.json b/langs/layers/de.json index 76bd21ae3c..8a0b8fb43b 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -1068,9 +1068,6 @@ "bike_shop-access": { "render": "Nur zugänglich für {access}" }, - "bike_shop-email": { - "question": "Wie lautet die E-Mail-Adresse von {name}?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -1082,12 +1079,6 @@ "bike_shop-name": { "question": "Wie heißt das Geschäft?", "render": "Das Geschäft heißt {name}" - }, - "bike_shop-phone": { - "question": "Wie lautet die Telefonnummer von {name}?" - }, - "bike_shop-website": { - "question": "Wie lautet die Webseite von {name}?" } }, "title": { @@ -3255,6 +3246,57 @@ "description": "Diese Ebene visualisiert Richtungen", "name": "Aufnahmewinkel der Kamera anzeigen" }, + "doctors": { + "description": "Diese Ebene zeigt Arztpraxen, Zahnärzte und andere Gesundheitseinrichtungen", + "filter": { + "0": { + "options": { + "0": { + "question": "Jetzt geöffnet" + } + } + } + }, + "name": "Ärzte", + "presets": { + "0": { + "title": "eine Arztpraxis" + }, + "1": { + "title": "eine Zahnarztpraxis" + }, + "2": { + "title": "Praxis eines Physiotherapeuten" + } + }, + "tagRenderings": { + "name": { + "question": "Wie heißt diese Arztpraxis?", + "render": "Diese Arztpraxis heißt {name}" + }, + "specialty": { + "mappings": { + "0": { + "then": "Dies ist ein Allgemeinmediziner" + }, + "1": { + "then": "Dies ist ein Gynäkologe" + }, + "2": { + "then": "Dies ist ein Psychiater" + }, + "3": { + "then": "Dies ist ein Kinderarzt" + } + }, + "question": "Worauf ist dieser Arzt spezialisiert?", + "render": "Dieser Arzt ist spezialisiert auf {healthcare:speciality}" + } + }, + "title": { + "render": "Arztpraxis {name}" + } + }, "dogpark": { "name": "Hundeparks", "presets": { @@ -3998,6 +4040,18 @@ "render": "Hackerspace" } }, + "hospital": { + "name": "Krankenhäuser", + "tagRenderings": { + "name": { + "question": "Wie lautet der Name des Krankenhauses?", + "render": "Der Name des Krankenhauses lautet {name}" + } + }, + "title": { + "render": "Krankenhaus" + } + }, "hydrant": { "description": "Kartenebene zur Anzeige von Hydranten.", "name": "Hydranten", @@ -4627,9 +4681,6 @@ "title": "ein Parkplatz" } }, - "title": { - "render": "Parkplatz" - }, "tagRenderings": { "capacity": { "freeform": { @@ -4638,41 +4689,6 @@ "question": "Wie viele Stellplätze gibt es auf diesem Parkplatz?", "render": "Es gibt {capacity} Stellplätze" }, - "parking-type": { - "mappings": { - "2": { - "then": "Dies ist eine Tiefgarage" - }, - "3": { - "then": "Dies ist ein mehrstöckiges oberirdisches Parkhaus" - }, - "4": { - "then": "Dies ist ein Parkdeck auf dem Dach" - }, - "6": { - "then": "Dies ist ein durch Carports überdachter Parkplatz" - }, - "0": { - "then": "Dies ist ein oberirdischer Parkplatz" - }, - "1": { - "then": "Dies ist eine Parkbucht neben einer Straße" - }, - "7": { - "then": "Dies ist ein Parkplatz bestehend aus Garagenboxen" - }, - "5": { - "then": "Dies ist eine Fahrspur zum Parken auf der Straße" - }, - "9": { - "then": "Hier gibt es Parkmöglichkeiten unter einer offenen Dachkonstruktion" - }, - "8": { - "then": "Hier gibt es Parkmöglichkeiten auf einem kleinen Rastplatz" - } - }, - "question": "Was ist das für ein Parkplatz?" - }, "capacity-disabled": { "freeform": { "placeholder": "Anzahl barrierefreier Stellplätze" @@ -4687,13 +4703,78 @@ }, "question": "Wie viele barrierefreie Stellplätze gibt es auf diesem Parkplatz?", "render": "Es gibt {capacity:disabled} barrierefreie Stellplätze" + }, + "parking-type": { + "mappings": { + "0": { + "then": "Dies ist ein oberirdischer Parkplatz" + }, + "1": { + "then": "Dies ist eine Parkbucht neben einer Straße" + }, + "2": { + "then": "Dies ist eine Tiefgarage" + }, + "3": { + "then": "Dies ist ein mehrstöckiges oberirdisches Parkhaus" + }, + "4": { + "then": "Dies ist ein Parkdeck auf dem Dach" + }, + "5": { + "then": "Dies ist eine Fahrspur zum Parken auf der Straße" + }, + "6": { + "then": "Dies ist ein durch Carports überdachter Parkplatz" + }, + "7": { + "then": "Dies ist ein Parkplatz bestehend aus Garagenboxen" + }, + "8": { + "then": "Hier gibt es Parkmöglichkeiten auf einem kleinen Rastplatz" + }, + "9": { + "then": "Hier gibt es Parkmöglichkeiten unter einer offenen Dachkonstruktion" + } + }, + "question": "Was ist das für ein Parkplatz?" } + }, + "title": { + "render": "Parkplatz" } }, "pedestrian_path": { "description": "Fußgängerwege, insbesondere für die Navigation in Gebäuden und die Aufnahme von Eingängen in diese Ebene", "name": "Fußgängerwege" }, + "pharmacy": { + "name": "Apotheke", + "tagRenderings": { + "wheelchair": { + "mappings": { + "0": { + "then": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich" + }, + "1": { + "then": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich" + }, + "2": { + "then": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich" + } + }, + "question": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Apotheke" + } + }, + "render": "{name}" + } + }, "picnic_table": { "description": "Die Ebene zeigt Picknicktische an", "name": "Picknick-Tische", @@ -4969,6 +5050,35 @@ "render": "Bücherschrank" } }, + "rainbow_crossings": { + "description": "Eine Ebene mit Fußgängerüberwegen in Regenbogenfarben", + "name": "Fußgängerüberwege in Regenbogenfarben", + "presets": { + "0": { + "description": "Fußgängerüberweg", + "title": "einen Überweg" + } + }, + "tagRenderings": { + "crossing-with-rainbow": { + "mappings": { + "0": { + "then": "Der Überweg hat eine Markierung in Regenbogenfarben" + }, + "1": { + "then": "Hier gibt es kein Markierung in Regenbogenfarben" + }, + "2": { + "then": "Hier gibt es kein Markierung in Regenbogenfarben" + } + }, + "question": "Hat der Überweg eine Markierung in Regenbogenfarben?" + } + }, + "title": { + "render": "Überweg" + } + }, "recycling": { "description": "Eine Ebene mit Recyclingcontainern und -zentren", "filter": { @@ -5191,12 +5301,12 @@ "tagRenderings": { "8": { "override": { - "question": "Was ist die Hauptsprache dieser Schule?
Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?
", "+mappings": { "0": { "then": "Die Unterrichtssprache der Schule ist unbekannt" } - } + }, + "question": "Was ist die Hauptsprache dieser Schule?
Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?
" } }, "capacity": { @@ -5288,6 +5398,30 @@ "render": "Schule {name}" } }, + "shelter": { + "description": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt", + "name": "Unterstand", + "tagRenderings": { + "shelter-type": { + "mappings": { + "0": { + "then": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel." + }, + "1": { + "then": "Dies ist ein Unterstand zum Schutz vor Regen auf einem Picknickplatz." + }, + "2": { + "then": "Das ist ein offener Gartenpavillon." + } + }, + "question": "Um welche Art von Unterstand handelt es sich?", + "render": "Art des Unterstands: {shelter_type}" + } + }, + "title": { + "render": "Unterstand" + } + }, "shops": { "deletion": { "extraDeleteReasons": { @@ -5335,14 +5469,20 @@ } }, "tagRenderings": { - "shops-name": { - "question": "Wie ist der Name dieses Geschäfts?" + "2": { + "override": { + "question": "Um was für ein Geschäft handelt es sich?", + "render": "Das ist ein {shop}" + } }, "copyshop-print-sizes": { "mappings": { "0": { "then": "Das Geschäft kann Unterlagen auf A4 Papier drucken" }, + "1": { + "then": "Das Geschäft kann Unterlagen auf A3 Papier drucken" + }, "2": { "then": "Das Geschäft kann Unterlagen auf A2 Papier drucken" }, @@ -5351,18 +5491,12 @@ }, "4": { "then": "Das Geschäft kann Unterlagen auf A0 Papier drucken" - }, - "1": { - "then": "Das Geschäft kann Unterlagen auf A3 Papier drucken" } }, "question": "Welche Papierformate bietet das Geschäft an?" }, - "2": { - "override": { - "question": "Um was für ein Geschäft handelt es sich?", - "render": "Das ist ein {shop}" - } + "shops-name": { + "question": "Wie ist der Name dieses Geschäfts?" } }, "title": { @@ -6041,6 +6175,169 @@ "render": "Wanderweg" } }, + "transit_routes": { + "description": "Ebene mit Buslinien", + "mapRendering": { + "0": { + "color": { + "render": "#ff0000" + } + } + }, + "name": "Buslinien", + "tagRenderings": { + "colour": { + "question": "Welche Farbe hat diese Buslinie?", + "render": "Die Buslinie hat die Farbe {colour}" + }, + "from": { + "question": "Wo ist der Startpunkt dieser Buslinie?", + "render": "Die Buslinie startet von {from}" + }, + "name": { + "question": "Wie lautet der Name der Buslinie? (z.B. Bus XX: Von => Über => Nach)" + }, + "network": { + "question": "Zu welchem Verkehrsverbund gehört die Buslinie?", + "render": "Die Buslinie gehört zum Verkehrsverbund {network}" + }, + "operator": { + "question": "Welches Unternehmen betreibt die Buslinie?", + "render": "Die Buslinie wird betrieben von {operator}" + }, + "to": { + "question": "Wo ist der Endpunkt der Buslinie?", + "render": "Der Endpunkt der Buslinie ist {to}" + }, + "via": { + "question": "Über welchen Zwischenhalt fährt die Buslinie?", + "render": "Die Buslinie fährt über {via}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Buslinie" + } + }, + "transit_stops": { + "description": "Ebene mit verschiedenen Arten von Haltestellen.", + "name": "Haltestellen", + "tagRenderings": { + "bench": { + "mappings": { + "0": { + "then": "Die Haltestelle hat eine Bank" + }, + "1": { + "then": "Die Haltestelle hat keine Bank" + }, + "2": { + "then": "Die Haltestelle hat eine Bank, die separat kartiert ist" + } + }, + "question": "Gibt es an der Haltestelle eine Sitzbank?" + }, + "bin": { + "mappings": { + "0": { + "then": "Die Haltestelle hat einen Mülleimer" + }, + "1": { + "then": "Die Haltestelle hat keinen Mülleimer" + }, + "2": { + "then": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist" + } + }, + "question": "Hat die Haltestelle einen Mülleimer?" + }, + "contained_routes": { + "render": "

{_contained_routes_count} Linien halten an der Haltestelle

    {_contained_routes}
" + }, + "departures_board": { + "mappings": { + "0": { + "then": "Die Haltestelle hat einen Fahrplan, der nicht näher definiert ist" + }, + "1": { + "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" + }, + "2": { + "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" + }, + "3": { + "then": "Die Haltestelle hat einen Fahrplan, der die regulären Abfahrtszeiten anzeigt" + }, + "4": { + "then": "Die Haltestelle hat einen Fahrplan, der den Abstand zwischen Abfahrten anzeigt" + }, + "5": { + "then": "Die Haltestelle hat keinen Fahrplan" + } + } + }, + "lit": { + "mappings": { + "0": { + "then": "Die Haltestelle ist beleuchtet" + }, + "1": { + "then": "Die Haltestelle ist nicht beleuchtet" + } + }, + "question": "Ist die Haltestelle beleuchtet?" + }, + "shelter": { + "mappings": { + "0": { + "then": "Die Haltestelle hat einen Unterstand" + }, + "1": { + "then": "Die Haltestelle hat keinen Unterstand" + }, + "2": { + "then": "Die Haltestelle hat einen Unterstand, der separat kariert ist" + } + }, + "question": "Hat die Haltestelle einen Unterstand?" + }, + "stop_name": { + "freeform": { + "placeholder": "Name der Haltestelle" + }, + "mappings": { + "0": { + "then": "Die Haltestelle hat keinen Namen" + } + }, + "question": "Wie lautet der Name der Haltestelle?", + "render": "Der Name der Haltestelle lautet {name}" + }, + "tactile_paving": { + "mappings": { + "0": { + "then": "Die Haltestelle hat ein taktiles Pflaster" + }, + "1": { + "then": "Die Haltestelle hat kein taktiles Pflaster" + } + }, + "question": "Hat die Haltestelle hat ein taktiles Pflaster?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Haltestelle {name}" + } + }, + "render": "Haltestelle" + } + }, "tree_node": { "description": "Eine Ebene, die Bäume zeigt", "name": "Bäume", @@ -6220,12 +6517,12 @@ "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", "tagRenderings": { "_entrance:width": { - "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_entrance:width)} Meter ", "mappings": { "0": { "then": "Der Eingang hat keine Informationen zur Durchgangsbreite" } - } + }, + "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_entrance:width)} Meter " } }, "title": { @@ -6450,311 +6747,5 @@ } } } - }, - "doctors": { - "description": "Diese Ebene zeigt Arztpraxen, Zahnärzte und andere Gesundheitseinrichtungen", - "filter": { - "0": { - "options": { - "0": { - "question": "Jetzt geöffnet" - } - } - } - }, - "name": "Ärzte", - "presets": { - "0": { - "title": "eine Arztpraxis" - }, - "1": { - "title": "eine Zahnarztpraxis" - }, - "2": { - "title": "Praxis eines Physiotherapeuten" - } - }, - "tagRenderings": { - "name": { - "question": "Wie heißt diese Arztpraxis?", - "render": "Diese Arztpraxis heißt {name}" - }, - "specialty": { - "mappings": { - "0": { - "then": "Dies ist ein Allgemeinmediziner" - }, - "1": { - "then": "Dies ist ein Gynäkologe" - }, - "2": { - "then": "Dies ist ein Psychiater" - }, - "3": { - "then": "Dies ist ein Kinderarzt" - } - }, - "question": "Worauf ist dieser Arzt spezialisiert?", - "render": "Dieser Arzt ist spezialisiert auf {healthcare:speciality}" - } - }, - "title": { - "render": "Arztpraxis {name}" - } - }, - "hospital": { - "tagRenderings": { - "name": { - "render": "Der Name des Krankenhauses lautet {name}", - "question": "Wie lautet der Name des Krankenhauses?" - } - }, - "name": "Krankenhäuser", - "title": { - "render": "Krankenhaus" - } - }, - "pharmacy": { - "name": "Apotheke", - "tagRenderings": { - "wheelchair": { - "mappings": { - "0": { - "then": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich" - }, - "1": { - "then": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich" - }, - "2": { - "then": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich" - } - }, - "question": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?" - } - }, - "title": { - "render": "{name}", - "mappings": { - "0": { - "then": "Apotheke" - } - } - } - }, - "rainbow_crossings": { - "tagRenderings": { - "crossing-with-rainbow": { - "question": "Hat der Überweg eine Markierung in Regenbogenfarben?", - "mappings": { - "1": { - "then": "Hier gibt es kein Markierung in Regenbogenfarben" - }, - "0": { - "then": "Der Überweg hat eine Markierung in Regenbogenfarben" - }, - "2": { - "then": "Hier gibt es kein Markierung in Regenbogenfarben" - } - } - } - }, - "title": { - "render": "Überweg" - }, - "presets": { - "0": { - "title": "einen Überweg", - "description": "Fußgängerüberweg" - } - }, - "description": "Eine Ebene mit Fußgängerüberwegen in Regenbogenfarben", - "name": "Fußgängerüberwege in Regenbogenfarben" - }, - "transit_stops": { - "tagRenderings": { - "bin": { - "mappings": { - "2": { - "then": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist" - }, - "0": { - "then": "Die Haltestelle hat einen Mülleimer" - }, - "1": { - "then": "Die Haltestelle hat keinen Mülleimer" - } - }, - "question": "Hat die Haltestelle einen Mülleimer?" - }, - "lit": { - "mappings": { - "1": { - "then": "Die Haltestelle ist nicht beleuchtet" - }, - "0": { - "then": "Die Haltestelle ist beleuchtet" - } - }, - "question": "Ist die Haltestelle beleuchtet?" - }, - "bench": { - "mappings": { - "1": { - "then": "Die Haltestelle hat keine Bank" - }, - "0": { - "then": "Die Haltestelle hat eine Bank" - }, - "2": { - "then": "Die Haltestelle hat eine Bank, die separat kartiert ist" - } - }, - "question": "Gibt es an der Haltestelle eine Sitzbank?" - }, - "contained_routes": { - "render": "

{_contained_routes_count} Linien halten an der Haltestelle

    {_contained_routes}
" - }, - "departures_board": { - "mappings": { - "0": { - "then": "Die Haltestelle hat einen Fahrplan, der nicht näher definiert ist" - }, - "3": { - "then": "Die Haltestelle hat einen Fahrplan, der die regulären Abfahrtszeiten anzeigt" - }, - "2": { - "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" - }, - "1": { - "then": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" - }, - "4": { - "then": "Die Haltestelle hat einen Fahrplan, der den Abstand zwischen Abfahrten anzeigt" - }, - "5": { - "then": "Die Haltestelle hat keinen Fahrplan" - } - } - }, - "stop_name": { - "freeform": { - "placeholder": "Name der Haltestelle" - }, - "mappings": { - "0": { - "then": "Die Haltestelle hat keinen Namen" - } - }, - "question": "Wie lautet der Name der Haltestelle?", - "render": "Der Name der Haltestelle lautet {name}" - }, - "shelter": { - "mappings": { - "0": { - "then": "Die Haltestelle hat einen Unterstand" - }, - "1": { - "then": "Die Haltestelle hat keinen Unterstand" - }, - "2": { - "then": "Die Haltestelle hat einen Unterstand, der separat kariert ist" - } - }, - "question": "Hat die Haltestelle einen Unterstand?" - }, - "tactile_paving": { - "mappings": { - "1": { - "then": "Die Haltestelle hat kein taktiles Pflaster" - }, - "0": { - "then": "Die Haltestelle hat ein taktiles Pflaster" - } - }, - "question": "Hat die Haltestelle hat ein taktiles Pflaster?" - } - }, - "description": "Ebene mit verschiedenen Arten von Haltestellen.", - "name": "Haltestellen", - "title": { - "mappings": { - "0": { - "then": "Haltestelle {name}" - } - }, - "render": "Haltestelle" - } - }, - "shelter": { - "description": "Eine Ebene, die verschiedene Bauformen von Unterständen zeigt", - "name": "Unterstand", - "tagRenderings": { - "shelter-type": { - "mappings": { - "2": { - "then": "Das ist ein offener Gartenpavillon." - }, - "0": { - "then": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel." - }, - "1": { - "then": "Dies ist ein Unterstand zum Schutz vor Regen auf einem Picknickplatz." - } - }, - "question": "Um welche Art von Unterstand handelt es sich?", - "render": "Art des Unterstands: {shelter_type}" - } - }, - "title": { - "render": "Unterstand" - } - }, - "transit_routes": { - "tagRenderings": { - "via": { - "question": "Über welchen Zwischenhalt fährt die Buslinie?", - "render": "Die Buslinie fährt über {via}" - }, - "operator": { - "question": "Welches Unternehmen betreibt die Buslinie?", - "render": "Die Buslinie wird betrieben von {operator}" - }, - "from": { - "render": "Die Buslinie startet von {from}", - "question": "Wo ist der Startpunkt dieser Buslinie?" - }, - "name": { - "question": "Wie lautet der Name der Buslinie? (z.B. Bus XX: Von => Über => Nach)" - }, - "network": { - "render": "Die Buslinie gehört zum Verkehrsverbund {network}", - "question": "Zu welchem Verkehrsverbund gehört die Buslinie?" - }, - "colour": { - "question": "Welche Farbe hat diese Buslinie?", - "render": "Die Buslinie hat die Farbe {colour}" - }, - "to": { - "question": "Wo ist der Endpunkt der Buslinie?", - "render": "Der Endpunkt der Buslinie ist {to}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Buslinie" - }, - "name": "Buslinien", - "description": "Ebene mit Buslinien", - "mapRendering": { - "0": { - "color": { - "render": "#ff0000" - } - } - } } -} +} \ No newline at end of file diff --git a/langs/layers/en.json b/langs/layers/en.json index 355fa11373..b7e7330f1f 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -1068,9 +1068,6 @@ "bike_shop-access": { "render": "Only accessible to {access}" }, - "bike_shop-email": { - "question": "What is the email address of {name}?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -1082,12 +1079,6 @@ "bike_shop-name": { "question": "What is the name of this bicycle shop?", "render": "This bicycle shop is called {name}" - }, - "bike_shop-phone": { - "question": "What is the phone number of {name}?" - }, - "bike_shop-website": { - "question": "What is the website of {name}?" } }, "title": { @@ -3402,9 +3393,67 @@ "render": "Drinking water" } }, + "elevator": { + "description": "This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information", + "name": "elevator", + "presets": { + "0": { + "title": "an elevator" + } + }, + "tagRenderings": { + "door-width": { + "question": "What is the width of this elevator's entrance?", + "render": "This elevator's doors have a width of {canonical(door:width)}" + }, + "elevator-depth": { + "question": "What is the depth of this elevator?", + "render": "This elevator has a depth of {canonical(elevator:depth)}" + }, + "elevator-width": { + "question": "What is the width of this elevator?", + "render": "This elevator has a width of {canonical(elevator:width)}" + }, + "operational_status": { + "mappings": { + "0": { + "then": "This elevator is broken" + }, + "1": { + "then": "This elevator is closed e.g. because renovation works are going on" + }, + "2": { + "then": "This elevator works" + }, + "3": { + "then": "This elevator works" + } + }, + "question": "Does this elevator work?" + } + }, + "title": "Elevator", + "units": { + "0": { + "applicableUnits": { + "0": { + "human": "meter" + }, + "1": { + "human": "centimeter" + } + } + } + } + }, "entrance": { "description": "A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, …)", "name": "Entrance", + "presets": { + "0": { + "title": "an entrance" + } + }, "tagRenderings": { "Door_type": { "mappings": { @@ -3492,6 +3541,18 @@ } } }, + "kerb-height": { + "freeform": { + "placeholder": "Height of the door kerb" + }, + "mappings": { + "0": { + "then": "This door does not have a kerb" + } + }, + "question": "What is the height of this kerb?", + "render": "The kerb height of this door is {kerb:height}" + }, "width": { "question": "What is the width of this door/entrance?", "render": "This door has a width of {canonical(width)} meter" @@ -3499,6 +3560,18 @@ }, "title": { "render": "Entrance" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": "meter" + }, + "1": { + "human": "centimeter" + } + } + } } }, "etymology": { @@ -3944,6 +4017,24 @@ "render": "Ghost bike" } }, + "governments": { + "description": "This layer show governmental buildings. It was setup as commissioned layer for the client of OSOC '22", + "name": "governments", + "presets": { + "0": { + "title": "a Governmental Office" + } + }, + "tagRenderings": { + "name": { + "question": "What is the name of this Governmental Office?", + "render": "This Governmental Office is called {name}" + } + }, + "title": { + "render": "Governmental Office {name}" + } + }, "gps_track": { "name": "Your travelled track", "tagRenderings": { @@ -4050,6 +4141,7 @@ } }, "hospital": { + "description": "A layer showing hospital grounds", "name": "Hospitals", "tagRenderings": { "name": { @@ -4126,6 +4218,13 @@ "render": "Hydrant" } }, + "indoors": { + "description": "Basic indoor mapping: shows room outlines", + "name": "indoors", + "title": { + "render": "Indoor area {name}" + } + }, "information_board": { "description": "A layer showing touristical, road side information boards (e.g. giving information about the landscape, a building, a feature, a map, …)", "name": "Information boards", @@ -4758,8 +4857,32 @@ "name": "Pedestrian paths" }, "pharmacy": { + "description": "A layer showing pharmacies, which (probably) dispense prescription drugs", + "filter": { + "0": { + "options": { + "0": { + "question": "Has drive through" + } + } + }, + "1": { + "options": { + "0": { + "question": "Pharmacy able to provide prescription drugs" + } + } + } + }, "name": "pharmacy", "tagRenderings": { + "name": { + "freeform": { + "placeholder": "Name of the pharmacy" + }, + "question": "What is the name of the pharmacy?", + "render": "This pharmacy is called {name}" + }, "wheelchair": { "mappings": { "0": { @@ -5088,6 +5211,36 @@ "render": "Crossing" } }, + "reception_desk": { + "description": "A layer showing where the reception desks are and which asks some accessibility information", + "name": "Reception desks", + "presets": { + "0": { + "title": "a reception desk" + } + }, + "tagRenderings": { + "desk-height": { + "question": "What is the height of the reception desk?
This is measured from the floor to the lowest usable part of the desk
", + "render": "The height of the desk is {canonical(desk:height)}" + } + }, + "title": { + "render": "Reception desk" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": "meter" + }, + "1": { + "human": "centimeter" + } + } + } + } + }, "recycling": { "description": "A layer with recycling containers and centres", "filter": { @@ -6160,10 +6313,26 @@ } }, "question": "Is there a dedicated toilet for wheelchair users?" + }, + "wheelchair-door-width": { + "question": "What is the width of the door to the wheelchair accessible toilet?", + "render": "The door to the wheelchair-accessible toilet is {canonical(door:width)} wide" } }, "title": { "render": "Toilet" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": "meter" + }, + "1": { + "human": "centimeter" + } + } + } } }, "trail": { @@ -6766,4 +6935,4 @@ } } } -} +} \ No newline at end of file diff --git a/langs/layers/es.json b/langs/layers/es.json index 26d0ff41d1..475b942ad4 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -985,9 +985,6 @@ "bike_shop-access": { "render": "Solo accesible a {access}" }, - "bike_shop-email": { - "question": "¿Cual es la dirección de correo electrónico de {name}?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -999,12 +996,6 @@ "bike_shop-name": { "question": "¿Cual es el nombre de esta tienda de bicicletas?", "render": "Esta tienda de bicicletas se llama {name}" - }, - "bike_shop-phone": { - "question": "¿Cual es el número de teléfono de {name}?" - }, - "bike_shop-website": { - "question": "¿Cual es el sitio web de {name}?" } }, "title": { diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 3ff5eb6e69..387231795e 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -1068,9 +1068,6 @@ "bike_shop-access": { "render": "Seulement accessible à {access}" }, - "bike_shop-email": { - "question": "Quelle est l'adresse électronique de {name} ?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -1082,12 +1079,6 @@ "bike_shop-name": { "question": "Quel est le nom du magasin de vélos ?", "render": "Ce magasin s'appelle {name}" - }, - "bike_shop-phone": { - "question": "Quel est le numéro de téléphone de {name} ?" - }, - "bike_shop-website": { - "question": "Quel est le site web de {name} ?" } }, "title": { diff --git a/langs/layers/gl.json b/langs/layers/gl.json index 70689c459a..21102de268 100644 --- a/langs/layers/gl.json +++ b/langs/layers/gl.json @@ -354,18 +354,9 @@ }, "question": "Hai ferramentas aquí para arranxar a túa propia bicicleta?" }, - "bike_shop-email": { - "question": "Cal é o enderezo de correo electrónico de {name}?" - }, "bike_shop-name": { "question": "Cal é o nome desta tenda de bicicletas?", "render": "Esta tenda de bicicletas chámase {name}" - }, - "bike_shop-phone": { - "question": "Cal é o número de teléfono de {name}?" - }, - "bike_shop-website": { - "question": "Cal é a páxina web de {name}?" } }, "title": { diff --git a/langs/layers/id.json b/langs/layers/id.json index 6e35fcbd4d..05147e9de0 100644 --- a/langs/layers/id.json +++ b/langs/layers/id.json @@ -144,13 +144,6 @@ } } }, - "bike_shop": { - "tagRenderings": { - "bike_shop-website": { - "question": "URL {name} apa?" - } - } - }, "climbing_area": { "tagRenderings": { "name": { diff --git a/langs/layers/it.json b/langs/layers/it.json index 09efa26b6b..e0ed9fa4c0 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -742,21 +742,12 @@ }, "question": "Sono presenti degli attrezzi per riparare la propria bici?" }, - "bike_shop-email": { - "question": "Qual è l’indirizzo email di {name}?" - }, "bike_shop-is-bicycle_shop": { "render": "Questo negozio è specializzato nella vendita di {shop} ed effettua attività relative alle biciclette" }, "bike_shop-name": { "question": "Qual è il nome di questo negozio di biciclette?", "render": "Questo negozio di biciclette è chiamato {name}" - }, - "bike_shop-phone": { - "question": "Qual è il numero di telefono di {name}?" - }, - "bike_shop-website": { - "question": "Qual è il sito web di {name}?" } }, "title": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index be3ec9149e..6b729d5e9b 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1068,9 +1068,6 @@ "bike_shop-access": { "render": "Enkel voor {access}" }, - "bike_shop-email": { - "question": "Wat is het email-adres van {name}?" - }, "bike_shop-is-bicycle_shop": { "mappings": { "0": { @@ -1082,12 +1079,6 @@ "bike_shop-name": { "question": "Wat is de naam van deze fietszaak?", "render": "Deze fietszaak heet {name}" - }, - "bike_shop-phone": { - "question": "Wat is het telefoonnummer van {name}?" - }, - "bike_shop-website": { - "question": "Wat is de website van {name}?" } }, "title": { @@ -3244,6 +3235,57 @@ "description": "Deze laag toont de oriëntatie van een object", "name": "Richtingsvisualisatie" }, + "doctors": { + "description": "Deze laag toont dokterspraktijken, tandartsen en andere gezondheidszorgfaciliteiten", + "filter": { + "0": { + "options": { + "0": { + "question": "Nu geopend" + } + } + } + }, + "name": "Dokters", + "presets": { + "0": { + "title": "een dokterspraktijk" + }, + "1": { + "title": "een tandartspraktijk" + }, + "2": { + "title": "een fysiotherapeutenpraktijk" + } + }, + "tagRenderings": { + "name": { + "question": "Wat is de naam van deze dokterspraktijk?", + "render": "Deze dokterspraktijk heet {name}" + }, + "specialty": { + "mappings": { + "0": { + "then": "Dit is een huisarts" + }, + "1": { + "then": "Dit is een gynaecoloog" + }, + "2": { + "then": "Dit is een psychiater" + }, + "3": { + "then": "Dit is een kinderarts" + } + }, + "question": "Waar is deze dokter in gespecialiseerd?", + "render": "Deze dokter is gespecialiseerd in {healthcare:speciality}" + } + }, + "title": { + "render": "Dokterspraktijk {name}" + } + }, "drinking_water": { "deletion": { "nonDeleteMappings": { @@ -3297,6 +3339,13 @@ "render": "Drinkbaar water" } }, + "elevator": { + "presets": { + "0": { + "title": "een lift" + } + } + }, "entrance": { "description": "Een laag met ingangen (van gebouwen etc.) waarmee je details kunt aanvullen die belangrijk zijn voor bijvoorbeeld rolstoelgebruikers (en fietsers, leveranciers, …)", "name": "Toegang", @@ -3387,6 +3436,13 @@ } } }, + "kerb-height": { + "mappings": { + "0": { + "then": "Deze deur heeft geen drempel" + } + } + }, "width": { "question": "Wat is de breedte van deze deur/toegang?", "render": "Deze deur heeft een breedte van {canonical(width)} meter" @@ -3937,6 +3993,18 @@ "render": "Hackerspace" } }, + "hospital": { + "name": "Ziekenhuizen", + "tagRenderings": { + "name": { + "question": "Wat is de naam van dit ziekenhuis?", + "render": "Dit ziekenhuis heet {name}" + } + }, + "title": { + "render": "Ziekenhuis" + } + }, "hydrant": { "description": "Kaartlaag met brandkranen.", "name": "Kaart van brandkranen", @@ -4183,6 +4251,7 @@ }, "maxspeed": { "description": "Toont de toegestane snelheid voor elke weg", + "name": "Maximumsnelheid", "tagRenderings": { "maxspeed-maxspeed": { "mappings": { @@ -4216,8 +4285,7 @@ } } } - }, - "name": "Maximumsnelheid" + } }, "nature_reserve": { "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", @@ -5952,10 +6020,26 @@ } }, "question": "Is er een rolstoeltoegankelijke toilet voorzien?" + }, + "wheelchair-door-width": { + "question": "Hoe breed is de deur van de rolstoeltoegankelijke toilet?", + "render": "De deur naar de rolstoeltoegankelijke toilet is {canonical(door:width)} wide" } }, "title": { "render": "Toilet" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": "meter" + }, + "1": { + "human": "centimeter" + } + } + } } }, "trail": { @@ -6484,68 +6568,5 @@ } } } - }, - "doctors": { - "name": "Dokters", - "filter": { - "0": { - "options": { - "0": { - "question": "Nu geopend" - } - } - } - }, - "tagRenderings": { - "specialty": { - "mappings": { - "0": { - "then": "Dit is een huisarts" - }, - "1": { - "then": "Dit is een gynaecoloog" - }, - "2": { - "then": "Dit is een psychiater" - }, - "3": { - "then": "Dit is een kinderarts" - } - }, - "question": "Waar is deze dokter in gespecialiseerd?", - "render": "Deze dokter is gespecialiseerd in {healthcare:speciality}" - }, - "name": { - "question": "Wat is de naam van deze dokterspraktijk?", - "render": "Deze dokterspraktijk heet {name}" - } - }, - "presets": { - "0": { - "title": "een dokterspraktijk" - }, - "1": { - "title": "een tandartspraktijk" - }, - "2": { - "title": "een fysiotherapeutenpraktijk" - } - }, - "description": "Deze laag toont dokterspraktijken, tandartsen en andere gezondheidszorgfaciliteiten", - "title": { - "render": "Dokterspraktijk {name}" - } - }, - "hospital": { - "title": { - "render": "Ziekenhuis" - }, - "name": "Ziekenhuizen", - "tagRenderings": { - "name": { - "question": "Wat is de naam van dit ziekenhuis?", - "render": "Dit ziekenhuis heet {name}" - } - } } -} +} \ No newline at end of file diff --git a/langs/layers/pt.json b/langs/layers/pt.json index edd7cae414..2de82c74a5 100644 --- a/langs/layers/pt.json +++ b/langs/layers/pt.json @@ -540,21 +540,12 @@ }, "question": "Esta loja vende bicicletas?" }, - "bike_shop-email": { - "question": "Qual o endereço de email de {name}?" - }, "bike_shop-is-bicycle_shop": { "render": "Esta loja é especializada em vender {shop} e faz atividades relacionadas à bicicletas" }, "bike_shop-name": { "question": "Qual o nome desta loja de bicicletas?", "render": "Esta loja de bicicletas se chama {name}" - }, - "bike_shop-phone": { - "question": "Qual é o número de telefone de {name}?" - }, - "bike_shop-website": { - "question": "Qual o website de {name}?" } }, "title": { diff --git a/langs/layers/pt_BR.json b/langs/layers/pt_BR.json index 83859c59ad..239a87a43b 100644 --- a/langs/layers/pt_BR.json +++ b/langs/layers/pt_BR.json @@ -490,21 +490,12 @@ }, "question": "Esta loja vende bicicletas?" }, - "bike_shop-email": { - "question": "Qual o endereço de email de {name}?" - }, "bike_shop-is-bicycle_shop": { "render": "Esta loja é especializada em vender {shop} e faz atividades relacionadas à bicicletas" }, "bike_shop-name": { "question": "Qual o nome desta loja de bicicletas?", "render": "Esta loja de bicicletas se chama {name}" - }, - "bike_shop-phone": { - "question": "Qual o número de telefone de {name}?" - }, - "bike_shop-website": { - "question": "Qual o website de {name}?" } }, "title": { diff --git a/langs/layers/ru.json b/langs/layers/ru.json index ccb05ca706..163beb679f 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -653,18 +653,9 @@ }, "question": "Есть ли здесь инструменты для починки собственного велосипеда?" }, - "bike_shop-email": { - "question": "Какой адрес электронной почты у {name}?" - }, "bike_shop-name": { "question": "Как называется магазин велосипедов?", "render": "Этот магазин велосипедов называется {name}" - }, - "bike_shop-phone": { - "question": "Какой номер телефона у {name}?" - }, - "bike_shop-website": { - "question": "Какой сайт у {name}?" } }, "title": { diff --git a/langs/shared-questions/en.json b/langs/shared-questions/en.json index 944c5d5cb3..012cc2f8af 100644 --- a/langs/shared-questions/en.json +++ b/langs/shared-questions/en.json @@ -23,6 +23,17 @@ "email": { "question": "What is the email address of {title()}?" }, + "induction-loop": { + "mappings": { + "0": { + "then": "This place has an audio induction loop" + }, + "1": { + "then": "This place does not has an audio induction loop" + } + }, + "question": "Does this place have an audio induction loop for people with reduced hearing?" + }, "level": { "mappings": { "0": { diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 35a8a8ddcd..8c8f35cb66 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -17,6 +17,10 @@ "shortDescription": "Un mapa amb estacions de lloguer de bicicletes i botigues de lloguer de bicicletes", "title": "Lloguer de bicicletes" }, + "bicyclelib": { + "description": "Una biblioteca de bicicletes és un lloc on es poden prestar bicicletes, sovint per una petita quota anual. Un cas d'ús notable són les biblioteques de bicicletes per als nens, que els permet canviar per una bicicleta més gran quan han superat la seva bicicleta actual", + "title": "Biblioteques de bicicletes" + }, "binoculars": { "description": "Un mapa amb prismàtics fixos en un pal. Sol trobar-se en llocs turístics, miradors, a la part alta de torres panoràmiques o ocasionalment en una reserva natural.", "shortDescription": "Un mapa amb prismàtics fixos", @@ -110,15 +114,15 @@ "render": "Aquest lloc s'anomena {name}" }, "caravansites-sanitary-dump": { - "question": "Aquest lloc té una estació d'abocament sanitari?", "mappings": { - "1": { - "then": "Aquest lloc no té una estació d'abocament sanitari" - }, "0": { "then": "Aquest lloc té una estació d'abocament sanitari" + }, + "1": { + "then": "Aquest lloc no té una estació d'abocament sanitari" } - } + }, + "question": "Aquest lloc té una estació d'abocament sanitari?" }, "caravansites-toilets": { "mappings": { @@ -147,16 +151,17 @@ }, "1": { "description": "Estacions d'abocament sanitari", + "name": "Estacions d'abocament sanitari", "tagRenderings": { "dumpstations-access": { "mappings": { "1": { "then": "Heu de ser client del càmping/lloc d'acampada per utilitzar aquest lloc" }, - "3": { + "2": { "then": "Qualsevol pot utilitzar aquesta estació d'abocament" }, - "2": { + "3": { "then": "Qualsevol pot utilitzar aquesta estació d'abocament" } }, @@ -173,8 +178,7 @@ } } } - }, - "name": "Estacions d'abocament sanitari" + } } }, "title": "Llocs d'acampada" @@ -217,6 +221,7 @@ "title": "Open Climbing Map" }, "cycle_highways": { + "description": "Aquest mapa mostra carrils bici", "layers": { "0": { "name": "vies ciclistes", @@ -225,19 +230,16 @@ } } }, - "title": "Vies ciclistes", - "description": "Aquest mapa mostra carrils bici" + "title": "Vies ciclistes" }, "cycle_infra": { - "title": "Infraestructura per a bicicletes", "description": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista. Fet durant #osoc21.", - "shortDescription": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista." + "shortDescription": "Un mapa on es poden veure i editar coses relacionades amb la infraestructura ciclista.", + "title": "Infraestructura per a bicicletes" }, "cyclenodes": { + "description": "Aquest mapa mostra xarxes de nodes ciclistes i et permet afegir nodes nous de manera senzilla", "layers": { - "1": { - "name": "nodes" - }, "0": { "name": "enllaços node a node", "tagRenderings": { @@ -245,9 +247,11 @@ "question": "Quan es va comprovar per última vegada aquest enllaç node a node presencialment?" } } + }, + "1": { + "name": "nodes" } }, - "description": "Aquest mapa mostra xarxes de nodes ciclistes i et permet afegir nodes nous de manera senzilla", "title": "Xarxa de nodes ciclistes" }, "cyclestreets": { @@ -268,8 +272,6 @@ } } }, - "shortDescription": "Un mapa de carrers ciclistes", - "title": "Carrers ciclistes", "overrideAll": { "tagRenderings+": { "0": { @@ -283,47 +285,41 @@ } } } - } + }, + "shortDescription": "Un mapa de carrers ciclistes", + "title": "Carrers ciclistes" }, "cyclofix": { "title": "Cyclofix - un mapa obert per a ciclistes" }, "drinking_water": { - "title": "Aigua potable", - "description": "En aquest mapa es mostren els punts d'aigua potable accessibles al públic i es poden afegir fàcilment" + "description": "En aquest mapa es mostren els punts d'aigua potable accessibles al públic i es poden afegir fàcilment", + "title": "Aigua potable" + }, + "education": { + "description": "En aquest mapa trobareu informació sobre tots els tipus d'escoles i educació i podreu afegir fàcilment més informació", + "title": "Educació" }, "entrances": { "title": "Entrades" }, "etymology": { - "shortDescription": "Quin és l'origen d'un topònim?", - "title": "Open Etymology Map", "layers": { - "2": { - "override": { - "=name": "Parcs i boscos sense informació etimològica" - } - }, "1": { "override": { "=name": "Carrers sense informació etimològica" } }, + "2": { + "override": { + "=name": "Parcs i boscos sense informació etimològica" + } + }, "3": { "override": { "=name": "Institucions educatives sense informació d'etimològica" } }, - "6": { - "override": { - "=name": "Llocs socials i de salut sense informació etimològica" - } - }, - "7": { - "override": { - "=name": "Llocs esportius sense informació etimològica" - } - }, "4": { "override": { "=name": "Llocs culturals sense informació etimològica" @@ -333,8 +329,20 @@ "override": { "=name": "Llocs turístics sense informació etimològica" } + }, + "6": { + "override": { + "=name": "Llocs socials i de salut sense informació etimològica" + } + }, + "7": { + "override": { + "=name": "Llocs esportius sense informació etimològica" + } } - } + }, + "shortDescription": "Quin és l'origen d'un topònim?", + "title": "Open Etymology Map" }, "facadegardens": { "layers": { @@ -371,6 +379,10 @@ "shortDescription": "Mapa per a mostrar hidrants, extintors, parcs de bombers i estacions d'ambulàncies.", "title": "Hidrants, Extintors, Parcs de Bombers i estacions d'Ambulàncies" }, + "healthcare": { + "description": "En aquest mapa es mostren diversos elements relacionats amb la salut", + "title": "Assistència sanitària" + }, "maps": { "title": "Un mapa de mapes" }, @@ -498,17 +510,5 @@ }, "waste_basket": { "title": "Papepera" - }, - "healthcare": { - "title": "Assistència sanitària", - "description": "En aquest mapa es mostren diversos elements relacionats amb la salut" - }, - "education": { - "title": "Educació", - "description": "En aquest mapa trobareu informació sobre tots els tipus d'escoles i educació i podreu afegir fàcilment més informació" - }, - "bicyclelib": { - "title": "Biblioteques de bicicletes", - "description": "Una biblioteca de bicicletes és un lloc on es poden prestar bicicletes, sovint per una petita quota anual. Un cas d'ús notable són les biblioteques de bicicletes per als nens, que els permet canviar per una bicicleta més gran quan han superat la seva bicicleta actual" } -} +} \ No newline at end of file diff --git a/langs/themes/de.json b/langs/themes/de.json index 6a01a1aabb..92962308da 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -647,6 +647,10 @@ "shortDescription": "Hydranten, Feuerlöscher, Feuerwachen und Rettungswachen.", "title": "Hydranten, Feuerlöscher, Feuerwachen und Rettungswachen" }, + "healthcare": { + "description": "Auf dieser Karte werden verschiedene Gesundheitseinrichtungen angezeigt", + "title": "Gesundheitswesen" + }, "kerbs_and_crossings": { "description": "Eine Karte mit Bordsteinen und Überwegen.", "title": "Bordsteine und Überwege" @@ -738,19 +742,19 @@ "title": "Aussichtstürme" }, "onwheels": { + "description": "Auf dieser Karte werden öffentlich zugängliche Orte für Rollstuhlfahrer angezeigt und können leicht hinzugefügt werden", "overrideAll": { "+tagRenderings": { "0": { - "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", "mappings": { "0": { "then": "Dieser Eingang hat keine Breitenangabe" } - } + }, + "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter" } } }, - "description": "Auf dieser Karte werden öffentlich zugängliche Orte für Rollstuhlfahrer angezeigt und können leicht hinzugefügt werden", "title": "Auf Rädern" }, "openwindpowermap": { @@ -875,6 +879,10 @@ "shortDescription": "Eine Karte die Briefkästen und Poststellen anzeigt", "title": "Post- und Briefkastenkarte" }, + "rainbow_crossings": { + "description": "Auf dieser Karte sind Fußgängerüberwege mit Regenbogenfarben eingezeichnet und können leicht hinzugefügt werden", + "title": "Regenbogen-Fußgängerübergänge" + }, "shops": { "description": "Auf dieser Karte kann man grundlegende Informationen über Geschäfte markieren, Öffnungszeiten und Telefonnummern hinzufügen", "shortDescription": "Eine bearbeitbare Karte mit grundlegenden Geschäftsinformationen", @@ -969,11 +977,19 @@ "description": "Eine Karte mit öffentlich zugänglichen Toiletten", "title": "Freie Toilettenkarte" }, + "transit": { + "description": "Planen Sie Ihre Reise mit Hilfe von öffentlichen Verkehrsmitteln.", + "title": "Buslinien" + }, "trees": { "description": "Kartieren Sie alle Bäume!", "shortDescription": "Kartieren Sie alle Bäume", "title": "Bäume" }, + "walls_and_buildings": { + "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden.", + "title": "Wände und Gebäude" + }, "waste": { "description": "Eine Karte mit Abfalleimern und Recyclingeinrichtungen.", "title": "Abfall" @@ -982,21 +998,5 @@ "description": "Auf dieser Karte findest Du Abfalleimer in Deiner Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, kannst du ihn selbst hinzufügen", "shortDescription": "Eine Karte mit Abfalleimern", "title": "Abfalleimer" - }, - "healthcare": { - "description": "Auf dieser Karte werden verschiedene Gesundheitseinrichtungen angezeigt", - "title": "Gesundheitswesen" - }, - "rainbow_crossings": { - "description": "Auf dieser Karte sind Fußgängerüberwege mit Regenbogenfarben eingezeichnet und können leicht hinzugefügt werden", - "title": "Regenbogen-Fußgängerübergänge" - }, - "transit": { - "description": "Planen Sie Ihre Reise mit Hilfe von öffentlichen Verkehrsmitteln.", - "title": "Buslinien" - }, - "walls_and_buildings": { - "title": "Wände und Gebäude", - "description": "Spezielle Ebene, die alle Wände und Gebäude bereitstellt. Diese Ebene ist nützlich in Voreinstellungen für Objekte, die an Wänden platziert werden können (z. B. AEDs, Briefkästen, Eingänge, Adressen, Überwachungskameras, ...). Diese Ebene ist standardmäßig unsichtbar und kann vom Benutzer nicht umgeschaltet werden." } -} +} \ No newline at end of file diff --git a/langs/themes/en.json b/langs/themes/en.json index 70630b4322..f1e471de04 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -600,6 +600,10 @@ "description": "A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.

On this map, one can see all the ghost bikes which are known by OpenStreetMap. Is a ghost bike missing? Everyone can add or update information here - you only need to have a (free) OpenStreetMap account.", "title": "Ghost bikes" }, + "governments": { + "description": "On this map, Governmental offices are shown and can be easily added", + "title": "Governmental Offices" + }, "grb": { "description": "This theme is an attempt to help automating the GRB import.", "layers": { @@ -651,6 +655,10 @@ "description": "On this map, various healthcare related items are shown", "title": "Healthcare" }, + "indoors": { + "description": "On this map, publicly accessible indoor places are shown", + "title": "Indoors" + }, "kerbs_and_crossings": { "description": "A map showing kerbs and crossings.", "title": "Kerbs and crossings" diff --git a/langs/themes/fr.json b/langs/themes/fr.json index c27883b1a4..0f71196929 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -671,6 +671,22 @@ "shortDescription": "Tours libres d’accès pour admirer la vue", "title": "Tours d’observation" }, + "onwheels": { + "description": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes", + "overrideAll": { + "+tagRenderings": { + "0": { + "mappings": { + "0": { + "then": "Cet accès n'a pas d'informations de largeur" + } + }, + "render": "Cet accès a une largeur de {canonical(_poi_entrance:width)}" + } + } + }, + "title": "OnWheels" + }, "openwindpowermap": { "description": "Une carte indiquant les éoliennes et permettant leur édition.", "title": "OpenWindPowerMap" @@ -900,21 +916,5 @@ "description": "Retrouvez les poubelles près de vous. Si une poubelle est manquante, vous pouvez l’ajouter vous même", "shortDescription": "Une carte des poubelles", "title": "Poubelles" - }, - "onwheels": { - "overrideAll": { - "+tagRenderings": { - "0": { - "mappings": { - "0": { - "then": "Cet accès n'a pas d'informations de largeur" - } - }, - "render": "Cet accès a une largeur de {canonical(_poi_entrance:width)}" - } - } - }, - "description": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes", - "title": "OnWheels" } -} +} \ No newline at end of file diff --git a/langs/themes/nl.json b/langs/themes/nl.json index fdf65b5acf..f508a512aa 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -879,12 +879,12 @@ "overrideAll": { "+tagRenderings": { "0": { - "render": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter", "mappings": { "0": { "then": "Deze ingang heeft geen informatie over de breedte" } - } + }, + "render": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter" } } } @@ -1173,4 +1173,4 @@ "shortDescription": "Een kaart met vuilnisbakken", "title": "Vuilnisbak" } -} +} \ No newline at end of file From 536d0bddf42dc25950848d4ba2253d5b4ab885c8 Mon Sep 17 00:00:00 2001 From: AlexanderRebai Date: Tue, 26 Jul 2022 09:16:17 +0000 Subject: [PATCH 70/82] fixed color for indoors mapping, minzoom for all object is better, doors, elevators, .. only show when zooming in to a building. --- assets/layers/indoors/indoors.json | 4 ++-- assets/themes/onwheels/onwheels.json | 36 ++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/assets/layers/indoors/indoors.json b/assets/layers/indoors/indoors.json index 4fc49ae79d..bfb9053917 100644 --- a/assets/layers/indoors/indoors.json +++ b/assets/layers/indoors/indoors.json @@ -55,7 +55,7 @@ "mapRendering": [ { "color": { - "render": "#bb004488" + "render": "#d3d7d588" }, "width": { "render": "8" @@ -66,7 +66,7 @@ "fill": "no" }, { - "color": "red", + "color": "#4f5551", "fill": "no", "width": "2" }, diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index a878c33625..542b3aa082 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -19,6 +19,7 @@ { "builtin": "bike_repair_station", "override": { + "minzoom": 15, "mapRendering": [ { "icon": { @@ -39,6 +40,7 @@ { "builtin": "cafe_pub", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/cafe.svg", @@ -51,6 +53,7 @@ { "builtin": "entrance", "override": { + "minzoom": 19, "mapRendering": [ { "icon": "./assets/themes/onwheels/entrance.svg", @@ -62,6 +65,7 @@ { "builtin": "food", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/restaurant.svg", @@ -74,6 +78,7 @@ { "builtin": "kerbs", "override": { + "minzoom": 19, "mapRendering": [ { "icon": { @@ -86,6 +91,7 @@ { "builtin": "parking", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/parking.svg", @@ -98,10 +104,20 @@ } }, "picnic_table", - "school", + { + "builtin": "school", + "override": { + "mapRendering": [ + { + "label": null + } + ] + } + }, { "builtin": "shops", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/shop.svg", @@ -117,6 +133,7 @@ { "builtin": "toilet", "override": { + "minzoom": 19, "mapRendering": [ { "icon": "./assets/themes/onwheels/toilet.svg", @@ -129,6 +146,7 @@ { "builtin": "pharmacy", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/pharmacy.svg", @@ -141,6 +159,7 @@ { "builtin": "doctors", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/doctor.svg", @@ -152,6 +171,7 @@ { "builtin": "hospital", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/hospital.svg", @@ -166,6 +186,7 @@ { "builtin": "reception_desk", "override": { + "minzoom": 19, "mapRendering": [ { "icon": "./assets/themes/onwheels/reception.svg", @@ -178,6 +199,7 @@ { "builtin": "elevator", "override": { + "minzoom": 19, "mapRendering": [ { "icon": "./assets/themes/onwheels/elevator.svg", @@ -189,6 +211,7 @@ { "builtin": "hotel", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/hotel.svg", @@ -200,6 +223,7 @@ { "builtin": "governments", "override": { + "minzoom": 15, "mapRendering": [ { "icon": "./assets/themes/onwheels/government.svg", @@ -208,7 +232,12 @@ ] } }, - "indoors" + { + "builtin": "indoors", + "override": { + "minzoom": 19 + } + } ], "overrideAll": { "+calculatedTags": [ @@ -244,7 +273,6 @@ } ] } - ], - "minzoom": 15 + ] } } \ No newline at end of file From 2f6b43796b434067bfbb45e73e1a6e20dcae4290 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 11:26:27 +0200 Subject: [PATCH 71/82] Robustify image loading --- UI/Base/Img.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/UI/Base/Img.ts b/UI/Base/Img.ts index 79839183ba..ecaf09abd4 100644 --- a/UI/Base/Img.ts +++ b/UI/Base/Img.ts @@ -23,7 +23,13 @@ export default class Img extends BaseUIElement { if (Utils.runningFromConsole) { return source; } - return `data:image/svg+xml;base64,${(btoa(source))}`; + try{ + return `data:image/svg+xml;base64,${(btoa(source))}`; + }catch (e){ + console.error("Cannot create an image for", source.slice(0, 100)) + console.trace("Cannot create an image for the given source string due to ", e) + return "" + } } static AsImageElement(source: string, css_class: string = "", style = ""): string { From 512a11740e3b2d25cef16ed3f0c183799d5a849c Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 11:38:10 +0200 Subject: [PATCH 72/82] Fix non-ascii characters, add check for them --- assets/svg/elevator.svg | 116 +++++++++++------------------- scripts/generateIncludedImages.ts | 7 +- 2 files changed, 47 insertions(+), 76 deletions(-) diff --git a/assets/svg/elevator.svg b/assets/svg/elevator.svg index ad43fe894a..8f6343703f 100644 --- a/assets/svg/elevator.svg +++ b/assets/svg/elevator.svg @@ -1,78 +1,44 @@ - - - - - - - - - - - - - - - - - - - + version="1.1" + id="elevator" + x="0px" + y="0px" + viewBox="0 0 65.9 66" + style="enable-background:new 0 0 65.9 66;" + xml:space="preserve" + xmlns="http://www.w3.org/2000/svg"> + + + + + + + + diff --git a/scripts/generateIncludedImages.ts b/scripts/generateIncludedImages.ts index d0902ae158..67eab59e3e 100644 --- a/scripts/generateIncludedImages.ts +++ b/scripts/generateIncludedImages.ts @@ -17,13 +17,18 @@ function genImages(dryrun = false) { throw "Non-svg file detected in the svg files: " + path; } - let svg = fs.readFileSync("./assets/svg/" + path, "utf-8") + let svg : string = fs.readFileSync("./assets/svg/" + path, "utf-8") .replace(/<\?xml.*?>/, "") .replace(/fill: ?none;/g, "fill: none !important;") // This is such a brittle hack... .replace(/\n/g, " ") .replace(/\r/g, "") .replace(/\\/g, "\\") .replace(/"/g, "\\\"") + + let hasNonAsciiChars = Array.from(svg).some(char => char.charCodeAt(0) > 127); + if(hasNonAsciiChars){ + throw "The svg '"+path+"' has non-ascii characters"; + } const name = path.substr(0, path.length - 4) .replace(/[ -]/g, "_"); From f709eda236d85f4388ef6240c048cf7b2765d6e9 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 11:52:09 +0200 Subject: [PATCH 73/82] Fix shadowing overrides --- assets/themes/onwheels/onwheels.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 826cb8b2d3..1d4ac95094 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -349,12 +349,6 @@ } ] } - ], - "minzoom": "17", - "mapRendering": [ - { - "label": null - } ] } } \ No newline at end of file From 7fdd532fdc10d5c249b1cb8edac22c884e1aae2e Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 12:11:05 +0200 Subject: [PATCH 74/82] Fix multilevel question --- assets/tagRenderings/questions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index a8a15fd858..b4969f5281 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -873,7 +873,7 @@ "en": "What levels does this elevator go to?" }, "render": { - "en": "This elevator goes to floors {multilevels}" + "en": "This elevator goes to floors {level}" }, "freeform": { "key": "level", From 80ec8f1ee151d4526eb982857dc71d58add0ac38 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 12:17:54 +0200 Subject: [PATCH 75/82] Move level under overriden value to fix translations --- assets/layers/shops/shops.json | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index c0c35a2209..cf434e3782 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -83,7 +83,6 @@ }, "tagRenderings": [ "images", - "level", { "question": { "en": "What is the name of this shop?", @@ -94,18 +93,13 @@ "de": "Wie ist der Name dieses Geschäfts?", "es": "¿Cual es el nombre de esta tienda?" }, - "render": "This shop is called {name}", + "render": { + "en": "This shop is called {name}" + }, "freeform": { "key": "name" }, - "id": "shops-name", - "en": { - "question": "What kind of shop is this?", - "render": "This is a {shop}" - }, - "nl": { - "question": "Wat voor soort winkel is dit?" - } + "id": "shops-name" }, { "builtin": "id_presets.shop_types", @@ -132,6 +126,7 @@ "email", "phone", "payment-options", + "level", { "id": "copyshop-print-sizes", "condition": { From aea1d0335c0b25c2bb02e923adeed8e2436c6ad2 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 12:05:34 +0200 Subject: [PATCH 76/82] Improve documentation on canonical --- UI/SpecialVisualizations.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UI/SpecialVisualizations.ts b/UI/SpecialVisualizations.ts index 4d70c850c1..f2f0f93ef5 100644 --- a/UI/SpecialVisualizations.ts +++ b/UI/SpecialVisualizations.ts @@ -756,8 +756,8 @@ export default class SpecialVisualizations { }, { funcName: "canonical", - docs: "Converts a short, canonical value into the long, translated text", - example: "{canonical(length)} will give 42 metre (in french)", + docs: "Converts a short, canonical value into the long, translated text including the unit. This only works if a `unit` is defined for the corresponding value. The unit specification will be included in the text. ", + example: "If the object has `length=42`, then `{canonical(length)}` will be shown as **42 meter** (in english), **42 metre** (in french), ...", args: [{ name: "key", doc: "The key of the tag to give the canonical text for", From 30dbb62c4654a657f9f91788255a1d391eda1dfe Mon Sep 17 00:00:00 2001 From: Andrews Leruth Date: Tue, 26 Jul 2022 08:53:52 +0000 Subject: [PATCH 77/82] Translated using Weblate (French) Currently translated at 49.4% (1064 of 2152 strings) Translation: MapComplete/Layer translations Translate-URL: https://hosted.weblate.org/projects/mapcomplete/layers/fr/ --- langs/layers/fr.json | 191 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 2 deletions(-) diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 387231795e..5046892144 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -1620,7 +1620,194 @@ "then": "Vélorue" } } - } + }, + "tagRenderings": { + "Cycleway type for a road": { + "mappings": { + "1": { + "then": "Il y a une piste cyclable separée de la route" + }, + "0": { + "then": "Il y a une voie partagée" + }, + "4": { + "then": "Il n'y a pas de piste cyclable" + }, + "5": { + "then": "Il n'y a pas de piste cyclable" + }, + "2": { + "then": "Il y a une piste cyclable, mais elle n'est pas separée de la route sur la carte." + }, + "3": { + "then": "Il y a une piste cyclable dessinée séparement" + } + }, + "question": "Quel type de piste cyclable il y a ici ?" + }, + "Cycleway:smoothness": { + "mappings": { + "1": { + "then": "Utilisable pour les roues fines: vélo de course" + }, + "0": { + "then": "Utilisable pour les patins: patins à roulettes, skateboard" + }, + "2": { + "then": "Utilisable pour les roues traditionelles: vélo, chaise roulante, trotinettes" + }, + "7": { + "then": "Impasse / Aucun véhicule roulant" + }, + "3": { + "then": "Utilisable pour les roues robustes: VTT, voitures, pousse-pousse" + }, + "4": { + "then": "Utilisable pour les véhicules à dégagement élevé : véhicule tout-terrain léger" + }, + "5": { + "then": "Utilisable pour les véhicules tout-terrain : véhicule tout-terrain lourd" + }, + "6": { + "then": "Utilisable pour les véhicules hors route spécialisés : tracteur, véhicule 4x4" + } + }, + "question": "Quel est l'état de la piste cyclable ?" + }, + "Cycleway:surface": { + "mappings": { + "7": { + "then": "Cette piste cyclable est en pavés plats ou carrés" + }, + "8": { + "then": "Cette piste cyclable est faite en bois" + }, + "11": { + "then": "Cette piste cyclable est en cailloux" + }, + "12": { + "then": "Cette piste cyclable est faite en sol brut" + }, + "3": { + "then": "Cette piste cyclable est faite de petits pavés" + }, + "9": { + "then": "Cette piste cyclable est faite en graviers" + }, + "6": { + "then": "Cette piste cyclable est en pavés bruts et naturels" + }, + "10": { + "then": "Cette piste cyclable est faite en graviers fins" + }, + "1": { + "then": "Cette piste cyclable est goudronée" + }, + "4": { + "then": "Cette piste cyclable est bétonée" + }, + "0": { + "then": "Cette piste cyclable n'est pas goudronnée" + }, + "5": { + "then": "Cette piste cyclable est faite de pavés (taillé ou non)" + }, + "2": { + "then": "Cette piste cyclable est asphaltée" + } + }, + "question": "De quoi est faite la surface de la piste cyclable ?", + "render": "Cette piste cyclable est faite de {cycleway:surface}" + }, + "Is this a cyclestreet? (For a road)": { + "mappings": { + "1": { + "then": "Ceci est une route cyclable" + }, + "2": { + "then": "Ceci n'est pas une route cyclable" + }, + "0": { + "then": "Ceci est une route cyclable, et une zone à 30 km/h" + } + }, + "question": "Est-ce une route cyclable?" + }, + "Maxspeed (for road)": { + "mappings": { + "0": { + "then": "La vitesse maximum est de 20 km/h" + }, + "4": { + "then": "La vitesse maximum est de 90 km/h" + }, + "2": { + "then": "La vitesse maximum est de 50 km/h" + }, + "1": { + "then": "La vitesse maximum est de 30 km/h" + }, + "3": { + "then": "La vitesse maximum est de 70 km/h" + } + }, + "question": "Quelle est la vitesse maximum dans cette rue ?", + "render": "La vitesse maximum dans cette rue est de {maxspeed} km/h" + }, + "Surface of the road": { + "mappings": { + "1": { + "then": "Cette piste cyclable est pavée" + }, + "2": { + "then": "Cette piste cyclable est asphaltée" + }, + "3": { + "then": "Cette piste cyclable est faite en pavés lisses" + }, + "4": { + "then": "Cette piste cyclable est betonée" + }, + "11": { + "then": "Cette piste cyclable est en cailloux" + }, + "0": { + "then": "Cette piste cycable est non durcie" + }, + "10": { + "then": "Cette piste cyclable est faite en graviers fins" + }, + "8": { + "then": "Cette piste cyclable est faite en bois" + }, + "9": { + "then": "Cette piste cyclable est faite en graviers" + }, + "12": { + "then": "Cette piste cyclable est faite en sol brut" + }, + "7": { + "then": "Cette piste cyclable est en pavés plats ou carrés" + }, + "6": { + "then": "Cette piste cyclable est en pavés bruts et naturels" + }, + "5": { + "then": "Cette piste cyclable est faite de pavés (taillé ou non)" + } + }, + "render": "Cette route est faite de {surface}", + "question": "De quel materiel est faite cette rue ?" + }, + "Surface of the street": { + "mappings": { + "0": { + "then": "Utilisable pour les patins: patins à roulettes, skateboard" + } + } + } + }, + "description": "Toutes les infrastructures sur lesquelles quelqu'un peut rouler, accompagnées de questions sur cette infrastructure" }, "defibrillator": { "name": "Défibrillateurs", @@ -3214,4 +3401,4 @@ } } } -} \ No newline at end of file +} From 88c6c676d68ce6a69ffee418de518a0f061e8c1d Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 13:15:55 +0200 Subject: [PATCH 78/82] Support for entrances too --- assets/layers/entrance/entrance.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index cec8c5a42e..79003dd5a4 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -17,7 +17,8 @@ "osmTags": { "or": [ "entrance~*", - "indoor=door" + "indoor=door", + "door~*" ] } }, From 6d99dd5045d5b54aebd964bb6ee4a97695b4e7c7 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 16:51:00 +0200 Subject: [PATCH 79/82] Some tweaks --- Logic/State/MapState.ts | 11 ++++++----- assets/themes/onwheels/onwheels.json | 13 ++++++++----- test.ts | 11 ++++++++--- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts index 2e4a65a9c9..da9d68ae42 100644 --- a/Logic/State/MapState.ts +++ b/Logic/State/MapState.ts @@ -354,8 +354,8 @@ export default class MapState extends UserRelatedState { } private getPref(key: string, layer: LayerConfig): UIEventSource { - const pref = this.osmConnection - .GetPreference(key) + return this.osmConnection + .GetPreference(key, layer.shownByDefault + "") .sync(v => { if (v === undefined) { return undefined @@ -367,8 +367,6 @@ export default class MapState extends UserRelatedState { } return "" + b; }) - pref.setData(layer.shownByDefault) - return pref } private InitializeFilteredLayers() { @@ -389,9 +387,12 @@ export default class MapState extends UserRelatedState { isDisplayed = QueryParameters.GetBooleanQueryParameter("layer-" + layer.id, layer.shownByDefault, "Wether or not layer " + layer.id + " is shown") } + isDisplayed.addCallbackAndRun(_ => { + console.log("IsDisplayed?",layer.id, isDisplayed.data, layer.shownByDefault) + }) const flayer: FilteredLayer = { - isDisplayed: isDisplayed, + isDisplayed, layerDef: layer, appliedFilters: new UIEventSource>(new Map()) }; diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 3ee9a7e16b..19dfff6013 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -24,7 +24,6 @@ "builtin": "bike_repair_station", "override": { "minzoom": 15, - "name": null, "shownByDefault": false, "mapRendering": [ { @@ -45,7 +44,6 @@ { "builtin": "bike_shop", "override": { - "name": null, "shownByDefault": false } }, @@ -86,7 +84,7 @@ "mapRendering": [ { "icon": "./assets/themes/onwheels/entrance.svg", - "iconSize": "40,40,bottom" + "iconSize": "40,40,center" } ], "syncSelection": "theme-only", @@ -193,13 +191,13 @@ { "builtin": "picnic_table", "override": { - "name": null, "shownByDefault": false } }, { "builtin": "school", "override": { + "shownByDefault": false, "mapRendering": [ { "label": null @@ -241,6 +239,7 @@ "builtin": "pharmacy", "override": { "minzoom": 15, + "shownByDefault": false, "mapRendering": [ { "icon": "./assets/themes/onwheels/pharmacy.svg", @@ -252,6 +251,7 @@ }, { "builtin": "doctors", + "shownByDefault": false, "override": { "minzoom": 15, "mapRendering": [ @@ -266,6 +266,7 @@ "builtin": "hospital", "override": { "minzoom": 15, + "shownByDefault": false, "mapRendering": [ { "icon": "./assets/themes/onwheels/hospital.svg", @@ -308,6 +309,7 @@ "builtin": "hotel", "override": { "minzoom": 15, + "shownByDefault": false, "mapRendering": [ { "icon": "./assets/themes/onwheels/hotel.svg", @@ -372,7 +374,8 @@ "and": [ "entrance=", "kerb=", - "current_view!=yes" + "current_view!=yes", + "door=" ] }, "render": { diff --git a/test.ts b/test.ts index f6a656f45c..a2d2662a95 100644 --- a/test.ts +++ b/test.ts @@ -1,4 +1,9 @@ -import LevelSelector from "./UI/Input/LevelSelector"; -import {UIEventSource} from "./Logic/UIEventSource"; -new LevelSelector(new UIEventSource(["0","1","2","2.5","x","3"])).AttachTo("maindiv") \ No newline at end of file + +import * as onwheels from "./assets/generated/themes/onwheels.json" +import FeaturePipelineState from "./Logic/State/FeaturePipelineState"; +import LayoutConfig from "./Models/ThemeConfig/LayoutConfig"; + +const layout = new LayoutConfig( onwheels, true) + +new FeaturePipelineState(layout) \ No newline at end of file From 6cf6e3c6ea1ef98897dd001e6552c9bff858870f Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 16:58:51 +0200 Subject: [PATCH 80/82] Housekeeping... --- Docs/BuiltinIndex.md | 25 + Docs/BuiltinLayers.md | 1 + Docs/BuiltinQuestions.md | 20 + Docs/CalculatedTags.md | 11 + Docs/Layers/bike_repair_station.md | 1 + Docs/Layers/bike_shop.md | 1 + Docs/Layers/cafe_pub.md | 27 + Docs/Layers/cycleways_and_roads.md | 1 + Docs/Layers/doctors.md | 1 + Docs/Layers/dogfoodb.md | 26 + Docs/Layers/dogshop.md | 26 + Docs/Layers/drinking_water.md | 5 +- Docs/Layers/elevator.md | 38 + Docs/Layers/entrance.md | 31 +- Docs/Layers/food.md | 27 + Docs/Layers/friture.md | 26 + Docs/Layers/governments.md | 1 + Docs/Layers/hospital.md | 1 + Docs/Layers/hotel.md | 186 + Docs/Layers/indoors.md | 1 + Docs/Layers/kerbs.md | 1 + Docs/Layers/parking.md | 27 + Docs/Layers/pedestrian_path.md | 1 + Docs/Layers/pharmacy.md | 1 + Docs/Layers/picnic_table.md | 27 + Docs/Layers/reception_desk.md | 38 + Docs/Layers/school.md | 1 + Docs/Layers/shops.md | 27 + Docs/Layers/toilet.md | 56 +- Docs/Layers/viewpoint.md | 12 + Docs/Layers/walls_and_buildings.md | 1 + Docs/SpecialRenderings.md | 16 +- Docs/TagInfo/mapcomplete_benches.json | 29 + Docs/TagInfo/mapcomplete_cafes_and_pubs.json | 29 + Docs/TagInfo/mapcomplete_cyclofix.json | 5 + Docs/TagInfo/mapcomplete_drinking_water.json | 5 + Docs/TagInfo/mapcomplete_entrances.json | 33 + Docs/TagInfo/mapcomplete_food.json | 29 + Docs/TagInfo/mapcomplete_fritures.json | 29 + Docs/TagInfo/mapcomplete_nature.json | 97 +- Docs/TagInfo/mapcomplete_onwheels.json | 3739 +++++++++++++++--- Docs/TagInfo/mapcomplete_parkings.json | 29 + Docs/TagInfo/mapcomplete_personal.json | 536 ++- Docs/TagInfo/mapcomplete_pets.json | 58 + Docs/TagInfo/mapcomplete_shops.json | 29 + Docs/TagInfo/mapcomplete_toilets.json | 63 +- Docs/TagInfo/mapcomplete_transit.json | 29 + assets/contributors.json | 20 +- assets/layers/indoors/indoors.json | 2 +- assets/tagRenderings/questions.json | 2 +- assets/themes/onwheels/onwheels.json | 18 +- langs/layers/en.json | 32 +- langs/layers/nl.json | 29 + langs/shared-questions/en.json | 6 + langs/themes/de.json | 24 + langs/themes/en.json | 52 + langs/themes/nl.json | 24 + 57 files changed, 4812 insertions(+), 800 deletions(-) create mode 100644 Docs/Layers/hotel.md diff --git a/Docs/BuiltinIndex.md b/Docs/BuiltinIndex.md index 4862e9248e..fd30e35fc7 100644 --- a/Docs/BuiltinIndex.md +++ b/Docs/BuiltinIndex.md @@ -34,6 +34,7 @@ + [climbing.sportclimbing](#climbingsportclimbing) + [climbing.max_bolts](#climbingmax_bolts) + [all_tags](#all_tags) + + [multilevels](#multilevels) + [induction-loop](#induction-loop) + [questions](#questions) + [export_as_gpx](#export_as_gpx) @@ -95,6 +96,7 @@ - ghost_bike - governments - grass_in_parks + - hotel - hydrant - indoors - information_board @@ -146,6 +148,7 @@ - governments - hackerspace - hospital + - hotel - kindergarten_childcare - nature_reserve - observation_tower @@ -178,6 +181,7 @@ - governments - hackerspace - hospital + - hotel - kindergarten_childcare - pharmacy - recycling @@ -207,6 +211,7 @@ - governments - hackerspace - hospital + - hotel - kindergarten_childcare - pharmacy - recycling @@ -290,7 +295,14 @@ - bike_repair_station + - cafe_pub - charging_station + - entrance + - food + - parking + - picnic_table + - reception_desk + - shops - toilet @@ -328,6 +340,7 @@ - defibrillator - food - hackerspace + - hotel - observation_tower - transit_stops @@ -379,6 +392,7 @@ - dogpark - food - hackerspace + - hotel - shops - veterinary @@ -486,6 +500,17 @@ +### multilevels + + + + + + - elevator + + + + ### induction-loop diff --git a/Docs/BuiltinLayers.md b/Docs/BuiltinLayers.md index b4bc759eb7..58d9e5b76a 100644 --- a/Docs/BuiltinLayers.md +++ b/Docs/BuiltinLayers.md @@ -824,6 +824,7 @@ The following layers are included in MapComplete: - [hackerspace](./Layers/hackerspace.md) - [home_location](./Layers/home_location.md) - [hospital](./Layers/hospital.md) + - [hotel](./Layers/hotel.md) - [hydrant](./Layers/hydrant.md) - [id_presets](./Layers/id_presets.md) - [import_candidate](./Layers/import_candidate.md) diff --git a/Docs/BuiltinQuestions.md b/Docs/BuiltinQuestions.md index 64b78f1b19..2f701bde5a 100644 --- a/Docs/BuiltinQuestions.md +++ b/Docs/BuiltinQuestions.md @@ -32,6 +32,7 @@ The following items can be easily reused in your layers + [payment-options-advanced](#payment-options-advanced) + [last_edit](#last_edit) + [all_tags](#all_tags) + + [multilevels](#multilevels) + [level](#level) + [smoking](#smoking) + [induction-loop](#induction-loop) @@ -325,6 +326,25 @@ Read-only tagrendering +### multilevels + + + +This elevator goes to floors {level} + +What levels does this elevator go to? + + + + - Located underground + - Located on the ground floor + - Located on the ground floor + - Located on the first floor + - Located on the first basement level + + + + ### level diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md index 1f6a95e35f..c671b9a733 100644 --- a/Docs/CalculatedTags.md +++ b/Docs/CalculatedTags.md @@ -21,6 +21,7 @@ + [_last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend](#_last_editcontributor,-_last_edit:contributor:uid,-_last_edit:changeset,-_last_edit:timestamp,-_version_number,-_backend) + [sidewalk:left, sidewalk:right, generic_key:left:property, generic_key:right:property](#sidewalkleft,-sidewalk:right,-generic_key:left:property,-generic_key:right:property) + [_geometry:type](#_geometrytype) + + [_level](#_level) + [distanceTo](#distanceto) + [overlapWith](#overlapwith) + [enclosingFeatures](#enclosingfeatures) @@ -169,6 +170,16 @@ Adds the geometry type as property. This is identical to the GoeJson geometry ty +### _level + + + +Extract the 'level'-tag into a normalized, ';'-separated value + + + + + Calculating tags with Javascript ---------------------------------- diff --git a/Docs/Layers/bike_repair_station.md b/Docs/Layers/bike_repair_station.md index a66b855f86..de71926de8 100644 --- a/Docs/Layers/bike_repair_station.md +++ b/Docs/Layers/bike_repair_station.md @@ -26,6 +26,7 @@ A layer showing bicycle pumps and bicycle repair tool stands - [cyclofix](https://mapcomplete.osm.be/cyclofix) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/bike_shop.md b/Docs/Layers/bike_shop.md index 8b8272b1ec..a0b2405c46 100644 --- a/Docs/Layers/bike_shop.md +++ b/Docs/Layers/bike_shop.md @@ -26,6 +26,7 @@ A shop specifically selling bicycles or related items - [cyclofix](https://mapcomplete.osm.be/cyclofix) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/cafe_pub.md b/Docs/Layers/cafe_pub.md index 146196a0d4..2beec78c10 100644 --- a/Docs/Layers/cafe_pub.md +++ b/Docs/Layers/cafe_pub.md @@ -26,6 +26,7 @@ A layer showing cafés and pubs where one can gather around a drink. The layer a - [cafes_and_pubs](https://mapcomplete.osm.be/cafes_and_pubs) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) @@ -60,6 +61,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [pub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dpub) [bar](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbar) [cafe](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dcafe) [restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [biergarten](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbiergarten) [nightclub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dnightclub) [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | @@ -86,6 +88,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### Name diff --git a/Docs/Layers/cycleways_and_roads.md b/Docs/Layers/cycleways_and_roads.md index 7f9ae2d254..c768e9d897 100644 --- a/Docs/Layers/cycleways_and_roads.md +++ b/Docs/Layers/cycleways_and_roads.md @@ -31,6 +31,7 @@ All infrastructure that someone can cycle over, accompanied with questions about - [cycle_infra](https://mapcomplete.osm.be/cycle_infra) - [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [rainbow_crossings](https://mapcomplete.osm.be/rainbow_crossings) diff --git a/Docs/Layers/doctors.md b/Docs/Layers/doctors.md index de0de24072..a9fd89ca3a 100644 --- a/Docs/Layers/doctors.md +++ b/Docs/Layers/doctors.md @@ -26,6 +26,7 @@ This layer shows doctor offices, dentists and other healthcare facilities - [healthcare](https://mapcomplete.osm.be/healthcare) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/dogfoodb.md b/Docs/Layers/dogfoodb.md index a441323b1d..f907e79201 100644 --- a/Docs/Layers/dogfoodb.md +++ b/Docs/Layers/dogfoodb.md @@ -60,6 +60,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [fast_food](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dfast_food) [restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | @@ -95,6 +96,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### Name diff --git a/Docs/Layers/dogshop.md b/Docs/Layers/dogshop.md index 879c8b385e..1d5ebc3a28 100644 --- a/Docs/Layers/dogshop.md +++ b/Docs/Layers/dogshop.md @@ -66,6 +66,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | [](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | [](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) @@ -368,6 +369,31 @@ The question is Which methods of payment are accepted here? +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### copyshop-print-sizes diff --git a/Docs/Layers/drinking_water.md b/Docs/Layers/drinking_water.md index 60ec3a5782..dbc1b63614 100644 --- a/Docs/Layers/drinking_water.md +++ b/Docs/Layers/drinking_water.md @@ -44,12 +44,13 @@ Elements must have the all of following tags to be shown on this layer: - - amenity=drinking_water + - amenity=drinking_water|drinking_water=yes + - man_made!=reservoir_covered - access!=permissive - access!=private -[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22drinking_water%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22drinking_water%22%3D%22yes%22%5D%5B%22man_made%22!%3D%22reservoir_covered%22%5D%5B%22access%22!%3D%22permissive%22%5D%5B%22access%22!%3D%22private%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) diff --git a/Docs/Layers/elevator.md b/Docs/Layers/elevator.md index 42dd265890..09ca7cb0db 100644 --- a/Docs/Layers/elevator.md +++ b/Docs/Layers/elevator.md @@ -19,6 +19,18 @@ This layer show elevators and asks for operational status and elevator dimension +#### Themes using this layer + + + + + + - [onwheels](https://mapcomplete.osm.be/onwheels) + - [personal](https://mapcomplete.osm.be/personal) + + + + Basic tags for this layer --------------------------- @@ -48,6 +60,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [string](../SpecialInputElements.md#string) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/operational_status#values) [operational_status](https://wiki.openstreetmap.org/wiki/Key:operational_status) | Multiple choice | [broken](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dbroken) [closed](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dclosed) [ok](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dok) [](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | [](https://taginfo.openstreetmap.org/keys/elevator:width#values) [elevator:width](https://wiki.openstreetmap.org/wiki/Key:elevator:width) | [pfloat](../SpecialInputElements.md#pfloat) | @@ -69,6 +82,31 @@ This tagrendering has no question and is thus read-only +### multilevels + + + +The question is What levels does this elevator go to? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with This elevator goes to floors {level} + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### operational_status diff --git a/Docs/Layers/entrance.md b/Docs/Layers/entrance.md index 06143998a8..ada376f775 100644 --- a/Docs/Layers/entrance.md +++ b/Docs/Layers/entrance.md @@ -29,6 +29,7 @@ A layer showing entrances and offering capabilities to survey some advanced data - [entrances](https://mapcomplete.osm.be/entrances) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) @@ -43,10 +44,10 @@ Elements must have the all of following tags to be shown on this layer: - - entrance~^..*$|indoor=door + - entrance~^..*$|indoor=door|door~^..*$ -[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22indoor%22%3D%22door%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22entrance%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22indoor%22%3D%22door%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22door%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22entrance%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) @@ -63,6 +64,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/entrance#values) [entrance](https://wiki.openstreetmap.org/wiki/Key:entrance) | Multiple choice | [](https://wiki.openstreetmap.org/wiki/Tag:entrance%3D) [main](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dmain) [secondary](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dsecondary) [service](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dservice) [exit](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dexit) [entrance](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dentrance) [emergency](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Demergency) [home](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dhome) [](https://taginfo.openstreetmap.org/keys/door#values) [door](https://wiki.openstreetmap.org/wiki/Key:door) | Multiple choice | [hinged](https://wiki.openstreetmap.org/wiki/Tag:door%3Dhinged) [revolving](https://wiki.openstreetmap.org/wiki/Tag:door%3Drevolving) [sliding](https://wiki.openstreetmap.org/wiki/Tag:door%3Dsliding) [overhead](https://wiki.openstreetmap.org/wiki/Tag:door%3Doverhead) [no](https://wiki.openstreetmap.org/wiki/Tag:door%3Dno) [](https://taginfo.openstreetmap.org/keys/automatic_door#values) [automatic_door](https://wiki.openstreetmap.org/wiki/Key:automatic_door) | Multiple choice | [no](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dno) [motion](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dmotion) [floor](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dfloor) [button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dbutton) [slowdown_button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dslowdown_button) [continuous](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dcontinuous) [serviced_on_button_press](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_button_press) [serviced_on_request](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_request) @@ -84,6 +86,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### Entrance type diff --git a/Docs/Layers/food.md b/Docs/Layers/food.md index 9710404a1b..f33ed20e40 100644 --- a/Docs/Layers/food.md +++ b/Docs/Layers/food.md @@ -27,6 +27,7 @@ A layer showing restaurants and fast-food amenities (with a special rendering fo - [food](https://mapcomplete.osm.be/food) - [fritures](https://mapcomplete.osm.be/fritures) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [pets](https://mapcomplete.osm.be/pets) @@ -62,6 +63,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [fast_food](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dfast_food) [restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | @@ -97,6 +99,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### Name diff --git a/Docs/Layers/friture.md b/Docs/Layers/friture.md index 2f1ced6e31..51ebe4cbeb 100644 --- a/Docs/Layers/friture.md +++ b/Docs/Layers/friture.md @@ -60,6 +60,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [fast_food](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dfast_food) [restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | @@ -95,6 +96,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### Name diff --git a/Docs/Layers/governments.md b/Docs/Layers/governments.md index f13618952b..f9ff362bd5 100644 --- a/Docs/Layers/governments.md +++ b/Docs/Layers/governments.md @@ -26,6 +26,7 @@ This layer show governmental buildings. It was setup as commissioned layer for t - [governments](https://mapcomplete.osm.be/governments) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/hospital.md b/Docs/Layers/hospital.md index 6a1fc33e6f..a23028ef1c 100644 --- a/Docs/Layers/hospital.md +++ b/Docs/Layers/hospital.md @@ -26,6 +26,7 @@ A layer showing hospital grounds - [healthcare](https://mapcomplete.osm.be/healthcare) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/hotel.md b/Docs/Layers/hotel.md new file mode 100644 index 0000000000..7bda3b05fc --- /dev/null +++ b/Docs/Layers/hotel.md @@ -0,0 +1,186 @@ + + + hotel +======= + + + + + +Layer showing all hotels + + + + + + + - This layer is shown at zoomlevel **13** and higher + + + + +#### Themes using this layer + + + + + + - [onwheels](https://mapcomplete.osm.be/onwheels) + - [personal](https://mapcomplete.osm.be/personal) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - tourism=hotel + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22tourism%22%3D%22hotel%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | +[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | +[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | +[](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### reviews + + + +Shows the reviews module (including the possibility to leave a review) + +This tagrendering has no question and is thus read-only + + + + + +### name + + + +The question is What is the name of this hotel? + +This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) + +This is rendered with This hotel is called {name} + + + + + +### phone + + + +The question is What is the phone number of {title()}? + +This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) + +This is rendered with {phone} + + + + + + - {contact:phone} corresponds with `contact:phone~^..*$` + - This option cannot be chosen as answer + + + + +### email + + + +The question is What is the email address of {title()}? + +This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) + +This is rendered with {email} + + + + + + - {contact:email} corresponds with `contact:email~^..*$` + - This option cannot be chosen as answer + + + + +### website + + + +The question is What is the website of {title()}? + +This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website) + +This is rendered with {website} + + + + + + - {contact:website} corresponds with `contact:website~^..*$` + - This option cannot be chosen as answer + + + + +### wheelchair-access + + + +The question is Is this place accessible with a wheelchair? + + + + + + - This place is specially adapted for wheelchair users corresponds with `wheelchair=designated` + - This place is easily reachable with a wheelchair corresponds with `wheelchair=yes` + - It is possible to reach this place in a wheelchair, but it is not easy corresponds with `wheelchair=limited` + - This place is not reachable with a wheelchair corresponds with `wheelchair=no` + + +This document is autogenerated from [assets/layers/hotel/hotel.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hotel/hotel.json) \ No newline at end of file diff --git a/Docs/Layers/indoors.md b/Docs/Layers/indoors.md index a138c37bd4..2afa8008b4 100644 --- a/Docs/Layers/indoors.md +++ b/Docs/Layers/indoors.md @@ -26,6 +26,7 @@ Basic indoor mapping: shows room outlines - [indoors](https://mapcomplete.osm.be/indoors) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/kerbs.md b/Docs/Layers/kerbs.md index 884832d354..5942804914 100644 --- a/Docs/Layers/kerbs.md +++ b/Docs/Layers/kerbs.md @@ -29,6 +29,7 @@ A layer showing kerbs. - [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/parking.md b/Docs/Layers/parking.md index 0d4ac02233..2926c14296 100644 --- a/Docs/Layers/parking.md +++ b/Docs/Layers/parking.md @@ -25,6 +25,7 @@ A layer showing car parkings + - [onwheels](https://mapcomplete.osm.be/onwheels) - [parkings](https://mapcomplete.osm.be/parkings) - [personal](https://mapcomplete.osm.be/personal) - [transit](https://mapcomplete.osm.be/transit) @@ -61,6 +62,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/parking#values) [parking](https://wiki.openstreetmap.org/wiki/Key:parking) | Multiple choice | [surface](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dsurface) [street_side](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dstreet_side) [underground](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dunderground) [multi-storey](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dmulti-storey) [rooftop](https://wiki.openstreetmap.org/wiki/Tag:parking%3Drooftop) [lane](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dlane) [carports](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dcarports) [garage_boxes](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dgarage_boxes) [layby](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dlayby) [sheds](https://wiki.openstreetmap.org/wiki/Tag:parking%3Dsheds) [](https://taginfo.openstreetmap.org/keys/capacity:disabled#values) [capacity:disabled](https://wiki.openstreetmap.org/wiki/Key:capacity:disabled) | [pnat](../SpecialInputElements.md#pnat) | [](https://taginfo.openstreetmap.org/keys/capacity#values) [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity) | [pnat](../SpecialInputElements.md#pnat) | @@ -80,6 +82,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### parking-type diff --git a/Docs/Layers/pedestrian_path.md b/Docs/Layers/pedestrian_path.md index b4526194c6..7f88068177 100644 --- a/Docs/Layers/pedestrian_path.md +++ b/Docs/Layers/pedestrian_path.md @@ -28,6 +28,7 @@ Pedestrian footpaths, especially used for indoor navigation and snapping entranc - [entrances](https://mapcomplete.osm.be/entrances) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/pharmacy.md b/Docs/Layers/pharmacy.md index 0a144c789a..e87795e888 100644 --- a/Docs/Layers/pharmacy.md +++ b/Docs/Layers/pharmacy.md @@ -26,6 +26,7 @@ A layer showing pharmacies, which (probably) dispense prescription drugs - [healthcare](https://mapcomplete.osm.be/healthcare) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [shops](https://mapcomplete.osm.be/shops) diff --git a/Docs/Layers/picnic_table.md b/Docs/Layers/picnic_table.md index 137bebbabd..9d8db48baa 100644 --- a/Docs/Layers/picnic_table.md +++ b/Docs/Layers/picnic_table.md @@ -27,6 +27,7 @@ The layer showing picnic tables - [benches](https://mapcomplete.osm.be/benches) - [nature](https://mapcomplete.osm.be/nature) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) @@ -61,6 +62,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/material#values) [material](https://wiki.openstreetmap.org/wiki/Key:material) | [string](../SpecialInputElements.md#string) | [wood](https://wiki.openstreetmap.org/wiki/Tag:material%3Dwood) [concrete](https://wiki.openstreetmap.org/wiki/Tag:material%3Dconcrete) [plastic](https://wiki.openstreetmap.org/wiki/Tag:material%3Dplastic) @@ -78,6 +80,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### picnic_table-material diff --git a/Docs/Layers/reception_desk.md b/Docs/Layers/reception_desk.md index 1d4937a054..de8187f46a 100644 --- a/Docs/Layers/reception_desk.md +++ b/Docs/Layers/reception_desk.md @@ -19,6 +19,18 @@ A layer showing where the reception desks are and which asks some accessibility +#### Themes using this layer + + + + + + - [onwheels](https://mapcomplete.osm.be/onwheels) + - [personal](https://mapcomplete.osm.be/personal) + + + + Basic tags for this layer --------------------------- @@ -48,6 +60,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/desk:height#values) [desk:height](https://wiki.openstreetmap.org/wiki/Key:desk:height) | [pfloat](../SpecialInputElements.md#pfloat) | [](https://taginfo.openstreetmap.org/keys/hearing_loop#values) [hearing_loop](https://wiki.openstreetmap.org/wiki/Key:hearing_loop) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dno) @@ -66,6 +79,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### desk-height diff --git a/Docs/Layers/school.md b/Docs/Layers/school.md index 44326b4b19..3132fd9c16 100644 --- a/Docs/Layers/school.md +++ b/Docs/Layers/school.md @@ -28,6 +28,7 @@ Schools giving primary and secondary education and post-secondary, non-tertiary - [education](https://mapcomplete.osm.be/education) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) diff --git a/Docs/Layers/shops.md b/Docs/Layers/shops.md index 88b9cd86bc..51c5d9baf1 100644 --- a/Docs/Layers/shops.md +++ b/Docs/Layers/shops.md @@ -25,6 +25,7 @@ A shop + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [pets](https://mapcomplete.osm.be/pets) - [shops](https://mapcomplete.osm.be/shops) @@ -67,6 +68,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | [](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | [](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) @@ -369,6 +371,31 @@ The question is Which methods of payment are accepted here? +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### copyshop-print-sizes diff --git a/Docs/Layers/toilet.md b/Docs/Layers/toilet.md index 71d425ef2d..c9f90d4ed9 100644 --- a/Docs/Layers/toilet.md +++ b/Docs/Layers/toilet.md @@ -26,6 +26,7 @@ A layer showing (public) toilets - [nature](https://mapcomplete.osm.be/nature) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [toilets](https://mapcomplete.osm.be/toilets) @@ -61,18 +62,18 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [no](https://wiki.openstreetmap.org/wiki/Tag:access%3Dno) [key](https://wiki.openstreetmap.org/wiki/Tag:access%3Dkey) [](https://taginfo.openstreetmap.org/keys/fee#values) [fee](https://wiki.openstreetmap.org/wiki/Key:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:fee%3Dno) [](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) | [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7) -[](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) +[](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | [](https://taginfo.openstreetmap.org/keys/toilets:position#values) [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal) [](https://taginfo.openstreetmap.org/keys/changing_table#values) [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno) [](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room) [](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno) [](https://taginfo.openstreetmap.org/keys/toilets:paper_supplied#values) [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno) -[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) | @@ -90,6 +91,31 @@ This tagrendering has no question and is thus read-only +### level + + + +The question is On what level is this feature located? + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with Located on the {level}th floor + + + + + + - Located underground corresponds with `location=underground` + - This option cannot be chosen as answer + - Located on the ground floor corresponds with `level=0` + - Located on the ground floor corresponds with `` + - This option cannot be chosen as answer + - Located on the first floor corresponds with `level=1` + - Located on the first basement level corresponds with `level=-1` + + + + ### toilet-access @@ -197,6 +223,7 @@ The question is Is there a dedicated toilet for wheelchair users? - There is a dedicated toilet for wheelchair users corresponds with `wheelchair=yes` - No wheelchair access corresponds with `wheelchair=no` + - There is only a dedicated toilet for wheelchair users corresponds with `wheelchair=designated` @@ -305,31 +332,6 @@ The question is Does one have to bring their own toilet paper to this toilet? -### level - - - -The question is On what level is this feature located? - -This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) - -This is rendered with Located on the {level}th floor - - - - - - - Located underground corresponds with `location=underground` - - This option cannot be chosen as answer - - Located on the ground floor corresponds with `level=0` - - Located on the ground floor corresponds with `` - - This option cannot be chosen as answer - - Located on the first floor corresponds with `level=1` - - Located on the first basement level corresponds with `level=-1` - - - - ### description diff --git a/Docs/Layers/viewpoint.md b/Docs/Layers/viewpoint.md index 36bbb68d0a..a1d79938a5 100644 --- a/Docs/Layers/viewpoint.md +++ b/Docs/Layers/viewpoint.md @@ -19,6 +19,18 @@ A nice viewpoint or nice view. Ideal to add an image if no other category fits +#### Themes using this layer + + + + + + - [onwheels](https://mapcomplete.osm.be/onwheels) + - [personal](https://mapcomplete.osm.be/personal) + + + + Basic tags for this layer --------------------------- diff --git a/Docs/Layers/walls_and_buildings.md b/Docs/Layers/walls_and_buildings.md index 4f0dcdec5d..db4cedb862 100644 --- a/Docs/Layers/walls_and_buildings.md +++ b/Docs/Layers/walls_and_buildings.md @@ -35,6 +35,7 @@ Special builtin layer providing all walls and buildings. This layer is useful in - [aed](https://mapcomplete.osm.be/aed) - [entrances](https://mapcomplete.osm.be/entrances) + - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [surveillance](https://mapcomplete.osm.be/surveillance) diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md index c4ed606d51..f22383ee8f 100644 --- a/Docs/SpecialRenderings.md +++ b/Docs/SpecialRenderings.md @@ -83,6 +83,8 @@ Instead of using `{"render": {"en": "{some_special_visualisation(some_arg, some * [Example usage of nearby_images](#example-usage-of-nearby_images) + [mapillary_link](#mapillary_link) * [Example usage of mapillary_link](#example-usage-of-mapillary_link) + + [statistics](#statistics) + * [Example usage of statistics](#example-usage-of-statistics) + [auto_apply](#auto_apply) * [Example usage of auto_apply](#example-usage-of-auto_apply) @@ -277,7 +279,7 @@ url | _undefined_ | The url to share (default: current URL) ### canonical - Converts a short, canonical value into the long, translated text + Converts a short, canonical value into the long, translated text including the unit. This only works if a `unit` is defined for the corresponding value. The unit specification will be included in the text. name | default | description ------ | --------- | ------------- @@ -286,7 +288,7 @@ key | _undefined_ | The key of the tag to give the canonical text for #### Example usage of canonical - {canonical(length)} will give 42 metre (in french) + If the object has `length=42`, then `{canonical(length)}` will be shown as **42 meter** (in english), **42 metre** (in french), ... @@ -695,6 +697,16 @@ zoom | 18 | The startzoom of mapillary +### statistics + + Show general statistics about the elements currently in view. Intended to use on the `current_view`-layer + +#### Example usage of statistics + + `{statistics()}` + + + ### auto_apply A button to run many actions for many features at once. To effectively use this button, you'll need some ingredients: diff --git a/Docs/TagInfo/mapcomplete_benches.json b/Docs/TagInfo/mapcomplete_benches.json index 57812a40ef..642b3aa6e5 100644 --- a/Docs/TagInfo/mapcomplete_benches.json +++ b/Docs/TagInfo/mapcomplete_benches.json @@ -202,6 +202,35 @@ "key": "wikipedia", "description": "The layer 'Picnic tables allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Benches')" + }, + { + "key": "location", + "description": "Layer 'Picnic tables' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Benches')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Benches')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Benches') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Benches')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Benches')", + "value": "-1" + }, { "key": "material", "description": "Layer 'Picnic tables' shows and asks freeform values for key 'material' (in the MapComplete.osm.be theme 'Benches')" diff --git a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json index 7f889ce4d1..dfba13bcb6 100644 --- a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json +++ b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json @@ -51,6 +51,35 @@ "key": "wikipedia", "description": "The layer 'Cafés and pubs allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Cafés and pubs')" + }, + { + "key": "location", + "description": "Layer 'Cafés and pubs' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Cafés and pubs')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cafés and pubs')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Cafés and pubs') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cafés and pubs')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cafés and pubs')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Cafés and pubs')" diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json index c94313ca32..dd52d0f395 100644 --- a/Docs/TagInfo/mapcomplete_cyclofix.json +++ b/Docs/TagInfo/mapcomplete_cyclofix.json @@ -1024,6 +1024,11 @@ "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Drinking water showing features with this tag", "value": "drinking_water" }, + { + "key": "drinking_water", + "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Drinking water showing features with this tag", + "value": "yes" + }, { "key": "image", "description": "The layer 'Drinking water allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" diff --git a/Docs/TagInfo/mapcomplete_drinking_water.json b/Docs/TagInfo/mapcomplete_drinking_water.json index df7485549b..f88a09f7d3 100644 --- a/Docs/TagInfo/mapcomplete_drinking_water.json +++ b/Docs/TagInfo/mapcomplete_drinking_water.json @@ -15,6 +15,11 @@ "description": "The MapComplete theme Drinking Water has a layer Drinking water showing features with this tag", "value": "drinking_water" }, + { + "key": "drinking_water", + "description": "The MapComplete theme Drinking Water has a layer Drinking water showing features with this tag", + "value": "yes" + }, { "key": "image", "description": "The layer 'Drinking water allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" diff --git a/Docs/TagInfo/mapcomplete_entrances.json b/Docs/TagInfo/mapcomplete_entrances.json index f0206422d3..87bfd16abd 100644 --- a/Docs/TagInfo/mapcomplete_entrances.json +++ b/Docs/TagInfo/mapcomplete_entrances.json @@ -39,6 +39,10 @@ "description": "The MapComplete theme Entrances has a layer Entrance showing features with this tag", "value": "door" }, + { + "key": "door", + "description": "The MapComplete theme Entrances has a layer Entrance showing features with this tag" + }, { "key": "image", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" @@ -55,6 +59,35 @@ "key": "wikipedia", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Entrance' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Entrances')" + }, + { + "key": "location", + "description": "Layer 'Entrance' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Entrances')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", + "value": "-1" + }, { "key": "entrance", "description": "Layer 'Entrance' shows entrance=yes with a fixed text, namely 'No specific entrance type is known' (in the MapComplete.osm.be theme 'Entrances')", diff --git a/Docs/TagInfo/mapcomplete_food.json b/Docs/TagInfo/mapcomplete_food.json index bb1b45c30f..70e4c3c981 100644 --- a/Docs/TagInfo/mapcomplete_food.json +++ b/Docs/TagInfo/mapcomplete_food.json @@ -36,6 +36,35 @@ "key": "wikipedia", "description": "The layer 'Restaurants and fast food allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Restaurants and fast food')" + }, + { + "key": "location", + "description": "Layer 'Restaurants and fast food' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Restaurants and fast food') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Restaurants and fast food')" diff --git a/Docs/TagInfo/mapcomplete_fritures.json b/Docs/TagInfo/mapcomplete_fritures.json index a9936ed4c0..20b71812eb 100644 --- a/Docs/TagInfo/mapcomplete_fritures.json +++ b/Docs/TagInfo/mapcomplete_fritures.json @@ -40,6 +40,35 @@ "key": "wikipedia", "description": "The layer 'Fries shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Fries shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Fries shops')" + }, + { + "key": "location", + "description": "Layer 'Fries shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Fries shops')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Fries shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Fries shops')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Fries shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Fries shops') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Fries shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Fries shops')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Fries shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Fries shops')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Fries shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Fries shops')" diff --git a/Docs/TagInfo/mapcomplete_nature.json b/Docs/TagInfo/mapcomplete_nature.json index 7e3cacf7a9..1c14a5fd45 100644 --- a/Docs/TagInfo/mapcomplete_nature.json +++ b/Docs/TagInfo/mapcomplete_nature.json @@ -15,6 +15,11 @@ "description": "The MapComplete theme Into nature has a layer Drinking water showing features with this tag", "value": "drinking_water" }, + { + "key": "drinking_water", + "description": "The MapComplete theme Into nature has a layer Drinking water showing features with this tag", + "value": "yes" + }, { "key": "image", "description": "The layer 'Drinking water allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" @@ -581,6 +586,35 @@ "key": "wikipedia", "description": "The layer 'Picnic tables allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Into nature')" + }, + { + "key": "location", + "description": "Layer 'Picnic tables' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Into nature')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Into nature') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "-1" + }, { "key": "material", "description": "Layer 'Picnic tables' shows and asks freeform values for key 'material' (in the MapComplete.osm.be theme 'Into nature')" @@ -621,6 +655,35 @@ "key": "wikipedia", "description": "The layer 'Toilets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Into nature')" + }, + { + "key": "location", + "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Into nature')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Into nature') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "-1" + }, { "key": "access", "description": "Layer 'Toilets' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Into nature')" @@ -693,6 +756,11 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", "value": "no" }, + { + "key": "wheelchair", + "description": "Layer 'Toilets' shows wheelchair=designated with a fixed text, namely 'There is only a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", + "value": "designated" + }, { "key": "door:width", "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Into nature')" @@ -771,35 +839,6 @@ "description": "Layer 'Toilets' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", "value": "no" }, - { - "key": "level", - "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Into nature')" - }, - { - "key": "location", - "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Into nature')", - "value": "underground" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", - "value": "0" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Into nature') Picking this answer will delete the key level.", - "value": "" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", - "value": "1" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')", - "value": "-1" - }, { "key": "description", "description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Into nature')" diff --git a/Docs/TagInfo/mapcomplete_onwheels.json b/Docs/TagInfo/mapcomplete_onwheels.json index 93f89ca68a..aff117db03 100644 --- a/Docs/TagInfo/mapcomplete_onwheels.json +++ b/Docs/TagInfo/mapcomplete_onwheels.json @@ -10,579 +10,6 @@ "contact_email": "pietervdvn@posteo.net" }, "tags": [ - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "cycleway" - }, - { - "key": "cycleway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "lane" - }, - { - "key": "cycleway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "shared_lane" - }, - { - "key": "cycleway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "track" - }, - { - "key": "cyclestreet", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "yes" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "residential" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "tertiary" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "unclassified" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "primary" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "secondary" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "tertiary_link" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "primary_link" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "secondary_link" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "service" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "footway" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "pedestrian" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "living_street" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "path" - }, - { - "key": "bicycle", - "description": "The MapComplete theme OnWheels has a layer Cycleways and roads showing features with this tag", - "value": "designated" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=shared_lane with a fixed text, namely 'There is a shared lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "shared_lane" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=lane with a fixed text, namely 'There is a lane next to the road (separated with paint)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "lane" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=track with a fixed text, namely 'There is a track, but no cycleway drawn separately from this road on the map.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "track" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=separate with a fixed text, namely 'There is a separately drawn cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "separate" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "no" - }, - { - "key": "cycleway", - "description": "Layer 'Cycleways and roads' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "no" - }, - { - "key": "lit", - "description": "Layer 'Cycleways and roads' shows lit=yes with a fixed text, namely 'This street is lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "yes" - }, - { - "key": "lit", - "description": "Layer 'Cycleways and roads' shows lit=no with a fixed text, namely 'This road is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "no" - }, - { - "key": "lit", - "description": "Layer 'Cycleways and roads' shows lit=sunset-sunrise with a fixed text, namely 'This road is lit at night' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "sunset-sunrise" - }, - { - "key": "lit", - "description": "Layer 'Cycleways and roads' shows lit=24/7 with a fixed text, namely 'This road is lit 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "24/7" - }, - { - "key": "cyclestreet", - "description": "Layer 'Cycleways and roads' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet, and a 30km/h zone.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "yes" - }, - { - "key": "cyclestreet", - "description": "Layer 'Cycleways and roads' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "yes" - }, - { - "key": "cyclestreet", - "description": "Layer 'Cycleways and roads' shows with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key cyclestreet.", - "value": "" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'maxspeed' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows maxspeed=20 with a fixed text, namely 'The maximum speed is 20 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "20" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows maxspeed=30 with a fixed text, namely 'The maximum speed is 30 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "30" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows maxspeed=50 with a fixed text, namely 'The maximum speed is 50 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "50" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows maxspeed=70 with a fixed text, namely 'The maximum speed is 70 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "70" - }, - { - "key": "maxspeed", - "description": "Layer 'Cycleways and roads' shows maxspeed=90 with a fixed text, namely 'The maximum speed is 90 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "90" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'cycleway:surface' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=unpaved with a fixed text, namely 'This cycleway is unpaved' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "unpaved" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=paved with a fixed text, namely 'This cycleway is paved' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "paved" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=asphalt with a fixed text, namely 'This cycleway is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "asphalt" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=paving_stones with a fixed text, namely 'This cycleway is made of smooth paving stones' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "paving_stones" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=concrete with a fixed text, namely 'This cycleway is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "concrete" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=cobblestone with a fixed text, namely 'This cycleway is made of cobblestone (unhewn or sett)' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "cobblestone" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=unhewn_cobblestone with a fixed text, namely 'This cycleway is made of raw, natural cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "unhewn_cobblestone" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=sett with a fixed text, namely 'This cycleway is made of flat, square cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "sett" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=wood with a fixed text, namely 'This cycleway is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "wood" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=gravel with a fixed text, namely 'This cycleway is made of gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "gravel" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=fine_gravel with a fixed text, namely 'This cycleway is made of fine gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "fine_gravel" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=pebblestone with a fixed text, namely 'This cycleway is made of pebblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "pebblestone" - }, - { - "key": "cycleway:surface", - "description": "Layer 'Cycleways and roads' shows cycleway:surface=ground with a fixed text, namely 'This cycleway is made from raw ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "ground" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "excellent" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "good" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "intermediate" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "bad" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "very_bad" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "horrible" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "very_horrible" - }, - { - "key": "cycleway:smoothness", - "description": "Layer 'Cycleways and roads' shows cycleway:smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "impassable" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'surface' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=unpaved with a fixed text, namely 'This cycleway is unhardened' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "unpaved" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=paved with a fixed text, namely 'This cycleway is paved' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "paved" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=asphalt with a fixed text, namely 'This cycleway is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "asphalt" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=paving_stones with a fixed text, namely 'This cycleway is made of smooth paving stones' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "paving_stones" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=concrete with a fixed text, namely 'This cycleway is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "concrete" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=cobblestone with a fixed text, namely 'This cycleway is made of cobblestone (unhewn or sett)' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "cobblestone" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=unhewn_cobblestone with a fixed text, namely 'This cycleway is made of raw, natural cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "unhewn_cobblestone" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=sett with a fixed text, namely 'This cycleway is made of flat, square cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "sett" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=wood with a fixed text, namely 'This cycleway is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "wood" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=gravel with a fixed text, namely 'This cycleway is made of gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "gravel" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=fine_gravel with a fixed text, namely 'This cycleway is made of fine gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "fine_gravel" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=pebblestone with a fixed text, namely 'This cycleway is made of pebblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "pebblestone" - }, - { - "key": "surface", - "description": "Layer 'Cycleways and roads' shows surface=ground with a fixed text, namely 'This cycleway is made from raw ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "ground" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "excellent" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "good" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "intermediate" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "bad" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "very_bad" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "horrible" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "very_horrible" - }, - { - "key": "smoothness", - "description": "Layer 'Cycleways and roads' shows smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "impassable" - }, - { - "key": "width:carriageway", - "description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'width:carriageway' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign)
' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D9" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D10" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "none" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign)
' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D9" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D10" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G11 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "NL:G11" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G12a with a fixed text, namely 'Compulsory (moped)cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "NL:G12a" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G13 with a fixed text, namely 'Non-compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "NL:G13" - }, - { - "key": "traffic_sign", - "description": "Layer 'Cycleways and roads' shows traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "none" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M6 with a fixed text, namely 'Mopeds must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M6" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M13 with a fixed text, namely 'Speedpedelecs must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M13" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M14 with a fixed text, namely 'Mopeds and speedpedelecs must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M14" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M7 with a fixed text, namely 'Mopeds are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M7" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M15 with a fixed text, namely 'Speedpedelecs are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M15" - }, - { - "key": "cycleway:traffic_sign", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M16 with a fixed text, namely 'Mopeds and speedpedelecs are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "BE:D7;BE:M16" - }, - { - "key": "cycleway:traffic_sign:supplementary", - "description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign:supplementary=none with a fixed text, namely 'No supplementary traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "none" - }, - { - "key": "cycleway:buffer", - "description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'cycleway:buffer' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "cycleway:separation", - "description": "Layer 'Cycleways and roads' shows cycleway:separation=dashed_line with a fixed text, namely 'This cycleway is separated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "dashed_line" - }, - { - "key": "cycleway:separation", - "description": "Layer 'Cycleways and roads' shows cycleway:separation=solid_line with a fixed text, namely 'This cycleway is separated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "solid_line" - }, - { - "key": "cycleway:separation", - "description": "Layer 'Cycleways and roads' shows cycleway:separation=parking_lane with a fixed text, namely 'This cycleway is separated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "parking_lane" - }, - { - "key": "cycleway:separation", - "description": "Layer 'Cycleways and roads' shows cycleway:separation=kerb with a fixed text, namely 'This cycleway is separated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "kerb" - }, - { - "key": "separation", - "description": "Layer 'Cycleways and roads' shows separation=dashed_line with a fixed text, namely 'This cycleway is separated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "dashed_line" - }, - { - "key": "separation", - "description": "Layer 'Cycleways and roads' shows separation=solid_line with a fixed text, namely 'This cycleway is separated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "solid_line" - }, - { - "key": "separation", - "description": "Layer 'Cycleways and roads' shows separation=parking_lane with a fixed text, namely 'This cycleway is separated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "parking_lane" - }, - { - "key": "separation", - "description": "Layer 'Cycleways and roads' shows separation=kerb with a fixed text, namely 'This cycleway is separated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "kerb" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Pedestrian paths showing features with this tag", - "value": "footway" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Pedestrian paths showing features with this tag", - "value": "path" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Pedestrian paths showing features with this tag", - "value": "corridor" - }, - { - "key": "highway", - "description": "The MapComplete theme OnWheels has a layer Pedestrian paths showing features with this tag", - "value": "steps" - }, { "key": "amenity", "description": "The MapComplete theme OnWheels has a layer Bicycle pump and repair showing features with this tag", @@ -847,14 +274,26 @@ "key": "website", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" }, + { + "key": "contact:website", + "description": "Layer 'Bike repair/shop' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + }, { "key": "phone", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" }, + { + "key": "contact:phone", + "description": "Layer 'Bike repair/shop' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + }, { "key": "email", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" }, + { + "key": "contact:email", + "description": "Layer 'Bike repair/shop' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + }, { "key": "opening_hours", "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'OnWheels')" @@ -1099,6 +538,35 @@ "key": "wikipedia", "description": "The layer 'Cafés and pubs allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Cafés and pubs' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" @@ -1255,6 +723,10 @@ "description": "The MapComplete theme OnWheels has a layer Entrance showing features with this tag", "value": "door" }, + { + "key": "door", + "description": "The MapComplete theme OnWheels has a layer Entrance showing features with this tag" + }, { "key": "image", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" @@ -1271,6 +743,35 @@ "key": "wikipedia", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Entrance' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Entrance' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "entrance", "description": "Layer 'Entrance' shows entrance=yes with a fixed text, namely 'No specific entrance type is known' (in the MapComplete.osm.be theme 'OnWheels')", @@ -1435,6 +936,15 @@ "key": "width", "description": "Layer 'Entrance' shows and asks freeform values for key 'width' (in the MapComplete.osm.be theme 'OnWheels')" }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "kerb:height", + "description": "Layer 'Entrance' shows kerb:height=0 with a fixed text, namely 'This door does not have a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, { "key": "amenity", "description": "The MapComplete theme OnWheels has a layer Restaurants and fast food showing features with this tag", @@ -1461,6 +971,35 @@ "key": "wikipedia", "description": "The layer 'Restaurants and fast food allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Restaurants and fast food' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" @@ -1862,6 +1401,35 @@ "key": "wikipedia", "description": "The layer 'Parking allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Parking' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Parking' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Parking' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "parking", "description": "Layer 'Parking' shows parking=surface with a fixed text, namely 'This is a surface parking lot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", @@ -1951,6 +1519,35 @@ "key": "wikipedia", "description": "The layer 'Picnic tables allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Picnic tables' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "material", "description": "Layer 'Picnic tables' shows and asks freeform values for key 'material' (in the MapComplete.osm.be theme 'OnWheels')" @@ -2111,35 +1708,2431 @@ "key": "contact:email", "description": "Layer 'Primary and secondary schools' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" }, - { - "key": "school:language", - "description": "Layer 'Primary and secondary schools' shows and asks freeform values for key 'school:language' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "school:language", - "description": "Layer 'Primary and secondary schools' shows school:language=english with a fixed text, namely 'The main language of this school is unknown' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "english" - }, - { - "key": "school:language", - "description": "Layer 'Primary and secondary schools' shows school:language=french with a fixed text, namely 'French is the main language of {name}' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "french" - }, - { - "key": "school:language", - "description": "Layer 'Primary and secondary schools' shows school:language=dutch with a fixed text, namely 'Dutch is the main language of {name}' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "dutch" - }, - { - "key": "school:language", - "description": "Layer 'Primary and secondary schools' shows school:language=german with a fixed text, namely 'German is the main language of {name}' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "german" - }, { "key": "school:language", "description": "Layer 'Primary and secondary schools' shows with a fixed text, namely 'The main language of this school is unknown' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key school:language.", "value": "" }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ay with a fixed text, namely 'Aymara' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ay" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ab with a fixed text, namely 'Abkhaz' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ab" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=an with a fixed text, namely 'Aragonese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "an" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=de with a fixed text, namely 'German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "de" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ca with a fixed text, namely 'Catalan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ca" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=az with a fixed text, namely 'Azerbaijani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "az" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hr with a fixed text, namely 'Croatian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=eo with a fixed text, namely 'Esperanto' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "eo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ba with a fixed text, namely 'Bashkir' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ba" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ar with a fixed text, namely 'Arabic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ar" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=he with a fixed text, namely 'Hebrew' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "he" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gl with a fixed text, namely 'Galician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=el with a fixed text, namely 'Modern Greek' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "el" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cs with a fixed text, namely 'Czech' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=da with a fixed text, namely 'Danish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "da" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=af with a fixed text, namely 'Afrikaans' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "af" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ga with a fixed text, namely 'Irish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ga" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hi with a fixed text, namely 'Hindi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bg with a fixed text, namely 'Bulgarian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=be with a fixed text, namely 'Belarusian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "be" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gu with a fixed text, namely 'Gujarati' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cy with a fixed text, namely 'Welsh' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fr with a fixed text, namely 'French' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hsb with a fixed text, namely 'Upper Sorbian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hsb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fy with a fixed text, namely 'West Frisian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ak with a fixed text, namely 'Akan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ak" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=am with a fixed text, namely 'Amharic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "am" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=es with a fixed text, namely 'Spanish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "es" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bs with a fixed text, namely 'Bosnian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=diq with a fixed text, namely 'Zazaki' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "diq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dz with a fixed text, namely 'Dzongkha' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=co with a fixed text, namely 'Corsican' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "co" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cr with a fixed text, namely 'Cree' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=csb with a fixed text, namely 'Kashubian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "csb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gv with a fixed text, namely 'Manx' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cv with a fixed text, namely 'Chuvash' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bn with a fixed text, namely 'Bengali' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gd with a fixed text, namely 'Scottish Gaelic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=av with a fixed text, namely 'Avaric' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "av" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=awa with a fixed text, namely 'Awadhi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "awa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=br with a fixed text, namely 'Breton' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "br" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ee with a fixed text, namely 'Ewe' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ee" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dag with a fixed text, namely 'Dagbani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dag" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dv with a fixed text, namely 'Maldivian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fi with a fixed text, namely 'Finnish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=en with a fixed text, namely 'English' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "en" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ady with a fixed text, namely 'Adyghe' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ady" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=as with a fixed text, namely 'Assamese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "as" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gn with a fixed text, namely 'Guarani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hif with a fixed text, namely 'Fiji Hindi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hif" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ast with a fixed text, namely 'Asturian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ast" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dsb with a fixed text, namely 'Lower Sorbian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dsb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=haw with a fixed text, namely 'Hawaiian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "haw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=glk with a fixed text, namely 'Gilaki' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "glk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gag with a fixed text, namely 'Gagauz' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gag" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gan with a fixed text, namely 'Gan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gan" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ase with a fixed text, namely 'American Sign Language' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ase" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cal with a fixed text, namely 'Carolinian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cal" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gil with a fixed text, namely 'Gilbertese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gil" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=arz with a fixed text, namely 'Egyptian Arabic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "arz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ban with a fixed text, namely 'Balinese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ban" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hak with a fixed text, namely 'Hakka' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hak" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=din with a fixed text, namely 'Dinka' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "din" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=egl with a fixed text, namely 'Emilian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "egl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dty with a fixed text, namely 'Doteli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dty" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fa with a fixed text, namely 'Persian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cnr with a fixed text, namely 'Montenegrin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cnr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bxr with a fixed text, namely 'Russia Buriat' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bxr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ckb with a fixed text, namely 'Sorani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ckb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=eu with a fixed text, namely 'Basque' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "eu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=et with a fixed text, namely 'Estonian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "et" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bar with a fixed text, namely 'Bavarian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bar" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fo with a fixed text, namely 'Faroese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=frr with a fixed text, namely 'North Frisian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "frr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ch with a fixed text, namely 'Chamorro' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ch" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=chy with a fixed text, namely 'Cheyenne' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "chy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ce with a fixed text, namely 'Chechen' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ce" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=no with a fixed text, namely 'Norwegian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "no" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bjn with a fixed text, namely 'Banjar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bjn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ceb with a fixed text, namely 'Cebuano' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ceb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ha with a fixed text, namely 'Hausa' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ha" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=frp with a fixed text, namely 'Franco-Provençal' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "frp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=chr with a fixed text, namely 'Cherokee' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "chr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gcr with a fixed text, namely 'Guianan Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gcr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gor with a fixed text, namely 'Gorontalo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gor" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ext with a fixed text, namely 'Extremaduran' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ext" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fj with a fixed text, namely 'Fijian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fur with a fixed text, namely 'Friulian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fur" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bss with a fixed text, namely 'Kose' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bss" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=prg with a fixed text, namely 'Old Prussian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "prg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ses with a fixed text, namely 'Koyraboro Senni' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ses" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pko with a fixed text, namely 'Pökoot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pko" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ccp with a fixed text, namely 'Chakma' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ccp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dua with a fixed text, namely 'Duala' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dua" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tr with a fixed text, namely 'Turkish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ur with a fixed text, namely 'Urdu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ur" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bm with a fixed text, namely 'Bambara' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ff with a fixed text, namely 'Fula' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ff" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ru with a fixed text, namely 'Russian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ru" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sid with a fixed text, namely 'Sidamo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sid" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=niu with a fixed text, namely 'Niuean' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "niu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=oj with a fixed text, namely 'Ojibwe' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "oj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vot with a fixed text, namely 'Votic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vot" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bfi with a fixed text, namely 'British Sign Language' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bfi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bla with a fixed text, namely 'Blackfoot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bla" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bbc with a fixed text, namely 'Toba Batak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bbc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ctg with a fixed text, namely 'Chittagonian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ctg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=brh with a fixed text, namely 'Brahui' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "brh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bug with a fixed text, namely 'Bugis' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bug" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pa with a fixed text, namely 'Punjabi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pnb with a fixed text, namely 'Punjabi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pnb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=brx with a fixed text, namely 'Bodo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "brx" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sjd with a fixed text, namely 'Kildin Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sjd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bo with a fixed text, namely 'Tibetan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bi with a fixed text, namely 'Bislama' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cdo with a fixed text, namely 'Min Dong' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cdo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sw with a fixed text, namely 'Swahili' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gom with a fixed text, namely 'Goan Konkani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gom" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mfe with a fixed text, namely 'Mauritian Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mfe" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zh with a fixed text, namely 'Chinese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sdc with a fixed text, namely 'Sassarese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sdc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pdt with a fixed text, namely 'Plautdietsch' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pdt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sty with a fixed text, namely 'Siberian Tatar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sty" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rmc with a fixed text, namely 'Carpathian Romani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rmc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nys with a fixed text, namely 'Noongar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nys" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gsw-fr with a fixed text, namely 'Alsatian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gsw-fr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zun with a fixed text, namely 'Zuni' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zun" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sms with a fixed text, namely 'Skolt Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sms" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pis with a fixed text, namely 'Pijin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pis" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nr with a fixed text, namely 'Southern Ndebele' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=umu with a fixed text, namely 'Munsee' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "umu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gaa with a fixed text, namely 'Ga' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gaa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fon with a fixed text, namely 'Fon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fon" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=loz with a fixed text, namely 'Lozi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "loz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=crs with a fixed text, namely 'Seychellois Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "crs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tru with a fixed text, namely 'Turoyo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tru" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=agq with a fixed text, namely 'Aghem' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "agq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ary with a fixed text, namely 'Moroccan Arabic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ary" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=atj with a fixed text, namely 'Atikamekw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "atj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=alt with a fixed text, namely 'Altai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "alt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ta with a fixed text, namely 'Tamil' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ta" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ps with a fixed text, namely 'Pashto' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ps" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nqo with a fixed text, namely 'N'Ko' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nqo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ro with a fixed text, namely 'Romanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ro" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cbk-zam with a fixed text, namely 'Chavacano' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cbk-zam" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ovd with a fixed text, namely 'Elfdalian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ovd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vmf with a fixed text, namely 'Main-Franconian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vmf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bto with a fixed text, namely 'Rinconada Bikol' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bto" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bcc with a fixed text, namely 'Southern Balochi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bcc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=crl with a fixed text, namely 'Northern East Cree' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "crl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lrc with a fixed text, namely 'Northern Luri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lrc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=akl with a fixed text, namely 'Aklan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "akl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bpy with a fixed text, namely 'Bishnupriya Manipuri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bpy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mic with a fixed text, namely 'Mi'kmaq' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mic" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sk with a fixed text, namely 'Slovak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sl with a fixed text, namely 'Slovene' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ryu with a fixed text, namely 'Okinawan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ryu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yai with a fixed text, namely 'Yaghnobi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yai" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=efi with a fixed text, namely 'Efik' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "efi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=te with a fixed text, namely 'Telugu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "te" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yi with a fixed text, namely 'Yiddish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tg with a fixed text, namely 'Tajik' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bat-smg with a fixed text, namely 'Samogitian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bat-smg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nod with a fixed text, namely 'Northern Thai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nod" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lag with a fixed text, namely 'Rangi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lag" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=krj with a fixed text, namely 'Kinaray-a' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "krj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yap with a fixed text, namely 'Yapese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yap" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ydg with a fixed text, namely 'Yidgha' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ydg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vi with a fixed text, namely 'Vietnamese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=it with a fixed text, namely 'Italian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "it" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bzg with a fixed text, namely 'Babuza' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bzg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pyu with a fixed text, namely 'Puyuma' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pyu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=guc with a fixed text, namely 'Wayuu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "guc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ood with a fixed text, namely 'O'odham' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ood" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bdr with a fixed text, namely 'West Coast Bajau' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bdr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=btm with a fixed text, namely 'Mandailing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "btm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gcf with a fixed text, namely 'Guadeloupean Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gcf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=srq with a fixed text, namely 'Sirionó' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "srq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ins with a fixed text, namely 'Indian Sign Language' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ins" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rki with a fixed text, namely 'Arakanese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rki" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wls with a fixed text, namely 'Wallisian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wls" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sje with a fixed text, namely 'Pite Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sje" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=smj with a fixed text, namely 'Lule Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "smj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kum with a fixed text, namely 'Kumyk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kum" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nui with a fixed text, namely 'Kombe' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nui" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zh-min-nan with a fixed text, namely 'Southern Min' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zh-min-nan" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pl with a fixed text, namely 'Polish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cpx with a fixed text, namely 'Pu-Xian Min' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cpx" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=khg with a fixed text, namely 'Khams Tibetan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "khg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fkv with a fixed text, namely 'Kven' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fkv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fuf with a fixed text, namely 'Pular' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fuf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=jax with a fixed text, namely 'Jambi Malay' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "jax" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dtp with a fixed text, namely 'Kadazandusun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dtp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zgh with a fixed text, namely 'Standard Moroccan Berber' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zgh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bgn with a fixed text, namely 'Western Balochi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bgn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yav with a fixed text, namely 'Yangben' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yav" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sv with a fixed text, namely 'Swedish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=azb with a fixed text, namely 'South Azerbaijani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "azb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=xnb with a fixed text, namely 'Kanakanavu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "xnb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fa-af with a fixed text, namely 'Dari' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fa-af" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=qu with a fixed text, namely 'Quechua' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "qu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sei with a fixed text, namely 'Seri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sei" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sq with a fixed text, namely 'Albanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=uk with a fixed text, namely 'Ukrainian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "uk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=uz with a fixed text, namely 'Uzbek' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "uz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ka with a fixed text, namely 'Georgian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ka" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pt with a fixed text, namely 'Portuguese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hy with a fixed text, namely 'Armenian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nl with a fixed text, namely 'Dutch' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rm with a fixed text, namely 'Romansh' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=aln with a fixed text, namely 'Gheg Albanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "aln" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mr with a fixed text, namely 'Marathi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mg with a fixed text, namely 'Malagasy' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sh with a fixed text, namely 'Serbo-Croatian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zu with a fixed text, namely 'Zulu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=is with a fixed text, namely 'Icelandic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "is" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lb with a fixed text, namely 'Luxembourgish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tk with a fixed text, namely 'Turkmen' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=th with a fixed text, namely 'Thai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "th" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ja with a fixed text, namely 'Japanese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ja" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lv with a fixed text, namely 'Latvian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rmy with a fixed text, namely 'Romani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rmy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=km with a fixed text, namely 'Khmer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "km" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lo with a fixed text, namely 'Lao' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=so with a fixed text, namely 'Somali' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "so" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sma with a fixed text, namely 'Southern Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sma" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=moe with a fixed text, namely 'Innu-aimun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "moe" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sr with a fixed text, namely 'Serbian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lt with a fixed text, namely 'Lithuanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hu with a fixed text, namely 'Hungarian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=my with a fixed text, namely 'Burmese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "my" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ms with a fixed text, namely 'Malay' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ms" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=xh with a fixed text, namely 'Xhosa' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "xh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=udm with a fixed text, namely 'Udmurt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "udm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rue with a fixed text, namely 'Rusyn' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rue" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=stq with a fixed text, namely 'Saterland Frisian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "stq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ky with a fixed text, namely 'Kyrgyz' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ky" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mt with a fixed text, namely 'Maltese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mk with a fixed text, namely 'Macedonian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=za with a fixed text, namely 'Zhuang' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "za" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ug with a fixed text, namely 'Uyghur' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ug" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ko with a fixed text, namely 'Korean' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ko" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=si with a fixed text, namely 'Sinhala' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "si" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kk with a fixed text, namely 'Kazakh' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=na with a fixed text, namely 'Nauruan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "na" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nv with a fixed text, namely 'Navajo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fit with a fixed text, namely 'Meänkieli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fit" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=xmf with a fixed text, namely 'Mingrelian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "xmf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=aa with a fixed text, namely 'Afar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "aa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=anp with a fixed text, namely 'Angika' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "anp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rup with a fixed text, namely 'Aromanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rup" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vec with a fixed text, namely 'Venetian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vec" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vep with a fixed text, namely 'Veps' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vep" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bh with a fixed text, namely 'Bhojpuri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=shy with a fixed text, namely 'Shawiya' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "shy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hz with a fixed text, namely 'Herero' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mnw with a fixed text, namely 'Mon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mnw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mzn with a fixed text, namely 'Mazanderani' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mzn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=oc with a fixed text, namely 'Occitan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "oc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=id with a fixed text, namely 'Indonesian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "id" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ve with a fixed text, namely 'Venda' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ve" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=min with a fixed text, namely 'Minangkabau' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "min" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mwl with a fixed text, namely 'Mirandese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mwl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pdc with a fixed text, namely 'Pennsylvania German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pdc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pfl with a fixed text, namely 'Palatinate German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pfl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nn with a fixed text, namely 'Nynorsk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nb with a fixed text, namely 'Bokmål' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kw with a fixed text, namely 'Cornish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sco with a fixed text, namely 'Scots' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sco" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mdf with a fixed text, namely 'Moksha' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mdf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sd with a fixed text, namely 'Sindhi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tt with a fixed text, namely 'Tatar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=szl with a fixed text, namely 'Silesian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "szl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kaa with a fixed text, namely 'Karakalpak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kaa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=jv with a fixed text, namely 'Javanese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "jv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tl with a fixed text, namely 'Tagalog' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=to with a fixed text, namely 'Tongan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "to" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=myv with a fixed text, namely 'Erzya' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "myv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lez with a fixed text, namely 'Lezgian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lez" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cho with a fixed text, namely 'Choctaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cho" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kl with a fixed text, namely 'Greenlandic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pms with a fixed text, namely 'Piedmontese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pms" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=crh with a fixed text, namely 'Crimean Tatar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "crh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=smn with a fixed text, namely 'Inari Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "smn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ksh with a fixed text, namely 'Ripuarian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ksh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ny with a fixed text, namely 'Chewa' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ny" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mn with a fixed text, namely 'Mongolian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ks with a fixed text, namely 'Kashmiri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ks" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ig with a fixed text, namely 'Igbo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ig" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rw with a fixed text, namely 'Kinyarwanda' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nds with a fixed text, namely 'Low German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nds" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ng with a fixed text, namely 'Ndonga' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ng" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=skr with a fixed text, namely 'Saraiki' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "skr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=se with a fixed text, namely 'Northern Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "se" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ik with a fixed text, namely 'Inupiaq' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ik" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kjh with a fixed text, namely 'Khakas' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kjh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ne with a fixed text, namely 'Nepali' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ne" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nap with a fixed text, namely 'Neapolitan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nap" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lg with a fixed text, namely 'Luganda' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ht with a fixed text, namely 'Haitian Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ht" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=os with a fixed text, namely 'Ossetian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "os" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=new with a fixed text, namely 'Newar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "new" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=su with a fixed text, namely 'Sundanese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "su" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=iu with a fixed text, namely 'Inuktitut' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "iu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ki with a fixed text, namely 'Gikuyu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ki" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kn with a fixed text, namely 'Kannada' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=inh with a fixed text, namely 'Ingush' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "inh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pcd with a fixed text, namely 'Picard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pcd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sc with a fixed text, namely 'Sardinian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=srn with a fixed text, namely 'Sranan Tongo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "srn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rn with a fixed text, namely 'Kirundi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ho with a fixed text, namely 'Hiri Motu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ho" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sg with a fixed text, namely 'Sango' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pap with a fixed text, namely 'Papiamento' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pap" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kbd with a fixed text, namely 'Kabardian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kbd" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=or with a fixed text, namely 'Odia' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "or" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=arn with a fixed text, namely 'Mapudungun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "arn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=om with a fixed text, namely 'Oromo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "om" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sat with a fixed text, namely 'Santali' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sat" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ii with a fixed text, namely 'Nuosu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ii" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kbp with a fixed text, namely 'Kabiye' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kbp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kab with a fixed text, namely 'Kabyle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kab" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kg with a fixed text, namely 'Kongo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=krc with a fixed text, namely 'Karachay-Balkar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "krc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tum with a fixed text, namely 'Tumbuka' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tum" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tsg with a fixed text, namely 'Tausug' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tsg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=shi with a fixed text, namely 'Shilha' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "shi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sn with a fixed text, namely 'Shona' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tpi with a fixed text, namely 'Tok Pisin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tpi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rif with a fixed text, namely 'Tarifit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rif" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tyv with a fixed text, namely 'Tuvan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tyv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ti with a fixed text, namely 'Tigrinya' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ti" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tet with a fixed text, namely 'Tetum' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tet" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=scn with a fixed text, namely 'Sicilian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "scn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lmo with a fixed text, namely 'Lombard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lmo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ilo with a fixed text, namely 'Ilocano' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ilo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sm with a fixed text, namely 'Samoan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ss with a fixed text, namely 'Swazi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ss" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mni with a fixed text, namely 'Meitei' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mni" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kv with a fixed text, namely 'Komi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ku with a fixed text, namely 'Kurdish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ku" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lad with a fixed text, namely 'Judaeo-Spanish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lad" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ts with a fixed text, namely 'Tsonga' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ts" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=st with a fixed text, namely 'Sesotho' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "st" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lij with a fixed text, namely 'Ligurian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lij" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mai with a fixed text, namely 'Maithili' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mai" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tvl with a fixed text, namely 'Tuvaluan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tvl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tn with a fixed text, namely 'Tswana' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wa with a fixed text, namely 'Walloon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nan with a fixed text, namely 'Southern Min' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nan" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pih with a fixed text, namely 'Pitkern' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pih" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lld with a fixed text, namely 'Ladin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lld" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ty with a fixed text, namely 'Tahitian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ty" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wo with a fixed text, namely 'Wolof' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=war with a fixed text, namely 'Waray' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "war" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lbe with a fixed text, namely 'Lak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lbe" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ltg with a fixed text, namely 'Latgalian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ltg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mad with a fixed text, namely 'Madurese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mad" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mh with a fixed text, namely 'Marshallese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mo with a fixed text, namely 'Moldovan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yrk with a fixed text, namely 'Nenets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yrk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=chn with a fixed text, namely 'Chinook Jargon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "chn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kr with a fixed text, namely 'Kanuri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tw with a fixed text, namely 'Twi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=shn with a fixed text, namely 'Shan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "shn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=vls with a fixed text, namely 'West Flemish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "vls" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pag with a fixed text, namely 'Pangasinan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pag" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nso with a fixed text, namely 'Northern Sotho' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nso" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ln with a fixed text, namely 'Lingala' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ln" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zea with a fixed text, namely 'Zeelandic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zea" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tay with a fixed text, namely 'Atayal' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tay" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wuu with a fixed text, namely 'Wu Chinese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wuu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sah with a fixed text, namely 'Sakha' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sah" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=jam with a fixed text, namely 'Jamaican Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "jam" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lkt with a fixed text, namely 'Lakota' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lkt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=krl with a fixed text, namely 'Karelian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "krl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tcy with a fixed text, namely 'Tulu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tcy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sju with a fixed text, namely 'Ume Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sju" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sou with a fixed text, namely 'Southern Thai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sou" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=adx with a fixed text, namely 'Amdo Tibetan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "adx" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sli with a fixed text, namely 'Silesian German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sli" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=als with a fixed text, namely 'Swiss German' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "als" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kha with a fixed text, namely 'Khasi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kha" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mnc with a fixed text, namely 'Manchu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mnc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yo with a fixed text, namely 'Yoruba' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ml with a fixed text, namely 'Malayalam' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ml" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hai with a fixed text, namely 'Haida' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hai" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kut with a fixed text, namely 'Kutenai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kut" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hoc with a fixed text, namely 'Ho' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hoc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gsg with a fixed text, namely 'German Sign Language' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gsg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=li with a fixed text, namely 'Limburgish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "li" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hyw with a fixed text, namely 'Western Armenian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hyw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=esu with a fixed text, namely 'Central Alaskan Yup'ik' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "esu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=abq with a fixed text, namely 'Abaza' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "abq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tli with a fixed text, namely 'Tlingit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tli" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=trv with a fixed text, namely 'Seediq' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "trv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=szy with a fixed text, namely 'Sakizaya' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "szy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lus with a fixed text, namely 'Mizo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lus" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=olo with a fixed text, namely 'Livvi-Karelian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "olo" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pnt with a fixed text, namely 'Pontic Greek' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pnt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=koi with a fixed text, namely 'Permyak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "koi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nog with a fixed text, namely 'Nogai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nog" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wbl with a fixed text, namely 'Wakhi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wbl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tly with a fixed text, namely 'Talysh' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tly" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mhr with a fixed text, namely 'Meadow Mari' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mhr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ruq with a fixed text, namely 'Megleno-Romanian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ruq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mwv with a fixed text, namely 'Mentawai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mwv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=koy with a fixed text, namely 'Koyukon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "koy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=clc with a fixed text, namely 'Chilcotin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "clc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fiu-vro with a fixed text, namely 'Võro' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fiu-vro" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=frc with a fixed text, namely 'Louisiana French' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "frc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=guw with a fixed text, namely 'Gun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "guw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cnh with a fixed text, namely 'Hakha-Chin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cnh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sjm with a fixed text, namely 'Mapun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sjm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bzs with a fixed text, namely 'Brazilian Sign Language' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bzs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kcg with a fixed text, namely 'Tyap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kcg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mi with a fixed text, namely 'Māori' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=aeb with a fixed text, namely 'Tunisian Arabic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "aeb" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nrf-gg with a fixed text, namely 'Guernésiais' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nrf-gg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lki with a fixed text, namely 'Laki' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lki" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bej with a fixed text, namely 'Beja' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bej" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ckt with a fixed text, namely 'Chukchi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ckt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mus with a fixed text, namely 'Muscogee' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mus" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pwn with a fixed text, namely 'Paiwan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pwn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kj with a fixed text, namely 'Kwanyama' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rgn with a fixed text, namely 'Romagnol' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rgn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=abs with a fixed text, namely 'Ambonese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "abs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sxr with a fixed text, namely 'Saaroa' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sxr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ckv with a fixed text, namely 'Kavalan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ckv" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tsu with a fixed text, namely 'Tsou' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tsu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=xsy with a fixed text, namely 'Saisiyat' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "xsy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lvk with a fixed text, namely 'Lavukaleve' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lvk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zh-yue with a fixed text, namely 'Yue Chinese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zh-yue" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tvn with a fixed text, namely 'Tavoyan' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tvn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pmy with a fixed text, namely 'Papuan Malay' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pmy" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kbg with a fixed text, namely 'Khamba' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kbg" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rwr with a fixed text, namely 'Marwari' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rwr" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ttm with a fixed text, namely 'Northern Tutchone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ttm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mrj with a fixed text, namely 'Hill Mari' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mrj" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nia with a fixed text, namely 'Nias' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nia" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=yrl with a fixed text, namely 'Nheengatu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yrl" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cak with a fixed text, namely 'Kaqchikel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cak" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ami with a fixed text, namely 'Amis' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ami" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=krx with a fixed text, namely 'Karon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "krx" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hil with a fixed text, namely 'Hiligaynon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hil" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=uun with a fixed text, namely 'Pazeh' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "uun" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sjt with a fixed text, namely 'Ter Sami' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sjt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wal with a fixed text, namely 'Wolaytta' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wal" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=wym with a fixed text, namely 'Vilamovian' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "wym" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=arq with a fixed text, namely 'Algerian Arabic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "arq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bsk with a fixed text, namely 'Burushaski' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bsk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bqi with a fixed text, namely 'Bakhtiari' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bqi" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=hrx with a fixed text, namely 'Hunsrik' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hrx" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ssf with a fixed text, namely 'Thao' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ssf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=mrh with a fixed text, namely 'Mara' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "mrh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=aoc with a fixed text, namely 'Pemon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "aoc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tsk with a fixed text, namely 'Tseku' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tsk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=luz with a fixed text, namely 'Southern Luri' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "luz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tce with a fixed text, namely 'Southern Tutchone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tce" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=quc with a fixed text, namely 'K’iche’' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "quc" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bnn with a fixed text, namely 'Bunun' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bnn" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=lzz with a fixed text, namely 'Laz' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "lzz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=sdh with a fixed text, namely 'Southern Kurdish' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "sdh" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=nsk with a fixed text, namely 'Naskapi' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "nsk" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=akz with a fixed text, namely 'Alabama' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "akz" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kri with a fixed text, namely 'Krio' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kri" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kea with a fixed text, namely 'Cape Verdean Creole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kea" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=dru with a fixed text, namely 'Rukai' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "dru" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=tzm with a fixed text, namely 'Central Atlas Tamazight' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "tzm" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=bfq with a fixed text, namely 'Badaga' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "bfq" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=khw with a fixed text, namely 'Khowar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "khw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=uzs with a fixed text, namely 'Southern Uzbek' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "uzs" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rmf with a fixed text, namely 'Finnish Kalo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rmf" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=osa with a fixed text, namely 'Osage' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "osa" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=cps with a fixed text, namely 'Capiznon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "cps" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pjt with a fixed text, namely 'Pitjantjatjara' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pjt" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kjp with a fixed text, namely 'Eastern Pwo' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kjp" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=gpe with a fixed text, namely 'Ghanaian Pidgin English' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "gpe" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=kiu with a fixed text, namely 'Kirmanjki' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "kiu" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=rar with a fixed text, namely 'Cook Islands Maori' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "rar" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=ksw with a fixed text, namely 'S'gaw Karen' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ksw" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=zh_Hant with a fixed text, namely 'Simplified Chinese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "zh_Hant" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=pt_BR with a fixed text, namely 'Brazilian Portuguese' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "pt_BR" + }, + { + "key": "school:language", + "description": "Layer 'Primary and secondary schools' shows school:language=fil with a fixed text, namely 'Filipino' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "fil" + }, { "key": "shop", "description": "The MapComplete theme OnWheels has a layer Shop showing features with this tag" @@ -3006,6 +4999,35 @@ "description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "yes" }, + { + "key": "level", + "description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "service:print:A4", "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", @@ -3052,6 +5074,35 @@ "key": "wikipedia", "description": "The layer 'Toilets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, { "key": "access", "description": "Layer 'Toilets' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'OnWheels')" @@ -3124,6 +5175,15 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "no" }, + { + "key": "wheelchair", + "description": "Layer 'Toilets' shows wheelchair=designated with a fixed text, namely 'There is only a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "designated" + }, + { + "key": "door:width", + "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'OnWheels')" + }, { "key": "toilets:position", "description": "Layer 'Toilets' shows toilets:position=seated with a fixed text, namely 'There are only seated toilets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", @@ -3198,35 +5258,6 @@ "description": "Layer 'Toilets' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "no" }, - { - "key": "level", - "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" - }, - { - "key": "location", - "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", - "value": "underground" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "0" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", - "value": "" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "1" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", - "value": "-1" - }, { "key": "description", "description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'OnWheels')" @@ -3258,90 +5289,506 @@ }, { "key": "amenity", - "description": "The MapComplete theme OnWheels has a layer doctors showing features with this tag", + "description": "The MapComplete theme OnWheels has a layer pharmacy showing features with this tag", + "value": "pharmacy" + }, + { + "key": "image", + "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'pharmacy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "name", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "opening_hours", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "phone", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:phone", + "description": "Layer 'pharmacy' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "email", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:email", + "description": "Layer 'pharmacy' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "website", + "description": "Layer 'pharmacy' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:website", + "description": "Layer 'pharmacy' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "wheelchair", + "description": "Layer 'pharmacy' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yes" + }, + { + "key": "wheelchair", + "description": "Layer 'pharmacy' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "no" + }, + { + "key": "wheelchair", + "description": "Layer 'pharmacy' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "limited" + }, + { + "key": "amenity", + "description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag", "value": "doctors" }, { "key": "amenity", - "description": "The MapComplete theme OnWheels has a layer doctors showing features with this tag", + "description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag", "value": "dentist" }, { "key": "healthcare", - "description": "The MapComplete theme OnWheels has a layer doctors showing features with this tag", + "description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag", "value": "physiotherapist" }, { "key": "image", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Doctors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "opening_hours", - "description": "Layer 'doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "phone", - "description": "Layer 'doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "contact:phone", - "description": "Layer 'doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "email", - "description": "Layer 'doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "contact:email", - "description": "Layer 'doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "website", - "description": "Layer 'doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "contact:website", - "description": "Layer 'doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "name", - "description": "Layer 'doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'OnWheels')" + "description": "Layer 'Doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'OnWheels')" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "description": "Layer 'Doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "general" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "description": "Layer 'Doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "gynaecology" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "description": "Layer 'Doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "psychiatry" }, { "key": "healthcare:speciality", - "description": "Layer 'doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "description": "Layer 'Doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", "value": "paediatrics" + }, + { + "key": "amenity", + "description": "The MapComplete theme OnWheels has a layer Hospitals showing features with this tag", + "value": "hospital" + }, + { + "key": "name", + "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "phone", + "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:phone", + "description": "Layer 'Hospitals' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "email", + "description": "Layer 'Hospitals' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:email", + "description": "Layer 'Hospitals' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "website", + "description": "Layer 'Hospitals' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:website", + "description": "Layer 'Hospitals' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "amenity", + "description": "The MapComplete theme OnWheels has a layer Reception desks showing features with this tag", + "value": "reception_desk" + }, + { + "key": "image", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'Reception desks' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, + { + "key": "desk:height", + "description": "Layer 'Reception desks' shows and asks freeform values for key 'desk:height' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "hearing_loop", + "description": "Layer 'Reception desks' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yes" + }, + { + "key": "hearing_loop", + "description": "Layer 'Reception desks' shows hearing_loop=no with a fixed text, namely 'This place does not has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "no" + }, + { + "key": "highway", + "description": "The MapComplete theme OnWheels has a layer elevator showing features with this tag", + "value": "elevator" + }, + { + "key": "image", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "level", + "description": "Layer 'elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "location", + "description": "Layer 'elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "-1" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "broken" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed e.g. because renovation works are going on' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "closed" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "ok" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key operational_status.", + "value": "" + }, + { + "key": "door:width", + "description": "Layer 'elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "elevator:width", + "description": "Layer 'elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "elevator:depth", + "description": "Layer 'elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "hearing_loop", + "description": "Layer 'elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yes" + }, + { + "key": "hearing_loop", + "description": "Layer 'elevator' shows hearing_loop=no with a fixed text, namely 'This place does not has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "no" + }, + { + "key": "tourism", + "description": "The MapComplete theme OnWheels has a layer Hotels showing features with this tag", + "value": "hotel" + }, + { + "key": "image", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "name", + "description": "Layer 'Hotels' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "phone", + "description": "Layer 'Hotels' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:phone", + "description": "Layer 'Hotels' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "email", + "description": "Layer 'Hotels' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:email", + "description": "Layer 'Hotels' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "website", + "description": "Layer 'Hotels' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:website", + "description": "Layer 'Hotels' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "designated" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=yes with a fixed text, namely 'This place is easily reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "yes" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=limited with a fixed text, namely 'It is possible to reach this place in a wheelchair, but it is not easy' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "limited" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "no" + }, + { + "key": "office", + "description": "The MapComplete theme OnWheels has a layer governments showing features with this tag", + "value": "government" + }, + { + "key": "image", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'governments allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "phone", + "description": "Layer 'governments' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:phone", + "description": "Layer 'governments' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "email", + "description": "Layer 'governments' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:email", + "description": "Layer 'governments' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "website", + "description": "Layer 'governments' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "contact:website", + "description": "Layer 'governments' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "name", + "description": "Layer 'governments' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" + }, + { + "key": "indoor", + "description": "The MapComplete theme OnWheels has a layer indoors showing features with this tag", + "value": "room" + }, + { + "key": "indoor", + "description": "The MapComplete theme OnWheels has a layer indoors showing features with this tag", + "value": "area" + }, + { + "key": "indoor", + "description": "The MapComplete theme OnWheels has a layer indoors showing features with this tag", + "value": "wall" + }, + { + "key": "indoor", + "description": "The MapComplete theme OnWheels has a layer indoors showing features with this tag", + "value": "door" + }, + { + "key": "indoor", + "description": "The MapComplete theme OnWheels has a layer indoors showing features with this tag", + "value": "level" + }, + { + "key": "image", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'indoors allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" } ] } \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_parkings.json b/Docs/TagInfo/mapcomplete_parkings.json index ea8f135af1..aac1019d25 100644 --- a/Docs/TagInfo/mapcomplete_parkings.json +++ b/Docs/TagInfo/mapcomplete_parkings.json @@ -31,6 +31,35 @@ "key": "wikipedia", "description": "The layer 'Parking allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Parking' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Parking')" + }, + { + "key": "location", + "description": "Layer 'Parking' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Parking')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Parking' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Parking') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "-1" + }, { "key": "parking", "description": "Layer 'Parking' shows parking=surface with a fixed text, namely 'This is a surface parking lot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", diff --git a/Docs/TagInfo/mapcomplete_personal.json b/Docs/TagInfo/mapcomplete_personal.json index d9a4b828af..dd591769c7 100644 --- a/Docs/TagInfo/mapcomplete_personal.json +++ b/Docs/TagInfo/mapcomplete_personal.json @@ -10,26 +10,6 @@ "contact_email": "pietervdvn@posteo.net" }, "tags": [ - { - "key": "highway", - "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", - "value": "footway" - }, - { - "key": "highway", - "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", - "value": "path" - }, - { - "key": "highway", - "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", - "value": "corridor" - }, - { - "key": "highway", - "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", - "value": "steps" - }, { "key": "emergency", "description": "The MapComplete theme Personal theme has a layer Map of ambulance stations showing features with this tag", @@ -1953,6 +1933,35 @@ "key": "wikipedia", "description": "The layer 'Cafés and pubs allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Cafés and pubs' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Cafés and pubs' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" @@ -4728,6 +4737,11 @@ "description": "The MapComplete theme Personal theme has a layer Drinking water showing features with this tag", "value": "drinking_water" }, + { + "key": "drinking_water", + "description": "The MapComplete theme Personal theme has a layer Drinking water showing features with this tag", + "value": "yes" + }, { "key": "image", "description": "The layer 'Drinking water allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" @@ -4773,6 +4787,98 @@ "description": "Layer 'Drinking water' shows bottle=no with a fixed text, namely 'Water bottles may not fit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, + { + "key": "highway", + "description": "The MapComplete theme Personal theme has a layer elevator showing features with this tag", + "value": "elevator" + }, + { + "key": "image", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "level", + "description": "Layer 'elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "broken" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed e.g. because renovation works are going on' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "closed" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "ok" + }, + { + "key": "operational_status", + "description": "Layer 'elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key operational_status.", + "value": "" + }, + { + "key": "door:width", + "description": "Layer 'elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "elevator:width", + "description": "Layer 'elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "elevator:depth", + "description": "Layer 'elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "hearing_loop", + "description": "Layer 'elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "hearing_loop", + "description": "Layer 'elevator' shows hearing_loop=no with a fixed text, namely 'This place does not has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, { "key": "entrance", "description": "The MapComplete theme Personal theme has a layer Entrance showing features with this tag" @@ -4782,6 +4888,10 @@ "description": "The MapComplete theme Personal theme has a layer Entrance showing features with this tag", "value": "door" }, + { + "key": "door", + "description": "The MapComplete theme Personal theme has a layer Entrance showing features with this tag" + }, { "key": "image", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" @@ -4798,6 +4908,35 @@ "key": "wikipedia", "description": "The layer 'Entrance allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Entrance' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Entrance' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Entrance' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "entrance", "description": "Layer 'Entrance' shows entrance=yes with a fixed text, namely 'No specific entrance type is known' (in the MapComplete.osm.be theme 'Personal theme')", @@ -5156,6 +5295,35 @@ "key": "wikipedia", "description": "The layer 'Restaurants and fast food allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Restaurants and fast food' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Restaurants and fast food' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" @@ -5727,6 +5895,75 @@ "key": "contact:website", "description": "Layer 'Hospitals' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "tourism", + "description": "The MapComplete theme Personal theme has a layer Hotels showing features with this tag", + "value": "hotel" + }, + { + "key": "image", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Hotels allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "name", + "description": "Layer 'Hotels' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "phone", + "description": "Layer 'Hotels' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:phone", + "description": "Layer 'Hotels' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "email", + "description": "Layer 'Hotels' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:email", + "description": "Layer 'Hotels' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "website", + "description": "Layer 'Hotels' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "contact:website", + "description": "Layer 'Hotels' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "designated" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=yes with a fixed text, namely 'This place is easily reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=limited with a fixed text, namely 'It is possible to reach this place in a wheelchair, but it is not easy' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "limited" + }, + { + "key": "wheelchair", + "description": "Layer 'Hotels' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, { "key": "emergency", "description": "The MapComplete theme Personal theme has a layer Map of hydrants showing features with this tag", @@ -6468,6 +6705,35 @@ "key": "wikipedia", "description": "The layer 'Parking allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Parking' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Parking' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Parking' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "parking", "description": "Layer 'Parking' shows parking=surface with a fixed text, namely 'This is a surface parking lot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", @@ -6536,6 +6802,26 @@ "key": "capacity", "description": "Layer 'Parking' shows and asks freeform values for key 'capacity' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "highway", + "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", + "value": "footway" + }, + { + "key": "highway", + "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", + "value": "path" + }, + { + "key": "highway", + "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", + "value": "corridor" + }, + { + "key": "highway", + "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", + "value": "steps" + }, { "key": "amenity", "description": "The MapComplete theme Personal theme has a layer pharmacy showing features with this tag", @@ -6625,6 +6911,35 @@ "key": "wikipedia", "description": "The layer 'Picnic tables allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Picnic tables' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Picnic tables' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "material", "description": "Layer 'Picnic tables' shows and asks freeform values for key 'material' (in the MapComplete.osm.be theme 'Personal theme')" @@ -6970,6 +7285,70 @@ "description": "Layer 'Crossings with rainbow paintings' shows not:crossing:marking=rainbow with a fixed text, namely 'No rainbow paintings here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "rainbow" }, + { + "key": "amenity", + "description": "The MapComplete theme Personal theme has a layer Reception desks showing features with this tag", + "value": "reception_desk" + }, + { + "key": "image", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Reception desks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Reception desks' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Reception desks' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, + { + "key": "desk:height", + "description": "Layer 'Reception desks' shows and asks freeform values for key 'desk:height' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "hearing_loop", + "description": "Layer 'Reception desks' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "hearing_loop", + "description": "Layer 'Reception desks' shows hearing_loop=no with a fixed text, namely 'This place does not has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, { "key": "amenity", "description": "The MapComplete theme Personal theme has a layer Recycling showing features with this tag", @@ -10648,6 +11027,35 @@ "description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "yes" }, + { + "key": "level", + "description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "service:print:A4", "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", @@ -11288,6 +11696,35 @@ "key": "wikipedia", "description": "The layer 'Toilets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "location", + "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "-1" + }, { "key": "access", "description": "Layer 'Toilets' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Personal theme')" @@ -11360,6 +11797,11 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, + { + "key": "wheelchair", + "description": "Layer 'Toilets' shows wheelchair=designated with a fixed text, namely 'There is only a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "designated" + }, { "key": "door:width", "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Personal theme')" @@ -11438,35 +11880,6 @@ "description": "Layer 'Toilets' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, - { - "key": "level", - "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')" - }, - { - "key": "location", - "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')", - "value": "underground" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", - "value": "0" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.", - "value": "" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", - "value": "1" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", - "value": "-1" - }, { "key": "description", "description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Personal theme')" @@ -11848,6 +12261,31 @@ "key": "name", "description": "Layer 'veterinary' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "tourism", + "description": "The MapComplete theme Personal theme has a layer Viewpoint showing features with this tag", + "value": "viewpoint" + }, + { + "key": "image", + "description": "The layer 'Viewpoint allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Viewpoint allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Viewpoint allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Viewpoint allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "description", + "description": "Layer 'Viewpoint' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "amenity", "description": "The MapComplete theme Personal theme has a layer Waste Basket showing features with this tag", diff --git a/Docs/TagInfo/mapcomplete_pets.json b/Docs/TagInfo/mapcomplete_pets.json index 2872218aec..e9af464206 100644 --- a/Docs/TagInfo/mapcomplete_pets.json +++ b/Docs/TagInfo/mapcomplete_pets.json @@ -106,6 +106,35 @@ "key": "wikipedia", "description": "The layer 'Dog friendly eateries allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Dog friendly eateries' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')" + }, + { + "key": "location", + "description": "Layer 'Dog friendly eateries' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Dog friendly eateries' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Dog friendly eateries' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Dog friendly eateries' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Dog friendly eateries' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "-1" + }, { "key": "name", "description": "Layer 'Dog friendly eateries' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')" @@ -1318,6 +1347,35 @@ "description": "Layer 'Dog-friendly shops' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", "value": "yes" }, + { + "key": "level", + "description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')" + }, + { + "key": "location", + "description": "Layer 'Dog-friendly shops' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Dog-friendly shops' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Dog-friendly shops' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Dog-friendly shops' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Dog-friendly shops' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", + "value": "-1" + }, { "key": "service:print:A4", "description": "Layer 'Dog-friendly shops' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')", diff --git a/Docs/TagInfo/mapcomplete_shops.json b/Docs/TagInfo/mapcomplete_shops.json index 1441a98c61..ba687edb6e 100644 --- a/Docs/TagInfo/mapcomplete_shops.json +++ b/Docs/TagInfo/mapcomplete_shops.json @@ -876,6 +876,35 @@ "description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')", "value": "yes" }, + { + "key": "level", + "description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Open Shop Map')" + }, + { + "key": "location", + "description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Open Shop Map')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Shop Map') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')", + "value": "-1" + }, { "key": "service:print:A4", "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')", diff --git a/Docs/TagInfo/mapcomplete_toilets.json b/Docs/TagInfo/mapcomplete_toilets.json index 00b58f8344..50bf15acb8 100644 --- a/Docs/TagInfo/mapcomplete_toilets.json +++ b/Docs/TagInfo/mapcomplete_toilets.json @@ -31,6 +31,35 @@ "key": "wikipedia", "description": "The layer 'Toilets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Open Toilet Map')" + }, + { + "key": "location", + "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Toilet Map') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "-1" + }, { "key": "access", "description": "Layer 'Toilets' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Open Toilet Map')" @@ -103,6 +132,11 @@ "description": "Layer 'Toilets' shows wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", "value": "no" }, + { + "key": "wheelchair", + "description": "Layer 'Toilets' shows wheelchair=designated with a fixed text, namely 'There is only a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "designated" + }, { "key": "door:width", "description": "Layer 'Toilets' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Open Toilet Map')" @@ -181,35 +215,6 @@ "description": "Layer 'Toilets' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", "value": "no" }, - { - "key": "level", - "description": "Layer 'Toilets' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Open Toilet Map')" - }, - { - "key": "location", - "description": "Layer 'Toilets' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Open Toilet Map')", - "value": "underground" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", - "value": "0" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Toilet Map') Picking this answer will delete the key level.", - "value": "" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", - "value": "1" - }, - { - "key": "level", - "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", - "value": "-1" - }, { "key": "description", "description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Open Toilet Map')" diff --git a/Docs/TagInfo/mapcomplete_transit.json b/Docs/TagInfo/mapcomplete_transit.json index 0403099991..b4ac84281e 100644 --- a/Docs/TagInfo/mapcomplete_transit.json +++ b/Docs/TagInfo/mapcomplete_transit.json @@ -356,6 +356,35 @@ "key": "wikipedia", "description": "The layer 'Parking allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, + { + "key": "level", + "description": "Layer 'Parking' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Bus routes')" + }, + { + "key": "location", + "description": "Layer 'Parking' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Bus routes')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Parking' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Bus routes') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Parking' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "value": "-1" + }, { "key": "parking", "description": "Layer 'Parking' shows parking=surface with a fixed text, namely 'This is a surface parking lot' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", diff --git a/assets/contributors.json b/assets/contributors.json index 8ffa140c80..4f0cbe44a4 100644 --- a/assets/contributors.json +++ b/assets/contributors.json @@ -1,11 +1,11 @@ { "contributors": [ { - "commits": 4227, + "commits": 4259, "contributor": "Pieter Vander Vennet" }, { - "commits": 120, + "commits": 127, "contributor": "Robin van der Linde" }, { @@ -44,6 +44,10 @@ "commits": 22, "contributor": "riQQ" }, + { + "commits": 21, + "contributor": "AlexanderRebai" + }, { "commits": 19, "contributor": "Niels Elgaard Larsen" @@ -72,10 +76,6 @@ "commits": 15, "contributor": "ToastHawaii" }, - { - "commits": 13, - "contributor": "AlexanderRebai" - }, { "commits": 13, "contributor": "Nicole" @@ -196,6 +196,14 @@ "commits": 2, "contributor": "Stanislas Gueniffey" }, + { + "commits": 1, + "contributor": "HispanicMojitos" + }, + { + "commits": 1, + "contributor": "kaipankrath" + }, { "commits": 1, "contributor": "bxl-forever" diff --git a/assets/layers/indoors/indoors.json b/assets/layers/indoors/indoors.json index bfb9053917..258e5484c6 100644 --- a/assets/layers/indoors/indoors.json +++ b/assets/layers/indoors/indoors.json @@ -66,7 +66,7 @@ "fill": "no" }, { - "color": "#4f5551", + "color": "#4f5551", "fill": "no", "width": "2" }, diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index b4969f5281..5ffd5a7a95 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -879,7 +879,7 @@ "key": "level", "type": "string" }, - "multiAnswer" : true + "multiAnswer": true } }, "level": { diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 19dfff6013..b46f61ca0f 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -88,12 +88,12 @@ } ], "syncSelection": "theme-only", - "filter":[ + "filter": [ { "id": "width", "options": [ { - "question": { + "question": { "en": "Any/No width info" } }, @@ -342,7 +342,8 @@ "+mapRendering": [ { "location": [ - "point", "centroid" + "point", + "centroid" ], "icon": "statistics" } @@ -379,7 +380,11 @@ ] }, "render": { - "en": "The containing building can be entered via a door of {canonical(_poi_entrance:width)}" + "en": "This door has a width of {canonical(_poi_entrance:width)} meter", + "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", + "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros", + "fr": "Cet accès a une largeur de {canonical(_poi_entrance:width)}", + "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter" }, "freeform": { "key": "_poi_entrance:width", @@ -389,7 +394,10 @@ { "if": "_poi_entrance:width=", "then": { - "en": "The containing building has no information on door widths. Add a door and measure the width to get information" + "en": "This entrance has no width information", + "de": "Dieser Eingang hat keine Breitenangabe", + "fr": "Cet accès n'a pas d'informations de largeur", + "nl": "Deze ingang heeft geen informatie over de breedte" } } ] diff --git a/langs/layers/en.json b/langs/layers/en.json index b7e7330f1f..b4cee7deb0 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -4153,6 +4153,32 @@ "render": "Hospital" } }, + "hotel": { + "description": "Layer showing all hotels", + "name": "Hotels", + "presets": { + "0": { + "title": "a hotel" + } + }, + "tagRenderings": { + "name": { + "freeform": { + "placeholder": "Name of the hotel" + }, + "question": "What is the name of this hotel?", + "render": "This hotel is called {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Hotel {name}" + } + }, + "render": "Hotel" + } + }, "hydrant": { "description": "Map layer to show fire hydrants.", "name": "Map of hydrants", @@ -5667,7 +5693,8 @@ "question": "What paper formats does this shop offer?" }, "shops-name": { - "question": "What is the name of this shop?" + "question": "What is the name of this shop?", + "render": "This shop is called {name}" } }, "title": { @@ -6310,6 +6337,9 @@ }, "1": { "then": "No wheelchair access" + }, + "2": { + "then": "There is only a dedicated toilet for wheelchair users" } }, "question": "Is there a dedicated toilet for wheelchair users?" diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 6b729d5e9b..233850fdae 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -4005,6 +4005,32 @@ "render": "Ziekenhuis" } }, + "hotel": { + "description": "Laag die alle hotels toont", + "name": "Hotels", + "presets": { + "0": { + "title": "een hotel" + } + }, + "tagRenderings": { + "name": { + "freeform": { + "placeholder": "Naam van het hotel" + }, + "question": "Wat is de naam van dit hotel?", + "render": "Dit hotel heet {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Hotel {name}" + } + }, + "render": "Hotel" + } + }, "hydrant": { "description": "Kaartlaag met brandkranen.", "name": "Kaart van brandkranen", @@ -6017,6 +6043,9 @@ }, "1": { "then": "Niet toegankelijk voor rolstoelgebruikers" + }, + "2": { + "then": "Er is alleen een toilet voor rolstoelgebruikers" } }, "question": "Is er een rolstoeltoegankelijke toilet voorzien?" diff --git a/langs/shared-questions/en.json b/langs/shared-questions/en.json index 012cc2f8af..fabc53edb0 100644 --- a/langs/shared-questions/en.json +++ b/langs/shared-questions/en.json @@ -55,6 +55,12 @@ "question": "On what level is this feature located?", "render": "Located on the {level}th floor" }, + "multilevels": { + "override": { + "question": "What levels does this elevator go to?", + "render": "This elevator goes to floors {level}" + } + }, "opening_hours": { "question": "What are the opening hours of {title()}?", "render": "

Opening hours

{opening_hours_table(opening_hours)}" diff --git a/langs/themes/de.json b/langs/themes/de.json index 92962308da..b729e856c1 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -743,6 +743,30 @@ }, "onwheels": { "description": "Auf dieser Karte werden öffentlich zugängliche Orte für Rollstuhlfahrer angezeigt und können leicht hinzugefügt werden", + "layers": { + "7": { + "override": { + "filter": { + "0": { + "options": { + "0": { + "question": "Alle Arten von Bordsteinen" + }, + "1": { + "question": "Erhöhter Bordstein (>3 cm)" + }, + "2": { + "question": "Abgesenkter Bordstein (~3 cm)" + }, + "3": { + "question": "Bündiger Bordstein (~0cm)" + } + } + } + } + } + } + }, "overrideAll": { "+tagRenderings": { "0": { diff --git a/langs/themes/en.json b/langs/themes/en.json index f1e471de04..4cea67617b 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -751,6 +751,58 @@ }, "onwheels": { "description": "On this map, publicly weelchair accessible places are shown and can be easily added", + "layers": { + "2": { + "override": { + "title": "Pedestrian path" + } + }, + "5": { + "override": { + "filter": { + "0": { + "options": { + "0": { + "question": "Any/No width info" + }, + "1": { + "question": "Any width info" + } + } + } + } + } + }, + "7": { + "override": { + "filter": { + "0": { + "options": { + "0": { + "question": "All types of kerbs" + }, + "1": { + "question": "Raised kerb (>3 cm)" + }, + "2": { + "question": "Lowered kerb (~3 cm)" + }, + "3": { + "question": "Flush kerb (~0cm)" + } + } + } + } + } + }, + "23": { + "override": { + "=title": { + "render": "Statistics" + } + } + } + }, "overrideAll": { "+tagRenderings": { "0": { diff --git a/langs/themes/nl.json b/langs/themes/nl.json index f508a512aa..378726003a 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -876,6 +876,30 @@ "title": "Uitkijktorens" }, "onwheels": { + "layers": { + "7": { + "override": { + "filter": { + "0": { + "options": { + "0": { + "question": "Alle typen stoepranden" + }, + "1": { + "question": "Hoge stoeprand (>3 cm)" + }, + "2": { + "question": "Verlaagde stoeprand (~3 cm)" + }, + "3": { + "question": "Vlakke stoeprand (~0cm)" + } + } + } + } + } + } + }, "overrideAll": { "+tagRenderings": { "0": { From d4950780154b65af84791f340bb899d516c497c7 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 17:08:11 +0200 Subject: [PATCH 81/82] Force remove a translation --- .../mapcomplete-changes.json | 55 ++++++++++++++----- assets/themes/onwheels/onwheels.json | 11 +--- langs/themes/de.json | 12 ---- langs/themes/en.json | 4 +- langs/themes/es.json | 9 --- langs/themes/fr.json | 12 ---- langs/themes/nl.json | 12 ---- 7 files changed, 45 insertions(+), 70 deletions(-) diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 3d8a8a2296..f745ceede1 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,13 +1,19 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete" + "en": "Changes made with MapComplete", + "de": "Mit MapComplete vorgenommene Änderungen", + "nl": "Wijzigingen gemaakt met MapComplete" }, "shortDescription": { - "en": "Shows changes made by MapComplete" + "en": "Shows changes made by MapComplete", + "de": "Zeigt die mit MapComplete vorgenommenen Änderungen", + "nl": "Toont wijzigingen gemaakt met MapComplete" }, "description": { - "en": "This maps shows all the changes made with MapComplete" + "en": "This maps shows all the changes made with MapComplete", + "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", + "nl": "Deze kaart toont alle wijzigingen die met MapComplete werden gemaakt" }, "maintainer": "", "icon": "./assets/svg/logo.svg", @@ -22,7 +28,8 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers" + "en": "Changeset centers", + "de": "Zentrum der Änderungssätze" }, "minzoom": 0, "source": { @@ -36,35 +43,47 @@ ], "title": { "render": { - "en": "Changeset for {theme}" + "en": "Changeset for {theme}", + "de": "Änderungssatz für {theme}", + "nl": "Wijzigingset voor {theme}" } }, "description": { - "en": "Shows all MapComplete changes" + "en": "Shows all MapComplete changes", + "de": "Zeigt alle MapComplete Änderungen", + "nl": "Toont alle wijzigingen met MapComplete" }, "tagRenderings": [ { "id": "render_id", "render": { - "en": "Changeset {id}" + "en": "Changeset {id}", + "de": "Änderungssatz {id}", + "nl": "Wijzigingset {id}" } }, { "id": "contributor", "render": { - "en": "Change made by {_last_edit:contributor}" + "en": "Change made by {_last_edit:contributor}", + "de": "Geändert von {_last_edit:contributor}", + "nl": "Wijziging gemaakt door {_last_edit:contributor}" } }, { "id": "theme", "render": { - "en": "Change with theme {theme}" + "en": "Change with theme {theme}", + "de": "Änderung mit Thema {theme}", + "nl": "Wijziging met thema {theme}" }, "mappings": [ { "if": "theme~http.*", "then": { - "en": "Change with unofficial theme {theme}" + "en": "Change with unofficial theme {theme}", + "de": "Änderung mit inoffiziellem Thema {theme}", + "nl": "Wijziging met officieus thema {theme}" } } ] @@ -372,7 +391,9 @@ } ], "question": { - "en": "Themename contains {search}" + "en": "Themename contains {search}", + "de": "Themenname enthält {search}", + "nl": "Themanaam bevat {search}" } } ] @@ -388,7 +409,9 @@ } ], "question": { - "en": "Made by contributor {search}" + "en": "Made by contributor {search}", + "de": "Erstellt von {search}", + "nl": "Gemaakt door bijdrager {search}" } } ] @@ -404,7 +427,9 @@ } ], "question": { - "en": "Not made by contributor {search}" + "en": "Not made by contributor {search}", + "de": "Nicht erstellt von {search}", + "nl": "Niet gemaakt door bijdrager {search}" } } ] @@ -419,7 +444,9 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here" + "en": "More statistics can be found here", + "de": "Weitere Statistiken finden Sie hier", + "nl": "Meer statistieken kunnen hier gevonden worden" } }, { diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index b46f61ca0f..adc7eb93ec 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -380,11 +380,7 @@ ] }, "render": { - "en": "This door has a width of {canonical(_poi_entrance:width)} meter", - "de": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter", - "es": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros", - "fr": "Cet accès a une largeur de {canonical(_poi_entrance:width)}", - "nl": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter" + "en": "The containing building can be entered via a door of {canonical(_poi_entrance:width)}" }, "freeform": { "key": "_poi_entrance:width", @@ -394,10 +390,7 @@ { "if": "_poi_entrance:width=", "then": { - "en": "This entrance has no width information", - "de": "Dieser Eingang hat keine Breitenangabe", - "fr": "Cet accès n'a pas d'informations de largeur", - "nl": "Deze ingang heeft geen informatie over de breedte" + "en": "The containing building has no information on door widths. Add a door and measure the width to get information" } } ] diff --git a/langs/themes/de.json b/langs/themes/de.json index b729e856c1..8bb3ccdc3e 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -767,18 +767,6 @@ } } }, - "overrideAll": { - "+tagRenderings": { - "0": { - "mappings": { - "0": { - "then": "Dieser Eingang hat keine Breitenangabe" - } - }, - "render": "Diese Tür hat eine Durchgangsbreite von {canonical(_poi_entrance:width)} Meter" - } - } - }, "title": "Auf Rädern" }, "openwindpowermap": { diff --git a/langs/themes/en.json b/langs/themes/en.json index 4cea67617b..a676e73e8d 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -808,10 +808,10 @@ "0": { "mappings": { "0": { - "then": "This entrance has no width information" + "then": "The containing building has no information on door widths. Add a door and measure the width to get information" } }, - "render": "This door has a width of {canonical(_poi_entrance:width)} meter" + "render": "The containing building can be entered via a door of {canonical(_poi_entrance:width)}" } } }, diff --git a/langs/themes/es.json b/langs/themes/es.json index bde149622f..5720c927a4 100644 --- a/langs/themes/es.json +++ b/langs/themes/es.json @@ -517,15 +517,6 @@ "shortDescription": "Torres accesibles públicamente para disfrutar de la vista", "title": "Torres de observación" }, - "onwheels": { - "overrideAll": { - "+tagRenderings": { - "0": { - "render": "Esta puerta tiene una ancho de {canonical(_poi_entrance:width)} metros" - } - } - } - }, "openwindpowermap": { "description": "Un para mostrar y editar turbinas de viento" }, diff --git a/langs/themes/fr.json b/langs/themes/fr.json index 0f71196929..4b5e80d50f 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -673,18 +673,6 @@ }, "onwheels": { "description": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes", - "overrideAll": { - "+tagRenderings": { - "0": { - "mappings": { - "0": { - "then": "Cet accès n'a pas d'informations de largeur" - } - }, - "render": "Cet accès a une largeur de {canonical(_poi_entrance:width)}" - } - } - }, "title": "OnWheels" }, "openwindpowermap": { diff --git a/langs/themes/nl.json b/langs/themes/nl.json index 378726003a..96104f2279 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -899,18 +899,6 @@ } } } - }, - "overrideAll": { - "+tagRenderings": { - "0": { - "mappings": { - "0": { - "then": "Deze ingang heeft geen informatie over de breedte" - } - }, - "render": "Deze deur heeft een breedte van {canonical(_poi_entrance:width)} meter" - } - } } }, "openwindpowermap": { From 94a533f14ccea560565c71a142fd1b9fa814ee70 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 26 Jul 2022 17:11:03 +0200 Subject: [PATCH 82/82] Housekeeping... --- assets/contributors.json | 2 +- .../cycleways_and_roads.json | 177 +++++--- .../mapcomplete-changes.json | 55 +-- assets/translators.json | 8 +- langs/layers/fr.json | 378 +++++++++--------- 5 files changed, 326 insertions(+), 294 deletions(-) diff --git a/assets/contributors.json b/assets/contributors.json index 4f0cbe44a4..521a49ef41 100644 --- a/assets/contributors.json +++ b/assets/contributors.json @@ -1,7 +1,7 @@ { "contributors": [ { - "commits": 4259, + "commits": 4263, "contributor": "Pieter Vander Vennet" }, { diff --git a/assets/layers/cycleways_and_roads/cycleways_and_roads.json b/assets/layers/cycleways_and_roads/cycleways_and_roads.json index 38ad7f3655..05a14bc265 100644 --- a/assets/layers/cycleways_and_roads/cycleways_and_roads.json +++ b/assets/layers/cycleways_and_roads/cycleways_and_roads.json @@ -184,7 +184,8 @@ "en": "What kind of cycleway is here?", "nl": "Wat voor fietspad is hier?", "de": "Was für ein Radweg ist hier?", - "es": "¿Qué tipo de carril bici hay aquí?" + "es": "¿Qué tipo de carril bici hay aquí?", + "fr": "Quel type de piste cyclable il y a ici ?" }, "condition": { "and": [ @@ -200,7 +201,8 @@ "en": "There is a shared lane", "nl": "Er is een fietssuggestiestrook", "de": "Es gibt eine geteilte Fahrspur", - "es": "Hay un carril compartido" + "es": "Hay un carril compartido", + "fr": "Il y a une voie partagée" } }, { @@ -209,7 +211,8 @@ "en": "There is a lane next to the road (separated with paint)", "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)", "de": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)", - "es": "Hay un carril a lado de la carretera (separado con pintura)" + "es": "Hay un carril a lado de la carretera (separado con pintura)", + "fr": "Il y a une piste cyclable separée de la route" } }, { @@ -218,7 +221,8 @@ "en": "There is a track, but no cycleway drawn separately from this road on the map.", "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg.", "de": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist.", - "es": "Hay una pista, pero no hay un carril bici dibujado separado de esta carretera en el mapa." + "es": "Hay una pista, pero no hay un carril bici dibujado separado de esta carretera en el mapa.", + "fr": "Il y a une piste cyclable, mais elle n'est pas separée de la route sur la carte." } }, { @@ -227,7 +231,8 @@ "en": "There is a separately drawn cycleway", "nl": "Er is een apart getekend fietspad.", "de": "Hier ist ein getrennter Radweg vorhanden", - "es": "Hay un carril bici dibujado por separado" + "es": "Hay un carril bici dibujado por separado", + "fr": "Il y a une piste cyclable dessinée séparement" } }, { @@ -236,7 +241,8 @@ "en": "There is no cycleway", "nl": "Er is geen fietspad aanwezig", "de": "Es gibt keinen Radweg", - "es": "No hay carril bici" + "es": "No hay carril bici", + "fr": "Il n'y a pas de piste cyclable" }, "hideInAnswer": "cycleway=opposite" }, @@ -246,7 +252,8 @@ "en": "There is no cycleway", "nl": "Er is geen fietspad aanwezig", "de": "Es gibt keinen Radweg", - "es": "No hay carril bici" + "es": "No hay carril bici", + "fr": "Il n'y a pas de piste cyclable" }, "hideInAnswer": "cycleway!=opposite", "addExtraTags": [ @@ -314,7 +321,8 @@ "en": "Is this a cyclestreet?", "nl": "Is dit een fietsstraat?", "de": "Ist das eine Fahrradstraße?", - "es": "¿Esta es una ciclocalle?" + "es": "¿Esta es una ciclocalle?", + "fr": "Est-ce une route cyclable?" }, "condition": { "and": [ @@ -330,7 +338,8 @@ "en": "This is a cyclestreet, and a 30km/h zone.", "nl": "Dit is een fietsstraat, en dus een 30km/h zone", "de": "Dies ist eine Fahrradstraße in einer 30km/h Zone.", - "es": "Esta es una ciclocalle, y una zona 30km/h." + "es": "Esta es una ciclocalle, y una zona 30km/h.", + "fr": "Ceci est une route cyclable, et une zone à 30 km/h" }, "addExtraTags": [ "overtaking:motor_vehicle=no", @@ -344,7 +353,8 @@ "en": "This is a cyclestreet", "nl": "Dit is een fietsstraat", "de": "Dies ist eine Fahrradstraße", - "es": "Esta es una ciclocalle" + "es": "Esta es una ciclocalle", + "fr": "Ceci est une route cyclable" }, "hideInAnswer": "_country=be" }, @@ -354,7 +364,8 @@ "en": "This is not a cyclestreet.", "nl": "Dit is geen fietsstraat", "de": "Dies ist keine Fahrradstraße.", - "es": "Esta no es una ciclocalle." + "es": "Esta no es una ciclocalle.", + "fr": "Ceci n'est pas une route cyclable" }, "addExtraTags": [ "overtaking:motor_vehicle=" @@ -369,7 +380,8 @@ "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u", "de": "Die Höchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h", "id": "Kecepatan maksimum di jalan ini adalah {maxspeed} km/jam", - "es": "La velocidad máxima en esta carretera es de {maxspeed} km/h" + "es": "La velocidad máxima en esta carretera es de {maxspeed} km/h", + "fr": "La vitesse maximum dans cette rue est de {maxspeed} km/h" }, "freeform": { "key": "maxspeed", @@ -389,7 +401,8 @@ "en": "The maximum speed is 20 km/h", "nl": "De maximumsnelheid is 20 km/u", "de": "Die Höchstgeschwindigkeit ist 20 km/h", - "es": "La velocidad máxima es de 20km/h" + "es": "La velocidad máxima es de 20km/h", + "fr": "La vitesse maximum est de 20 km/h" } }, { @@ -398,7 +411,8 @@ "en": "The maximum speed is 30 km/h", "nl": "De maximumsnelheid is 30 km/u", "de": "Die Höchstgeschwindigkeit ist 30 km/h", - "es": "La velocidad máxima es de 30km/h" + "es": "La velocidad máxima es de 30km/h", + "fr": "La vitesse maximum est de 30 km/h" } }, { @@ -407,7 +421,8 @@ "en": "The maximum speed is 50 km/h", "nl": "De maximumsnelheid is 50 km/u", "de": "Die Höchstgeschwindigkeit ist 50 km/h", - "es": "La velocidad máxima es de 50km/h" + "es": "La velocidad máxima es de 50km/h", + "fr": "La vitesse maximum est de 50 km/h" } }, { @@ -417,7 +432,8 @@ "nl": "De maximumsnelheid is 70 km/u", "de": "Die Höchstgeschwindigkeit ist 70 km/h", "id": "Kecepatan maksimum 70 km/jam", - "es": "La velocidad máxima es de 70km/h" + "es": "La velocidad máxima es de 70km/h", + "fr": "La vitesse maximum est de 70 km/h" } }, { @@ -427,7 +443,8 @@ "nl": "De maximumsnelheid is 90 km/u", "de": "Die Höchstgeschwindigkeit ist 90 km/h", "id": "Kecepatan maksimum 90 km/jam", - "es": "La velocidad máxima es de 90km/h" + "es": "La velocidad máxima es de 90km/h", + "fr": "La vitesse maximum est de 90 km/h" } } ], @@ -436,7 +453,8 @@ "nl": "Wat is de maximumsnelheid in deze straat?", "de": "Was ist die Höchstgeschwindigkeit auf dieser Straße?", "id": "Berapa kecepatan maksimum di jalan ini?", - "es": "¿Cual es la velocidad máxima en esta calle?" + "es": "¿Cual es la velocidad máxima en esta calle?", + "fr": "Quelle est la vitesse maximum dans cette rue ?" }, "id": "Maxspeed (for road)" }, @@ -445,7 +463,8 @@ "en": "This cyleway is made of {cycleway:surface}", "nl": "Dit fietspad is gemaakt van {cycleway:surface}", "de": "Der Radweg ist aus {cycleway:surface}", - "es": "Este carril bici está hecho de {cycleway:surface}" + "es": "Este carril bici está hecho de {cycleway:surface}", + "fr": "Cette piste cyclable est faite de {cycleway:surface}" }, "freeform": { "key": "cycleway:surface" @@ -464,7 +483,8 @@ "en": "This cycleway is unpaved", "nl": "Dit fietspad is onverhard", "de": "Dieser Radweg hat keinen festen Belag", - "es": "Este carril bici no está pavimentado" + "es": "Este carril bici no está pavimentado", + "fr": "Cette piste cyclable n'est pas goudronnée" }, "hideInAnswer": true }, @@ -474,7 +494,8 @@ "en": "This cycleway is paved", "nl": "Dit fietspad is geplaveid", "de": "Dieser Radweg hat einen festen Belag", - "es": "Este carril bici está pavimentado" + "es": "Este carril bici está pavimentado", + "fr": "Cette piste cyclable est goudronée" }, "hideInAnswer": true }, @@ -484,7 +505,8 @@ "en": "This cycleway is made of asphalt", "nl": "Dit fietspad is gemaakt van asfalt", "de": "Der Radweg ist aus Asphalt", - "es": "Este carril bici está hecho de asfalto" + "es": "Este carril bici está hecho de asfalto", + "fr": "Cette piste cyclable est asphaltée" } }, { @@ -493,7 +515,8 @@ "en": "This cycleway is made of smooth paving stones", "nl": "Dit fietspad is gemaakt van straatstenen", "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen", - "es": "Este carril bici está hecho de piedras de pavimento suaves" + "es": "Este carril bici está hecho de piedras de pavimento suaves", + "fr": "Cette piste cyclable est faite de petits pavés" } }, { @@ -502,7 +525,8 @@ "en": "This cycleway is made of concrete", "nl": "Dit fietspad is gemaakt van beton", "de": "Der Radweg ist aus Beton", - "es": "Este carril bici está hecho de hormigón" + "es": "Este carril bici está hecho de hormigón", + "fr": "Cette piste cyclable est bétonée" } }, { @@ -510,7 +534,8 @@ "then": { "en": "This cycleway is made of cobblestone (unhewn or sett)", "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", - "de": "Dieser Radweg besteht aus Kopfsteinpflaster" + "de": "Dieser Radweg besteht aus Kopfsteinpflaster", + "fr": "Cette piste cyclable est faite de pavés (taillé ou non)" }, "hideInAnswer": true }, @@ -519,7 +544,8 @@ "then": { "en": "This cycleway is made of raw, natural cobblestone", "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", - "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster", + "fr": "Cette piste cyclable est en pavés bruts et naturels" } }, { @@ -527,7 +553,8 @@ "then": { "en": "This cycleway is made of flat, square cobblestone", "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", - "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster", + "fr": "Cette piste cyclable est en pavés plats ou carrés" } }, { @@ -536,7 +563,8 @@ "en": "This cycleway is made of wood", "nl": "Dit fietspad is gemaakt van hout", "de": "Der Radweg ist aus Holz", - "es": "Este carril bici está hecho de madera" + "es": "Este carril bici está hecho de madera", + "fr": "Cette piste cyclable est faite en bois" } }, { @@ -545,7 +573,8 @@ "en": "This cycleway is made of gravel", "nl": "Dit fietspad is gemaakt van grind", "de": "Der Radweg ist aus Schotter", - "es": "Este carril bici está hecho de grava" + "es": "Este carril bici está hecho de grava", + "fr": "Cette piste cyclable est faite en graviers" } }, { @@ -554,7 +583,8 @@ "en": "This cycleway is made of fine gravel", "nl": "Dit fietspad is gemaakt van fijn grind", "de": "Dieser Radweg besteht aus feinem Schotter", - "es": "Este carril bici está hecho de gravilla" + "es": "Este carril bici está hecho de gravilla", + "fr": "Cette piste cyclable est faite en graviers fins" } }, { @@ -562,7 +592,8 @@ "then": { "en": "This cycleway is made of pebblestone", "nl": "Dit fietspad is gemaakt van kiezelsteentjes", - "de": "Der Radweg ist aus Kies" + "de": "Der Radweg ist aus Kies", + "fr": "Cette piste cyclable est en cailloux" } }, { @@ -571,7 +602,8 @@ "en": "This cycleway is made from raw ground", "nl": "Dit fietspad is gemaakt van aarde", "de": "Dieser Radweg besteht aus Rohboden", - "es": "Este carril bici está hecho de tierra natural" + "es": "Este carril bici está hecho de tierra natural", + "fr": "Cette piste cyclable est faite en sol brut" } } ], @@ -579,7 +611,8 @@ "en": "What is the surface of the cycleway made from?", "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?", "de": "Was ist der Belag dieses Radwegs?", - "es": "¿De qué superficie está hecho este carril bici?" + "es": "¿De qué superficie está hecho este carril bici?", + "fr": "De quoi est faite la surface de la piste cyclable ?" }, "id": "Cycleway:surface" }, @@ -588,7 +621,8 @@ "en": "What is the smoothness of this cycleway?", "nl": "Wat is de kwaliteit van dit fietspad?", "de": "Wie eben ist dieser Radweg?", - "es": "¿Cual es la suavidad de este carril bici?" + "es": "¿Cual es la suavidad de este carril bici?", + "fr": "Quel est l'état de la piste cyclable ?" }, "condition": { "or": [ @@ -603,7 +637,8 @@ "then": { "en": "Usable for thin rollers: rollerblade, skateboard", "nl": "Geschikt voor fijne rollers: rollerblade, skateboard", - "de": "Geeignet für dünne Rollen: Rollerblades, Skateboard" + "de": "Geeignet für dünne Rollen: Rollerblades, Skateboard", + "fr": "Utilisable pour les patins: patins à roulettes, skateboard" } }, { @@ -611,7 +646,8 @@ "then": { "en": "Usable for thin wheels: racing bike", "nl": "Geschikt voor fijne wielen: racefiets", - "de": "Geeignet für dünne Reifen: Rennrad" + "de": "Geeignet für dünne Reifen: Rennrad", + "fr": "Utilisable pour les roues fines: vélo de course" } }, { @@ -620,7 +656,8 @@ "en": "Usable for normal wheels: city bike, wheelchair, scooter", "nl": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter", "de": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter", - "es": "Utilizable para ruedas normales: bici de ciudad, sillas de ruedas, scooter" + "es": "Utilizable para ruedas normales: bici de ciudad, sillas de ruedas, scooter", + "fr": "Utilisable pour les roues traditionelles: vélo, chaise roulante, trotinettes" } }, { @@ -628,7 +665,8 @@ "then": { "en": "Usable for robust wheels: trekking bike, car, rickshaw", "nl": "Geschikt voor brede wielen: trekfiets, auto, rickshaw", - "de": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha" + "de": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha", + "fr": "Utilisable pour les roues robustes: VTT, voitures, pousse-pousse" } }, { @@ -636,7 +674,8 @@ "then": { "en": "Usable for vehicles with high clearance: light duty off-road vehicle", "nl": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen", - "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen", + "fr": "Utilisable pour les véhicules à dégagement élevé : véhicule tout-terrain léger" } }, { @@ -644,7 +683,8 @@ "then": { "en": "Usable for off-road vehicles: heavy duty off-road vehicle", "nl": "Geschikt voor terreinwagens: zware terreinwagen", - "de": "Geeignet für Geländefahrzeuge: schwerer Geländewagen" + "de": "Geeignet für Geländefahrzeuge: schwerer Geländewagen", + "fr": "Utilisable pour les véhicules tout-terrain : véhicule tout-terrain lourd" } }, { @@ -652,7 +692,8 @@ "then": { "en": "Usable for specialized off-road vehicles: tractor, ATV", "nl": "Geschikt voor gespecialiseerde terreinwagens: tractor, alleterreinwagen", - "de": "Geeignet für Geländefahrzeuge: Traktor, ATV" + "de": "Geeignet für Geländefahrzeuge: Traktor, ATV", + "fr": "Utilisable pour les véhicules hors route spécialisés : tracteur, véhicule 4x4" } }, { @@ -660,7 +701,8 @@ "then": { "en": "Impassable / No wheeled vehicle", "nl": "Niet geschikt voor voertuigen met wielen", - "de": "Unpassierbar / Keine bereiften Fahrzeuge" + "de": "Unpassierbar / Keine bereiften Fahrzeuge", + "fr": "Impasse / Aucun véhicule roulant" } } ], @@ -672,7 +714,8 @@ "nl": "Deze weg is gemaakt van {surface}", "de": "Der Radweg ist aus {surface}", "id": "Jalan ini terbuat dari {surface}", - "es": "Esta carretera está hecha de {surface}" + "es": "Esta carretera está hecha de {surface}", + "fr": "Cette route est faite de {surface}" }, "freeform": { "key": "surface" @@ -683,7 +726,8 @@ "then": { "en": "This cycleway is unhardened", "nl": "Dit fietspad is onverhard", - "de": "Dieser Radweg ist nicht befestigt" + "de": "Dieser Radweg ist nicht befestigt", + "fr": "Cette piste cycable est non durcie" }, "hideInAnswer": true }, @@ -694,7 +738,8 @@ "nl": "Dit fietspad is geplaveid", "de": "Dieser Radweg hat einen festen Belag", "id": "Jalur sepeda ini diaspal", - "es": "Este carril bici está pavimentado" + "es": "Este carril bici está pavimentado", + "fr": "Cette piste cyclable est pavée" }, "hideInAnswer": true }, @@ -705,7 +750,8 @@ "nl": "Dit fietspad is gemaakt van asfalt", "de": "Der Radweg ist aus Asphalt", "id": "Jalur sepeda ini terbuat dari aspal", - "es": "Este carril bici está hecho de asfalto" + "es": "Este carril bici está hecho de asfalto", + "fr": "Cette piste cyclable est asphaltée" } }, { @@ -714,7 +760,8 @@ "en": "This cycleway is made of smooth paving stones", "nl": "Dit fietspad is gemaakt van straatstenen", "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen", - "id": "Jalur sepeda ini terbuat dari batu paving halus" + "id": "Jalur sepeda ini terbuat dari batu paving halus", + "fr": "Cette piste cyclable est faite en pavés lisses" } }, { @@ -724,7 +771,8 @@ "nl": "Dit fietspad is gemaakt van beton", "de": "Der Radweg ist aus Beton", "id": "Jalur sepeda ini terbuat dari beton", - "es": "Este carril bici está hecho de hormigón" + "es": "Este carril bici está hecho de hormigón", + "fr": "Cette piste cyclable est betonée" } }, { @@ -733,7 +781,8 @@ "en": "This cycleway is made of cobblestone (unhewn or sett)", "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", "de": "Dieser Radweg besteht aus Kopfsteinpflaster", - "id": "Jalur sepeda ini terbuat dari cobblestone (unhewn atau sett)" + "id": "Jalur sepeda ini terbuat dari cobblestone (unhewn atau sett)", + "fr": "Cette piste cyclable est faite de pavés (taillé ou non)" }, "hideInAnswer": true }, @@ -743,7 +792,8 @@ "en": "This cycleway is made of raw, natural cobblestone", "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster", - "id": "Jalur sepeda ini terbuat dari batu bulat alami" + "id": "Jalur sepeda ini terbuat dari batu bulat alami", + "fr": "Cette piste cyclable est en pavés bruts et naturels" } }, { @@ -751,7 +801,8 @@ "then": { "en": "This cycleway is made of flat, square cobblestone", "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", - "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster", + "fr": "Cette piste cyclable est en pavés plats ou carrés" } }, { @@ -761,7 +812,8 @@ "nl": "Dit fietspad is gemaakt van hout", "de": "Der Radweg ist aus Holz", "id": "Jalur sepeda ini terbuat dari kayu", - "es": "Este carril bici está hecho de madera" + "es": "Este carril bici está hecho de madera", + "fr": "Cette piste cyclable est faite en bois" } }, { @@ -771,7 +823,8 @@ "nl": "Dit fietspad is gemaakt van grind", "de": "Der Radweg ist aus Schotter", "id": "Jalur sepeda ini terbuat dari kerikil", - "es": "Este carril bici está hecho de grava" + "es": "Este carril bici está hecho de grava", + "fr": "Cette piste cyclable est faite en graviers" } }, { @@ -781,7 +834,8 @@ "nl": "Dit fietspad is gemaakt van fijn grind", "de": "Dieser Radweg besteht aus feinem Schotter", "id": "Jalur sepeda ini terbuat dari kerikil halus", - "es": "Este carril bici está hecho de gravilla" + "es": "Este carril bici está hecho de gravilla", + "fr": "Cette piste cyclable est faite en graviers fins" } }, { @@ -790,7 +844,8 @@ "en": "This cycleway is made of pebblestone", "nl": "Dit fietspad is gemaakt van kiezelsteentjes", "de": "Der Radweg ist aus Kies", - "id": "Jalur sepeda ini terbuat dari batu kerikil" + "id": "Jalur sepeda ini terbuat dari batu kerikil", + "fr": "Cette piste cyclable est en cailloux" } }, { @@ -799,7 +854,8 @@ "en": "This cycleway is made from raw ground", "nl": "Dit fietspad is gemaakt van aarde", "de": "Dieser Radweg besteht aus Rohboden", - "id": "Jalur sepeda ini terbuat dari tanah alami" + "id": "Jalur sepeda ini terbuat dari tanah alami", + "fr": "Cette piste cyclable est faite en sol brut" } } ], @@ -808,7 +864,8 @@ "nl": "Waaruit is het oppervlak van de straat gemaakt?", "de": "Was ist der Belag dieser Straße?", "id": "Permukaan jalannya terbuat dari apa?", - "es": "¿De qué esta hecha la superficie de esta calle?" + "es": "¿De qué esta hecha la superficie de esta calle?", + "fr": "De quel materiel est faite cette rue ?" }, "id": "Surface of the road" }, @@ -832,7 +889,8 @@ "en": "Usable for thin rollers: rollerblade, skateboard", "de": "Geeignet für dünne Rollen: Rollerblades, Skateboard", "id": "Dapat digunakan untuk roller tipis: rollerblade, skateboard", - "nl": "Bruikbaar voor kleine, harde wielen: rollerblade, skateboard" + "nl": "Bruikbaar voor kleine, harde wielen: rollerblade, skateboard", + "fr": "Utilisable pour les patins: patins à roulettes, skateboard" } }, { @@ -1548,6 +1606,7 @@ "en": "All infrastructure that someone can cycle over, accompanied with questions about this infrastructure", "nl": "Alle infrastructuur waar je over kunt fietsen, met vragen over die infrastructuur", "de": "Infrastruktur, die man mit dem Fahrrad befahren kann, begleitet von diesbezüglichen Fragen", - "es": "Toda la infraestructura sobre la que alguien puede ir en bici, acompañado de preguntas sobre esta infraestructura\"" + "es": "Toda la infraestructura sobre la que alguien puede ir en bici, acompañado de preguntas sobre esta infraestructura\"", + "fr": "Toutes les infrastructures sur lesquelles quelqu'un peut rouler, accompagnées de questions sur cette infrastructure" } } \ No newline at end of file diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index f745ceede1..3d8a8a2296 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -1,19 +1,13 @@ { "id": "mapcomplete-changes", "title": { - "en": "Changes made with MapComplete", - "de": "Mit MapComplete vorgenommene Änderungen", - "nl": "Wijzigingen gemaakt met MapComplete" + "en": "Changes made with MapComplete" }, "shortDescription": { - "en": "Shows changes made by MapComplete", - "de": "Zeigt die mit MapComplete vorgenommenen Änderungen", - "nl": "Toont wijzigingen gemaakt met MapComplete" + "en": "Shows changes made by MapComplete" }, "description": { - "en": "This maps shows all the changes made with MapComplete", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", - "nl": "Deze kaart toont alle wijzigingen die met MapComplete werden gemaakt" + "en": "This maps shows all the changes made with MapComplete" }, "maintainer": "", "icon": "./assets/svg/logo.svg", @@ -28,8 +22,7 @@ { "id": "mapcomplete-changes", "name": { - "en": "Changeset centers", - "de": "Zentrum der Änderungssätze" + "en": "Changeset centers" }, "minzoom": 0, "source": { @@ -43,47 +36,35 @@ ], "title": { "render": { - "en": "Changeset for {theme}", - "de": "Änderungssatz für {theme}", - "nl": "Wijzigingset voor {theme}" + "en": "Changeset for {theme}" } }, "description": { - "en": "Shows all MapComplete changes", - "de": "Zeigt alle MapComplete Änderungen", - "nl": "Toont alle wijzigingen met MapComplete" + "en": "Shows all MapComplete changes" }, "tagRenderings": [ { "id": "render_id", "render": { - "en": "Changeset {id}", - "de": "Änderungssatz {id}", - "nl": "Wijzigingset {id}" + "en": "Changeset {id}" } }, { "id": "contributor", "render": { - "en": "Change made by {_last_edit:contributor}", - "de": "Geändert von {_last_edit:contributor}", - "nl": "Wijziging gemaakt door {_last_edit:contributor}" + "en": "Change made by {_last_edit:contributor}" } }, { "id": "theme", "render": { - "en": "Change with theme {theme}", - "de": "Änderung mit Thema {theme}", - "nl": "Wijziging met thema {theme}" + "en": "Change with theme {theme}" }, "mappings": [ { "if": "theme~http.*", "then": { - "en": "Change with unofficial theme {theme}", - "de": "Änderung mit inoffiziellem Thema {theme}", - "nl": "Wijziging met officieus thema {theme}" + "en": "Change with unofficial theme {theme}" } } ] @@ -391,9 +372,7 @@ } ], "question": { - "en": "Themename contains {search}", - "de": "Themenname enthält {search}", - "nl": "Themanaam bevat {search}" + "en": "Themename contains {search}" } } ] @@ -409,9 +388,7 @@ } ], "question": { - "en": "Made by contributor {search}", - "de": "Erstellt von {search}", - "nl": "Gemaakt door bijdrager {search}" + "en": "Made by contributor {search}" } } ] @@ -427,9 +404,7 @@ } ], "question": { - "en": "Not made by contributor {search}", - "de": "Nicht erstellt von {search}", - "nl": "Niet gemaakt door bijdrager {search}" + "en": "Not made by contributor {search}" } } ] @@ -444,9 +419,7 @@ { "id": "link_to_more", "render": { - "en": "More statistics can be found here", - "de": "Weitere Statistiken finden Sie hier", - "nl": "Meer statistieken kunnen hier gevonden worden" + "en": "More statistics can be found here" } }, { diff --git a/assets/translators.json b/assets/translators.json index 8edc37fb14..a019e4ed15 100644 --- a/assets/translators.json +++ b/assets/translators.json @@ -228,6 +228,10 @@ "commits": 3, "contributor": "SiegbjornSitumeang" }, + { + "commits": 2, + "contributor": "Andrews Leruth" + }, { "commits": 2, "contributor": "Manuel Tassi" @@ -292,10 +296,6 @@ "commits": 2, "contributor": "Leo Alcaraz" }, - { - "commits": 1, - "contributor": "Andrews Leruth" - }, { "commits": 1, "contributor": "Hungarian_user" diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 5046892144..ce86b55fbf 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -1601,7 +1601,194 @@ } }, "cycleways_and_roads": { + "description": "Toutes les infrastructures sur lesquelles quelqu'un peut rouler, accompagnées de questions sur cette infrastructure", "name": "Pistes cyclables et routes", + "tagRenderings": { + "Cycleway type for a road": { + "mappings": { + "0": { + "then": "Il y a une voie partagée" + }, + "1": { + "then": "Il y a une piste cyclable separée de la route" + }, + "2": { + "then": "Il y a une piste cyclable, mais elle n'est pas separée de la route sur la carte." + }, + "3": { + "then": "Il y a une piste cyclable dessinée séparement" + }, + "4": { + "then": "Il n'y a pas de piste cyclable" + }, + "5": { + "then": "Il n'y a pas de piste cyclable" + } + }, + "question": "Quel type de piste cyclable il y a ici ?" + }, + "Cycleway:smoothness": { + "mappings": { + "0": { + "then": "Utilisable pour les patins: patins à roulettes, skateboard" + }, + "1": { + "then": "Utilisable pour les roues fines: vélo de course" + }, + "2": { + "then": "Utilisable pour les roues traditionelles: vélo, chaise roulante, trotinettes" + }, + "3": { + "then": "Utilisable pour les roues robustes: VTT, voitures, pousse-pousse" + }, + "4": { + "then": "Utilisable pour les véhicules à dégagement élevé : véhicule tout-terrain léger" + }, + "5": { + "then": "Utilisable pour les véhicules tout-terrain : véhicule tout-terrain lourd" + }, + "6": { + "then": "Utilisable pour les véhicules hors route spécialisés : tracteur, véhicule 4x4" + }, + "7": { + "then": "Impasse / Aucun véhicule roulant" + } + }, + "question": "Quel est l'état de la piste cyclable ?" + }, + "Cycleway:surface": { + "mappings": { + "0": { + "then": "Cette piste cyclable n'est pas goudronnée" + }, + "1": { + "then": "Cette piste cyclable est goudronée" + }, + "2": { + "then": "Cette piste cyclable est asphaltée" + }, + "3": { + "then": "Cette piste cyclable est faite de petits pavés" + }, + "4": { + "then": "Cette piste cyclable est bétonée" + }, + "5": { + "then": "Cette piste cyclable est faite de pavés (taillé ou non)" + }, + "6": { + "then": "Cette piste cyclable est en pavés bruts et naturels" + }, + "7": { + "then": "Cette piste cyclable est en pavés plats ou carrés" + }, + "8": { + "then": "Cette piste cyclable est faite en bois" + }, + "9": { + "then": "Cette piste cyclable est faite en graviers" + }, + "10": { + "then": "Cette piste cyclable est faite en graviers fins" + }, + "11": { + "then": "Cette piste cyclable est en cailloux" + }, + "12": { + "then": "Cette piste cyclable est faite en sol brut" + } + }, + "question": "De quoi est faite la surface de la piste cyclable ?", + "render": "Cette piste cyclable est faite de {cycleway:surface}" + }, + "Is this a cyclestreet? (For a road)": { + "mappings": { + "0": { + "then": "Ceci est une route cyclable, et une zone à 30 km/h" + }, + "1": { + "then": "Ceci est une route cyclable" + }, + "2": { + "then": "Ceci n'est pas une route cyclable" + } + }, + "question": "Est-ce une route cyclable?" + }, + "Maxspeed (for road)": { + "mappings": { + "0": { + "then": "La vitesse maximum est de 20 km/h" + }, + "1": { + "then": "La vitesse maximum est de 30 km/h" + }, + "2": { + "then": "La vitesse maximum est de 50 km/h" + }, + "3": { + "then": "La vitesse maximum est de 70 km/h" + }, + "4": { + "then": "La vitesse maximum est de 90 km/h" + } + }, + "question": "Quelle est la vitesse maximum dans cette rue ?", + "render": "La vitesse maximum dans cette rue est de {maxspeed} km/h" + }, + "Surface of the road": { + "mappings": { + "0": { + "then": "Cette piste cycable est non durcie" + }, + "1": { + "then": "Cette piste cyclable est pavée" + }, + "2": { + "then": "Cette piste cyclable est asphaltée" + }, + "3": { + "then": "Cette piste cyclable est faite en pavés lisses" + }, + "4": { + "then": "Cette piste cyclable est betonée" + }, + "5": { + "then": "Cette piste cyclable est faite de pavés (taillé ou non)" + }, + "6": { + "then": "Cette piste cyclable est en pavés bruts et naturels" + }, + "7": { + "then": "Cette piste cyclable est en pavés plats ou carrés" + }, + "8": { + "then": "Cette piste cyclable est faite en bois" + }, + "9": { + "then": "Cette piste cyclable est faite en graviers" + }, + "10": { + "then": "Cette piste cyclable est faite en graviers fins" + }, + "11": { + "then": "Cette piste cyclable est en cailloux" + }, + "12": { + "then": "Cette piste cyclable est faite en sol brut" + } + }, + "question": "De quel materiel est faite cette rue ?", + "render": "Cette route est faite de {surface}" + }, + "Surface of the street": { + "mappings": { + "0": { + "then": "Utilisable pour les patins: patins à roulettes, skateboard" + } + } + } + }, "title": { "mappings": { "1": { @@ -1620,194 +1807,7 @@ "then": "Vélorue" } } - }, - "tagRenderings": { - "Cycleway type for a road": { - "mappings": { - "1": { - "then": "Il y a une piste cyclable separée de la route" - }, - "0": { - "then": "Il y a une voie partagée" - }, - "4": { - "then": "Il n'y a pas de piste cyclable" - }, - "5": { - "then": "Il n'y a pas de piste cyclable" - }, - "2": { - "then": "Il y a une piste cyclable, mais elle n'est pas separée de la route sur la carte." - }, - "3": { - "then": "Il y a une piste cyclable dessinée séparement" - } - }, - "question": "Quel type de piste cyclable il y a ici ?" - }, - "Cycleway:smoothness": { - "mappings": { - "1": { - "then": "Utilisable pour les roues fines: vélo de course" - }, - "0": { - "then": "Utilisable pour les patins: patins à roulettes, skateboard" - }, - "2": { - "then": "Utilisable pour les roues traditionelles: vélo, chaise roulante, trotinettes" - }, - "7": { - "then": "Impasse / Aucun véhicule roulant" - }, - "3": { - "then": "Utilisable pour les roues robustes: VTT, voitures, pousse-pousse" - }, - "4": { - "then": "Utilisable pour les véhicules à dégagement élevé : véhicule tout-terrain léger" - }, - "5": { - "then": "Utilisable pour les véhicules tout-terrain : véhicule tout-terrain lourd" - }, - "6": { - "then": "Utilisable pour les véhicules hors route spécialisés : tracteur, véhicule 4x4" - } - }, - "question": "Quel est l'état de la piste cyclable ?" - }, - "Cycleway:surface": { - "mappings": { - "7": { - "then": "Cette piste cyclable est en pavés plats ou carrés" - }, - "8": { - "then": "Cette piste cyclable est faite en bois" - }, - "11": { - "then": "Cette piste cyclable est en cailloux" - }, - "12": { - "then": "Cette piste cyclable est faite en sol brut" - }, - "3": { - "then": "Cette piste cyclable est faite de petits pavés" - }, - "9": { - "then": "Cette piste cyclable est faite en graviers" - }, - "6": { - "then": "Cette piste cyclable est en pavés bruts et naturels" - }, - "10": { - "then": "Cette piste cyclable est faite en graviers fins" - }, - "1": { - "then": "Cette piste cyclable est goudronée" - }, - "4": { - "then": "Cette piste cyclable est bétonée" - }, - "0": { - "then": "Cette piste cyclable n'est pas goudronnée" - }, - "5": { - "then": "Cette piste cyclable est faite de pavés (taillé ou non)" - }, - "2": { - "then": "Cette piste cyclable est asphaltée" - } - }, - "question": "De quoi est faite la surface de la piste cyclable ?", - "render": "Cette piste cyclable est faite de {cycleway:surface}" - }, - "Is this a cyclestreet? (For a road)": { - "mappings": { - "1": { - "then": "Ceci est une route cyclable" - }, - "2": { - "then": "Ceci n'est pas une route cyclable" - }, - "0": { - "then": "Ceci est une route cyclable, et une zone à 30 km/h" - } - }, - "question": "Est-ce une route cyclable?" - }, - "Maxspeed (for road)": { - "mappings": { - "0": { - "then": "La vitesse maximum est de 20 km/h" - }, - "4": { - "then": "La vitesse maximum est de 90 km/h" - }, - "2": { - "then": "La vitesse maximum est de 50 km/h" - }, - "1": { - "then": "La vitesse maximum est de 30 km/h" - }, - "3": { - "then": "La vitesse maximum est de 70 km/h" - } - }, - "question": "Quelle est la vitesse maximum dans cette rue ?", - "render": "La vitesse maximum dans cette rue est de {maxspeed} km/h" - }, - "Surface of the road": { - "mappings": { - "1": { - "then": "Cette piste cyclable est pavée" - }, - "2": { - "then": "Cette piste cyclable est asphaltée" - }, - "3": { - "then": "Cette piste cyclable est faite en pavés lisses" - }, - "4": { - "then": "Cette piste cyclable est betonée" - }, - "11": { - "then": "Cette piste cyclable est en cailloux" - }, - "0": { - "then": "Cette piste cycable est non durcie" - }, - "10": { - "then": "Cette piste cyclable est faite en graviers fins" - }, - "8": { - "then": "Cette piste cyclable est faite en bois" - }, - "9": { - "then": "Cette piste cyclable est faite en graviers" - }, - "12": { - "then": "Cette piste cyclable est faite en sol brut" - }, - "7": { - "then": "Cette piste cyclable est en pavés plats ou carrés" - }, - "6": { - "then": "Cette piste cyclable est en pavés bruts et naturels" - }, - "5": { - "then": "Cette piste cyclable est faite de pavés (taillé ou non)" - } - }, - "render": "Cette route est faite de {surface}", - "question": "De quel materiel est faite cette rue ?" - }, - "Surface of the street": { - "mappings": { - "0": { - "then": "Utilisable pour les patins: patins à roulettes, skateboard" - } - } - } - }, - "description": "Toutes les infrastructures sur lesquelles quelqu'un peut rouler, accompagnées de questions sur cette infrastructure" + } }, "defibrillator": { "name": "Défibrillateurs", @@ -3401,4 +3401,4 @@ } } } -} +} \ No newline at end of file