From 97a69ff9036355cda3c69ef39af7aaf20f5be5d3 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sat, 8 Aug 2020 02:16:42 +0200 Subject: [PATCH] Various bug fixes, add layer selection and background selection as parameter to the URL (fix #86, fix #84) --- Customizations/Layers/Widths.ts | 1 - Customizations/Layout.ts | 1 + Customizations/Layouts/StreetWidth.ts | 2 + Customizations/Questions/bike/StationStand.ts | 8 +-- InitUiElements.ts | 26 +++++++- Logic/Leaflet/GeoLocationHandler.ts | 6 +- State.ts | 2 +- UI/ShareScreen.ts | 57 +++++++++++++++--- UI/UIEventSource.ts | 18 ++++-- Utils.ts | 13 +++- assets/crosshair-blue-center.png | Bin 3799 -> 0 bytes assets/crosshair-blue.png | Bin 3779 -> 0 bytes assets/crosshair.png | Bin 3754 -> 0 bytes index.ts | 2 +- 14 files changed, 111 insertions(+), 25 deletions(-) delete mode 100644 assets/crosshair-blue-center.png delete mode 100644 assets/crosshair-blue.png delete mode 100644 assets/crosshair.png diff --git a/Customizations/Layers/Widths.ts b/Customizations/Layers/Widths.ts index 3a68194..8447b9b 100644 --- a/Customizations/Layers/Widths.ts +++ b/Customizations/Layers/Widths.ts @@ -178,7 +178,6 @@ export class Widths extends LayerDefinition { this.elementsToShow = [ new TagRenderingOptions({ - question: "Mogen auto's hier parkeren?", mappings: [ { k: this._bothSideParking, diff --git a/Customizations/Layout.ts b/Customizations/Layout.ts index ebe966b..9baccb6 100644 --- a/Customizations/Layout.ts +++ b/Customizations/Layout.ts @@ -40,6 +40,7 @@ export class Layout { * This number influences this */ public widenFactor: number = 0.07; + public defaultBackground: string = "osm"; /** * diff --git a/Customizations/Layouts/StreetWidth.ts b/Customizations/Layouts/StreetWidth.ts index da09971..bf64236 100644 --- a/Customizations/Layouts/StreetWidth.ts +++ b/Customizations/Layouts/StreetWidth.ts @@ -91,6 +91,8 @@ export class StreetWidth extends Layout{ this.enableUserBadge = false; this.enableAdd = false; this.hideFromOverview = true; + this.enableMoreQuests = false; + this.enableShareScreen = false; } } \ No newline at end of file diff --git a/Customizations/Questions/bike/StationStand.ts b/Customizations/Questions/bike/StationStand.ts index c21d232..ca343e2 100644 --- a/Customizations/Questions/bike/StationStand.ts +++ b/Customizations/Questions/bike/StationStand.ts @@ -5,13 +5,13 @@ import {TagRenderingOptions} from "../../TagRenderingOptions"; export default class BikeStationStand extends TagRenderingOptions { constructor() { - const to = Translations + const to = Translations.t.cyclofix.station.stand; super({ priority: 10, - question: "Does this bike station have a hook to suspend your bike with or a stand to elevate it?", + question: to.question, mappings: [ - {k: new Tag("service:bicycle:stand", "yes"), txt: "There is a hook or stand"}, - {k: new Tag("service:bicycle:stand", "no"), txt: "There is no hook or stand"}, + {k: new Tag("service:bicycle:stand", "yes"), txt: to.yes}, + {k: new Tag("service:bicycle:stand", "no"), txt: to.no}, ] }); } diff --git a/InitUiElements.ts b/InitUiElements.ts index 9232afe..18a9c8b 100644 --- a/InitUiElements.ts +++ b/InitUiElements.ts @@ -26,6 +26,7 @@ import {CustomLayout} from "./Logic/CustomLayers"; import {Preset} from "./Customizations/LayerDefinition"; import {VariableUiElement} from "./UI/Base/VariableUIElement"; import {LayerUpdater} from "./Logic/LayerUpdater"; +import {QueryParameters} from "./Logic/QueryParameters"; export class InitUiElements { @@ -136,7 +137,7 @@ export class InitUiElements { } static InitBaseMap(){ - State.state.bm = new Basemap("leafletDiv", State.state.locationControl, new VariableUiElement( + const bm = new Basemap("leafletDiv", State.state.locationControl, new VariableUiElement( State.state.locationControl.map((location) => { const mapComplete = `Mapcomple ${State.vNumber} Report bug`; let editHere = ""; @@ -150,7 +151,23 @@ export class InitUiElements { }) )); + State.state.bm = bm; State.state.layerUpdater = new LayerUpdater(State.state); + const queryParam = QueryParameters.GetQueryParameter("background", State.state.layoutToUse.data.defaultBackground); + const queryParamMapped: UIEventSource<{ id: string, name: string, layer: any }> = + queryParam.map<{ id: string, name: string, layer: any }>((id) => { + for (const layer of BaseLayers.baseLayers) { + if (layer.id === id) { + return layer; + } + } + return undefined; + }, [], (layerInfo) => { + return layerInfo.id + }); + + queryParamMapped.syncWith(bm.CurrentLayer); + } @@ -194,7 +211,12 @@ export class InitUiElements { const flayer: FilteredLayer = FilteredLayer.fromDefinition(layer, generateInfo); flayers.push(flayer); - flayer.isDisplayed.setData(true) + + QueryParameters.GetQueryParameter("layer-" + layer.id, "true") + .map((str) => str !== "false", [], (b) => b.toString()) + .syncWith( + flayer.isDisplayed + ) } State.state.filteredLayers.setData(flayers); diff --git a/Logic/Leaflet/GeoLocationHandler.ts b/Logic/Leaflet/GeoLocationHandler.ts index 67c19c4..b80c8bd 100644 --- a/Logic/Leaflet/GeoLocationHandler.ts +++ b/Logic/Leaflet/GeoLocationHandler.ts @@ -3,6 +3,7 @@ import {UIEventSource} from "../../UI/UIEventSource"; import {UIElement} from "../../UI/UIElement"; import {State} from "../../State"; import {Utils} from "../../Utils"; +import {Basemap} from "./Basemap"; export class GeoLocationHandler extends UIElement { @@ -38,7 +39,8 @@ export class GeoLocationHandler extends UIElement { } - const map = State.state.bm.map; + const bm : Basemap = State.state.bm; + const map = bm.map; map.on('accuratepositionprogress', onAccuratePositionProgress); map.on('accuratepositionfound', onAccuratePositionFound); map.on('accuratepositionerror', onAccuratePositionError); @@ -53,7 +55,7 @@ export class GeoLocationHandler extends UIElement { State.state.currentGPSLocation.addCallback((location) => { const newMarker = L.marker(location.latlng, {icon: icon}); - newMarker.addTo(map.map); + newMarker.addTo(map); if (self._marker !== undefined) { map.removeLayer(self._marker); diff --git a/State.ts b/State.ts index b24fb8b..f3cb73d 100644 --- a/State.ts +++ b/State.ts @@ -24,7 +24,7 @@ export class State { // The singleton of the global state public static state: State; - public static vNumber = "0.0.2"; + public static vNumber = "0.0.3"; public static runningFromConsole: boolean = false; diff --git a/UI/ShareScreen.ts b/UI/ShareScreen.ts index e132b94..34e299d 100644 --- a/UI/ShareScreen.ts +++ b/UI/ShareScreen.ts @@ -10,6 +10,9 @@ import {VerticalCombine} from "./Base/VerticalCombine"; import {QueryParameters} from "../Logic/QueryParameters"; import {Img} from "./Img"; import {State} from "../State"; +import {Basemap} from "../Logic/Leaflet/Basemap"; +import {FilteredLayer} from "../Logic/FilteredLayer"; +import {Utils} from "../Utils"; export class ShareScreen extends UIElement { @@ -36,7 +39,7 @@ export class ShareScreen extends UIElement { const currentLocation = State.state.locationControl; const layout = State.state.layoutToUse.data; - + optionParts.push(includeLocation.isEnabled.map((includeL) => { if (includeL) { return `z=${currentLocation.data.zoom}&lat=${currentLocation.data.lat}&lon=${currentLocation.data.lon}` @@ -46,6 +49,50 @@ export class ShareScreen extends UIElement { }, [currentLocation])); + const currentLayer: UIEventSource<{ id: string, name: string, layer: any }> = (State.state.bm as Basemap).CurrentLayer; + const currentBackground = new VariableUiElement( + currentLayer.map( + (layer) => `Include the current background choice ${layer.name}` + ) + ); + const includeCurrentBackground = new CheckBox( + new Combine([Img.checkmark, currentBackground]), + new Combine([Img.no_checkmark, currentBackground]), + true + ) + optionCheckboxes.push(includeCurrentBackground); + optionParts.push(includeCurrentBackground.isEnabled.map((includeBG) => { + if (includeBG) { + return "background=" + currentLayer.data.id + } else { + return null + } + }, [currentLayer])); + + + const includeLayerChoices = new CheckBox( + new Combine([Img.checkmark, "Include the current layer choices"]), + new Combine([Img.no_checkmark, "Include the current layer choices"]), + true + ) + optionCheckboxes.push(includeLayerChoices); + + function fLayerToParam(flayer: FilteredLayer){ + if(flayer.isDisplayed.data){ + return null; // Being displayed is the default + } + return "layer-"+flayer.layerDef.id+"="+flayer.isDisplayed.data + } + + optionParts.push(includeLayerChoices.isEnabled.map((includeLayerSelection) => { + if (includeLayerSelection) { + return Utils.NoNull(State.state.filteredLayers.data.map(fLayerToParam)).join("&") + } else { + return null + } + }, State.state.filteredLayers.data.map((flayer) => flayer.isDisplayed))); + + const switches = [{urlName: "fs-userbadge", human: "Enable the login-button"}, {urlName: "fs-search", human: "Enable search bar"}, {urlName: "fs-welcome-message", human: "Enable the welcome message"}, @@ -79,13 +126,7 @@ export class ShareScreen extends UIElement { let literalText = "https://pietervdvn.github.io/MapComplete/" + layout.name + ".html" - const parts = []; - for (const part of optionParts) { - if (part.data === null) { - continue; - } - parts.push(part.data); - } + const parts = Utils.NoNull(optionParts.map((eventSource) => eventSource.data)); if (parts.length === 0) { return literalText; diff --git a/UI/UIEventSource.ts b/UI/UIEventSource.ts index 579cb8b..bffcb4a 100644 --- a/UI/UIEventSource.ts +++ b/UI/UIEventSource.ts @@ -45,9 +45,14 @@ export class UIEventSource{ } public map(f: ((T) => J), - extraSources: UIEventSource[] = []): UIEventSource { + extraSources: UIEventSource[] = [], + g: ((J) => T) = undefined ): UIEventSource { const self = this; - + + const newSource = new UIEventSource( + f(this.data) + ); + const update = function () { newSource.setData(f(self.data)); newSource.ping(); @@ -57,9 +62,12 @@ export class UIEventSource{ for (const extraSource of extraSources) { extraSource.addCallback(update); } - const newSource = new UIEventSource( - f(this.data) - ); + + if(g !== undefined) { + newSource.addCallback((latest) => { + self.setData((g(latest))); + }) + } return newSource; diff --git a/Utils.ts b/Utils.ts index 0b29860..1727229 100644 --- a/Utils.ts +++ b/Utils.ts @@ -25,7 +25,7 @@ export class Utils { } static DoEvery(millis: number, f: (() => void)) { - if(State.runningFromConsole){ + if (State.runningFromConsole) { return; } window.setTimeout( @@ -36,6 +36,17 @@ export class Utils { , millis) } + public static NoNull(array: T[]): T[] { + const ls: T[] = []; + for (const t of array) { + if (t === undefined || t === null) { + continue; + } + ls.push(t); + } + return ls; + } + public static CreateLanguagePicker(label: string | UIElement = "") { return new DropDown(label, State.state.layoutToUse.data.supportedLanguages.map(lang => { diff --git a/assets/crosshair-blue-center.png b/assets/crosshair-blue-center.png deleted file mode 100644 index 31f28de29d11a5f8f0d508a6b1a97bb114e193fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3799 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 diff --git a/assets/crosshair.png b/assets/crosshair.png deleted file mode 100644 index 104c9603ac2f3da37e0c2e41d68d4c4f5486b060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 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 diff --git a/index.ts b/index.ts index 3291072..eb97202 100644 --- a/index.ts +++ b/index.ts @@ -40,7 +40,7 @@ if (location.hostname === "localhost" || location.hostname === "127.0.0.1") { // ----------------- SELECT THE RIGHT QUESTSET ----------------- -let defaultLayout = "buurtnatuur" +let defaultLayout = "bookcases" const path = window.location.pathname.split("/").slice(-1)[0]; if (path !== "index.html") {