Fix overlays in PDF, add overlay URL parameters

This commit is contained in:
Pieter Vander Vennet 2021-10-15 00:52:31 +02:00
parent 891c449058
commit 4e43673de5
9 changed files with 32 additions and 9 deletions

View file

@ -508,7 +508,6 @@ export class InitUiElements {
const initialized =new Set()
for (const overlayToggle of State.state.overlayToggles) {
new ShowOverlayLayer(overlayToggle.config, state.leafletMap, overlayToggle.isDisplayed)
initialized.add(overlayToggle.config)

View file

@ -3,12 +3,17 @@
*/
export default interface TilesourceConfigJson {
/**
* Id of this overlay, used in the URL-parameters to set the state
*/
id: string,
/**
* The path, where {x}, {y} and {z} will be substituted
*/
source: string,
/**
* Wether or not this is an overlay. Default: true
*/
isOverlay?: boolean,
/**

View file

@ -254,7 +254,7 @@ export default class LayerConfig {
)}`;
}
return new TagRenderingConfig("questions", undefined);
return new TagRenderingConfig("questions", undefined, context);
}
if (renderingJson["override"] !== undefined) {

View file

@ -4,6 +4,7 @@ import {Translation} from "../../UI/i18n/Translation";
export default class TilesourceConfig {
public readonly source: string
public readonly id: string
public readonly isOverlay: boolean
public readonly name: Translation
public readonly minzoom: number
@ -11,13 +12,16 @@ export default class TilesourceConfig {
public readonly defaultState: boolean;
constructor(config: TilesourceConfigJson, ctx: string = "") {
this.id = config.id
this.source = config.source;
this.isOverlay = config.isOverlay ?? false;
this.name = Translations.T(config.name)
this.minzoom = config.minZoom ?? 0
this.maxzoom = config.maxZoom ?? 999
this.defaultState = config.defaultState ?? true;
if(this.id === undefined){
throw "An id is obligated"
}
if (this.minzoom > this.maxzoom) {
throw "Invalid tilesourceConfig: minzoom should be smaller then maxzoom (at " + ctx + ")"
}

View file

@ -426,7 +426,7 @@ export default class State {
this.overlayToggles = this.layoutToUse.tileLayerSources.filter(c => c.name !== undefined).map(c => ({
config: c,
isDisplayed: new UIEventSource<boolean>(c.defaultState)
isDisplayed: QueryParameters.GetQueryParameter("overlay-"+c.id, ""+c.defaultState,"Wether or not the overlay "+c.id+" is shown").map(str => str === "true", [], b => ""+b)
}))
}

View file

@ -14,6 +14,7 @@ import LayoutConfig from "../Models/ThemeConfig/LayoutConfig";
import FeaturePipeline from "../Logic/FeatureSource/FeaturePipeline";
import ShowDataLayer from "./ShowDataLayer/ShowDataLayer";
import {BBox} from "../Logic/BBox";
import ShowOverlayLayer from "./ShowDataLayer/ShowOverlayLayer";
/**
* Creates screenshoter to take png screenshot
* Creates jspdf and downloads it
@ -103,6 +104,19 @@ export default class ExportPDF {
})
const initialized =new Set()
for (const overlayToggle of State.state.overlayToggles) {
new ShowOverlayLayer(overlayToggle.config, minimap.leafletMap, overlayToggle.isDisplayed)
initialized.add(overlayToggle.config)
}
for (const tileLayerSource of State.state.layoutToUse.tileLayerSources) {
if (initialized.has(tileLayerSource)) {
continue
}
new ShowOverlayLayer(tileLayerSource, minimap.leafletMap)
}
}
private cleanup() {

View file

@ -133,7 +133,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
State.state.featureSwitchIsDebugging.map(isDebugging => {
if (isDebugging) {
const config: TagRenderingConfig = new TagRenderingConfig({render: "{all_tags()}"}, new Tag("id", ""), "");
return new TagRenderingAnswer(tags, config)
return new TagRenderingAnswer(tags, config, "all_tags")
}
})
)

View file

@ -27,13 +27,14 @@
},
"tileLayerSources": [
{
"id": "property-boundaries",
"source": "https://tiles.osmuk.org/PropertyBoundaries/{z}/{x}/{y}.png",
"isOverlay": true,
"minZoom": 18,
"maxZoom": 20,
"defaultState": false,
"name": {
"en": "Parcel boundaries"
"en": "Property boundaries by osmuk.org"
}
}
],

View file

@ -166,7 +166,7 @@ export default class TagSpec extends T {
}
],
condition: "x="
}, undefined, "");
}, undefined, "Tests");
equal(undefined, tr.GetRenderValue({"foo": "bar"}));
equal("Has no name", tr.GetRenderValue({"noname": "yes"})?.txt);