spring-cloud/admin-web/src/utils/tree.utils.js

68 lines
1.7 KiB
Java

// tree 工具
export function buildTreeNode(nodes, titleKey, nodeKey) {
return nodes.map(item => {
const res = {};
if (item.children) {
res.children = buildTreeNode(item.children, titleKey, nodeKey);
}
// res.title = `${item.id}-${item[titleKey]}`;
res.title = `${item[titleKey]}`;
res.key = item[nodeKey];
return res;
});
}
// @primary
function findNodes(id, nodes) {
const res = [];
for (let i = 0; i < nodes.length; i += 1) {
const node = nodes[i];
if (node.key === id) {
res.push(node.key);
break;
} else if (node.children) {
const childNodes = findNodes(id, node.children);
for (let j = 0; j < childNodes.length; j += 1) {
res.push(childNodes[j]);
}
}
}
return res;
}
export function findAllNodes(resourceIds, nodes) {
console.log('resourceIds', resourceIds);
const findNodesArray = [];
for (let i = 0; i < resourceIds.length; i += 1) {
const findNodesData = findNodes(resourceIds[i], nodes);
console.log('findNodesData', findNodesData);
if (findNodesData) {
for (let j = 0; j < findNodesData.length; j += 1) {
const jD = findNodesData[j];
if (findNodesArray.indexOf(jD) === -1) {
findNodesArray.push(jD);
}
}
}
}
return findNodesArray;
}
export function findCheckedKeys(nodes) {
let res = [];
for (let i = 0; i < nodes.length; i += 1) {
const node = nodes[i];
if (node.children) {
const findChildrenNodes = findCheckedKeys(node.children);
if (findChildrenNodes) {
res = res.concat(findChildrenNodes);
}
} else if (node.assigned === true) {
res.push(node.id);
}
}
return res;
}