123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /**
- * Created by vian on 2017/3/24.
- */
- var myTree = {
- getTop: function(data, topId){
- var top = [];
- for(var i=0; i<data.length; i++){
- if(data[i].ParentID == -1 ||data[i].ParentID == topId){
- top.push(data[i]);
- }
- }
- return top;
- },
- sortNodes: function(nodes){
- for(var i=0; i<nodes.length; i++){
- for(var j=i+1; j<nodes.length; j++){
- var temp;
- if(nodes[i].NextSiblingID == nodes[j].ID){
- temp = nodes[i+1];
- nodes[i+1] = nodes[j];
- nodes[j] = temp;
- }
- }
- if(nodes[i].NextSiblingID == nodes[0].ID){
- var topNode = nodes[i];
- for(var j=nodes.length-2; j>=0; j-- ){
- nodes[j+1] = nodes[j];
- }
- nodes[0] = topNode;
- }
- }
- return nodes;
- },
- getNodes: function(data ,ids){
- var idsNodes = [];
- for(var i =0; i<ids.length; i++){
- for(var j=0 ; j<data.length; j++){
- if(ids[i] == data[j].ID){
- idsNodes.push({ID: data[j].ID, ParentID: data[j].ParentID, NextSiblingID: data[j].NextSiblingID, children: data[j].children});
- }
- }
- }
- return idsNodes;
- },
- getNodeChildren: function(node, children){
- for(var i=0; i<billsData.length; i++){
- if(billsData[i].ParentID == node.ID){
- children.push(billsData[i].ID);
- myTree.getNodeChildren(billsData[i], children);
- }
- }
- return children;
- },
- buildChildren: function(billsData){
- var tempTree = [];
- for(var i=0; i<billsData.length; i++){
- var children = [];
- myTree.getNodeChildren(billsData[i], children);
- tempTree.push({"ID": billsData[i].ID, "ParentID": billsData[i].ParentID, "NextSiblingID": billsData[i].NextSiblingID, "children": children});
- }
- return tempTree;
- },
- buildTree: function(treeContainer, billsData, tempTree, topId){
- var sortTempTree = myTree.sortNodes(getTop(tempTree, topId));
- for(var i=0; i<sortTempTree.length; i++){
- if(sortTempTree[i].children.length > 0){
- treeContainer.push({"ID": sortTempTree[i].ID, "ParentID": sortTempTree[i].ParentID, "NextSiblingID": sortTempTree[i].NextSiblingID, "children": sortTempTree[i].children});
- var childrenTree = myTree.getNodes(myTree.buildChildren(billsData), sortTempTree[i].children);
- myTree.buildTree(treeContainer, billsData, childrenTree, sortTempTree[i].ID);
- }
- else {
- treeContainer.push({"ID": sortTempTree[i].ID, "ParentID": sortTempTree[i].ParentID, "NextSiblingID": sortTempTree[i].NextSiblingID, "children": sortTempTree[i].children});
- }
- }
- return treeContainer;
- }
- }
|