Add generation of documentation on filters
This commit is contained in:
parent
e080f79f34
commit
aae19f8110
2 changed files with 26 additions and 0 deletions
|
@ -10,6 +10,9 @@ import { FilterState } from "../FilteredLayer"
|
||||||
import { QueryParameters } from "../../Logic/Web/QueryParameters"
|
import { QueryParameters } from "../../Logic/Web/QueryParameters"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import { RegexTag } from "../../Logic/Tags/RegexTag"
|
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 {
|
export default class FilterConfig {
|
||||||
public readonly id: string
|
public readonly id: string
|
||||||
|
@ -242,4 +245,21 @@ export default class FilterConfig {
|
||||||
reset
|
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
|
||||||
|
|
||||||
|
]);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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([
|
return new Combine([
|
||||||
new Combine([new Title(this.id, 1), iconImg, this.description, "\n"]).SetClass(
|
new Combine([new Title(this.id, 1), iconImg, this.description, "\n"]).SetClass(
|
||||||
"flex flex-col"
|
"flex flex-col"
|
||||||
|
@ -615,6 +620,7 @@ export default class LayerConfig extends WithContextLoader {
|
||||||
new Title("Supported attributes", 2),
|
new Title("Supported attributes", 2),
|
||||||
quickOverview,
|
quickOverview,
|
||||||
...this.tagRenderings.map((tr) => tr.GenerateDocumentation()),
|
...this.tagRenderings.map((tr) => tr.GenerateDocumentation()),
|
||||||
|
...filterDocs
|
||||||
])
|
])
|
||||||
.SetClass("flex-col")
|
.SetClass("flex-col")
|
||||||
.SetClass("link-underline")
|
.SetClass("link-underline")
|
||||||
|
|
Loading…
Reference in a new issue