21128: wrote basic process menu Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox...
[arvados-workbench2.git] / 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 { MoveToIcon, RemoveIcon, ReRunProcessIcon, OutputIcon, RenameIcon } from "components/icon/icon";
6 import { openMoveProcessDialog } from "store/processes/process-move-actions";
7 import { openCopyProcessDialog } from "store/processes/process-copy-actions";
8 import { openRemoveProcessDialog } from "store/processes/processes-actions";
9 import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from "./ms-menu-actions";
10 import { navigateToOutput } from "store/process-panel/process-panel-actions";
11 import { openProcessUpdateDialog } from "store/processes/process-update-actions";
12
13 const msCopyAndRerunProcess: MultiSelectMenuAction = {
14     name: MultiSelectMenuActionNames.COPY_AND_RERUN_PROCESS,
15     icon: ReRunProcessIcon,
16     hasAlts: false,
17     isForMulti: false,
18     execute: (dispatch, resources) => {
19         for (const resource of [...resources]) {
20             dispatch<any>(openCopyProcessDialog(resource));
21         }
22     },
23 }
24
25 const msRemoveProcess: MultiSelectMenuAction = {
26     name: MultiSelectMenuActionNames.REMOVE,
27     icon: RemoveIcon,
28     hasAlts: false,
29     isForMulti: true,
30     execute: (dispatch, resources) => {
31         dispatch<any>(openRemoveProcessDialog(resources[0], resources.length));
32     },
33 }
34
35 const msMoveTo: MultiSelectMenuAction = {
36     name: MultiSelectMenuActionNames.MOVE_TO,
37     icon: MoveToIcon,
38     hasAlts: false,
39     isForMulti: true,
40     execute: (dispatch, resources) => {
41         dispatch<any>(openMoveProcessDialog(resources[0]));
42     },
43 }
44
45 const msViewOutputs: MultiSelectMenuAction = {
46     name: MultiSelectMenuActionNames.OUTPUTS,
47     icon: OutputIcon,
48     hasAlts: false,
49     isForMulti: false,
50     execute: (dispatch, resources) => {
51         if (resources[0].outputUuid) {
52             dispatch<any>(navigateToOutput(resources[0].outputUuid));
53         }
54     },
55 }
56
57 const msEditProcess: MultiSelectMenuAction = {
58     name: MultiSelectMenuActionNames.EDIT_PROCESS,
59     icon: RenameIcon,
60     hasAlts: false,
61     isForMulti: false,
62     execute: (dispatch, resources) => {
63         dispatch<any>(openProcessUpdateDialog(resources[0]));
64     },
65 }
66
67 export const msProcessActionSet: MultiSelectMenuActionSet = [
68     [
69         ...msCommonActionSet,
70         msCopyAndRerunProcess,
71         msRemoveProcess,
72         msMoveTo,
73         msViewOutputs,
74         msEditProcess
75     ]
76 ];
77
78 const { MOVE_TO, REMOVE, COPY_AND_RERUN_PROCESS, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, ADD_TO_PUBLIC_FAVORITES, OUTPUTS, EDIT_PROCESS } = MultiSelectMenuActionNames
79
80 export const msCommonProcessActionFilter = new Set([MOVE_TO, REMOVE, COPY_AND_RERUN_PROCESS, ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, VIEW_DETAILS, API_DETAILS, SHARE, ADD_TO_PUBLIC_FAVORITES, OUTPUTS, EDIT_PROCESS ]);