data import download fixes

This commit is contained in:
Jan Prochazka
2020-11-29 20:12:11 +01:00
parent 0785c375a5
commit 6d7e7f97c7
5 changed files with 33 additions and 14 deletions

View File

@@ -43,8 +43,8 @@ ${
? `
const downloaded=await dbgateApi.download(${JSON.stringify(props.downloadUrl)});
const reader=await ${extractShellApiFunctionName(functionName)}(Object.assign(${JSON.stringify(
props
)}, { fileName: downloaded, downloadUrl: undefined }));
_.omit(props, ['downloadUrl'])
)}, { fileName: downloaded }));
`
: `const reader=await ${extractShellApiFunctionName(functionName)}(${JSON.stringify(props)});`
}

View File

@@ -4,7 +4,7 @@ const { uploadsdir } = require('../utility/directories');
const { downloadFile } = require('../utility/downloader');
async function download(url) {
const tmpFile = path.join(uploadsdir(), uuidv1() + '.tgz');
const tmpFile = path.join(uploadsdir(), uuidv1());
await downloadFile(url, tmpFile);
return tmpFile;
}

View File

@@ -1,5 +1,4 @@
import React from 'react';
import _ from 'lodash';
const iconNames = {
'icon minus-box': 'mdi mdi-minus-box-outline',
@@ -26,6 +25,7 @@ const iconNames = {
'icon save': 'mdi mdi-content-save',
'icon account': 'mdi mdi-account',
'icon sql-file': 'mdi mdi-file',
'icon web': 'mdi mdi-web',
'icon edit': 'mdi mdi-pencil',
'icon delete': 'mdi mdi-delete',

View File

@@ -61,12 +61,17 @@ const SourceNameWrapper = styled.div`
justify-content: space-between;
`;
const TrashWrapper = styled.div`
const SourceNameButtons = styled.div`
display: flex;
`;
const IconButtonWrapper = styled.div`
&:hover {
background-color: ${(props) => props.theme.modal_background2};
}
cursor: pointer;
color: ${(props) => props.theme.modal_font_blue[7]};
margin-left: 5px;
`;
const SqlWrapper = styled.div`
@@ -371,19 +376,36 @@ function SourceTargetConfig({
function SourceName({ name }) {
const { values, setFieldValue } = useFormikContext();
const theme = useTheme();
const showModal = useShowModal();
const obj = values[`sourceFile_${name}`];
const handleDelete = () => {
setFieldValue(
'sourceList',
values.sourceList.filter((x) => x != name)
);
};
const doChangeUrl = (url) => {
setFieldValue(`sourceFile_${name}`, { downloadUrl: url });
};
const handleChangeUrl = () => {
showModal((modalState) => (
<ChangeDownloadUrlModal modalState={modalState} url={obj.downloadUrl} onConfirm={doChangeUrl} />
));
};
return (
<SourceNameWrapper>
<div>{name}</div>
<TrashWrapper onClick={handleDelete} theme={theme}>
<FontIcon icon="icon delete" />
</TrashWrapper>
<SourceNameButtons>
{obj && !!obj.downloadUrl && (
<IconButtonWrapper onClick={handleChangeUrl} theme={theme}>
<FontIcon icon="icon web" />
</IconButtonWrapper>
)}
<IconButtonWrapper onClick={handleDelete} theme={theme}>
<FontIcon icon="icon delete" />
</IconButtonWrapper>
</SourceNameButtons>
</SourceNameWrapper>
);
}

View File

@@ -24,12 +24,9 @@ export default class ScriptWriter {
const fileNameVar = this.allocVariable();
this.put(`const ${fileNameVar} = await dbgateApi.download(${JSON.stringify(props.downloadUrl)});`);
this.put(
`const ${variableName} = await ${extractShellApiFunctionName(functionName)}(
Object.assign(${JSON.stringify(props)}, {
fileName: ${fileNameVar},
downloadUrl: undefined
})
);`
`const ${variableName} = await ${extractShellApiFunctionName(functionName)}(Object.assign(${JSON.stringify(
_.omit(props, ['downloadUrl'])
)}, { fileName: ${fileNameVar} }));`
);
} else {
this.put(`const ${variableName} = await ${extractShellApiFunctionName(functionName)}(${JSON.stringify(props)});`);