File

projects/angular/components/ui-tree-select/src/utils/tree.utils.ts

Index

Properties
Methods

Properties

Static treeFlattener
Default value : new MatTreeFlattener<ITreeNode, IFlatNodeObject, string | number>( this.nodeTransformer, this.getNodeLevel, this.getIsNodeExpandable, this.getNodeChildren, )

Methods

Static getIsNodeExpandable
getIsNodeExpandable(undefined: IFlatNodeObject)
Parameters :
Name Type Optional
IFlatNodeObject No
Returns : IFlatNodeObject
Static getNodeByKey
getNodeByKey(key: string, level: number, treeControl: FlatTreeControl<IFlatNodeObject | string | number>)
Parameters :
Name Type Optional
key string No
level number No
treeControl FlatTreeControl<IFlatNodeObject | string | number> No
Returns : any
Static getNodeChildren
getNodeChildren(undefined: ITreeNode)
Parameters :
Name Type Optional
ITreeNode No
Returns : ITreeNode
Static getNodeLevel
getNodeLevel(undefined: IFlatNodeObject)
Parameters :
Name Type Optional
IFlatNodeObject No
Returns : IFlatNodeObject
Static getParentNode
getParentNode(activeIndex: number, level: number, dataNodes: IFlatNodeObject[])
Parameters :
Name Type Optional
activeIndex number No
level number No
dataNodes IFlatNodeObject[] No
Returns : any
Static nodeBackTransformer
nodeBackTransformer(node: IFlatNodeObject)
Parameters :
Name Type Optional
node IFlatNodeObject No
Returns : ITreeNode
Static nodeTransformer
nodeTransformer(node: ITreeNode, level: number)
Parameters :
Name Type Optional
node ITreeNode No
level number No
Returns : { key: any; name: any; data: any; level: number; hasChildren: boolean; }
import { FlatTreeControl } from '@angular/cdk/tree';
import { MatTreeFlattener } from '@angular/material/tree';
import {
    IFlatNodeObject, ITreeNode,
} from '../models/tree.models';

export class TreeUtils {
    static treeFlattener = new MatTreeFlattener<ITreeNode, IFlatNodeObject, string | number>(
        this.nodeTransformer,
        this.getNodeLevel,
        this.getIsNodeExpandable,
        this.getNodeChildren,
    );

    static nodeTransformer(node: ITreeNode, level: number) {
        return {
            key: node.key,
            name: node.name,
            data: node.data,
            level,
            hasChildren: !!node.children,
        };
    }

    static nodeBackTransformer(node: IFlatNodeObject): ITreeNode {
        return {
            key: node.key,
            name: node.name,
            data: node.data,
        };
    }

    static getNodeLevel({ level }: IFlatNodeObject) {
        return level;
    }

    static getIsNodeExpandable({ hasChildren }: IFlatNodeObject) {
        return hasChildren;
    }

    static getNodeChildren({ children }: ITreeNode) {
        return children;
    }

    static getNodeByKey(key: string, level: number, treeControl: FlatTreeControl<IFlatNodeObject, string | number>) {
        const node = treeControl.dataNodes.find(n => n.key === key);
        if (!node || node.level !== level) {
            throw new Error(`Node with key ${key} not found on level ${level} in the data array`);
        }
        return node;
    }

    static getParentNode(activeIndex: number, level: number, dataNodes: IFlatNodeObject[]) {
        for (let i = activeIndex; i >= 0; i--) {
            if (dataNodes[i].level < level && dataNodes[i].hasChildren) {
                return dataNodes[i];
            }
        }
        return null;
    }

}

type TreeActionOptions = {
    emitEvent: boolean;
};

export const TREE_ACTION_DEFAULTS: TreeActionOptions = {
    emitEvent: true,
};

results matching ""

    No results matching ""