Fix selecting another background layer in minimaps

This commit is contained in:
pietervdvn 2021-11-30 18:10:46 +01:00
parent 3f37848022
commit 6e9d4b327e
3 changed files with 15 additions and 4 deletions

View file

@ -11,6 +11,10 @@ export class UIEventSource<T> {
constructor(data: T, tag: string = "") {
this.tag = tag;
this.data = data;
if(tag === undefined || tag === ""){
const callstack = new Error().stack.split("\n")
this.tag = callstack[1]
}
UIEventSource.allSources.push(this);
}
@ -278,9 +282,11 @@ export class UIEventSource<T> {
g: ((j: J, t: T) => T) = undefined): UIEventSource<J> {
const self = this;
const stack = new Error().stack.split("\n");
const callee = stack[1]
const newSource = new UIEventSource<J>(
f(this.data),
"map(" + this.tag + ")"
"map(" + this.tag + ")@"+callee
);
const update = function () {

View file

@ -197,6 +197,7 @@ export default class BackgroundMapSwitch extends Combine {
super(buttons)
this.SetClass("flex")
currentBackground.addCallbackAndRun(bg => console.trace("Current background is", bg.id))
}
}

View file

@ -12,6 +12,7 @@ import Translations from "../i18n/Translations";
import Svg from "../../Svg";
import Toggle from "../Input/Toggle";
import SimpleAddUI, {PresetInfo} from "../BigComponents/SimpleAddUI";
import BaseLayer from "../../Models/BaseLayer";
export default class ConfirmLocationOfPoint extends Combine {
@ -19,7 +20,8 @@ export default class ConfirmLocationOfPoint extends Combine {
constructor(
state: {
osmConnection: OsmConnection,
featurePipeline: FeaturePipeline
featurePipeline: FeaturePipeline,
backgroundLayer: UIEventSource<BaseLayer>
},
filterViewIsOpened: UIEventSource<boolean>,
preset: PresetInfo,
@ -35,9 +37,11 @@ export default class ConfirmLocationOfPoint extends Combine {
const zloc = {...loc, zoom: 19}
const locationSrc = new UIEventSource(zloc);
let backgroundLayer = undefined;
let backgroundLayer = new UIEventSource(state?.backgroundLayer?.data ?? AvailableBaseLayers.osmCarto);
if (preset.preciseInput.preferredBackground) {
backgroundLayer = AvailableBaseLayers.SelectBestLayerAccordingTo(locationSrc, new UIEventSource<string | string[]>(preset.preciseInput.preferredBackground))
const defaultBackground = AvailableBaseLayers.SelectBestLayerAccordingTo(locationSrc, new UIEventSource<string | string[]>(preset.preciseInput.preferredBackground));
// Note that we _break the link_ here, as the minimap will take care of the switching!
backgroundLayer.setData(defaultBackground.data)
}
let snapToFeatures: UIEventSource<{ feature: any }[]> = undefined