tree.utils.js 1.7 KB
Newer Older
1 2 3 4 5 6 7 8
// tree 工具

export function buildTreeNode(nodes, titleKey, nodeKey) {
  return nodes.map(item => {
    const res = {};
    if (item.children) {
      res.children = buildTreeNode(item.children, titleKey, nodeKey);
    }
9 10
    // res.title = `${item.id}-${item[titleKey]}`;
    res.title = `${item[titleKey]}`;
11 12 13 14 15 16 17 18 19 20 21 22 23
    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;
24
    } else if (node.children) {
25
      const childNodes = findNodes(id, node.children);
26 27
      for (let j = 0; j < childNodes.length; j += 1) {
        res.push(childNodes[j]);
28 29 30 31 32 33 34
      }
    }
  }
  return res;
}

export function findAllNodes(resourceIds, nodes) {
35 36
  console.log('resourceIds', resourceIds);

37 38 39
  const findNodesArray = [];
  for (let i = 0; i < resourceIds.length; i += 1) {
    const findNodesData = findNodes(resourceIds[i], nodes);
40
    console.log('findNodesData', findNodesData);
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
    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;
}