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, 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';
11 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
17 COPY_AND_RERUN_PROCESS,
26 OPEN_W_3RD_PARTY_CLIENT,
31 } = MultiSelectMenuActionNames;
33 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
35 //use allActionNames or filter manually below
37 const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
38 const projectMSActionsFilter = new Set([
42 COPY_AND_RERUN_PROCESS,
50 OPEN_W_3RD_PARTY_CLIENT,
55 const workflowMSActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW]);
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",
66 PROCESS = "arvados#containerRequest",
67 PROJECT = "arvados#group",
68 PROJECT_FROZEN = "arvados#group_frozen",
69 PROJECT_READONLY = "arvados#group_readonly",
70 REPOSITORY = "arvados#repository",
71 SSH_KEY = "arvados#authorizedKeys",
72 KEEP_SERVICE = "arvados#keepService",
73 USER = "arvados#user",
74 VIRTUAL_MACHINE = "arvados#virtualMachine",
75 WORKFLOW = "arvados#workflow",
79 const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, PROJECT_READONLY, WORKFLOW } = msResourceKind;
81 export const multiselectActionsFilters: TMultiselectActionsFilters = {
82 [COLLECTION]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
83 [PROCESS]: [msProcessActionSet, processResourceMSActionsFilter],
84 [PROJECT]: [msProjectActionSet, projectMSActionsFilter],
85 [PROJECT_FROZEN]: [msProjectActionSet, allActionNames(msFrozenActionSet)],
86 [PROJECT_READONLY]: [msProjectActionSet, allActionNames(msReadOnlyProjectActionSet)],
87 [WORKFLOW]: [msWorkflowActionSet, workflowMSActionFilter]