123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /**
- * 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;
- });
- }
- }
|