mirror of
https://github.com/sartography/spiff-arena.git
synced 2025-02-11 08:56:50 +00:00
download working (#2230)
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
This commit is contained in:
parent
eea607d2ca
commit
8644dcafff
@ -15,6 +15,8 @@ import { PureAbility } from '@casl/ability';
|
||||
import ButtonWithConfirmation from './ButtonWithConfirmation';
|
||||
import ProcessModelTestRun from './ProcessModelTestRun';
|
||||
import { ProcessFile } from '../interfaces';
|
||||
import HttpService from '../services/HttpService';
|
||||
import useAPIError from '../hooks/UseApiError';
|
||||
|
||||
interface ProcessModelFileListProps {
|
||||
processModel: any;
|
||||
@ -35,6 +37,7 @@ export default function ProcessModelFileList({
|
||||
onSetPrimaryFile,
|
||||
isTestCaseFile,
|
||||
}: ProcessModelFileListProps) {
|
||||
const { addError, removeError } = useAPIError();
|
||||
const profileModelFileEditUrl = (processModelFile: ProcessFile) => {
|
||||
if (processModel) {
|
||||
if (processModelFile.name.match(/\.(dmn|bpmn)$/)) {
|
||||
@ -47,6 +50,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,
|
||||
@ -80,12 +117,7 @@ export default function ProcessModelFileList({
|
||||
iconDescription="Download File"
|
||||
hasIconOnly
|
||||
size="lg"
|
||||
onClick={() =>
|
||||
window.open(
|
||||
`/${targetUris.processModelFilePath}/${processModelFile.name}`,
|
||||
'_blank',
|
||||
)
|
||||
}
|
||||
onClick={() => downloadFile(processModelFile.name)}
|
||||
/>
|
||||
</Can>,
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user