mirror of
https://github.com/sartography/spiff-arena.git
synced 2025-02-22 14:18:27 +00:00
fix downloading files and starting a process from show page
This commit is contained in:
parent
1ed35b6f99
commit
b0f95551ec
@ -98,11 +98,11 @@ export default function ProcessInstanceRun({
|
||||
const processInstanceId = processInstance.id;
|
||||
if (processInstance.process_model_uses_queued_execution) {
|
||||
navigate(
|
||||
`/process-instances/for-me/${modifiedProcessModelId}/${processInstanceId}/progress`,
|
||||
`/newui/process-instances/for-me/${modifiedProcessModelId}/${processInstanceId}/progress`,
|
||||
);
|
||||
} else {
|
||||
navigate(
|
||||
`/process-instances/for-me/${modifiedProcessModelId}/${processInstanceId}/interstitial`,
|
||||
`/newui/process-instances/for-me/${modifiedProcessModelId}/${processInstanceId}/interstitial`,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
@ -22,6 +22,8 @@ import ButtonWithConfirmation from './ButtonWithConfirmation';
|
||||
import ProcessModelTestRun from './ProcessModelTestRun';
|
||||
import { ProcessFile } from '../interfaces';
|
||||
import SpiffTooltip from './SpiffTooltip';
|
||||
import HttpService from '../services/HttpService';
|
||||
import useAPIError from '../hooks/UseApiError';
|
||||
|
||||
interface ProcessModelFileListProps {
|
||||
processModel: any;
|
||||
@ -42,6 +44,7 @@ export default function ProcessModelFileList({
|
||||
onSetPrimaryFile,
|
||||
isTestCaseFile,
|
||||
}: ProcessModelFileListProps) {
|
||||
const { addError, removeError } = useAPIError();
|
||||
const profileModelFileEditUrl = (processModelFile: ProcessFile) => {
|
||||
if (processModel) {
|
||||
if (processModelFile.name.match(/\.(dmn|bpmn)$/)) {
|
||||
@ -54,6 +57,40 @@ export default function ProcessModelFileList({
|
||||
return null;
|
||||
};
|
||||
|
||||
const handleProcessModelFileResult = (processModelFile: ProcessFile) => {
|
||||
if (
|
||||
!('file_contents' in processModelFile) ||
|
||||
processModelFile.file_contents === undefined
|
||||
) {
|
||||
addError({
|
||||
message: `Could not file file contents for file: ${processModelFile.name}`,
|
||||
});
|
||||
return;
|
||||
}
|
||||
let contentType = 'application/xml';
|
||||
if (processModelFile.type === 'json') {
|
||||
contentType = 'application/json';
|
||||
}
|
||||
const element = document.createElement('a');
|
||||
const file = new Blob([processModelFile.file_contents], {
|
||||
type: contentType,
|
||||
});
|
||||
const downloadFileName = processModelFile.name;
|
||||
element.href = URL.createObjectURL(file);
|
||||
element.download = downloadFileName;
|
||||
document.body.appendChild(element);
|
||||
element.click();
|
||||
};
|
||||
|
||||
const downloadFile = (fileName: string) => {
|
||||
removeError();
|
||||
const processModelPath = `process-models/${modifiedProcessModelId}`;
|
||||
HttpService.makeCallToBackend({
|
||||
path: `/${processModelPath}/files/${fileName}`,
|
||||
successCallback: handleProcessModelFileResult,
|
||||
});
|
||||
};
|
||||
|
||||
const renderButtonElements = (
|
||||
processModelFile: ProcessFile,
|
||||
isPrimaryBpmnFile: boolean,
|
||||
@ -91,12 +128,7 @@ export default function ProcessModelFileList({
|
||||
<SpiffTooltip title="Download File" placement="top">
|
||||
<IconButton
|
||||
aria-label="Download File"
|
||||
onClick={() =>
|
||||
window.open(
|
||||
`/${targetUris.processModelFilePath}/${processModelFile.name}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
onClick={() => downloadFile(processModelFile.name)}
|
||||
>
|
||||
<GetApp />
|
||||
</IconButton>
|
||||
|
@ -38,7 +38,7 @@ export default function ProcessModelReadmeArea({
|
||||
renderIcon={Edit}
|
||||
iconDescription="Edit README.md"
|
||||
hasIconOnly
|
||||
href={`/process-models/${modifiedProcessModelId}/form/${readmeFile.name}`}
|
||||
href={`/newui/process-models/${modifiedProcessModelId}/form/${readmeFile.name}`}
|
||||
/>
|
||||
</Can>
|
||||
</Column>
|
||||
@ -57,7 +57,7 @@ export default function ProcessModelReadmeArea({
|
||||
<Button
|
||||
className="with-top-margin"
|
||||
data-qa="process-model-readme-file-create"
|
||||
href={`/process-models/${modifiedProcessModelId}/form?file_ext=md&default_file_name=README.md`}
|
||||
href={`/newui/process-models/${modifiedProcessModelId}/form?file_ext=md&default_file_name=README.md`}
|
||||
size="md"
|
||||
>
|
||||
Add README.md
|
||||
|
@ -116,7 +116,7 @@ export default function ReactFormEditor() {
|
||||
const fileNameWithExtension =
|
||||
defaultFileName ?? `${newFileName}.${fileExtension}`;
|
||||
navigate(
|
||||
`/process-models/${modifiedProcessModelId}/form/${fileNameWithExtension}`,
|
||||
`/newui/process-models/${modifiedProcessModelId}/form/${fileNameWithExtension}`,
|
||||
);
|
||||
}
|
||||
};
|
||||
@ -165,7 +165,7 @@ export default function ReactFormEditor() {
|
||||
const httpMethod = 'DELETE';
|
||||
|
||||
const navigateToProcessModelShow = (_httpResult: any) => {
|
||||
navigate(`/process-models/${modifiedProcessModelId}`);
|
||||
navigate(`/newui/process-models/${modifiedProcessModelId}`);
|
||||
};
|
||||
|
||||
HttpService.makeCallToBackend({
|
||||
@ -327,7 +327,7 @@ export default function ReactFormEditor() {
|
||||
<Button
|
||||
onClick={() =>
|
||||
navigate(
|
||||
`/editor/process-models/${modifiedProcessModelId}/files/${params.file_name}`,
|
||||
`/newui/process-models/${modifiedProcessModelId}/files/${params.file_name}`,
|
||||
)
|
||||
}
|
||||
variant="contained"
|
||||
|
@ -319,6 +319,10 @@ export default function SpiffUIV3() {
|
||||
path="/process-models/:process_model_id/form/:file_name"
|
||||
element={<ReactFormEditor />}
|
||||
/>
|
||||
<Route
|
||||
path="/process-models/:process_model_id/form"
|
||||
element={<ReactFormEditor />}
|
||||
/>
|
||||
</Routes>
|
||||
</Box>
|
||||
</Box>
|
||||
|
Loading…
x
Reference in New Issue
Block a user