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 { protected createGroupedTree(list: TreeNode<T>[]): RouteGroup<T>[] | undefined {
const map = createGroupMap<T>(list, this.othersGroup); 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[] { private filterWith(setOrMap: Set<string> | Map<string, T>): T[] {
@ -196,11 +196,18 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class RoutesService extends AbstractNavTreeService<ABP.Route> { 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 { 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> { 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>[], list: TreeNode<T>[],
othersGroupKey: string, othersGroupKey: string,
) { ) {

Loading…
Cancel
Save