1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from 'views-components/multiselect-toolbar/ms-menu-actions';
6 import { openMoveProjectDialog } from 'store/projects/project-move-actions';
7 import { toggleProjectTrashed } from 'store/trash/trash-actions';
14 } from 'components/icon/icon';
15 import { RestoreFromTrashIcon, TrashIcon } from 'components/icon/icon';
16 import { getResource } from 'store/resources/resources';
17 import { openProjectCreateDialog } from 'store/projects/project-create-actions';
18 import { openProjectUpdateDialog } from 'store/projects/project-update-actions';
19 import { freezeProject, unfreezeProject } from 'store/projects/project-lock-actions';
27 OPEN_W_3RD_PARTY_CLIENT,
34 } = MultiSelectMenuActionNames;
36 const msEditProjectAction = {
41 execute: (dispatch, resources) => {
42 dispatch(openProjectUpdateDialog(resources[0]));
46 const msMoveToAction = {
51 execute: (dispatch, resource) => {
52 dispatch(openMoveProjectDialog(resource[0]));
56 export const msToggleTrashAction = {
60 altName: 'Restore from Trash',
61 altIcon: RestoreFromTrashIcon,
63 useAlts: (uuid, iconProps) => {
64 return uuid ? (getResource(uuid)(iconProps.resources) as any).isTrashed : false;
66 execute: (dispatch, resources) => {
67 for (const resource of [...resources]) {
68 dispatch(toggleProjectTrashed(resource.uuid, resource.ownerUuid, resource.isTrashed!!, resources.length > 1));
73 const msFreezeProjectAction = {
77 altName: 'Unfreeze Project',
78 altIcon: UnfreezeIcon,
80 useAlts: (uuid, iconProps) => {
81 return uuid ? !!(getResource(uuid)(iconProps.resources) as any).frozenByUuid : false;
83 execute: (dispatch, resources) => {
84 if (resources[0].frozenByUuid) {
85 dispatch(unfreezeProject(resources[0].uuid));
87 dispatch(freezeProject(resources[0].uuid));
92 const msNewProjectAction: any = {
97 execute: (dispatch, resource): void => {
98 dispatch(openProjectCreateDialog(resource.uuid));
102 export const msProjectActionSet: MultiSelectMenuActionSet = [
104 ...msCommonActionSet,
109 msFreezeProjectAction,
113 export const msProjectActionFilter = new Set<string>([
123 OPEN_W_3RD_PARTY_CLIENT,
127 export const msReadOnlyProjectActionFilter = new Set<string>([ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, OPEN_W_3RD_PARTY_CLIENT]);
128 export const msFrozenProjectActionFilter = new Set<string>([ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, OPEN_W_3RD_PARTY_CLIENT, SHARE, FREEZE_PROJECT])
129 export const msFilterGroupActionFilter = new Set<string>([ADD_TO_FAVORITES, OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, OPEN_W_3RD_PARTY_CLIENT, EDIT_PPROJECT, SHARE, MOVE_TO, ADD_TO_TRASH])