micro-ui-y
Version:
584 lines (511 loc) • 21.6 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的属性名
* renderTree 和 getTreeList 不同写法,结果一样
* @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}}
*/
/**
* 根据输入值 搜索 树
* @param value 输入的值
* @param dataSource 树
* @param searchName 输入的值对应树的属性名称
* @param childList 子集的属性名称
* @returns {Array}
*/
/**
*
* @param deptArr
* @param personArr
* @param idName
* @param fIdName
* @returns {Array}
*/
;
var _initialiseProps = function _initialiseProps() {
var _this = this;
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 fIdName = 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[fIdName]]) {
obj[o[fIdName]] = [];
}
if (o[fIdName] == null) {
tree.push(o);
}
obj[o[fIdName]].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 childList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'childList';
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);
// arrIdList.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
};
};
this.getSearch = function (value, dataSource) {
var searchName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "orgName";
var childList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "subList";
var searchData = [];
var randerSearch = function randerSearch(value, dataSource) {
if (dataSource instanceof Array) {
var _iteratorNormalCompletion9 = true;
var _didIteratorError9 = false;
var _iteratorError9 = undefined;
try {
for (var _iterator9 = dataSource[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
var item = _step9.value;
var orgName = item[searchName];
if (value && orgName.includes(value)) {
searchData.push(item);
}
if (item[childList] && item[childList].length) {
randerSearch(value, item[childList], searchData);
}
}
} catch (err) {
_didIteratorError9 = true;
_iteratorError9 = err;
} finally {
try {
if (!_iteratorNormalCompletion9 && _iterator9.return) {
_iterator9.return();
}
} finally {
if (_didIteratorError9) {
throw _iteratorError9;
}
}
}
}
};
randerSearch(value, dataSource);
return searchData;
};
this.renderDepartmentStaff = function () {
var deptArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var personArr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var idName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
var fIdName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "fId";
var deptTree = _this.renderTree(deptArr, idName, fIdName);
/**
* 根据 部门ID,获取所有人员满足部门ID的集合
* @param deptId
* @param idName
* @returns {Array}
*/
var getPersonByDeptId = function getPersonByDeptId(deptId, idName) {
//为了下次遍历 人员数据越来越少
var newPersonArr = [];
var deptIdPerson = [];
personArr.forEach(function (item, index) {
if (item[idName] == deptId) {
deptIdPerson.push(item);
} else {
newPersonArr.push(item);
}
});
// const deptIdPerson = personArr.filter((item,index)=>{
// return item.deptId == deptId
// })
personArr = newPersonArr;
return deptIdPerson;
};
/**
*
* @param obj 没条数据 {}/[{}]
* @param idName
*/
var renderDP = function renderDP(obj, idName) {
if (obj instanceof Array) {
var _iteratorNormalCompletion10 = true;
var _didIteratorError10 = false;
var _iteratorError10 = undefined;
try {
for (var _iterator10 = obj[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
var o = _step10.value;
o.type == "dept" && renderDP(o, idName);
}
} catch (err) {
_didIteratorError10 = true;
_iteratorError10 = err;
} finally {
try {
if (!_iteratorNormalCompletion10 && _iterator10.return) {
_iterator10.return();
}
} finally {
if (_didIteratorError10) {
throw _iteratorError10;
}
}
}
} else {
if (obj[idName] && obj.type == "dept") {
if (!obj.childList) {
obj.childList = [];
}
var deptIdPerson = getPersonByDeptId(obj[idName], idName);
obj.childList = deptIdPerson.concat(obj.childList || []);
}
if (obj.childList && obj.childList.length > 0) {
renderDP(obj.childList, idName);
}
}
};
var _iteratorNormalCompletion11 = true;
var _didIteratorError11 = false;
var _iteratorError11 = undefined;
try {
for (var _iterator11 = deptTree[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
var o = _step11.value;
renderDP(o, idName);
}
} catch (err) {
_didIteratorError11 = true;
_iteratorError11 = err;
} finally {
try {
if (!_iteratorNormalCompletion11 && _iterator11.return) {
_iterator11.return();
}
} finally {
if (_didIteratorError11) {
throw _iteratorError11;
}
}
}
return deptTree;
};
};
var _Tree = new TreeFn();
exports._Tree = _Tree;
//# sourceMappingURL=tree.js.map