// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import { ContextMenuActionSet } from "../context-menu-action-set"; import { ToggleFavoriteAction } from "../actions/favorite-action"; import { toggleFavorite } from "store/favorites/favorites-actions"; import { RenameIcon, ShareIcon, MoveToIcon, DetailsIcon, RemoveIcon, ReRunProcessIcon, OutputIcon, AdvancedIcon, OpenIcon, } from "components/icon/icon"; import { favoritePanelActions } from "store/favorite-panel/favorite-panel-action"; import { openMoveProcessDialog } from "store/processes/process-move-actions"; import { openProcessUpdateDialog } from "store/processes/process-update-actions"; import { openCopyProcessDialog } from "store/processes/process-copy-actions"; import { openSharingDialog } from "store/sharing-dialog/sharing-dialog-actions"; import { openRemoveProcessDialog } from "store/processes/processes-actions"; import { toggleDetailsPanel } from "store/details-panel/details-panel-action"; import { navigateToOutput } from "store/process-panel/process-panel-actions"; import { openAdvancedTabDialog } from "store/advanced-tab/advanced-tab"; import { TogglePublicFavoriteAction } from "../actions/public-favorite-action"; import { togglePublicFavorite } from "store/public-favorites/public-favorites-actions"; import { publicFavoritePanelActions } from "store/public-favorites-panel/public-favorites-action"; import { openInNewTabAction } from "store/open-in-new-tab/open-in-new-tab.actions"; export const readOnlyProcessResourceActionSet: ContextMenuActionSet = [ [ { component: ToggleFavoriteAction, execute: (dispatch, resources) => { resources.forEach(resource => dispatch(toggleFavorite(resource)).then(() => { dispatch(favoritePanelActions.REQUEST_ITEMS()); }) ); }, }, { icon: OpenIcon, name: "Open in new tab", execute: (dispatch, resources) => { resources.forEach(resource => dispatch(openInNewTabAction(resource))); }, }, { icon: ReRunProcessIcon, name: "Copy and re-run process", execute: (dispatch, resources) => { resources.forEach(resource => dispatch(openCopyProcessDialog(resource))); }, }, { icon: OutputIcon, name: "Outputs", execute: (dispatch, resources) => { resources.forEach(resource => { if (resource.outputUuid) { dispatch(navigateToOutput(resource.outputUuid)); } }); }, }, { icon: DetailsIcon, name: "View details", execute: dispatch => { dispatch(toggleDetailsPanel()); }, }, { icon: AdvancedIcon, name: "API Details", execute: (dispatch, resources) => { resources.forEach(resource => dispatch(openAdvancedTabDialog(resource.uuid))); }, }, ], ]; export const processResourceActionSet: ContextMenuActionSet = [ [ ...readOnlyProcessResourceActionSet.reduce((prev, next) => prev.concat(next), []), { icon: RenameIcon, name: "Edit process", execute: (dispatch, resources) => { resources.forEach(resource => dispatch(openProcessUpdateDialog(resource))); }, }, { icon: ShareIcon, name: "Share", execute: (dispatch, resources) => { resources.forEach(({ uuid }) => dispatch(openSharingDialog(uuid))); }, }, { icon: MoveToIcon, name: "Move to", execute: (dispatch, resources) => { dispatch(openMoveProcessDialog(resources[0])); }, }, { name: "Remove", icon: RemoveIcon, execute: (dispatch, resources) => { dispatch(openRemoveProcessDialog(resources[0].uuid, resources.length)); }, }, ], ]; export const processResourceAdminActionSet: ContextMenuActionSet = [ [ ...processResourceActionSet.reduce((prev, next) => prev.concat(next), []), { component: TogglePublicFavoriteAction, name: "Add to public favorites", execute: (dispatch, resources) => { resources.forEach(resource => dispatch(togglePublicFavorite(resource)).then(() => { dispatch(publicFavoritePanelActions.REQUEST_ITEMS()); }) ); }, }, ], ];