mirror of
https://github.com/sartography/spiff-arena.git
synced 2025-02-24 15:18:27 +00:00
add back run and edit and add actions menu
This commit is contained in:
parent
028a9faf14
commit
a092cf21dd
@ -36,6 +36,7 @@ export interface ProcessFile {
|
|||||||
|
|
||||||
export interface ProcessModel {
|
export interface ProcessModel {
|
||||||
id: string;
|
id: string;
|
||||||
|
description: string;
|
||||||
process_group_id: string;
|
process_group_id: string;
|
||||||
display_name: string;
|
display_name: string;
|
||||||
primary_file_name: string;
|
primary_file_name: string;
|
||||||
|
@ -49,6 +49,7 @@ export default function ProcessModelEdit() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// share with or delete from ProcessModelEditDiagram
|
||||||
const deleteProcessModel = () => {
|
const deleteProcessModel = () => {
|
||||||
setErrorMessage(null);
|
setErrorMessage(null);
|
||||||
const processModelToUse = processModel as any;
|
const processModelToUse = processModel as any;
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
import { useContext, useEffect, useState } from 'react';
|
import { useContext, useEffect, useState } from 'react';
|
||||||
import { Link, useNavigate, useParams } from 'react-router-dom';
|
import { Link, useParams } from 'react-router-dom';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { Add, Upload } from '@carbon/icons-react';
|
import { Add, Upload } from '@carbon/icons-react';
|
||||||
import {
|
import {
|
||||||
Accordion,
|
Accordion,
|
||||||
AccordionItem,
|
AccordionItem,
|
||||||
Grid,
|
|
||||||
Column,
|
|
||||||
Dropdown,
|
Dropdown,
|
||||||
Button,
|
Button,
|
||||||
Stack,
|
Stack,
|
||||||
@ -22,10 +20,15 @@ import {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
} from '@carbon/react';
|
} from '@carbon/react';
|
||||||
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
import ProcessBreadcrumb from '../components/ProcessBreadcrumb';
|
||||||
import FileInput from '../components/FileInput';
|
|
||||||
import HttpService from '../services/HttpService';
|
import HttpService from '../services/HttpService';
|
||||||
import ErrorContext from '../contexts/ErrorContext';
|
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 = (
|
const storeRecentProcessModelInLocalStorage = (
|
||||||
processModelForStorage: any,
|
processModelForStorage: any,
|
||||||
@ -91,7 +94,6 @@ export default function ProcessModelShow() {
|
|||||||
const [filesToUpload, setFilesToUpload] = useState<any>(null);
|
const [filesToUpload, setFilesToUpload] = useState<any>(null);
|
||||||
const [showFileUploadModal, setShowFileUploadModal] =
|
const [showFileUploadModal, setShowFileUploadModal] =
|
||||||
useState<boolean>(false);
|
useState<boolean>(false);
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const processResult = (result: ProcessModel) => {
|
const processResult = (result: ProcessModel) => {
|
||||||
@ -164,9 +166,58 @@ export default function ProcessModelShow() {
|
|||||||
setReloadModel(true);
|
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 = () => {
|
const processModelFileList = () => {
|
||||||
let constructedTag;
|
let constructedTag;
|
||||||
const tags = (processModel as any).files.map((processModelFile: any) => {
|
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 = (
|
||||||
|
<TableCell key={`${processModelFile.name}-cell`}>
|
||||||
|
<Dropdown
|
||||||
|
id="default"
|
||||||
|
direction="top"
|
||||||
|
label="Select an action"
|
||||||
|
onChange={(e: any) => {
|
||||||
|
onProcessModelFileAction(e);
|
||||||
|
}}
|
||||||
|
items={items}
|
||||||
|
itemToString={(item: ProcessModelFileCarbonDropdownItem) =>
|
||||||
|
item ? item.label : ''
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</TableCell>
|
||||||
|
);
|
||||||
if (processModelFile.name.match(/\.(dmn|bpmn)$/)) {
|
if (processModelFile.name.match(/\.(dmn|bpmn)$/)) {
|
||||||
let primarySuffix = '';
|
let primarySuffix = '';
|
||||||
if (processModelFile.name === (processModel as any).primary_file_name) {
|
if (processModelFile.name === (processModel as any).primary_file_name) {
|
||||||
@ -184,6 +235,7 @@ export default function ProcessModelShow() {
|
|||||||
</Link>
|
</Link>
|
||||||
{primarySuffix}
|
{primarySuffix}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
{actionsTableCell}
|
||||||
</TableRow>
|
</TableRow>
|
||||||
);
|
);
|
||||||
} else if (processModelFile.name.match(/\.(json|md)$/)) {
|
} else if (processModelFile.name.match(/\.(json|md)$/)) {
|
||||||
@ -198,6 +250,7 @@ export default function ProcessModelShow() {
|
|||||||
{processModelFile.name}
|
{processModelFile.name}
|
||||||
</Link>
|
</Link>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
{actionsTableCell}
|
||||||
</TableRow>
|
</TableRow>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -213,7 +266,7 @@ export default function ProcessModelShow() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// return <ul>{tags}</ul>;
|
// return <ul>{tags}</ul>;
|
||||||
const headers = ['name', 'Actions'];
|
const headers = ['Name', 'Actions'];
|
||||||
return (
|
return (
|
||||||
<Table size="lg" useZebraStyles={false}>
|
<Table size="lg" useZebraStyles={false}>
|
||||||
<TableHead>
|
<TableHead>
|
||||||
@ -374,6 +427,21 @@ export default function ProcessModelShow() {
|
|||||||
processGroupId={processModel.process_group_id}
|
processGroupId={processModel.process_group_id}
|
||||||
processModelId={processModel.id}
|
processModelId={processModel.id}
|
||||||
/>
|
/>
|
||||||
|
<h1>{processModel.display_name}</h1>
|
||||||
|
<p>{processModel.description}</p>
|
||||||
|
<Stack orientation="horizontal" gap={3}>
|
||||||
|
<Button onClick={processInstanceCreateAndRun} variant="primary">
|
||||||
|
Run
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
href={`/admin/process-models/${
|
||||||
|
(processModel as any).process_group_id
|
||||||
|
}/${(processModel as any).id}/edit`}
|
||||||
|
variant="secondary"
|
||||||
|
>
|
||||||
|
Edit process model
|
||||||
|
</Button>
|
||||||
|
</Stack>
|
||||||
{fileUploadModal()}
|
{fileUploadModal()}
|
||||||
{processInstanceResultTag()}
|
{processInstanceResultTag()}
|
||||||
<br />
|
<br />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user