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