From c2f79570b766449d9490bfc27895a58feff73d2f Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 24 Jan 2022 01:41:43 +0100 Subject: [PATCH] Actually fix merge conflict --- .../Conversion/LegacyJsonConvert.ts | 239 ------------------ 1 file changed, 239 deletions(-) diff --git a/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts b/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts index 04c09e625..ebc4363f3 100644 --- a/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts +++ b/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts @@ -7,7 +7,6 @@ import LineRenderingConfigJson from "../Json/LineRenderingConfigJson"; import {LayerConfigJson} from "../Json/LayerConfigJson"; import Constants from "../../Constants"; import {DesugaringContext, DesugaringStep, Fuse, OnEvery} from "./Conversion"; -import {ApplyOverrideAll} from "./ApplyOverrideAll"; export class UpdateLegacyLayer extends DesugaringStep { @@ -395,241 +394,3 @@ export class ValidateThemeAndLayers extends Fuse { ); } } - -<<<<<<< HEAD -======= -class AddDependencyLayersToTheme extends DesugaringStep { - constructor() { - super("If a layer has a dependency on another layer, these layers are added automatically on the theme. (For example: defibrillator depends on 'walls_and_buildings' to snap onto. This layer is added automatically)", ["layers"]); - } - - private static CalculateDependencies(alreadyLoaded: LayerConfigJson[], allKnownLayers: Map, themeId: string): LayerConfigJson[] { - const dependenciesToAdd: LayerConfigJson[] = [] - const loadedLayerIds: Set = new Set(alreadyLoaded.map(l => l.id)); - - // Verify cross-dependencies - let unmetDependencies: { neededLayer: string, neededBy: string, reason: string, context?: string }[] = [] - do { - const dependencies: { neededLayer: string, reason: string, context?: string, neededBy: string }[] = [] - - for (const layerConfig of alreadyLoaded) { - const layerDeps = DependencyCalculator.getLayerDependencies(new LayerConfig(layerConfig)) - dependencies.push(...layerDeps) - } - - // During the generate script, builtin layers are verified but not loaded - so we have to add them manually here - // Their existance is checked elsewhere, so this is fine - unmetDependencies = dependencies.filter(dep => !loadedLayerIds.has(dep.neededLayer)) - for (const unmetDependency of unmetDependencies) { - if (loadedLayerIds.has(unmetDependency.neededLayer)) { - continue - } - const dep = allKnownLayers.get(unmetDependency.neededLayer) - if (dep === undefined) { - const message = - ["Loading a dependency failed: layer " + unmetDependency.neededLayer + " is not found, neither as layer of " + themeId + " nor as builtin layer.", - "This layer is needed by " + unmetDependency.neededBy, - unmetDependency.reason + " (at " + unmetDependency.context + ")", - "Loaded layers are: " + alreadyLoaded.map(l => l.id).join(",") - - ] - throw message.join("\n\t"); - } - dependenciesToAdd.unshift(dep) - loadedLayerIds.add(dep.id); - unmetDependencies = unmetDependencies.filter(d => d.neededLayer !== unmetDependency.neededLayer) - } - - } while (unmetDependencies.length > 0) - - return dependenciesToAdd; - } - - convert(state: DesugaringContext, theme: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } { - const allKnownLayers: Map = state.sharedLayers; - const knownTagRenderings: Map = state.tagRenderings; - const errors = []; - const warnings = []; - const layers: LayerConfigJson[] = theme.layers; // Layers should be expanded at this point - - knownTagRenderings.forEach((value, key) => { - value.id = key; - }) - - const dependencies = AddDependencyLayersToTheme.CalculateDependencies(layers, allKnownLayers, theme.id); - if (dependencies.length > 0) { - - warnings.push(context + ": added " + dependencies.map(d => d.id).join(", ") + " to the theme as they are needed") - } - layers.unshift(...dependencies); - - return { - result: { - ...theme, - layers: layers - }, - errors, - warnings - }; - } -} - -class SetDefault extends DesugaringStep { - private readonly value: any; - private readonly key: string; - private readonly _overrideEmptyString: boolean; - - constructor(key: string, value: any, overrideEmptyString = false) { - super("Sets " + key + " to a default value if undefined"); - this.key = key; - this.value = value; - this._overrideEmptyString = overrideEmptyString; - } - - convert(state: DesugaringContext, json: T, context: string): { result: T; errors: string[]; warnings: string[] } { - if (json[this.key] === undefined || (json[this.key] === "" && this._overrideEmptyString)) { - json = {...json} - json[this.key] = this.value - } - - return { - errors: [], warnings: [], - result: json - }; - } -} - -export class PrepareLayer extends Fuse { - constructor() { - super( - "Fully prepares and expands a layer for the LayerConfig.", - new OnEveryConcat("tagRenderings", new ExpandGroupRewrite()), - new OnEveryConcat("tagRenderings", new ExpandTagRendering()), - new SetDefault("titleIcons", ["defaults"]), - new OnEveryConcat("titleIcons", new ExpandTagRendering()) - ); - } -} - -class SubstituteLayer extends Conversion<(string | LayerConfigJson), LayerConfigJson[]> { - constructor() { - super("Converts the identifier of a builtin layer into the actual layer, or converts a 'builtin' syntax with override in the fully expanded form", []); - } - - convert(state: DesugaringContext, json: string | LayerConfigJson, context: string): { result: LayerConfigJson[]; errors: string[]; warnings: string[] } { - const errors = [] - const warnings = [] - if (typeof json === "string") { - const found = state.sharedLayers.get(json) - if (found === undefined) { - return { - result: null, - errors: [context + ": The layer with name " + json + " was not found as a builtin layer"], - warnings - } - } - return { - result: [found], - errors, warnings - } - } - - if (json["builtin"] !== undefined) { - let names = json["builtin"] - if (typeof names === "string") { - names = [names] - } - const layers = [] - for (const name of names) { - const found = Utils.Clone(state.sharedLayers.get(name)) - if (found === undefined) { - errors.push(context + ": The layer with name " + json + " was not found as a builtin layer") - continue - } - if (json["override"]["tagRenderings"] !== undefined && (found["tagRenderings"] ?? []).length > 0) { - errors.push(`At ${context}: when overriding a layer, an override is not allowed to override into tagRenderings. Use "+tagRenderings" or "tagRenderings+" instead to prepend or append some questions.`) - } - try { - Utils.Merge(json["override"], found); - layers.push(found) - } catch (e) { - errors.push(`At ${context}: could not apply an override due to: ${e}.\nThe override is: ${JSON.stringify(json["override"],)}`) - } - } - return { - result: layers, - errors, warnings - } - - } - - return { - result: [json], - errors, warnings - }; - } - -} - -class AddDefaultLayers extends DesugaringStep { - - constructor() { - super("Adds the default layers, namely: " + Constants.added_by_default.join(", "), ["layers"]); - } - - convert(state: DesugaringContext, json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } { - const errors = [] - const warnings = [] - json.layers = [...json.layers] - - if (json.id === "personal") { - json.layers = [] - for (const publicLayer of AllKnownLayouts.AllPublicLayers()) { - const id = publicLayer.id - const config = state.sharedLayers.get(id) - if(Constants.added_by_default.indexOf(id) >= 0){ - continue; - } - if(config === undefined){ - // This is a layer which is coded within a public theme, not as separate .json - continue - } - json.layers.push(config) - } - const publicIds = AllKnownLayouts.AllPublicLayers().map(l => l.id) - publicIds.map(id => state.sharedLayers.get(id)) - } - - for (const layerName of Constants.added_by_default) { - const v = state.sharedLayers.get(layerName) - if (v === undefined) { - errors.push("Default layer " + layerName + " not found") - } - json.layers.push(v) - } - - return { - result: json, - errors, - warnings - }; - } - -} - -export class PrepareTheme extends Fuse { - constructor() { - super( - "Fully prepares and expands a theme", - new OnEveryConcat("layers", new SubstituteLayer()), - new SetDefault("socialImage", "assets/SocialImage.png", true), - new OnEvery("layers", new PrepareLayer()), - new ApplyOverrideAll(), - new AddDefaultLayers(), - - new AddDependencyLayersToTheme(), - new OnEvery("layers", new AddMiniMap()) - ); - } -} ->>>>>>> master