From: Pawel Kowalczyk Date: Mon, 5 Nov 2018 08:44:35 +0000 (+0100) Subject: collection-file-operations-should-be-selection-sensitive X-Git-Tag: 1.3.0~31^2~6^2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/c03c97bee25886e2879e69b6d065ac4d1674c48d collection-file-operations-should-be-selection-sensitive Feature #14037 Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk --- diff --git a/src/index.tsx b/src/index.tsx index d9235d0f..efe3a576 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -25,6 +25,7 @@ import { resourceActionSet } from './views-components/context-menu/action-sets/r import { favoriteActionSet } from "./views-components/context-menu/action-sets/favorite-action-set"; import { collectionFilesActionSet } from './views-components/context-menu/action-sets/collection-files-action-set'; import { collectionFilesItemActionSet } from './views-components/context-menu/action-sets/collection-files-item-action-set'; +import { collectionFilesNotSelectedActionSet } from './views-components/context-menu/action-sets/collection-files-not-selected-action-set'; import { collectionActionSet } from './views-components/context-menu/action-sets/collection-action-set'; import { collectionResourceActionSet } from './views-components/context-menu/action-sets/collection-resource-action-set'; import { processActionSet } from './views-components/context-menu/action-sets/process-action-set'; @@ -55,6 +56,7 @@ addMenuActionSet(ContextMenuKind.PROJECT, projectActionSet); addMenuActionSet(ContextMenuKind.RESOURCE, resourceActionSet); addMenuActionSet(ContextMenuKind.FAVORITE, favoriteActionSet); addMenuActionSet(ContextMenuKind.COLLECTION_FILES, collectionFilesActionSet); +addMenuActionSet(ContextMenuKind.COLLECTION_FILES_NOT_SELECTED, collectionFilesNotSelectedActionSet); addMenuActionSet(ContextMenuKind.COLLECTION_FILES_ITEM, collectionFilesItemActionSet); addMenuActionSet(ContextMenuKind.COLLECTION, collectionActionSet); addMenuActionSet(ContextMenuKind.COLLECTION_RESOURCE, collectionResourceActionSet); diff --git a/src/store/context-menu/context-menu-actions.ts b/src/store/context-menu/context-menu-actions.ts index 3ae79db4..32bc47b6 100644 --- a/src/store/context-menu/context-menu-actions.ts +++ b/src/store/context-menu/context-menu-actions.ts @@ -48,6 +48,18 @@ export const openContextMenu = (event: React.MouseEvent, resource: ); }; +export const openCollectionFilesContextMenu = (event: React.MouseEvent) => + (dispatch: Dispatch, getState: () => RootState) => { + const isCollectionFileSelected = JSON.stringify(getState().collectionPanelFiles).includes('"selected":true'); + dispatch(openContextMenu(event, { + name: '', + uuid: '', + ownerUuid: '', + kind: ResourceKind.COLLECTION, + menuKind: isCollectionFileSelected ? ContextMenuKind.COLLECTION_FILES : ContextMenuKind.COLLECTION_FILES_NOT_SELECTED + })); + }; + export const openRootProjectContextMenu = (event: React.MouseEvent, projectUuid: string) => (dispatch: Dispatch, getState: () => RootState) => { const res = getResource(projectUuid)(getState().resources); 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 edc100f7..294bd6d5 100644 --- a/src/views-components/collection-panel-files/collection-panel-files.ts +++ b/src/views-components/collection-panel-files/collection-panel-files.ts @@ -20,7 +20,7 @@ import { collectionPanelFilesAction } from "~/store/collection-panel/collection- import { ContextMenuKind } from "../context-menu/context-menu"; import { getNode, getNodeChildrenIds, Tree } from "~/models/tree"; import { CollectionFileType } from "~/models/collection-file"; -import { openContextMenu } from '~/store/context-menu/context-menu-actions'; +import { openContextMenu, openCollectionFilesContextMenu } from '~/store/context-menu/context-menu-actions'; import { openUploadCollectionFilesDialog } from '~/store/collections/collection-upload-actions'; import { ResourceKind } from "~/models/resource"; @@ -54,7 +54,7 @@ const mapDispatchToProps = (dispatch: Dispatch): Pick(openContextMenu(event, { menuKind: ContextMenuKind.COLLECTION_FILES_ITEM, kind: ResourceKind.COLLECTION, name: item.data.name, uuid: item.id, ownerUuid: '' })); }, onOptionsMenuOpen: (event) => { - dispatch(openContextMenu(event, { menuKind: ContextMenuKind.COLLECTION_FILES, kind: ResourceKind.COLLECTION, name: '', uuid: '', ownerUuid: '' })); + dispatch(openCollectionFilesContextMenu(event)); }, }); diff --git a/src/views-components/context-menu/action-sets/collection-files-not-selected-action-set.ts b/src/views-components/context-menu/action-sets/collection-files-not-selected-action-set.ts new file mode 100644 index 00000000..ab31566d --- /dev/null +++ b/src/views-components/context-menu/action-sets/collection-files-not-selected-action-set.ts @@ -0,0 +1,13 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { ContextMenuActionSet } from "~/views-components/context-menu/context-menu-action-set"; +import { collectionPanelFilesAction } from "~/store/collection-panel/collection-panel-files/collection-panel-files-actions"; + +export const collectionFilesNotSelectedActionSet: ContextMenuActionSet = [[{ + name: "Select all", + execute: dispatch => { + dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES()); + } +}]]; \ No newline at end of file diff --git a/src/views-components/context-menu/context-menu.tsx b/src/views-components/context-menu/context-menu.tsx index ad6f7e30..b6d2b91b 100644 --- a/src/views-components/context-menu/context-menu.tsx +++ b/src/views-components/context-menu/context-menu.tsx @@ -62,6 +62,7 @@ export enum ContextMenuKind { TRASH = "Trash", COLLECTION_FILES = "CollectionFiles", COLLECTION_FILES_ITEM = "CollectionFilesItem", + COLLECTION_FILES_NOT_SELECTED = "CollectionFilesNotSelected", COLLECTION = 'Collection', COLLECTION_RESOURCE = 'CollectionResource', TRASHED_COLLECTION = 'TrashedCollection',