tree.utils.js 1.7 KB
// 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;
}