X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/23962688961f81c0fbdb20870096024ded86a0b5..e10e24d713e5c31cbc34efca458f5718eb6eb000:/src/views-components/context-menu/action-sets/collection-files-action-set.ts diff --git a/src/views-components/context-menu/action-sets/collection-files-action-set.ts b/src/views-components/context-menu/action-sets/collection-files-action-set.ts index 91fa2b00..80deb37c 100644 --- a/src/views-components/context-menu/action-sets/collection-files-action-set.ts +++ b/src/views-components/context-menu/action-sets/collection-files-action-set.ts @@ -2,35 +2,114 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { ContextMenuActionSet } from "../context-menu-action-set"; -import { collectionPanelFilesAction } from "../../../store/collection-panel/collection-panel-files/collection-panel-files-actions"; -import { openMultipleFilesRemoveDialog } from "../../file-remove-dialog/multiple-files-remove-dialog"; -import { createCollectionWithSelected } from "../../create-collection-dialog-with-selected/create-collection-dialog-with-selected"; +import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set"; +import { collectionPanelFilesAction, openMultipleFilesRemoveDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions"; +import { + openCollectionPartialCopyMultipleToNewCollectionDialog, + openCollectionPartialCopyMultipleToExistingCollectionDialog, + openCollectionPartialCopyToSeparateCollectionsDialog +} from 'store/collections/collection-partial-copy-actions'; +import { openCollectionPartialMoveMultipleToExistingCollectionDialog, openCollectionPartialMoveMultipleToNewCollectionDialog, openCollectionPartialMoveToSeparateCollectionsDialog } from "store/collections/collection-partial-move-actions"; +import { FileCopyIcon, FileMoveIcon, RemoveIcon, SelectAllIcon, SelectNoneIcon } from "components/icon/icon"; +const copyActions: ContextMenuAction[] = [ + { + name: "Copy selected into new collection", + icon: FileCopyIcon, + execute: dispatch => { + dispatch(openCollectionPartialCopyMultipleToNewCollectionDialog()); + } + }, + { + name: "Copy selected into existing collection", + icon: FileCopyIcon, + execute: dispatch => { + dispatch(openCollectionPartialCopyMultipleToExistingCollectionDialog()); + } + }, +]; -export const collectionFilesActionSet: ContextMenuActionSet = [[{ - name: "Select all", - execute: (dispatch) => { - dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES()); +const copyActionsMultiple: ContextMenuAction[] = [ + ...copyActions, + { + name: "Copy selected into separate collections", + icon: FileCopyIcon, + execute: dispatch => { + dispatch(openCollectionPartialCopyToSeparateCollectionsDialog()); + } } -}, { - name: "Unselect all", - execute: (dispatch) => { - dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES()); +]; + +const moveActions: ContextMenuAction[] = [ + { + name: "Move selected into new collection", + icon: FileMoveIcon, + execute: dispatch => { + dispatch(openCollectionPartialMoveMultipleToNewCollectionDialog()); + } + }, + { + name: "Move selected into existing collection", + icon: FileMoveIcon, + execute: dispatch => { + dispatch(openCollectionPartialMoveMultipleToExistingCollectionDialog()); + } + }, +]; + +const moveActionsMultiple: ContextMenuAction[] = [ + ...moveActions, + { + name: "Move selected into separate collections", + icon: FileMoveIcon, + execute: dispatch => { + dispatch(openCollectionPartialMoveToSeparateCollectionsDialog()); + } } -}, { +]; + +const selectActions: ContextMenuAction[] = [ + { + name: "Select all", + icon: SelectAllIcon, + execute: dispatch => { + dispatch(collectionPanelFilesAction.SELECT_ALL_COLLECTION_FILES()); + } + }, + { + name: "Unselect all", + icon: SelectNoneIcon, + execute: dispatch => { + dispatch(collectionPanelFilesAction.UNSELECT_ALL_COLLECTION_FILES()); + } + }, +]; + +const removeAction: ContextMenuAction = { name: "Remove selected", - execute: (dispatch, resource) => { + icon: RemoveIcon, + execute: dispatch => { dispatch(openMultipleFilesRemoveDialog()); } -}, { - name: "Download selected", - execute: (dispatch, resource) => { - return; - } -}, { - name: "Create a new collection with selected", - execute: (dispatch) => { - dispatch(createCollectionWithSelected()); - } -}]]; +}; + +// These action sets are used on the multi-select actions button. +export const readOnlyCollectionFilesActionSet: ContextMenuActionSet = [ + selectActions, + copyActions, +]; + +export const readOnlyCollectionFilesMultipleActionSet: ContextMenuActionSet = [ + selectActions, + copyActionsMultiple, +]; + +export const collectionFilesActionSet: ContextMenuActionSet = readOnlyCollectionFilesActionSet.concat([[ + removeAction, + ...moveActions +]]); + +export const collectionFilesMultipleActionSet: ContextMenuActionSet = readOnlyCollectionFilesMultipleActionSet.concat([[ + removeAction, + ...moveActionsMultiple +]]);