X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ae7d952a97542c2cfc12f6f41ab0de93af278919..c90e813adcec89899d9db95843295a84fb058c3e:/src/store/project/project-reducer.ts diff --git a/src/store/project/project-reducer.ts b/src/store/project/project-reducer.ts index 43117ef0..48db05df 100644 --- a/src/store/project/project-reducer.ts +++ b/src/store/project/project-reducer.ts @@ -10,7 +10,7 @@ import { TreeItem, TreeItemStatus } from "../../components/tree/tree"; export type ProjectState = Array>; -function findTreeItem(tree: Array>, itemId: string): TreeItem | undefined { +export function findTreeItem(tree: Array>, itemId: string): TreeItem | undefined { let item; for (const t of tree) { item = t.id === itemId @@ -23,6 +23,20 @@ function findTreeItem(tree: Array>, itemId: string): TreeItem return item; } +export function getTreePath(tree: Array>, itemId: string): Array> { + for(const item of tree){ + if(item.id === itemId){ + return [item]; + } else { + const branch = getTreePath(item.items || [], itemId); + if(branch.length > 0){ + return [item, ...branch]; + } + } + } + return []; +} + function resetTreeActivity(tree: Array>) { for (const t of tree) { t.active = false;