TonyKang 7 anni fa
parent
commit
f83efa4d51
1 ha cambiato i file con 64 aggiunte e 44 eliminazioni
  1. 64 44
      public/web/treeDataHelper.js

+ 64 - 44
public/web/treeDataHelper.js

@@ -3,22 +3,22 @@
  */
 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;
 
-var tree_Data_Helper = {
+let tree_Data_Helper = {
     buildTreeNodeDirectly: function(data) {
-        var me = this, topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
-        private_getTopNode = function (idArr) {
-            var rst = null;
-            for (var i = 0; i < idArr.length; i++) {
-                if (tmpNodes[prefix + idArr[i]][ADHOC_PRE_ID] == EMPTY_ID_VAL) {
-                    rst = tmpNodes[prefix + idArr[i]];
+        let topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
+        let private_getTopNode = 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) {
+                    tmpNodeRst = tmpNodes[prefix + idArr[i]];
                     break;
                 }
             }
-            return rst;
-        }
-        private_buildNodeData = function(parentItem, idArr) {
-            var iter = [], nextNode = private_getTopNode(idArr);
-            while (nextNode != null && nextNode != undefined ) {
+            return tmpNodeRst;
+        };
+        let private_buildNodeData = function(parentItem, idArr) {
+            let iter = [], nextNode = private_getTopNode(idArr);
+            while (nextNode !== null && nextNode !== undefined ) {
                 if (parentItem) {
                     parentItem[CHILDREN_NODE].push(nextNode);
                 } else {
@@ -27,27 +27,27 @@ var tree_Data_Helper = {
                 iter.push(nextNode);
                 nextNode = tmpNodes[prefix + nextNode[NEXT_ID]];
             }
-            for (var i = 0; i < iter.length; i++) {
+            for (let i = 0; i < iter.length; i++) {
                 private_buildNodeData(iter[i], iter[i][SUB_ID]);
             }
-        }
+        };
 
-        for (var i = 0; i < data.length; i++) {
+        for (let i = 0; i < data.length; i++) {
             tmpNodes[prefix + data[i][NODE_ID]] = data[i];
             data[i][ADHOC_PRE_ID] = EMPTY_ID_VAL;
             data[i][SUB_ID] = [];
             data[i][CHILDREN_NODE] = [];
-            if (data[i][P_ID] == EMPTY_ID_VAL) {
+            if (parseInt(data[i][P_ID]) === EMPTY_ID_VAL) {
                 topArr.push(data[i][NODE_ID]);
             }
         }
-        for (var i = 0; i < data.length; i++) {
-            if (data[i][NEXT_ID] != EMPTY_ID_VAL) {
+        for (let i = 0; i < data.length; i++) {
+            if (parseInt(data[i][NEXT_ID]) !== EMPTY_ID_VAL) {
                 if (tmpNodes[prefix + data[i][NEXT_ID]] !== undefined){
                     tmpNodes[prefix + data[i][NEXT_ID]][ADHOC_PRE_ID] = data[i][NODE_ID];
                 }
             }
-            if (data[i][P_ID] != EMPTY_ID_VAL) {
+            if (parseInt(data[i][P_ID]) !== EMPTY_ID_VAL) {
                 tmpNodes[prefix + data[i][P_ID]][SUB_ID].push(data[i][NODE_ID]);
             }
         }
@@ -57,34 +57,54 @@ var tree_Data_Helper = {
         topArr.length = 0;
         return rst;
     },
-    reSettleRelatedID: function(treeData) {
-        if (treeData && treeData.length > 0) {
-            for (var i = 0; i < treeData[CHILDREN_NODE].length; i++) {
-                var nI = null;
-                if (i < treeData[CHILDREN_NODE].length - 1) {
-                    nI = treeData[CHILDREN_NODE][i+1];
+
+    getFlatArray: function (srcArr, destArr) {
+        let private_put = function (parentItem) {
+            destArr.push(parentItem);
+            if (parentItem.items) {
+                for (let subItem of parentItem.items) {
+                    private_put(subItem);
                 }
-                settleNodeRelatedID(null, nI, treeData[CHILDREN_NODE][i]);
             }
         }
-    },
-    settleNodeRelatedID : function(parentItem, nextItem, node) {
-        if (parentItem) {
-            node[P_ID] = parentItem[NODE_ID];
-        } else {
-            node[P_ID] = EMPTY_ID_VAL;
+        for (let node of srcArr) {
+            private_put(node);
         }
-        if (nextItem) {
-            node[NEXT_ID] = nextItem[NODE_ID];
-        } else {
-            node[NEXT_ID] = EMPTY_ID_VAL;
-        }
-        for (var i = 0; i < node[CHILDREN_NODE].length; i++) {
-            var nI = null;
-            if (i < node[CHILDREN_NODE].length - 1) {
-                nI = node[CHILDREN_NODE][i+1];
-            }
-            private_settleNodeRelatedID(node, nI, node[CHILDREN_NODE][i]);
+        for (let item of destArr) {
+            delete item[CHILDREN_NODE];
+            delete item[SUB_ID];
+            delete item[ADHOC_PRE_ID];
         }
     }
-}
+
+    // reSettleRelatedID: function(treeData) {
+    //     if (treeData && treeData.length > 0) {
+    //         for (let i = 0; i < treeData[CHILDREN_NODE].length; i++) {
+    //             let nI = null;
+    //             if (i < treeData[CHILDREN_NODE].length - 1) {
+    //                 nI = treeData[CHILDREN_NODE][i+1];
+    //             }
+    //             settleNodeRelatedID(null, nI, treeData[CHILDREN_NODE][i]);
+    //         }
+    //     }
+    // },
+    // settleNodeRelatedID : function(parentItem, nextItem, node) {
+    //     if (parentItem) {
+    //         node[P_ID] = parentItem[NODE_ID];
+    //     } else {
+    //         node[P_ID] = EMPTY_ID_VAL;
+    //     }
+    //     if (nextItem) {
+    //         node[NEXT_ID] = nextItem[NODE_ID];
+    //     } else {
+    //         node[NEXT_ID] = EMPTY_ID_VAL;
+    //     }
+    //     for (let i = 0; i < node[CHILDREN_NODE].length; i++) {
+    //         let nI = null;
+    //         if (i < node[CHILDREN_NODE].length - 1) {
+    //             nI = node[CHILDREN_NODE][i+1];
+    //         }
+    //         private_settleNodeRelatedID(node, nI, node[CHILDREN_NODE][i]);
+    //     }
+    // }
+};