forked from MapComplete/MapComplete
Add a download button, improve share functionality for custom themes
This commit is contained in:
parent
303ccfa322
commit
6ad64e3f70
10 changed files with 64 additions and 40 deletions
|
@ -14,7 +14,6 @@ import {FixLegacyTheme} from "../Models/ThemeConfig/Conversion/LegacyJsonConvert
|
|||
import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson";
|
||||
import SharedTagRenderings from "../Customizations/SharedTagRenderings";
|
||||
import * as known_layers from "../assets/generated/known_layers.json"
|
||||
import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson";
|
||||
import {PrepareTheme} from "../Models/ThemeConfig/Conversion/PrepareTheme";
|
||||
import * as licenses from "../assets/generated/license_info.json"
|
||||
import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig";
|
||||
|
@ -43,10 +42,6 @@ export default class DetermineLayout {
|
|||
}
|
||||
|
||||
let layoutId: string = undefined
|
||||
if (location.href.indexOf("buurtnatuur.be") >= 0) {
|
||||
layoutId = "buurtnatuur"
|
||||
}
|
||||
|
||||
|
||||
const path = window.location.pathname.split("/").slice(-1)[0];
|
||||
if (path !== "theme.html" && path !== "") {
|
||||
|
@ -72,7 +67,7 @@ export default class DetermineLayout {
|
|||
|
||||
public static LoadLayoutFromHash(
|
||||
userLayoutParam: UIEventSource<string>
|
||||
): (LayoutConfig & {definition: LayoutConfigJson}) | null {
|
||||
): LayoutConfig | null {
|
||||
let hash = location.hash.substr(1);
|
||||
let json: any;
|
||||
|
||||
|
@ -113,9 +108,7 @@ export default class DetermineLayout {
|
|||
|
||||
const layoutToUse = DetermineLayout.prepCustomTheme(json)
|
||||
userLayoutParam.setData(layoutToUse.id);
|
||||
const config = new LayoutConfig(layoutToUse, false);
|
||||
config["definition"] = json
|
||||
return <any> config
|
||||
return layoutToUse
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
if (hash === undefined || hash.length < 10) {
|
||||
|
@ -144,7 +137,7 @@ export default class DetermineLayout {
|
|||
.AttachTo("centermessage");
|
||||
}
|
||||
|
||||
private static prepCustomTheme(json: any): LayoutConfigJson {
|
||||
private static prepCustomTheme(json: any, sourceUrl?: string): LayoutConfig {
|
||||
|
||||
if(json.layers === undefined && json.tagRenderings !== undefined){
|
||||
const iconTr = json.mapRendering.map(mr => mr.icon).find(icon => icon !== undefined)
|
||||
|
@ -161,7 +154,6 @@ export default class DetermineLayout {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
const knownLayersDict = new Map<string, LayerConfigJson>()
|
||||
for (const key in known_layers.layers) {
|
||||
const layer = known_layers.layers[key]
|
||||
|
@ -172,10 +164,17 @@ export default class DetermineLayout {
|
|||
sharedLayers: knownLayersDict
|
||||
}
|
||||
json = new FixLegacyTheme().convertStrict(json, "While loading a dynamic theme")
|
||||
const raw = json;
|
||||
|
||||
json = new FixImages(DetermineLayout._knownImages).convertStrict(json, "While fixing the images")
|
||||
json = new PrepareTheme(converState).convertStrict(json, "While preparing a dynamic theme")
|
||||
console.log("The layoutconfig is ", json)
|
||||
return json
|
||||
|
||||
|
||||
return new LayoutConfig(json, false, {
|
||||
definitionRaw: JSON.stringify(raw, null, " "),
|
||||
definedAtUrl: sourceUrl
|
||||
})
|
||||
}
|
||||
|
||||
private static async LoadRemoteTheme(link: string): Promise<LayoutConfig | null> {
|
||||
|
@ -190,8 +189,7 @@ export default class DetermineLayout {
|
|||
try {
|
||||
parsed.id = link;
|
||||
console.log("Loaded remote link:", link)
|
||||
const layoutToUse = DetermineLayout.prepCustomTheme(parsed)
|
||||
return new LayoutConfig(layoutToUse, false)
|
||||
return DetermineLayout.prepCustomTheme(parsed, link)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
DetermineLayout.ShowErrorOnCustomTheme(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue