From a092cf21dd62dcd130661f4d3c3307cab1dae29c Mon Sep 17 00:00:00 2001 From: burnettk Date: Mon, 7 Nov 2022 18:37:46 -0500 Subject: [PATCH] add back run and edit and add actions menu --- spiffworkflow-frontend/src/interfaces.ts | 1 + .../src/routes/ProcessModelEdit.tsx | 1 + .../src/routes/ProcessModelShow.tsx | 82 +++++++++++++++++-- 3 files changed, 77 insertions(+), 7 deletions(-) diff --git a/spiffworkflow-frontend/src/interfaces.ts b/spiffworkflow-frontend/src/interfaces.ts index 9387f6585..ccf636e73 100644 --- a/spiffworkflow-frontend/src/interfaces.ts +++ b/spiffworkflow-frontend/src/interfaces.ts @@ -36,6 +36,7 @@ export interface ProcessFile { export interface ProcessModel { id: string; + description: string; process_group_id: string; display_name: string; primary_file_name: string; diff --git a/spiffworkflow-frontend/src/routes/ProcessModelEdit.tsx b/spiffworkflow-frontend/src/routes/ProcessModelEdit.tsx index 58375a88c..3f3dfb780 100644 --- a/spiffworkflow-frontend/src/routes/ProcessModelEdit.tsx +++ b/spiffworkflow-frontend/src/routes/ProcessModelEdit.tsx @@ -49,6 +49,7 @@ export default function ProcessModelEdit() { }); }; + // share with or delete from ProcessModelEditDiagram const deleteProcessModel = () => { setErrorMessage(null); const processModelToUse = processModel as any; diff --git a/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx b/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx index 184f0c6ea..d7785e584 100644 --- a/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx +++ b/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx @@ -1,12 +1,10 @@ import { useContext, useEffect, useState } from 'react'; -import { Link, useNavigate, useParams } from 'react-router-dom'; +import { Link, useParams } from 'react-router-dom'; // @ts-ignore import { Add, Upload } from '@carbon/icons-react'; import { Accordion, AccordionItem, - Grid, - Column, Dropdown, Button, Stack, @@ -22,10 +20,15 @@ import { // @ts-ignore } from '@carbon/react'; import ProcessBreadcrumb from '../components/ProcessBreadcrumb'; -import FileInput from '../components/FileInput'; import HttpService from '../services/HttpService'; import ErrorContext from '../contexts/ErrorContext'; -import { ProcessModel, RecentProcessModel } from '../interfaces'; +import { ProcessFile, ProcessModel, RecentProcessModel } from '../interfaces'; + +interface ProcessModelFileCarbonDropdownItem { + label: string; + action: string; + processModelFile: ProcessFile; +} const storeRecentProcessModelInLocalStorage = ( processModelForStorage: any, @@ -91,7 +94,6 @@ export default function ProcessModelShow() { const [filesToUpload, setFilesToUpload] = useState(null); const [showFileUploadModal, setShowFileUploadModal] = useState(false); - const navigate = useNavigate(); useEffect(() => { const processResult = (result: ProcessModel) => { @@ -164,9 +166,58 @@ export default function ProcessModelShow() { setReloadModel(true); }; + // Remove this code from + const onDeleteFile = (fileName: string) => { + const url = `/process-models/${params.process_group_id}/${params.process_model_id}/files/${fileName}`; + const httpMethod = 'DELETE'; + const reloadModelOhYeah = (_httpResult: any) => { + setReloadModel(!reloadModel); + }; + HttpService.makeCallToBackend({ + path: url, + successCallback: reloadModelOhYeah, + httpMethod, + }); + }; + + const onProcessModelFileAction = (selection: any) => { + const { selectedItem } = selection; + if (selectedItem.action === 'delete') { + onDeleteFile(selectedItem.processModelFile.name); + } + }; + const processModelFileList = () => { let constructedTag; const tags = (processModel as any).files.map((processModelFile: any) => { + const items: ProcessModelFileCarbonDropdownItem[] = [ + { + label: 'Delete', + action: 'delete', + processModelFile, + }, + { + label: 'Mark as Primary', + action: 'mark_as_primary', + processModelFile, + }, + ]; + const actionsTableCell = ( + + { + onProcessModelFileAction(e); + }} + items={items} + itemToString={(item: ProcessModelFileCarbonDropdownItem) => + item ? item.label : '' + } + /> + + ); if (processModelFile.name.match(/\.(dmn|bpmn)$/)) { let primarySuffix = ''; if (processModelFile.name === (processModel as any).primary_file_name) { @@ -184,6 +235,7 @@ export default function ProcessModelShow() { {primarySuffix} + {actionsTableCell} ); } else if (processModelFile.name.match(/\.(json|md)$/)) { @@ -198,6 +250,7 @@ export default function ProcessModelShow() { {processModelFile.name} + {actionsTableCell} ); } else { @@ -213,7 +266,7 @@ export default function ProcessModelShow() { }); // return
    {tags}
; - const headers = ['name', 'Actions']; + const headers = ['Name', 'Actions']; return ( @@ -374,6 +427,21 @@ export default function ProcessModelShow() { processGroupId={processModel.process_group_id} processModelId={processModel.id} /> +

{processModel.display_name}

+

{processModel.description}

+ + + + {fileUploadModal()} {processInstanceResultTag()}