56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
export default class TreeViewRequest {
|
|
|
|
public key: string;
|
|
public children: TreeViewRequest[];
|
|
public displayName: string;
|
|
expand: boolean;
|
|
|
|
constructor(
|
|
key: string,
|
|
children: TreeViewRequest[],
|
|
expand: boolean = false,
|
|
) {
|
|
if (key.startsWith("Page")) {
|
|
this.displayName = "Page " + key.slice(4);
|
|
} else {
|
|
this.displayName = key;
|
|
}
|
|
this.key = key;
|
|
this.children = children;
|
|
this.expand = expand;
|
|
}
|
|
|
|
static fromPageCount(pageCount: number) {
|
|
let roots = [];
|
|
for (let i = 0; i < pageCount; i++) {
|
|
roots.push(new TreeViewRequest("Page" + (i + 1), []));
|
|
}
|
|
return roots;
|
|
}
|
|
|
|
static TRAILER = new TreeViewRequest("Trailer", [new TreeViewRequest("Root", [], true)], true);
|
|
|
|
public clone(): TreeViewRequest {
|
|
return new TreeViewRequest(this.key, this.children.map(child => child.clone()), this.expand);
|
|
}
|
|
|
|
public getChild(key: string) {
|
|
return this.children.find(child => child.key === key);
|
|
}
|
|
|
|
public addChild(key: string) {
|
|
this.expand = true;
|
|
let child = new TreeViewRequest(key, [], true)
|
|
this.children.push(child);
|
|
return child;
|
|
}
|
|
|
|
public removeChild(key: string) {
|
|
this.children = this.children.filter(child => child.key !== key);
|
|
}
|
|
|
|
public setExpand(expand: boolean) {
|
|
this.expand = expand;
|
|
}
|
|
}
|