/** * Created by Tony on 2017/1/23. */ var tree_Data_Helper = { sortDataBySerial: function (data) { data.sort(function(item1, item2) { var rst = 0; if (item1["SerialNo"] > item2["SerialNo"]) { rst = 1; } else if (item1["SerialNo"] < item2["SerialNo"]) { rst = -1; } return rst; }); }, buildTreeData: function (data) { var rst = [], idArr = [], me = this; var distIdx = -1, distinctIdx = 0; for (var i = 0; i < data.length; i++) { idArr.push(i); } me.distinctByCustId(data, idArr, "ParentID", distIdx); distinctIdx = me.getDistinctId(data, idArr, distIdx); for (var i = 0; i < distinctIdx; i++) { rst[i] = data[idArr[i]]; } for (var i = 0; i < rst.length; i++) { idArr = idArr.slice(distinctIdx); me.buildBranchData(rst[i], data, idArr); } return rst; }, getDistinctId: function (data, idArr, compareVal) { var rst = 0, me = this; for (var i = 0; i < idArr.length; i++) { if (data[idArr[i]]["ParentID"] != compareVal) { rst = i; break; } } return rst; }, buildBranchData: function (parentItem, orgData, idArr) { var distinctIdx = 0, distVal = parentItem["ID"], me = this; me.distinctByCustId(orgData, idArr, "ParentID", distVal); distinctIdx = me.getDistinctId(orgData, idArr, distVal); parentItem["items"] = []; for (var i = 0; i < distinctIdx; i++) { parentItem["items"][i] = orgData[idArr[i]]; } for (var i = 0; i < parentItem["items"].length; i++) { idArr = idArr.slice(distinctIdx); me.buildBranchData(parentItem["items"][i], orgData, idArr); distinctIdx = me.getDistinctId(orgData, idArr, parentItem["items"][i]["ID"]); } }, distinctByCustId: function (data, idArray, IdStr, IdVal) { idArray.sort(function(idx1, idx2) { var rst = 0; if (data[idx1][IdStr] == IdVal) { if (data[idx2][IdStr] == data[idx1][IdStr]) { if (data[idx1]["SerialNo"] > data[idx2]["SerialNo"]) { rst = 1; } else { rst = -1; } } else { rst = -1; } } else if (data[idx2][IdStr] == IdVal) { rst = 1; } return rst; }); } }