21128: workflows handled Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox@curii...
[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, msProjectActionFilter, msReadOnlyProjectActionFilter, msFilterGroupActionFilter, msFrozenActionFilter } from 'views-components/multiselect-toolbar/ms-project-action-set';
8 import { msProcessActionSet } from 'views-components/multiselect-toolbar/ms-process-action-set';
9 import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
10
11 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
12
13 const {
14     MOVE_TO,
15     REMOVE,
16 } = MultiSelectMenuActionNames;
17
18 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
19
20 //use allActionNames or filter manually below
21
22 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
23
24 export enum msResourceKind {
25     API_CLIENT_AUTHORIZATION = "arvados#apiClientAuthorization",
26     COLLECTION = "arvados#collection",
27     CONTAINER = "arvados#container",
28     CONTAINER_REQUEST = "arvados#containerRequest",
29     GROUP = "arvados#group",
30     LINK = "arvados#link",
31     LOG = "arvados#log",
32     PROCESS = "arvados#containerRequest",
33     PROJECT = "arvados#group",
34     PROJECT_FROZEN = "arvados#group_frozen",
35     PROJECT_READONLY = "arvados#group_readonly",
36     PROJECT_FILTER = "arvados#group_filter",
37     REPOSITORY = "arvados#repository",
38     SSH_KEY = "arvados#authorizedKeys",
39     KEEP_SERVICE = "arvados#keepService",
40     USER = "arvados#user",
41     VIRTUAL_MACHINE = "arvados#virtualMachine",
42     WORKFLOW = "arvados#workflow",
43     WORKFLOW_READONLY = "arvados#workflow_readonly",
44     NONE = "arvados#none"
45 }
46
47 const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, PROJECT_READONLY, PROJECT_FILTER, WORKFLOW, WORKFLOW_READONLY } = msResourceKind;
48
49 export const multiselectActionsFilters: TMultiselectActionsFilters = {
50     [COLLECTION]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
51     [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
52     [PROJECT]: [msProjectActionSet, msProjectActionFilter],
53     [PROJECT_FROZEN]: [msProjectActionSet, msFrozenActionFilter],
54     [PROJECT_READONLY]: [msProjectActionSet, msReadOnlyProjectActionFilter],
55     [PROJECT_FILTER]: [msProjectActionSet, msFilterGroupActionFilter],
56     [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter],
57     [WORKFLOW_READONLY]: [msWorkflowActionSet, msReadOnlyWorkflowActionFilter]
58 };
59