projects/angular/components/ui-tree-select/src/utils/tree.utils.ts
Properties |
|
Methods |
|
Static treeFlattener |
Default value : new MatTreeFlattener<ITreeNode, IFlatNodeObject, string | number>(
this.nodeTransformer,
this.getNodeLevel,
this.getIsNodeExpandable,
this.getNodeChildren,
)
|
Static getIsNodeExpandable | |||||
getIsNodeExpandable(undefined: IFlatNodeObject)
|
|||||
Parameters :
Returns :
IFlatNodeObject
|
Static getNodeByKey | ||||||||||||
getNodeByKey(key: string, level: number, treeControl: FlatTreeControl<IFlatNodeObject | string | number>)
|
||||||||||||
Parameters :
Returns :
any
|
Static getNodeChildren | |||||
getNodeChildren(undefined: ITreeNode)
|
|||||
Parameters :
Returns :
ITreeNode
|
Static getNodeLevel | |||||
getNodeLevel(undefined: IFlatNodeObject)
|
|||||
Parameters :
Returns :
IFlatNodeObject
|
Static getParentNode | ||||||||||||
getParentNode(activeIndex: number, level: number, dataNodes: IFlatNodeObject[])
|
||||||||||||
Parameters :
Returns :
any
|
Static nodeBackTransformer | ||||||
nodeBackTransformer(node: IFlatNodeObject)
|
||||||
Parameters :
Returns :
ITreeNode
|
Static nodeTransformer |
nodeTransformer(node: ITreeNode, level: number)
|
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,
};