Merge branch 'main' of git.arvados.org:arvados into 22202-delete-process-navigation
[arvados.git] / services / workbench2 / src / views-components / multiselect-toolbar / ms-process-action-set.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ContextMenuActionNames } from "views-components/context-menu/context-menu-action-set";
6 import { DeleteForever, ReRunProcessIcon, OutputIcon, RenameIcon, StopIcon, CopyIcon, Link } from "components/icon/icon";
7 import { openCopyProcessDialog } from "store/processes/process-copy-actions";
8 import { openRemoveProcessDialog, cancelRunningWorkflow } from "store/processes/processes-actions";
9 import { MultiSelectMenuAction, MultiSelectMenuActionSet, msCommonActionSet } from "./ms-menu-actions";
10 import { openProcessUpdateDialog } from "store/processes/process-update-actions";
11 import { msNavigateToOutput } from "store/multiselect/multiselect-actions";
12 import { copyToClipboardAction, copyStringToClipboardAction } from "store/open-in-new-tab/open-in-new-tab.actions";
13
14 const {REMOVE, COPY_AND_RERUN_PROCESS, COPY_LINK_TO_CLIPBOARD, COPY_UUID, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, ADD_TO_PUBLIC_FAVORITES, OUTPUTS, EDIT_PROCESS, CANCEL } = ContextMenuActionNames
15
16 const msCopyAndRerunProcess: MultiSelectMenuAction = {
17     name: COPY_AND_RERUN_PROCESS,
18     icon: ReRunProcessIcon,
19     hasAlts: false,
20     isForMulti: false,
21     execute: (dispatch, resources) => {
22         for (const resource of [...resources]) {
23             dispatch<any>(openCopyProcessDialog(resource));
24         }
25     },
26 }
27
28 const msRemoveProcess: MultiSelectMenuAction = {
29     name: REMOVE,
30     icon: DeleteForever,
31     hasAlts: false,
32     isForMulti: true,
33     execute: (dispatch, resources) => {
34         dispatch<any>(openRemoveProcessDialog(resources[0], resources.length));
35     },
36 }
37
38 const msCopyUuid: MultiSelectMenuAction  = {
39     name: COPY_UUID,
40     icon: CopyIcon,
41     hasAlts: false,
42     isForMulti: false,
43     execute: (dispatch, resources) => {
44         dispatch<any>(copyStringToClipboardAction(resources[0].uuid));
45     },
46 };
47
48 const msCopyToClipboardMenuAction: MultiSelectMenuAction  = {
49     name: COPY_LINK_TO_CLIPBOARD,
50     icon: Link,
51     hasAlts: false,
52     isForMulti: false,
53     execute: (dispatch, resources) => {
54         dispatch<any>(copyToClipboardAction(resources));
55     },
56 };
57
58 // removed until auto-move children is implemented
59 // const msMoveTo: MultiSelectMenuAction = {
60 //     name: MOVE_TO,
61 //     icon: MoveToIcon,
62 //     hasAlts: false,
63 //     isForMulti: true,
64 //     execute: (dispatch, resources) => {
65 //         dispatch<any>(openMoveProcessDialog(resources[0]));
66 //     },
67 // }
68
69 const msViewOutputs: MultiSelectMenuAction = {
70     name: OUTPUTS,
71     icon: OutputIcon,
72     hasAlts: false,
73     isForMulti: false,
74     execute: (dispatch, resources) => {
75                 if (resources[0]) {
76             dispatch<any>(msNavigateToOutput(resources[0]));
77         }
78     },
79 }
80
81 const msEditProcess: MultiSelectMenuAction = {
82     name: EDIT_PROCESS,
83     icon: RenameIcon,
84     hasAlts: false,
85     isForMulti: false,
86     execute: (dispatch, resources) => {
87         dispatch<any>(openProcessUpdateDialog(resources[0]));
88     },
89 }
90
91 const msCancelProcess: MultiSelectMenuAction = {
92     name: CANCEL,
93     icon: StopIcon,
94     hasAlts: false,
95     isForMulti: false,
96     execute: (dispatch, resources) => {
97         dispatch<any>(cancelRunningWorkflow(resources[0].uuid));
98     },
99 }
100
101 export const msProcessActionSet: MultiSelectMenuActionSet = [
102     [
103         ...msCommonActionSet,
104         msCopyAndRerunProcess,
105         msRemoveProcess,
106         // msMoveTo,
107         msViewOutputs,
108         msEditProcess,
109         msCancelProcess,
110         msCopyUuid,
111         msCopyToClipboardMenuAction,
112     ]
113 ];
114
115 export const msCommonProcessActionFilter = new Set([REMOVE, COPY_AND_RERUN_PROCESS, COPY_LINK_TO_CLIPBOARD, COPY_UUID, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, OUTPUTS, EDIT_PROCESS ]);
116 export const msRunningProcessActionFilter = new Set([REMOVE, COPY_AND_RERUN_PROCESS, COPY_LINK_TO_CLIPBOARD, COPY_UUID, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, OUTPUTS, EDIT_PROCESS, CANCEL ]);
117
118 export const msReadOnlyProcessActionFilter = new Set([COPY_AND_RERUN_PROCESS, COPY_LINK_TO_CLIPBOARD, COPY_UUID, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, OUTPUTS ]);
119 export const msAdminProcessActionFilter = new Set([REMOVE, COPY_AND_RERUN_PROCESS, COPY_LINK_TO_CLIPBOARD, COPY_UUID, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, ADD_TO_PUBLIC_FAVORITES, OUTPUTS, EDIT_PROCESS ]);