Merge branch '21448-menu-reorder' into 21224-project-details
[arvados.git] / services / workbench2 / 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 } from 'views-components/multiselect-toolbar/ms-menu-actions';
6 import { msCollectionActionSet, msCommonCollectionActionFilter, msReadOnlyCollectionActionFilter } from 'views-components/multiselect-toolbar/ms-collection-action-set';
7 import {
8     msProjectActionSet,
9     msCommonProjectActionFilter,
10     msReadOnlyProjectActionFilter,
11     msFilterGroupActionFilter,
12     msAdminFilterGroupActionFilter,
13     msFrozenProjectActionFilter,
14     msAdminFrozenProjectActionFilter
15 } from 'views-components/multiselect-toolbar/ms-project-action-set';
16 import { msProcessActionSet, msCommonProcessActionFilter, msAdminProcessActionFilter, msRunningProcessActionFilter } from 'views-components/multiselect-toolbar/ms-process-action-set';
17 import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
18 import { UserDetailsActionSet } from 'views-components/multiselect-toolbar/ms-user-details-action-set';
19 import { ResourceKind } from 'models/resource';
20 import { ContextMenuKind } from 'views-components/context-menu/menu-item-sort';
21
22 const {
23     COLLECTION,
24     COLLECTION_ADMIN,
25     READONLY_COLLECTION,
26     PROCESS_RESOURCE,
27     RUNNING_PROCESS_RESOURCE,
28     RUNNING_PROCESS_ADMIN,
29     PROCESS_ADMIN,
30     PROJECT,
31     ROOT_PROJECT,
32     PROJECT_ADMIN,
33     ROOT_PROJECT_ADMIN,
34     FROZEN_PROJECT,
35     FROZEN_PROJECT_ADMIN,
36     READONLY_PROJECT,
37     FILTER_GROUP,
38     FILTER_GROUP_ADMIN,
39     WORKFLOW,
40     READONLY_WORKFLOW,
41 } = ContextMenuKind;
42
43 export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
44
45 const allActionNames = (actionSet: MultiSelectMenuActionSet): Set<string> => new Set(actionSet[0].map((action) => action.name));
46
47 export const multiselectActionsFilters: TMultiselectActionsFilters = {
48     [COLLECTION]: [msCollectionActionSet, msCommonCollectionActionFilter],
49     [COLLECTION_ADMIN]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
50     [READONLY_COLLECTION]: [msCollectionActionSet, msReadOnlyCollectionActionFilter],
51     [ResourceKind.COLLECTION]: [msCollectionActionSet, msCommonCollectionActionFilter],
52
53     [PROCESS_RESOURCE]: [msProcessActionSet, msCommonProcessActionFilter],
54     [PROCESS_ADMIN]: [msProcessActionSet, msAdminProcessActionFilter],
55     [RUNNING_PROCESS_RESOURCE]: [msProcessActionSet, msRunningProcessActionFilter],
56     [RUNNING_PROCESS_ADMIN]: [msProcessActionSet, allActionNames(msProcessActionSet)],
57     [ResourceKind.PROCESS]: [msProcessActionSet, msCommonProcessActionFilter],
58     
59     [PROJECT]: [msProjectActionSet, msCommonProjectActionFilter],
60     [PROJECT_ADMIN]: [msProjectActionSet, allActionNames(msProjectActionSet)],
61     [FROZEN_PROJECT]: [msProjectActionSet, msFrozenProjectActionFilter],
62     [FROZEN_PROJECT_ADMIN]: [msProjectActionSet, msAdminFrozenProjectActionFilter], 
63     [READONLY_PROJECT]: [msProjectActionSet, msReadOnlyProjectActionFilter],
64     [ResourceKind.PROJECT]: [msProjectActionSet, msCommonProjectActionFilter],
65     
66     [FILTER_GROUP]: [msProjectActionSet, msFilterGroupActionFilter],
67     [FILTER_GROUP_ADMIN]: [msProjectActionSet, msAdminFilterGroupActionFilter],
68     
69     [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter],
70     [READONLY_WORKFLOW]: [msWorkflowActionSet, msReadOnlyWorkflowActionFilter],
71
72     [ROOT_PROJECT]: [UserDetailsActionSet, allActionNames(UserDetailsActionSet)],
73     [ROOT_PROJECT_ADMIN]: [UserDetailsActionSet, allActionNames(UserDetailsActionSet)],
74 };