tree.io

    1.2.4 • Public • Published

    Tree.io

    JS Tree shim for browser or nodejs enhance

    build status Coverage Status

    Usage

    Install

    npm install tree.io --save
    

    Import

    import Tree from 'tree.io';
    let nestedTree = {
      name: 'root',
      children: [{
        name: 'childA',
        children: []
      },{
        name: 'childB',
        children: []
      }]
    }
    let tree = new Tree(nestedTree);

    or init Tree with options:

    //Tree.io use "children" key to visit tree
    //and "name" key to visit the tree node id
    let tree = new Tree(nestedTree, {
      childrenPropName: 'children',
      identification: 'name'
    })

    may be it's a normalize tree:

    let flagTree = {
      root: {
        name: 'root',
        children: ['childA', 'childB']
      },
      childA: {
        name: 'childA',
        children: []
      },
      childB: {
        name: 'childB',
        children: []
      }
    }
     
    //Tree.io will detect nestedTree or flagTree
    //by visiting the "children" key of it
    let tree = new Tree(flagTree);

    Attenation: There must be a 'root' tree node in the tree data passed to Tree.io.

    API


    Tree.io export serval simple methods just fit your need.

    #getTree

    return tree object data

    //return normalize/flag tree by default
    tree.getTree()
     
    //return nested tree
    tree.getTree(true)

    #traversal(processor, order)

    traversal the hold tree, order can be preOrder(default) and inOrder, visit wiki for more detail.

    //may be you want to print the children of tree
    tree.traversal((tree, node) => {
      console.log(node.name);
    }, 'inOrder');
    

    #removeNode(id)

    remove a tree node by identification specified to construcotr, you may have more operation of node by #filter method specified below

    tree.removeNode('1.1');
    

    #updateNode(obj)

    update tree node, obj must contain the identification of the node being update.

    tree.updateNode({
      name: '1.1',
      age: 23
    })
    

    #insertAfter(node, id)

    insert a tree node after the node of spec id

    tree.insertAfter({
      name: '1.3',
      children: []
    }, '1.2');
    

    #insertBefore(node, id)

    the same as above;

    #filter(fn)

    like the Array.filter but with more power

    #keyWordFilter(key, keyWord)

    In common use implement of #filter, filter keyWord by spec word in tree node.

    implement:

    keyWordFilter(key, keyWord){
      this.filter((tree, node) => {
        if(node[key] === keyWord || (node[this.childrenPropName] && node[this.childrenPropName].length!=0)){
        return true;
       }
        return false;
      })
    }

    usage:

    tree.keyWordFilter('name', 'childA');

    License

    MIT

    Install

    npm i tree.io

    DownloadsWeekly Downloads

    1

    Version

    1.2.4

    License

    MIT

    Last publish

    Collaborators

    • avatar