1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
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';
11 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
16 } = MultiSelectMenuActionNames;
18 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
20 //use allActionNames or filter manually below
22 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
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",
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",
47 const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, PROJECT_READONLY, PROJECT_FILTER, WORKFLOW, WORKFLOW_READONLY } = msResourceKind;
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]