9ad80f7dfc21606ab17c5f7144ca54406c06e995
[arvados-workbench2.git] / src / components / multiselect-toolbar / ms-toolbar-action-filters.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ResourceKind } from 'models/resource';
6 import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-actions';
7 import { msCollectionActionSet } from 'views-components/multiselect-toolbar/ms-collection-action-set';
8 import { msProjectActionSet } from 'views-components/multiselect-toolbar/ms-project-action-set';
9 import { msProcessActionSet } from 'views-components/multiselect-toolbar/ms-process-action-set';
10 import { msWorkflowActionSet } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
11
12 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
13
14 const {
15     ADD_TO_FAVORITES,
16     ADD_TO_TRASH,
17     API_DETAILS,
18     COPY_AND_RERUN_PROCESS,
19     COPY_TO_CLIPBOARD,
20     DELETE_WORKFLOW,
21     EDIT_PPROJECT,
22     FREEZE_PROJECT,
23     MAKE_A_COPY,
24     MOVE_TO,
25     NEW_PROJECT,
26     OPEN_IN_NEW_TAB,
27     OPEN_W_3RD_PARTY_CLIENT,
28     REMOVE,
29     RUN_WORKFLOW,
30     SHARE,
31     VIEW_DETAILS,
32 } = MultiSelectMenuActionNames;
33
34 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
35
36 //use allActionNames or filter manually below
37
38 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
39 const projectMSActionsFilter = new Set([
40     ADD_TO_FAVORITES,
41     ADD_TO_TRASH,
42     API_DETAILS,
43     COPY_AND_RERUN_PROCESS,
44     COPY_TO_CLIPBOARD,
45     EDIT_PPROJECT,
46     FREEZE_PROJECT,
47     MAKE_A_COPY,
48     MOVE_TO,
49     NEW_PROJECT,
50     OPEN_IN_NEW_TAB,
51     OPEN_W_3RD_PARTY_CLIENT,
52     REMOVE,
53     SHARE,
54     VIEW_DETAILS,
55 ]);
56 const workflowMSActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW]);
57
58 const { COLLECTION, PROCESS, PROJECT, WORKFLOW } = ResourceKind;
59
60 export const multiselectActionsFilters: TMultiselectActionsFilters = {
61     [COLLECTION]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
62     [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
63     [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
64     [WORKFLOW]: [msWorkflowActionSet, workflowMSActionFilter]
65 };
66