21448: initial sorting algo in place Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa...
[arvados.git] / services / workbench2 / src / common / menu-item-sort.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { ContextMenuAction } from '../views-components/context-menu/context-menu-action-set';
6 import { ContextMenuActionNames } from 'views-components/context-menu/context-menu-action-set';
7
8 const {
9     ACCOUNT_SETTINGS,
10     ACTIVATE_USER,
11     ADD_TO_FAVORITES,
12     ADD_TO_PUBLIC_FAVORITES,
13     ATTRIBUTES,
14     API_DETAILS,
15     CANCEL,
16     COPY_AND_RERUN_PROCESS,
17     COPY_ITEM_INTO_EXISTING_COLLECTION,
18     COPY_ITEM_INTO_NEW_COLLECTION,
19     COPY_SELECTED_INTO_EXISTING_COLLECTION,
20     COPY_SELECTED_INTO_SEPARATE_COLLECTIONS,
21     COPY_SELECTED_INTO_NEW_COLLECTION,
22     COPY_TO_CLIPBOARD,
23     DEACTIVATE_USER,
24     DELETE_WORKFLOW,
25     DOWNLOAD,
26     EDIT_COLLECTION,
27     EDIT_PROCESS,
28     EDIT_PROJECT,
29     FREEZE_PROJECT,
30     HOME_PROJECT,
31     LOGIN_AS_USER,
32     MAKE_A_COPY,
33     MANAGE,
34     MOVE_ITEM_INTO_EXISTING_COLLECTION,
35     MOVE_ITEM_INTO_NEW_COLLECTION,
36     MOVE_SELECTED_INTO_EXISTING_COLLECTION,
37     MOVE_SELECTED_INTO_NEW_COLLECTION,
38     MOVE_SELECTED_INTO_SEPARATE_COLLECTIONS,
39     MOVE_TO,
40     MOVE_TO_TRASH,
41     NEW_COLLECTION,
42     NEW_PROJECT,
43     OPEN_IN_NEW_TAB,
44     OPEN_WITH_3RD_PARTY_CLIENT,
45     OUTPUTS,
46     PROVENANCE_GRAPH,
47     READ,
48     REMOVE,
49     REMOVE_SELECTED,
50     RENAME,
51     RESTORE,
52     RESTORE_VERSION,
53     RUN_WORKFLOW,
54     SELECT_ALL,
55     SETUP_USER,
56     SHARE,
57     UNSELECT_ALL,
58     VIEW_DETAILS,
59     WRITE,
60 } = ContextMenuActionNames;
61
62 const processOrder = [VIEW_DETAILS, OPEN_IN_NEW_TAB, OUTPUTS, API_DETAILS, EDIT_PROCESS, COPY_AND_RERUN_PROCESS, MOVE_TO, REMOVE, ADD_TO_FAVORITES, ADD_TO_PUBLIC_FAVORITES];
63
64 const kindToOrder: Record<string, ContextMenuActionNames[]> = {
65     "ProcessResource": processOrder,
66 };
67
68 export const sortMenuItems = (menuKind:string, menuItems: ContextMenuAction[]) => {
69     const order = kindToOrder[menuKind] || [];
70     const bucketMap = new Map();
71     order.forEach((name) => bucketMap.set(name, null));
72     menuItems.forEach((item) => {if (bucketMap.has(item.name)) bucketMap.set(item.name, item)});
73     console.log(Array.from(bucketMap.values()));
74 };