|  | @@ -1,12 +1,12 @@
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Created by Tony on 2017/1/23.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1;
 | 
	
		
			
				|  |  | +const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1, TREE_LEVEL = 'treeLevel';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let tree_Data_Helper = {
 | 
	
		
			
				|  |  | -    buildTreeNodeDirectly: function(data) {
 | 
	
		
			
				|  |  | +    buildTreeNodeDirectly: function(data, addLevel) {
 | 
	
		
			
				|  |  |          let topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
 | 
	
		
			
				|  |  | -        let private_getTopNode = function (idArr) {
 | 
	
		
			
				|  |  | +        let private_getStartNode = function (idArr) {
 | 
	
		
			
				|  |  |              let tmpNodeRst = null;
 | 
	
		
			
				|  |  |              for (let i = 0; i < idArr.length; i++) {
 | 
	
		
			
				|  |  |                  if (parseInt(tmpNodes[prefix + idArr[i]][ADHOC_PRE_ID]) === EMPTY_ID_VAL) {
 | 
	
	
		
			
				|  | @@ -16,8 +16,8 @@ let tree_Data_Helper = {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return tmpNodeRst;
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  | -        let private_buildNodeData = function(parentItem, idArr) {
 | 
	
		
			
				|  |  | -            let iter = [], nextNode = private_getTopNode(idArr);
 | 
	
		
			
				|  |  | +        let private_buildNodeData = function(parentItem, idArr, treeLevel) {
 | 
	
		
			
				|  |  | +            let iter = [], nextNode = private_getStartNode(idArr);
 | 
	
		
			
				|  |  |              while (nextNode !== null && nextNode !== undefined ) {
 | 
	
		
			
				|  |  |                  if (parentItem) {
 | 
	
		
			
				|  |  |                      parentItem[CHILDREN_NODE].push(nextNode);
 | 
	
	
		
			
				|  | @@ -25,10 +25,11 @@ let tree_Data_Helper = {
 | 
	
		
			
				|  |  |                      rst.push(nextNode);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  iter.push(nextNode);
 | 
	
		
			
				|  |  | +                if (addLevel) nextNode[TREE_LEVEL] = treeLevel;
 | 
	
		
			
				|  |  |                  nextNode = tmpNodes[prefix + nextNode[NEXT_ID]];
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              for (let i = 0; i < iter.length; i++) {
 | 
	
		
			
				|  |  | -                private_buildNodeData(iter[i], iter[i][SUB_ID]);
 | 
	
		
			
				|  |  | +                private_buildNodeData(iter[i], iter[i][SUB_ID], (treeLevel + 1));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -51,7 +52,7 @@ let tree_Data_Helper = {
 | 
	
		
			
				|  |  |                  tmpNodes[prefix + data[i][P_ID]][SUB_ID].push(data[i][NODE_ID]);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        private_buildNodeData(null, topArr);
 | 
	
		
			
				|  |  | +        private_buildNodeData(null, topArr, 0);
 | 
	
		
			
				|  |  |          //try to release and return
 | 
	
		
			
				|  |  |          tmpNodes = null;
 | 
	
		
			
				|  |  |          topArr.length = 0;
 |