X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d1af457494186adb375ce2c012cb58685e0556e3..d76f55579538b82952dc94b46ca9badfb544bea4:/src/models/tree.ts diff --git a/src/models/tree.ts b/src/models/tree.ts index b649a40fce..cce27b125a 100644 --- a/src/models/tree.ts +++ b/src/models/tree.ts @@ -29,13 +29,12 @@ export const createTree = (): Tree => ({}); export const getNode = (id: string) => (tree: Tree): TreeNode | undefined => tree[id]; export const setNode = (node: TreeNode) => (tree: Tree): Tree => { - console.log(node); - const [newTree] = [tree] - .map(tree => getNode(node.id)(tree) === node + return pipe( + (tree: Tree) => getNode(node.id)(tree) === node ? tree - : { ...tree, [node.id]: node }) - .map(addChild(node.parent, node.id)); - return newTree; + : { ...tree, [node.id]: node }, + addChild(node.parent, node.id) + )(tree); }; export const getNodeValue = (id: string) => (tree: Tree) => { @@ -110,6 +109,8 @@ export const mapIdsToNodes = (ids: string[]) => (tree: Tree) => export const activateNode = (id: string) => (tree: Tree) => mapTree(node => node.id === id ? { ...node, active: true } : { ...node, active: false })(tree); +export const deactivateNode = (tree: Tree) => + mapTree(node => node.active ? { ...node, active: false } : node)(tree); export const expandNode = (...ids: string[]) => (tree: Tree) => mapTree(node => ids.some(id => id === node.id) ? { ...node, expanded: true } : node)(tree); @@ -138,7 +139,7 @@ export const toggleNodeSelection = (id: string) => (tree: Tree) => { }; -export const initTreeNode = (data: Pick, 'id' | 'value'>): TreeNode => ({ +export const initTreeNode = (data: Pick, 'id' | 'value'> & {parent?: string}): TreeNode => ({ children: [], active: false, selected: false,