general-tree
v1.1.4
Published
A general tree support tree operation.
Downloads
12
Readme
general-tree
A general tree support tree operation.
Install
Install by Yarn:
yarn add general-tree
Install by NPM:
npm install --save general-tree
Usage
Import the module in file:
import Tree from 'general-tree';
Construct
You can convert a javascript object to a tree. It will use several key to identify id and children.
Constructor declaration is:
constructor(
root,
parent = undefined,
childrenKey = 'children',
idKey = 'id',
onStatusChange = undefined
)
- root: Object to be converted.
- parent: A
Tree
object to be parent node. - childrenKey:
root[childrenKey]
will be used to generate childrenTree
node.root[childrenKey] === undefined
means it is a leaf node. - idKey:
root[idKey]
is an identifier of node, and will be used when initialization. It will be converted to a string when used. - onStatusChange: When a tree node's selection status change, it will be called with current node.
Example:
const node = {
code: 1,
label: 'Hello',
childs: [
{code: 2, label: 'aaa', childs: []}, // not a leaf
{code: 3, label: 'bbb'}, // a leaf
]
};
const tree = new Tree(node, null, 'childs', 'code', null);
Selection Status
A tree node have a selection status.
export const NotSelect = 0;
export const IncompleteSelect = 0.5;
export const FullSelect = 1;
A leaf node only have two status: NotSelect
or FullSelect
.
A not leaf node have all three status. IncompleteSelect
means its children is not all selected.
The selection status will be initialized in constructor
with NotSelect
. And you can use setInitialState
to set a initial selection state of a tree.
Then you can call update
method to change a tree node selection status automatically.
Interface
isLeaf(): boolean
isEqual(treeNode: Tree): boolean
selectStatus(cascade: boolean): 0 | 0.5 | 1
isFullSelect(cascade: boolean): boolean
isNotSelect(cascade: boolean): boolean
isIncompleteSelect(cascade: boolean): boolean
getLeafCount(): number
getSelectedLeafCount(): number
getDeepth(): number
getInfo(): object
getId(): any
getStringId(): string
getParent(): Tree?
getChildren(): Tree[]?
getLeafChildren(): Tree[]
getLeafChildrenCount(): number
getSelectedLeafChildrenCount(): number
getPath(): string
setInitialState(selectedIds: any[], cascade: boolean): Tree[]
update(cascade: boolean): void
search(text: string, keys: string[], multiselect: boolean, exactly: boolean, canSearch: boolean): Tree[]
hasAncestor(ancestor: Tree): boolean
findById(childId: any): Tree[]