64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
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(
|
|
<TagRenderingConfigJson>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
|
|
}
|
|
}
|