X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/71b9264c1720e619f8cfcb297a7848ece420c61c..66fbf108bc45021a3187bb63f4c0672e4e6ad3c9:/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 7836e1f7..9859f84b 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, @@ -29,19 +30,21 @@ const memoizedMapStateToProps = () => { let prevState: CollectionPanelFilesState; let prevTree: Array>; - return (state: RootState): Pick => { + 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 + items: prevTree, + currentItemUuid: state.detailsPanel.resourceUuid }; }; }; -const mapDispatchToProps = (dispatch: Dispatch): Pick => ({ +const mapDispatchToProps = (dispatch: Dispatch): Pick => ({ onUploadDataClick: () => { dispatch(openUploadCollectionFilesDialog()); }, @@ -51,22 +54,35 @@ const mapDispatchToProps = (dispatch: Dispatch): Pick { dispatch(collectionPanelFilesAction.TOGGLE_COLLECTION_FILE_SELECTION({ id: item.id })); }, - onItemMenuOpen: (event, item) => { - dispatch(openContextMenu(event, { menuKind: ContextMenuKind.COLLECTION_FILES_ITEM, kind: ResourceKind.COLLECTION, name: item.data.name, uuid: item.id, ownerUuid: '' })); + onItemMenuOpen: (event, item, isWritable) => { + dispatch(openContextMenu( + event, + { + menuKind: isWritable + ? ContextMenuKind.COLLECTION_FILES_ITEM + : ContextMenuKind.READONLY_COLLECTION_FILES_ITEM, + kind: ResourceKind.COLLECTION, + name: item.data.name, + uuid: item.id, + ownerUuid: '' + } + )); + }, + onSearchChange: (searchValue: string) => { + dispatch(collectionPanelFilesAction.ON_SEARCH_CHANGE(searchValue)); }, - onOptionsMenuOpen: (event) => { - dispatch(openCollectionFilesContextMenu(event)); + onOptionsMenuOpen: (event, isWritable) => { + dispatch(openCollectionFilesContextMenu(event, isWritable)); }, onFileClick: (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: '', @@ -76,7 +92,8 @@ const collectionItemToTreeItem = (tree: Tree