X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/f26a160eb9a476f1d5037d899e0636cf150fb573..5248f137a53e981e6c6207c212688fbd08e2cdc9:/src/models/collection-file.ts diff --git a/src/models/collection-file.ts b/src/models/collection-file.ts index 37e18cfc..91008d1f 100644 --- a/src/models/collection-file.ts +++ b/src/models/collection-file.ts @@ -3,6 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import { Tree, createTree, setNode, TreeNodeStatus } from './tree'; +import { head, split, pipe, join } from 'lodash/fp'; export type CollectionFilesTree = Tree; @@ -51,7 +52,7 @@ export const createCollectionFile = (data: Partial): CollectionF ...data }); -export const createCollectionFilesTree = (data: Array) => { +export const createCollectionFilesTree = (data: Array, joinParents: Boolean = true) => { const directories = data.filter(item => item.type === CollectionFileType.DIRECTORY); directories.sort((a, b) => a.path.localeCompare(b.path)); const files = data.filter(item => item.type === CollectionFileType.FILE); @@ -59,12 +60,21 @@ export const createCollectionFilesTree = (data: Array setNode({ children: [], id: item.id, - parent: item.path, + parent: joinParents ? getParentId(item) : '', value: item, active: false, selected: false, expanded: false, status: TreeNodeStatus.INITIAL - })(tree), createTree()); -}; \ No newline at end of file +}; + +const getParentId = (item: CollectionDirectory | CollectionFile) => + item.path + ? join('', [getCollectionId(item.id), item.path]) + : item.path; + +const getCollectionId = pipe( + split('/'), + head, +); \ No newline at end of file