21128: added workflow actions Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox...
authorLisa Knox <lisaknox83@gmail.com>
Mon, 27 Nov 2023 16:16:58 +0000 (11:16 -0500)
committerLisa Knox <lisaknox83@gmail.com>
Mon, 27 Nov 2023 16:16:58 +0000 (11:16 -0500)
src/components/multiselect-toolbar/MultiselectToolbar.tsx
src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
src/views-components/multiselect-toolbar/ms-collection-action-set.ts
src/views-components/multiselect-toolbar/ms-menu-actions.ts [moved from src/views-components/multiselect-toolbar/ms-menu-action-set.ts with 95% similarity]
src/views-components/multiselect-toolbar/ms-process-action-set.ts
src/views-components/multiselect-toolbar/ms-project-action-set.ts
src/views-components/multiselect-toolbar/ms-workflow-action-set.ts [new file with mode: 0644]

index 72d375ff9da2c7ee77fdaaa1322d1d6a7db16bc7..dbc5e59eafde9dce5ebe05502169f5b030356cfd 100644 (file)
@@ -13,7 +13,7 @@ import { ContextMenuResource } from "store/context-menu/context-menu-actions";
 import { Resource, extractUuidKind } from "models/resource";
 import { getResource } from "store/resources/resources";
 import { ResourcesState } from "store/resources/resources";
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-action-set";
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
 import { ContextMenuAction } from "views-components/context-menu/context-menu-action-set";
 import { multiselectActionsFilters, TMultiselectActionsFilters } from "./ms-toolbar-action-filters";
 import { kindToActionSet, findActionByName } from "./ms-kind-action-differentiator";
index 74593ac73a32abd61f45512be534e3d3dac7c864..5a84d4c573f711a46a4a4665b9acbcff5bf2f18f 100644 (file)
@@ -3,19 +3,21 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { ResourceKind } from "models/resource";
-import { MultiSelectMenuActionSet} from "views-components/multiselect-toolbar/ms-menu-action-set";
+import { MultiSelectMenuActionSet} from "views-components/multiselect-toolbar/ms-menu-actions";
 import { msCollectionActionSet } from "views-components/multiselect-toolbar/ms-collection-action-set";
 import { msProjectActionSet } from "views-components/multiselect-toolbar/ms-project-action-set";
 import { msProcessActionSet } from "views-components/multiselect-toolbar/ms-process-action-set";
+import { msWorkflowActionSet } from "views-components/multiselect-toolbar/ms-workflow-action-set";
 
 export function findActionByName(name: string, actionSet: MultiSelectMenuActionSet) {
     return actionSet[0].find(action => action.name === name);
 }
 
-const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
+const { COLLECTION, PROCESS, PROJECT, WORKFLOW } = ResourceKind;
 
 export const kindToActionSet: Record<string, MultiSelectMenuActionSet> = {
     [COLLECTION]: msCollectionActionSet,
-    [PROJECT]: msProjectActionSet,
     [PROCESS]: msProcessActionSet,
+    [PROJECT]: msProjectActionSet,
+    [WORKFLOW]: msWorkflowActionSet,
 };
index 12910e4377ccfcc8241163253fd8158a23a45f64..f921cd1f8420dc35351cb1d8292e8be5b82d3863 100644 (file)
@@ -3,10 +3,11 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { ResourceKind } from 'models/resource';
-import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-action-set';
+import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-actions';
 import { msCollectionActionSet } from 'views-components/multiselect-toolbar/ms-collection-action-set';
 import { msProjectActionSet } from 'views-components/multiselect-toolbar/ms-project-action-set';
 import { msProcessActionSet } from 'views-components/multiselect-toolbar/ms-process-action-set';
+import { msWorkflowActionSet } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
 
 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
 
