import { ProjectResource } from 'models/project';
import { UserResource } from 'models/user';
import { getWorkflowInputs, parseWorkflowDefinition } from 'models/workflow';
+import { ContextMenuResource } from 'store/context-menu/context-menu-actions';
+import { dialogActions } from 'store/dialog/dialog-actions';
export const WORKFLOW_PANEL_ID = "workflowPanel";
const UUID_PREFIX_PROPERTY_NAME = 'uuidPrefix';
await services.workflowService.delete(workflowUuid);
dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
};
+
+export const openRemoveWorkflowDialog =
+(resource: ContextMenuResource, numOfWorkflows: Number) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const confirmationText =
+ numOfWorkflows === 1
+ ? "Are you sure you want to remove this workflow?"
+ : `Are you sure you want to remove these ${numOfWorkflows} workflows?`;
+ const titleText = numOfWorkflows === 1 ? "Remove workflow permanently" : "Remove workflows permanently";
+
+ dispatch(
+ dialogActions.OPEN_DIALOG({
+ id: REMOVE_WORKFLOW_DIALOG,
+ data: {
+ title: titleText,
+ text: confirmationText,
+ confirmButtonLabel: "Remove",
+ uuid: resource.uuid,
+ resource,
+ },
+ })
+ );
+};
+
+export const REMOVE_WORKFLOW_DIALOG = "removeWorkflowDialog";
\ No newline at end of file
//
// SPDX-License-Identifier: AGPL-3.0
-import { openRunProcess, deleteWorkflow } from 'store/workflow-panel/workflow-panel-actions';
+import { openRunProcess, openRemoveWorkflowDialog } from 'store/workflow-panel/workflow-panel-actions';
import { StartIcon, DeleteForever, Link } from 'components/icon/icon';
import { MultiSelectMenuAction, MultiSelectMenuActionSet, msCommonActionSet } from './ms-menu-actions';
import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
isForMulti: true,
execute: (dispatch, resources) => {
for (const resource of [...resources]){
- dispatch<any>(deleteWorkflow(resource.uuid));
+ dispatch<any>(openRemoveWorkflowDialog(resource, resources.length));
}
},
};
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { Dispatch, compose } from 'redux';
+import { connect } from "react-redux";
+import { ConfirmationDialog } from "components/confirmation-dialog/confirmation-dialog";
+import { withDialog, WithDialogProps } from "store/dialog/with-dialog";
+import { REMOVE_WORKFLOW_DIALOG } from 'store/workflow-panel/workflow-panel-actions';
+import { deleteWorkflow } from 'store/workflow-panel/workflow-panel-actions';
+
+const mapDispatchToProps = (dispatch: Dispatch, props: WithDialogProps<any>) => ({
+ onConfirm: () => {
+ props.closeDialog();
+ dispatch<any>(deleteWorkflow(props.data.uuid));
+ }
+});
+
+export const RemoveWorkflowDialog = compose(
+ withDialog(REMOVE_WORKFLOW_DIALOG),
+ connect(null, mapDispatchToProps)
+)(ConfirmationDialog);
import { PartialMoveToExistingCollectionDialog } from "views-components/dialog-forms/partial-move-to-existing-collection-dialog";
import { PartialMoveToSeparateCollectionsDialog } from "views-components/dialog-forms/partial-move-to-separate-collections-dialog";
import { RemoveProcessDialog } from "views-components/process-remove-dialog/process-remove-dialog";
+import { RemoveWorkflowDialog } from "views-components/workflow-remove-dialog/workflow-remove-dialog";
import { MainContentBar } from "views-components/main-content-bar/main-content-bar";
import { Grid } from "@material-ui/core";
import { TrashPanel } from "views/trash-panel/trash-panel";
<RemoveKeepServiceDialog />
<RemoveLinkDialog />
<RemoveProcessDialog />
+ <RemoveWorkflowDialog />
<RemoveRepositoryDialog />
<RemoveSshKeyDialog />
<RemoveVirtualMachineDialog />