forked from MapComplete/MapComplete
Quickfix for loading external themes
This commit is contained in:
parent
e404e48f29
commit
848a05a21f
3 changed files with 34 additions and 36 deletions
|
@ -156,17 +156,8 @@ export default class DetermineLayout {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
let parsed = await Utils.downloadJson(link)
|
let parsed = await Utils.downloadJson(link)
|
||||||
console.log("Got ", parsed)
|
|
||||||
parsed = new FixLegacyTheme().convertStrict({
|
|
||||||
tagRenderings: SharedTagRenderings.SharedTagRenderingJson,
|
|
||||||
sharedLayers: new Map<string, LayerConfigJson>() // FIXME: actually add the layers
|
|
||||||
}, parsed, "While loading a dynamic theme")
|
|
||||||
|
|
||||||
|
|
||||||
parsed.id = link;
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
parsed.id = link;
|
||||||
const layoutToUse = DetermineLayout.prepCustomTheme(parsed)
|
const layoutToUse = DetermineLayout.prepCustomTheme(parsed)
|
||||||
return new LayoutConfig(layoutToUse,false).patchImages(link, JSON.stringify(layoutToUse));
|
return new LayoutConfig(layoutToUse,false).patchImages(link, JSON.stringify(layoutToUse));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -2,7 +2,7 @@ import {Utils} from "../Utils";
|
||||||
|
|
||||||
export default class Constants {
|
export default class Constants {
|
||||||
|
|
||||||
public static vNumber = "0.14.3";
|
public static vNumber = "0.14.4";
|
||||||
public static ImgurApiKey = '7070e7167f0a25a'
|
public static ImgurApiKey = '7070e7167f0a25a'
|
||||||
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"
|
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"
|
||||||
|
|
||||||
|
|
|
@ -180,20 +180,19 @@ class AddMiniMap extends DesugaringStep<LayerConfigJson> {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
convert(state: DesugaringContext, layerConfig: LayerConfigJson, context: string): { result: LayerConfigJson; errors: string[]; warnings: string[] } {
|
convert(state: DesugaringContext, layerConfig: LayerConfigJson, context: string): { result: LayerConfigJson; errors: string[]; warnings: string[] } {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const hasMinimap = layerConfig.tagRenderings?.some(tr => AddMiniMap.hasMinimap(<TagRenderingConfigJson> tr)) ?? true
|
const hasMinimap = layerConfig.tagRenderings?.some(tr => AddMiniMap.hasMinimap(<TagRenderingConfigJson>tr)) ?? true
|
||||||
if (!hasMinimap) {
|
if (!hasMinimap) {
|
||||||
layerConfig = {...layerConfig}
|
layerConfig = {...layerConfig}
|
||||||
layerConfig.tagRenderings = [...layerConfig.tagRenderings]
|
layerConfig.tagRenderings = [...layerConfig.tagRenderings]
|
||||||
layerConfig.tagRenderings.push(state.tagRenderings.get("minimap"))
|
layerConfig.tagRenderings.push(state.tagRenderings.get("minimap"))
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
errors:[],
|
errors: [],
|
||||||
warnings: [],
|
warnings: [],
|
||||||
result: layerConfig
|
result: layerConfig
|
||||||
};
|
};
|
||||||
|
@ -448,9 +447,13 @@ export class UpdateLegacyLayer extends DesugaringStep<LayerConfigJson | string |
|
||||||
if (typeof json === "string") {
|
if (typeof json === "string") {
|
||||||
return json
|
return json
|
||||||
}
|
}
|
||||||
|
console.log("Updating legacy layer", json)
|
||||||
if (json["builtin"] !== undefined) {
|
if (json["builtin"] !== undefined) {
|
||||||
// @ts-ignore
|
return {
|
||||||
return json;
|
result: json,
|
||||||
|
errors: [],
|
||||||
|
warnings: []
|
||||||
|
};
|
||||||
}
|
}
|
||||||
let config: any = {...json};
|
let config: any = {...json};
|
||||||
|
|
||||||
|
@ -572,6 +575,9 @@ class UpdateLegacyTheme extends DesugaringStep<LayoutConfigJson> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldThemeConfig.layers = Utils.NoNull(oldThemeConfig.layers)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
errors: [],
|
errors: [],
|
||||||
warnings: [],
|
warnings: [],
|
||||||
|
@ -874,8 +880,8 @@ class AddDependencyLayersToTheme extends DesugaringStep<LayoutConfigJson> {
|
||||||
const knownTagRenderings: Map<string, TagRenderingConfigJson> = state.tagRenderings;
|
const knownTagRenderings: Map<string, TagRenderingConfigJson> = state.tagRenderings;
|
||||||
const errors = [];
|
const errors = [];
|
||||||
const warnings = [];
|
const warnings = [];
|
||||||
const layers: LayerConfigJson[] = <LayerConfigJson[]> theme.layers; // Layers should be expanded at this point
|
const layers: LayerConfigJson[] = <LayerConfigJson[]>theme.layers; // Layers should be expanded at this point
|
||||||
|
|
||||||
knownTagRenderings.forEach((value, key) => {
|
knownTagRenderings.forEach((value, key) => {
|
||||||
value.id = key;
|
value.id = key;
|
||||||
})
|
})
|
||||||
|
@ -943,6 +949,7 @@ class SubstituteLayer extends Conversion<(string | LayerConfigJson), LayerConfig
|
||||||
convert(state: DesugaringContext, json: string | LayerConfigJson, context: string): { result: LayerConfigJson[]; errors: string[]; warnings: string[] } {
|
convert(state: DesugaringContext, json: string | LayerConfigJson, context: string): { result: LayerConfigJson[]; errors: string[]; warnings: string[] } {
|
||||||
const errors = []
|
const errors = []
|
||||||
const warnings = []
|
const warnings = []
|
||||||
|
console.log("Substituting layer ", json)
|
||||||
if (typeof json === "string") {
|
if (typeof json === "string") {
|
||||||
const found = state.sharedLayers.get(json)
|
const found = state.sharedLayers.get(json)
|
||||||
if (found === undefined) {
|
if (found === undefined) {
|
||||||
|
@ -1011,10 +1018,10 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
|
||||||
for (const publicLayer of AllKnownLayouts.AllPublicLayers()) {
|
for (const publicLayer of AllKnownLayouts.AllPublicLayers()) {
|
||||||
const id = publicLayer.id
|
const id = publicLayer.id
|
||||||
const config = state.sharedLayers.get(id)
|
const config = state.sharedLayers.get(id)
|
||||||
if(Constants.added_by_default.indexOf(id) >= 0){
|
if (Constants.added_by_default.indexOf(id) >= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(config === undefined){
|
if (config === undefined) {
|
||||||
// This is a layer which is coded within a public theme, not as separate .json
|
// This is a layer which is coded within a public theme, not as separate .json
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -1031,7 +1038,7 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
|
||||||
}
|
}
|
||||||
json.layers.push(v)
|
json.layers.push(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
result: json,
|
result: json,
|
||||||
errors,
|
errors,
|
||||||
|
@ -1042,33 +1049,33 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ApplyOverrideAll extends DesugaringStep<LayoutConfigJson> {
|
export class ApplyOverrideAll extends DesugaringStep<LayoutConfigJson> {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards",["overrideAll","layers"]);
|
super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards", ["overrideAll", "layers"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
convert(state: DesugaringContext, json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } {
|
convert(state: DesugaringContext, json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } {
|
||||||
|
|
||||||
const overrideAll = json.overrideAll;
|
const overrideAll = json.overrideAll;
|
||||||
if(overrideAll === undefined){
|
if (overrideAll === undefined) {
|
||||||
return {result :json, warnings: [], errors: []}
|
return {result: json, warnings: [], errors: []}
|
||||||
}
|
}
|
||||||
|
|
||||||
json = {...json}
|
json = {...json}
|
||||||
|
|
||||||
delete json.overrideAll
|
delete json.overrideAll
|
||||||
const newLayers = []
|
const newLayers = []
|
||||||
for (let layer of json.layers) {
|
for (let layer of json.layers) {
|
||||||
layer = {...<LayerConfigJson>layer}
|
layer = {...<LayerConfigJson>layer}
|
||||||
Utils.Merge(overrideAll, layer)
|
Utils.Merge(overrideAll, layer)
|
||||||
newLayers.push(layer)
|
newLayers.push(layer)
|
||||||
}
|
}
|
||||||
json.layers = newLayers
|
json.layers = newLayers
|
||||||
|
|
||||||
|
|
||||||
return {result :json, warnings: [], errors: []};
|
return {result: json, warnings: [], errors: []};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PrepareTheme extends Fuse<LayoutConfigJson> {
|
export class PrepareTheme extends Fuse<LayoutConfigJson> {
|
||||||
|
@ -1080,7 +1087,7 @@ export class PrepareTheme extends Fuse<LayoutConfigJson> {
|
||||||
new OnEvery("layers", new PrepareLayer()),
|
new OnEvery("layers", new PrepareLayer()),
|
||||||
new ApplyOverrideAll(),
|
new ApplyOverrideAll(),
|
||||||
new AddDefaultLayers(),
|
new AddDefaultLayers(),
|
||||||
|
|
||||||
new AddDependencyLayersToTheme(),
|
new AddDependencyLayersToTheme(),
|
||||||
new OnEvery("layers", new AddMiniMap())
|
new OnEvery("layers", new AddMiniMap())
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue