import {TagRenderingConfigJson} from "../Json/TagRenderingConfigJson" import {Utils} from "../../../Utils" import SpecialVisualizations from "../../../UI/SpecialVisualizations" import {RenderingSpecification, SpecialVisualization} from "../../../UI/SpecialVisualization" import {LayerConfigJson} from "../Json/LayerConfigJson" export default class ValidationUtils { public static hasSpecialVisualisation( layer: LayerConfigJson, specialVisualisation: string ): boolean { return ( layer.tagRenderings?.some((tagRendering) => { if(tagRendering === undefined){ return false } const spec = ValidationUtils.getSpecialVisualisations(tagRendering) return spec.some((vis) => vis.funcName === specialVisualisation); } ) ?? false ) } /** * Gives all the (function names of) used special visualisations * @param renderingConfig */ public static getSpecialVisualisations( renderingConfig: TagRenderingConfigJson ): SpecialVisualization[] { return ValidationUtils.getSpecialVisualsationsWithArgs(renderingConfig).map( (spec) => spec["func"] ) } public static getSpecialVisualsationsWithArgs( renderingConfig: TagRenderingConfigJson ): RenderingSpecification[] { const translations: any[] = Utils.NoNull([ renderingConfig.render, ...(renderingConfig.mappings ?? []).map((m) => m.then), ]) const all: RenderingSpecification[] = [] for (let translation of translations) { if (typeof translation == "string") { translation = {"*": translation} } for (const key in translation) { if (!translation.hasOwnProperty(key)) { continue } const template = translation[key] const parts = SpecialVisualizations.constructSpecification(template) const specials = parts.filter((p) => typeof p !== "string") all.push(...specials) } } return all } }