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