mrcio-ui
Version:
412 lines (357 loc) • 15.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._Tree = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* tree 树相关工具类
* @Author gufuyan
* @Date 2018-08-29
*/
var TreeFn =
//函数参数默认值
function TreeFn() {
var idName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "id";
var fIdName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fId";
_classCallCheck(this, TreeFn);
_initialiseProps.call(this);
this.idName = idName;
this.fIdName = fIdName;
}
/**
* 根据结构id和fId生成树
* @param treeArr 生产树的对象,必须有关键属性id和fId
* @param idName 指id的属性名
* @param fIdName 指fId的属性名
* @returns {Array}
*/
/**
* 根据结构id和fId生成树
* @param list 生产树的对象,必须有关键属性id和fId
* @param idName 指id的属性名
* @param pidName 指fId的属性名
* @returns {Array}
*/
/**
* 获取根据id获取fid
* @param tree
* @param id
* @returns {Array}
*/
/**
* 场景太多,后面再补上此功能
* @param tree
* @param id
* @param idName
* @returns {{arrIds: Array, arrList: Array}}
*/
;
var _initialiseProps = function _initialiseProps() {
this.renderTree = function () {
var treeArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var idName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
var fIdName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fId";
var tree = [];
var newTreeArr = [];
//过滤掉所有父id的不存在的节点,返回fid存在的所有节点item[fIdName]
newTreeArr = treeArr.filter(function (item, index) {
!item[fIdName] && tree.push(item); //tree 取到所有根节点
return item[fIdName]; //newTreeArr 返回去掉根节点的所有数组
});
var setTreeData = function setTreeData(_newTreeArr, _tree) {
var newTreeArr = _newTreeArr.filter(function (treeArrItem, index) {
//剩下的每一项数组 去查找已存在的目录树,查找得到添加进去,查找不到继续留着
var renderFlag = function renderFlag(treeArrItem, _tree) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _tree[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var o = _step.value;
if (treeArrItem[fIdName] == o[idName]) {
var childList = o.childList || [];
childList.push(treeArrItem);
o.childList = childList;
return true;
} else {
if (o.childList && o.childList.length) {
var resChildListFlag = renderFlag(treeArrItem, o.childList);
if (resChildListFlag) return resChildListFlag;
}
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
};
var flag = renderFlag(treeArrItem, _tree);
//如果查找得到fid, flag为true,需返回查找不到的所有项 !flag
return !flag;
});
if (newTreeArr.length) {
setTreeData(newTreeArr, _tree);
}
};
setTreeData(newTreeArr, tree);
return tree;
};
this.getTreeList = function () {
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var idName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "id";
var pidName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "fId";
var obj = {};
var tree = [];
var setTree = function setTree(fo, idName) {
if (fo.childList) {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = fo.childList[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var foo = _step2.value;
var idd = foo[idName];
if (obj[idd]) {
foo.childList = [];
foo.childList = obj[idd];
setTree(foo, idName);
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
}
};
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = list[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var o = _step3.value;
if (!obj[o[pidName]]) {
obj[o[pidName]] = [];
}
if (o[pidName] == null) {
tree.push(o);
}
obj[o[pidName]].push(o);
}
//父id开头
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
var _iteratorNormalCompletion4 = true;
var _didIteratorError4 = false;
var _iteratorError4 = undefined;
try {
for (var _iterator4 = tree[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
var fo = _step4.value;
var _idName = fo[idName];
if (obj[_idName]) {
fo.childList = [];
fo.childList = obj[_idName];
}
}
} catch (err) {
_didIteratorError4 = true;
_iteratorError4 = err;
} finally {
try {
if (!_iteratorNormalCompletion4 && _iterator4.return) {
_iterator4.return();
}
} finally {
if (_didIteratorError4) {
throw _iteratorError4;
}
}
}
var _iteratorNormalCompletion5 = true;
var _didIteratorError5 = false;
var _iteratorError5 = undefined;
try {
for (var _iterator5 = tree[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
var _fo = _step5.value;
setTree(_fo, idName);
}
} catch (err) {
_didIteratorError5 = true;
_iteratorError5 = err;
} finally {
try {
if (!_iteratorNormalCompletion5 && _iterator5.return) {
_iterator5.return();
}
} finally {
if (_didIteratorError5) {
throw _iteratorError5;
}
}
}
return tree;
};
this.getFId = function (tree, id) {
var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
var arrIds = [];
var arrList = [];
var getId = function getId(obj, id) {
var oStr = JSON.stringify(obj);
if (oStr.indexOf(':' + id + ',') != -1) {
if ((typeof obj === "undefined" ? "undefined" : _typeof(obj)) == "object") {
if (obj[idName] == id) {
arrIds.push(obj[idName]);
arrList.push(obj);
} else if (obj[idName]) {
arrIds.push(obj[idName]);
arrList.push(obj);
if (obj.childList && obj.childList.length) {
var _iteratorNormalCompletion6 = true;
var _didIteratorError6 = false;
var _iteratorError6 = undefined;
try {
for (var _iterator6 = obj.childList[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
var o = _step6.value;
getId(o, id);
}
} catch (err) {
_didIteratorError6 = true;
_iteratorError6 = err;
} finally {
try {
if (!_iteratorNormalCompletion6 && _iterator6.return) {
_iterator6.return();
}
} finally {
if (_didIteratorError6) {
throw _iteratorError6;
}
}
}
}
} else {
if (obj.childList && obj.childList.length) {
var _iteratorNormalCompletion7 = true;
var _didIteratorError7 = false;
var _iteratorError7 = undefined;
try {
for (var _iterator7 = obj.childList[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
var _o = _step7.value;
getId(_o, id);
}
} catch (err) {
_didIteratorError7 = true;
_iteratorError7 = err;
} finally {
try {
if (!_iteratorNormalCompletion7 && _iterator7.return) {
_iterator7.return();
}
} finally {
if (_didIteratorError7) {
throw _iteratorError7;
}
}
}
}
}
}
}
};
var _iteratorNormalCompletion8 = true;
var _didIteratorError8 = false;
var _iteratorError8 = undefined;
try {
for (var _iterator8 = tree[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
var o = _step8.value;
getId(o, id);
}
} catch (err) {
_didIteratorError8 = true;
_iteratorError8 = err;
} finally {
try {
if (!_iteratorNormalCompletion8 && _iterator8.return) {
_iterator8.return();
}
} finally {
if (_didIteratorError8) {
throw _iteratorError8;
}
}
}
return {
arrIds: arrIds,
arrList: arrList
};
};
this.getCId = function (tree, id) {
var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
//功能尚未完成
var arrIds = [];
var arrList = [];
// let loopTree = (data, id)=> {
// if (data instanceof Array) {
// for (let o of data) {
// loopTree(o)
// }
// } else {
// if (!choArr.in_array(data[idText])) {
// choArr.push(data[idText]);
// choData.push(data);
// }
// if (!choChlArr.in_array(data[idText])) {
// choChlArr.push(data[idText]);
// choChlData.push(data);
// }
// if (data.subList && data.subList.length) {
// loopTree(data.subList)
// }
// }
// };
// loopTree(tree, id, "");
return {
arrIds: arrIds,
arrList: arrList
};
};
};
var _Tree = new TreeFn();
exports._Tree = _Tree;
//# sourceMappingURL=tree.js.map