Add generation of documentation on filters

This commit is contained in:
Pieter Vander Vennet 2022-12-06 03:41:54 +01:00
parent e080f79f34
commit aae19f8110
2 changed files with 26 additions and 0 deletions

View file

@ -10,6 +10,9 @@ import { FilterState } from "../FilteredLayer"
import { QueryParameters } from "../../Logic/Web/QueryParameters"
import { Utils } from "../../Utils"
import { RegexTag } from "../../Logic/Tags/RegexTag"
import BaseUIElement from "../../UI/BaseUIElement";
import Table from "../../UI/Base/Table";
import Combine from "../../UI/Base/Combine";
export default class FilterConfig {
public readonly id: string
@ -242,4 +245,21 @@ export default class FilterConfig {
reset
)
}
public GenerateDocs(): BaseUIElement {
const hasField = this.options.some(opt => opt.fields?.length > 0)
return new Table(
Utils.NoNull(["id","question","osmTags",hasField ? "fields" : undefined]),
this.options.map((opt, i) => {
const isDefault = this.options.length > 1 && ((this.defaultSelection ?? 0) == i)
return Utils.NoNull([
this.id + "." + i,
isDefault ? new Combine([opt.question.SetClass("font-bold"), "(default)"]) : opt.question ,
opt.osmTags?.asHumanString(false, false, {}) ?? "",
opt.fields?.length > 0 ? new Combine(opt.fields.map(f => f.name+" ("+f.type+")")) : undefined
]);
})
);
}
}

View file

@ -601,6 +601,11 @@ export default class LayerConfig extends WithContextLoader {
}
}
const filterDocs: (string | BaseUIElement)[] = []
if(this.filters.length > 0){
filterDocs.push(new Title("Filters", 4))
filterDocs.push(...this.filters.map(filter => filter.GenerateDocs()))
}
return new Combine([
new Combine([new Title(this.id, 1), iconImg, this.description, "\n"]).SetClass(
"flex flex-col"
@ -615,6 +620,7 @@ export default class LayerConfig extends WithContextLoader {
new Title("Supported attributes", 2),
quickOverview,
...this.tagRenderings.map((tr) => tr.GenerateDocumentation()),
...filterDocs
])
.SetClass("flex-col")
.SetClass("link-underline")