1.2.4 • Published 10 years ago

tree.io v1.2.4

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

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

1.2.4

10 years ago

1.2.3

10 years ago

1.2.2

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

0.0.0-prerelease

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago