21128: frozen project menu works Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox...
[arvados.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 { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from 'views-components/multiselect-toolbar/ms-menu-actions';
6 import { msCollectionActionSet } from 'views-components/multiselect-toolbar/ms-collection-action-set';
7 import { msProjectActionSet, msReadOnlyProjectActionSet, msFilterGroupActionSet, msFrozenActionSet } from 'views-components/multiselect-toolbar/ms-project-action-set';
8 import { msProcessActionSet } from 'views-components/multiselect-toolbar/ms-process-action-set';
9 import { msWorkflowActionSet } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
10
11 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
12
13 const {
14     ADD_TO_FAVORITES,
15     ADD_TO_TRASH,
16     API_DETAILS,
17     COPY_AND_RERUN_PROCESS,
18     COPY_TO_CLIPBOARD,
19     DELETE_WORKFLOW,
20     EDIT_PPROJECT,
21     FREEZE_PROJECT,
22     MAKE_A_COPY,
23     MOVE_TO,
24     NEW_PROJECT,
25     OPEN_IN_NEW_TAB,
26     OPEN_W_3RD_PARTY_CLIENT,
27     REMOVE,
28     RUN_WORKFLOW,
29     SHARE,
30     VIEW_DETAILS,
31 } = MultiSelectMenuActionNames;
32
33 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
34
35 //use allActionNames or filter manually below
36
37 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
38 const projectMSActionsFilter = new Set([
39     ADD_TO_FAVORITES,
40     ADD_TO_TRASH,
41     API_DETAILS,
42     COPY_AND_RERUN_PROCESS,
43     COPY_TO_CLIPBOARD,
44     EDIT_PPROJECT,
45     FREEZE_PROJECT,
46     MAKE_A_COPY,
47     MOVE_TO,
48     NEW_PROJECT,
49     OPEN_IN_NEW_TAB,
50     OPEN_W_3RD_PARTY_CLIENT,
51     REMOVE,
52     SHARE,
53     VIEW_DETAILS,
54 ]);
55 const workflowMSActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW]);
56
57
58 export enum msResourceKind {
59     API_CLIENT_AUTHORIZATION = "arvados#apiClientAuthorization",
60     COLLECTION = "arvados#collection",
61     CONTAINER = "arvados#container",
62     CONTAINER_REQUEST = "arvados#containerRequest",
63     GROUP = "arvados#group",
64     LINK = "arvados#link",
65     LOG = "arvados#log",
66     PROCESS = "arvados#containerRequest",
67     PROJECT = "arvados#group",
68     PROJECT_FROZEN = "arvados#group_frozen",
69     REPOSITORY = "arvados#repository",
70     SSH_KEY = "arvados#authorizedKeys",
71     KEEP_SERVICE = "arvados#keepService",
72     USER = "arvados#user",
73     VIRTUAL_MACHINE = "arvados#virtualMachine",
74     WORKFLOW = "arvados#workflow",
75     NONE = "arvados#none"
76 }
77
78 const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, WORKFLOW } = msResourceKind;
79
80 export const multiselectActionsFilters: TMultiselectActionsFilters = {
81     [COLLECTION]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
82     [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
83     [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
84     [PROJECT_FROZEN]: [msProjectActionSet, allActionNames(msFrozenActionSet)],
85     [WORKFLOW]: [msWorkflowActionSet, workflowMSActionFilter]
86 };
87