fix downloading files and starting a process from show page

This commit is contained in:
jasquat 2025-02-11 13:20:00 -05:00
parent 1ed35b6f99
commit b0f95551ec
No known key found for this signature in database
5 changed files with 49 additions and 13 deletions

View File

@ -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`,
);
}
};

View File

@ -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>

View File

@ -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

View File

@ -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"

View File

@ -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>