tree-util & routes.service updated

pull/15938/head
masumulu28 3 years ago
parent a398e302c7
commit 990a211110

@ -61,7 +61,7 @@ export abstract class AbstractTreeService<T extends { [key: string | number | sy
protected createGroupedTree(list: TreeNode<T>[]): RouteGroup<T>[] | undefined {
const map = createGroupMap<T>(list, this.othersGroup);
return !map ? undefined : Array.from(map, ([key, items]) => ({ group: key, items }));
return Boolean(map) ? Array.from(map, ([key, items]) => ({ group: key, items })) : undefined;
}
private filterWith(setOrMap: Set<string> | Map<string, T>): T[] {
@ -196,11 +196,18 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
@Injectable({ providedIn: 'root' })
export class RoutesService extends AbstractNavTreeService<ABP.Route> {
private hasPathOrChild(item: TreeNode<ABP.Route>): boolean {
return Boolean(item.path) || Boolean(item.children?.length);
}
get groupedVisible(): RouteGroup<ABP.Route>[] | undefined {
return this.createGroupedTree(this.visible.filter(f => f.path || f.children?.length > 0));
return this.createGroupedTree(this.visible.filter(item => this.hasPathOrChild(item)));
}
get groupedVisible$(): Observable<RouteGroup<ABP.Route>[] | undefined> {
return this.visible$.pipe(map(visible => this.createGroupedTree(visible)));
return this.visible$.pipe(
map(items => items.filter(item => this.hasPathOrChild(item))),
map(visible => this.createGroupedTree(visible)),
);
}
}

@ -76,7 +76,7 @@ export function createTreeNodeFilterCreator<T extends object>(
};
}
export function createGroupMap<T extends { [key: string]: string }>(
export function createGroupMap<T extends { group?: string }>(
list: TreeNode<T>[],
othersGroupKey: string,
) {

Loading…
Cancel
Save