@choerodon/master
Version:
A package of Master for Choerodon platform.
41 lines (34 loc) • 1.5 kB
JavaScript
import { groupBy, filter, forEach, isEmpty, uniqBy } from 'lodash'; // 用于待办事项、缺陷、我报告的等敏捷问题树结构数据转换
// 由平铺的一维数组[issueData]转为按项目id分组且父子数据嵌套的对象{ projectId: issueData }
/**
* 用于待办事项、缺陷、我报告的等敏捷问题树结构数据转换
* 由平铺的一维数组[issueData]转为按项目id分组且父子数据嵌套的对象{ projectId: issueData }
* @param data 一维数组
* @param hasParent 是否有父任务
*/
var getQuestionTreeData = function getQuestionTreeData() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var hasParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var idField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'issueId';
if (isEmpty(data)) {
return {};
}
var newData = uniqBy(data, idField);
if (!hasParent) {
return groupBy(newData, 'projectId');
}
var childrenData = groupBy(newData, 'parentId');
var parentData = filter(newData, function (item) {
return !item.parentId;
});
forEach(parentData, function (item) {
// @ts-ignore
if (item && childrenData && childrenData[item[idField]]) {
// @ts-ignore
// eslint-disable-next-line no-param-reassign
item.children = childrenData[item[idField]];
}
});
return groupBy(parentData, 'projectId');
};
export default getQuestionTreeData;