@@ -16,6 +17,7 @@ const {
     API_DETAILS,
     COPY_AND_RERUN_PROCESS,
     COPY_TO_CLIPBOARD,
+    DELETE_WORKFLOW,
     EDIT_PPROJECT,
     FREEZE_PROJECT,
     MAKE_A_COPY,
@@ -24,11 +26,14 @@ const {
     OPEN_IN_NEW_TAB,
     OPEN_W_3RD_PARTY_CLIENT,
     REMOVE,
+    RUN_WORKFLOW,
     SHARE,
     VIEW_DETAILS,
 } = MultiSelectMenuActionNames;
 
 //these sets govern what actions are on the ms toolbar for each resource kind
+const collectionMSActionsFilter = new Set([MAKE_A_COPY, MOVE_TO, ADD_TO_TRASH]);
+const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
 const projectMSActionsFilter = new Set([
     ADD_TO_FAVORITES,
     ADD_TO_TRASH,
@@ -46,13 +51,14 @@ const projectMSActionsFilter = new Set([
     SHARE,
     VIEW_DETAILS,
 ]);
-const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
-const collectionMSActionsFilter = new Set([MAKE_A_COPY, MOVE_TO, ADD_TO_TRASH]);
+const workflowMSActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW]);
 
-const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
+const { COLLECTION, PROCESS, PROJECT, WORKFLOW } = ResourceKind;
 
 export const multiselectActionsFilters: TMultiselectActionsFilters = {
-    [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
-    [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
     [COLLECTION]: [msCollectionActionSet, collectionMSActionsFilter],
+    [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
+    [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
+    [WORKFLOW]: [msWorkflowActionSet, workflowMSActionFilter]
 };
+
index 641645e081fe694c76eecdbce44a2c59ab0e33a9..3afe15568efbbdece0afefa737c5f5c75cc635d5 100644 (file)
@@ -7,7 +7,7 @@ import { openMoveCollectionDialog } from "store/collections/collection-move-acti
 import { openCollectionCopyDialog, openMultiCollectionCopyDialog } from "store/collections/collection-copy-actions";
 import { toggleCollectionTrashed } from "store/trash/trash-actions";
 import { ContextMenuResource } from "store/context-menu/context-menu-actions";
-import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-action-set";
+import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-actions";
 import { TrashIcon } from "components/icon/icon";
 
 export const msCollectionActionSet: MultiSelectMenuActionSet = [
similarity index 95%
rename from src/views-components/multiselect-toolbar/ms-menu-action-set.ts
rename to src/views-components/multiselect-toolbar/ms-menu-actions.ts
index fa4f9283f259bcaded0e2257be98d642c4322e44..7f3bb475fb343dbb80f3b5849722d8639cc20e45 100644 (file)
@@ -14,6 +14,7 @@ export const MultiSelectMenuActionNames = {
   API_DETAILS: 'API Details',
   COPY_AND_RERUN_PROCESS: "Copy and re-run process",
   COPY_TO_CLIPBOARD: "Copy to clipboard",
+  DELETE_WORKFLOW: 'DELETE_WORKFLOW', 
   EDIT_PPROJECT: 'Edit project',
   FREEZE_PROJECT: 'Freeze Project',
   MAKE_A_COPY: "Make a copy",
@@ -22,6 +23,7 @@ export const MultiSelectMenuActionNames = {
   OPEN_IN_NEW_TAB: 'Open in new tab',
   OPEN_W_3RD_PARTY_CLIENT: 'Open with 3rd party client',
   REMOVE: "Remove",
+  RUN_WORKFLOW: 'RUN_WORKFLOW',
   SHARE: 'Share',
   VIEW_DETAILS: 'View details',
 };
index be6d9f98e59823d64cd391bfc996d4a915ba3b55..de9062442a0b2e04ccc1d43950a9d0e60ac9f119 100644 (file)
@@ -6,7 +6,7 @@ import { MoveToIcon, RemoveIcon, ReRunProcessIcon } from "components/icon/icon";
 import { openMoveProcessDialog } from "store/processes/process-move-actions";
 import { openCopyProcessDialog } from "store/processes/process-copy-actions";
 import { openRemoveProcessDialog } from "store/processes/processes-actions";
-import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-action-set";
+import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-actions";
 
 export const msProcessActionSet: MultiSelectMenuActionSet = [
     [
index b61cded526ed751de245c1eadf6c2f83a9f19ffe..115c4ce97c18039a9212607577ba8bd4730040de 100644 (file)
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { MultiSelectMenuAction, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-action-set';
+import { MultiSelectMenuAction, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-actions';
 import { openMoveProjectDialog } from 'store/projects/project-move-actions';
 import { toggleProjectTrashed } from 'store/trash/trash-actions';
 import { copyToClipboardAction, openInNewTabAction } from 'store/open-in-new-tab/open-in-new-tab.actions';
diff --git a/src/views-components/multiselect-toolbar/ms-workflow-action-set.ts b/src/views-components/multiselect-toolbar/ms-workflow-action-set.ts
new file mode 100644 (file)
index 0000000..00210aa
--- /dev/null
@@ -0,0 +1,76 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { openRunProcess, deleteWorkflow } from 'store/workflow-panel/workflow-panel-actions';
+import { DetailsIcon, AdvancedIcon, OpenIcon, Link, StartIcon, TrashIcon } from 'components/icon/icon';
+import { copyToClipboardAction, openInNewTabAction } from 'store/open-in-new-tab/open-in-new-tab.actions';
+import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
+import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
+import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
+
+export const msReadOnlyWorkflowActionSet: MultiSelectMenuActionSet = [
+    [
+        {
+            name: MultiSelectMenuActionNames.OPEN_IN_NEW_TAB,
+            icon: OpenIcon,
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch, resources) => {
+                dispatch<any>(openInNewTabAction(resources[0]));
+            },
+        },
+        {
+            name: MultiSelectMenuActionNames.COPY_TO_CLIPBOARD,
+            icon: Link,
+
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch, resources) => {
+                dispatch<any>(copyToClipboardAction(resources));
+            },
+        },
+        {
+            name: MultiSelectMenuActionNames.VIEW_DETAILS,
+            icon: DetailsIcon,
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch) => {
+                dispatch<any>(toggleDetailsPanel());
+            },
+        },
+        {
+            name: MultiSelectMenuActionNames.API_DETAILS,
+            icon: AdvancedIcon,
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch, resources) => {
+                dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
+            },
+        },
+        {
+            name: MultiSelectMenuActionNames.RUN_WORKFLOW,
+            icon: StartIcon,
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch, resources) => {
+                dispatch<any>(openRunProcess(resources[0].uuid, resources[0].ownerUuid, resources[0].name));
+            },
+        },
+    ],
+];
+
+export const msWorkflowActionSet: MultiSelectMenuActionSet = [
+    [
+        ...msReadOnlyWorkflowActionSet[0],
+        {
+            name: MultiSelectMenuActionNames.DELETE_WORKFLOW,
+            icon: TrashIcon,
+            hasAlts: false,
+            isForMulti: false,
+            execute: (dispatch, resources) => {
+                dispatch<any>(deleteWorkflow(resources[0].uuid, resources[0].ownerUuid));
+            },
+        },
+    ],
+];