X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/486b76baf259d3b83bc551cd0f7dd0c9d4395961..4b961d16b8f8ef8afbd13697a79fe4684acd0416:/src/models/tree.ts diff --git a/src/models/tree.ts b/src/models/tree.ts index bdcd7309..60a95342 100644 --- a/src/models/tree.ts +++ b/src/models/tree.ts @@ -27,7 +27,8 @@ export enum TreeNodeStatus { export enum TreePickerId { PROJECTS = 'Projects', SHARED_WITH_ME = 'Shared with me', - FAVORITES = 'Favorites' + FAVORITES = 'Favorites', + PUBLIC_FAVORITES = 'Public Favorites' } export const createTree = (): Tree => ({}); @@ -95,6 +96,12 @@ export const getNodeAncestorsIds = (id: string) => (tree: Tree): string[] export const getNodeDescendants = (id: string, limit = Infinity) => (tree: Tree) => mapIdsToNodes(getNodeDescendantsIds(id, limit)(tree))(tree); +export const countNodes = (tree: Tree) => + getNodeDescendantsIds('')(tree).length; + +export const countChildren = (id: string) => (tree: Tree) => + getNodeChildren('')(tree).length; + export const getNodeDescendantsIds = (id: string, limit = Infinity) => (tree: Tree): string[] => { const node = getNode(id)(tree); const children = node ? node.children : @@ -175,6 +182,10 @@ export const deselectNodes = (id: string | string[]) => (tree: Tree) => { return ids.reduce((tree, id) => deselectNode(id)(tree), tree); }; +export const getSelectedNodes = (tree: Tree) => + getNodeDescendants('')(tree) + .filter(node => node.selected); + export const initTreeNode = (data: Pick, 'id' | 'value'> & { parent?: string }): TreeNode => ({ children: [], active: false,