1.2.1 • Published 5 months ago

hierarchical-tree v1.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

hierarchical-tree tree-icon

Introduction

This is utility support to convert array to hierarchical tree faster. And it supported for more function:

  • Move node to node's children
  • Swap node
  • Delete node
  • Insert node data ....

Usage

import TreeModules from "hierarchical-tree";
const { TreeFactory } = TreeModules;
const data = [
    {id: "1", name: 'parent1'},
    {id: "21", name: 'children2-1', parentId: "2"},
    {id: "2", name: 'parent2'},
    {id: "11", name: 'children1-1', parentId: "1"},
    {id: "12", name: 'children1-2', parentId: "1"},
    {id: "13", name: 'children1-3', parentId: "1"},
];
const tree = new TreeFactory(data);
const treeData =  treeData.getData();
const treeJSON =  treeData.getJSON();

Module

module.exports = {
    TreeFactory,
    HierarchicalTree,
    constants: { TREE_ACTION_TRANSFER, DEFAULT_ROOT }
};

Input interface

Your input data required some field bellow | Properties | Description | Type | --- | --- | --- | | id | uniq id | string | | name | name for node | string | | parentId | parentId of node | string or undefined

Api

PropertiesDescriptionTypeDefaultNote
iduniqstring''_
namename of nodestring''_
parentIdfor calculate which is parent's of nodestring''_
childrenarray of node's childAbstractTreeNode _
parentparent of this nodeAbstractTreeNodeundefined_
levellevel of node in tree. Root node has level = 0number0...coming...
setParentset new parent for this node(data: AbstractTreeNode) => void__
movemove from node to node, if move fail it return undefined({ from, to, type }: TransferParams) => number or undefinedtype: TREE_ACTION_TRANSFER_
swapsame move function but swap child too({ from, to, type }: TransferParams) => number or undefinedtype: TREE_ACTION_TRANSFER_
removeChildremove child and return index number when success or undefined when it fail(id: string) => number or undefined__
appendChildopposite with removeChild(children: AbstractTreeNode[], index?: number) => number or undefined__
findDeepfind deep child of this node call action(id: string) => AbstractTreeNode or undefined__
getRelativePathget relativePath from root() => string_...coming...

!TIP You can follow this interface for detail:

interface AbstractTreeNode {
    id: string;
    name: string;
    parentId?: string;
    children: AbstractTreeNode[];
    parent?: AbstractTreeNode;
    level?: number;
    root?: AbstractTreeNode;

    _init: (props: TreeNodeProps) => this;
    _setRoot: (node: AbstractTreeNode) => AbstractTreeNode;

    setLevel: (val: number) => void;
    setParent: (data: AbstractTreeNode) => void;
    move: ({ from, to, type }: TransferParams) => number | undefined;
    swap: ({ from, to, type }: TransferParams) => number | undefined;
    removeChild: (id: string) => number | undefined;
    appendChild: (children: AbstractTreeNode[], index?: number) => number | undefined;
    findDeep: (id: string) => AbstractTreeNode | undefined;
    getRelativePath: () => string;
}

enum TREE_ACTION_TRANSFER {
    ID = 'id',
    PATH = 'path',
    NODE = 'node',
}

interface TransferParams {
    from?: AbstractTreeNode | string;
    to: AbstractTreeNode | string;
    type?: TREE_ACTION_TRANSFER | string;
}

interface JSONData extends Pick<AbstractTreeNode, 'id' | 'name' | 'parentId' | 'children' | 'level'> {}

If you want to contribute to development. Please come to CONTRIBUTING