Advertisement
Guest User

Untitled

a guest
Sep 25th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export const findNewNode = (oldTreeData, newTreeData) => {
  2.   let res;
  3.   for (let i = 0; i < oldTreeData.length; i++) {
  4.     const oldNode = oldTreeData[i];
  5.     const newNode = newTreeData[i];
  6.     if (oldNode.children && newNode.children && oldNode.children.length === newNode.children.length) res = findNewNode(oldNode.children, newNode.children)
  7.     else if (!oldNode.children && newNode.children) res = newNode.children[0];
  8.     else if (oldNode.children && newNode.children && oldNode.children.length !== newNode.children.length) res = newNode.children[newNode.children.length - 1]
  9.     //console.log(res)
  10.     return res
  11.   }
  12. }
  13.  
  14. export const deleteNode = (tree, title) => {
  15.   return tree.reduce((newTree, node) => {
  16.     if (node.title === title) {
  17.       return newTree;
  18.     }
  19.     else if (node.title !== title && node.children && node.children.length) {
  20.       return newTree.concat({
  21.         ...node,
  22.         children: deleteNode(node.children, title)
  23.       })
  24.     }
  25.     else return newTree.concat(node)
  26.   }, [])
  27. }
  28.  
  29. export const addNode = (tree, parentTitle, newNode) => {
  30.   return tree.reduce((newTree, node) => {
  31.     if (node.title === parentTitle) {
  32.       if (node.children) node.children.push(newNode)
  33.       else node.children = [newNode]
  34.       return newTree.concat(node)
  35.     }
  36.     else if (node.children) {
  37.       return newTree.concat({
  38.         ...node,
  39.         children: addNode(node.children, parentTitle, newNode)
  40.       })
  41.     } else return newTree.concat(node)
  42.   }, [])
  43. }
  44.  
  45. export const getParent = (tree, node) => {
  46.   const {id} = node;
  47.   for (let i = 0; i < tree.length; i++) {
  48.     if (tree[i].children && tree[i].children.find(child => child.id === id)) return tree[i];
  49.     else if (tree[i].children) return getParent(tree[i].children, node)
  50.   }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement