X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/78fc087578d042bfede52c1f0569d3afb758e3d5..c0309f65edc9e6ed92e13d4d83afaa8b043c56b0:/src/views-components/collection-panel-files/collection-panel-files.ts diff --git a/src/views-components/collection-panel-files/collection-panel-files.ts b/src/views-components/collection-panel-files/collection-panel-files.ts index eb16eb6c40..ddd59ea6ac 100644 --- a/src/views-components/collection-panel-files/collection-panel-files.ts +++ b/src/views-components/collection-panel-files/collection-panel-files.ts @@ -8,7 +8,8 @@ import { CollectionPanelFilesProps } from "~/components/collection-panel-files/collection-panel-files"; import { RootState } from "~/store/store"; -import { TreeItem, TreeItemStatus } from "~/components/tree/tree"; +import { TreeItemStatus } from "~/components/tree/tree"; +import { VirtualTreeItem as TreeItem } from "~/components/tree/virtual-tree"; import { CollectionPanelDirectory, CollectionPanelFile, @@ -32,8 +33,9 @@ const memoizedMapStateToProps = () => { return (state: RootState): Pick => { if (prevState !== state.collectionPanelFiles) { prevState = state.collectionPanelFiles; - prevTree = getNodeChildrenIds('')(state.collectionPanelFiles) - .map(collectionItemToTreeItem(state.collectionPanelFiles)); + prevTree = [].concat.apply( + [], getNodeChildrenIds('')(state.collectionPanelFiles) + .map(collectionItemToList(0)(state.collectionPanelFiles))); } return { items: prevTree, @@ -42,7 +44,7 @@ const memoizedMapStateToProps = () => { }; }; -const mapDispatchToProps = (dispatch: Dispatch): Pick => ({ +const mapDispatchToProps = (dispatch: Dispatch): Pick => ({ onUploadDataClick: () => { dispatch(openUploadCollectionFilesDialog()); }, @@ -53,12 +55,17 @@ const mapDispatchToProps = (dispatch: Dispatch): Pick { + const isDirectory = item.data.type === 'directory'; dispatch(openContextMenu( event, { menuKind: isWritable - ? ContextMenuKind.COLLECTION_FILES_ITEM - : ContextMenuKind.READONLY_COLLECTION_FILES_ITEM, + ? isDirectory + ? ContextMenuKind.COLLECTION_DIRECTORY_ITEM + : ContextMenuKind.COLLECTION_FILE_ITEM + : isDirectory + ? ContextMenuKind.READONLY_COLLECTION_DIRECTORY_ITEM + : ContextMenuKind.READONLY_COLLECTION_FILE_ITEM, kind: ResourceKind.COLLECTION, name: item.data.name, uuid: item.id, @@ -66,19 +73,21 @@ const mapDispatchToProps = (dispatch: Dispatch): Pick { + dispatch(collectionPanelFilesAction.ON_SEARCH_CHANGE(searchValue)); + }, onOptionsMenuOpen: (event, isWritable) => { dispatch(openCollectionFilesContextMenu(event, isWritable)); }, onFileClick: (id) => { - dispatch(openDetailsPanel(id)); + dispatch(openDetailsPanel(id)); }, }); - export const CollectionPanelFiles = connect(memoizedMapStateToProps(), mapDispatchToProps)(Component); -const collectionItemToTreeItem = (tree: Tree) => - (id: string): TreeItem => { +const collectionItemToList = (level: number) => (tree: Tree) => + (id: string): TreeItem[] => { const node: TreeNode = getNode(id)(tree) || initTreeNode({ id: '', parent: '', @@ -88,7 +97,8 @@ const collectionItemToTreeItem = (tree: Tree