improt into archive improvement

This commit is contained in:
Jan Prochazka
2020-11-15 17:18:33 +01:00
parent 075146403a
commit eaf45d8768
6 changed files with 36 additions and 12 deletions

View File

@@ -262,7 +262,10 @@ function SourceTargetConfig({
{storageType == 'archive' && (
<>
<Label theme={theme}>Archive folder</Label>
<FormArchiveFolderSelect name={archiveFolderField} />
<FormArchiveFolderSelect
name={archiveFolderField}
additionalFolders={_.compact([values[archiveFolderField]])}
/>
</>
)}

View File

@@ -1,4 +1,5 @@
import React, { useState } from 'react';
import React from 'react';
import moment from 'moment';
import ModalBase from './ModalBase';
import FormStyledButton from '../widgets/FormStyledButton';
import { Formik, Form, useFormikContext } from 'formik';
@@ -102,12 +103,18 @@ function GenerateSctriptButton({ modalState }) {
return <FormStyledButton type="button" value="Generate script" onClick={handleGenerateScript} />;
}
export default function ImportExportModal({ modalState, initialValues, uploadedFile = undefined }) {
export default function ImportExportModal({
modalState,
initialValues,
uploadedFile = undefined,
importToArchive = false,
}) {
const [executeNumber, setExecuteNumber] = React.useState(0);
const [runnerId, setRunnerId] = React.useState(null);
const archive = useCurrentArchive();
const theme = useTheme();
const [previewReader, setPreviewReader] = useState(0);
const [previewReader, setPreviewReader] = React.useState(0);
const targetArchiveFolder = importToArchive ? `import-${moment().format('YYYY-MM-DD-hh-mm-ss')}` : archive;
const handleExecute = async (values) => {
const script = await createImpExpScript(values);
@@ -126,9 +133,9 @@ export default function ImportExportModal({ modalState, initialValues, uploadedF
onSubmit={handleExecute}
initialValues={{
sourceStorageType: 'database',
targetStorageType: 'csv',
targetStorageType: importToArchive ? 'archive' : 'csv',
sourceArchiveFolder: archive,
targetArchiveFolder: archive,
targetArchiveFolder,
...initialValues,
}}
>

View File

@@ -47,6 +47,7 @@ export function useUploadsZone() {
<ImportExportModal
uploadedFile={fileData}
modalState={modalState}
importToArchive
initialValues={{
sourceStorageType: fileData.storageType,
// sourceConnectionId: data.conid,

View File

@@ -240,15 +240,22 @@ export function FormArchiveFilesSelect({ folderName, name }) {
return <FormReactSelect options={filesOptions} name={name} isMulti />;
}
export function FormArchiveFolderSelect({ name, ...other }) {
export function FormArchiveFolderSelect({ name, additionalFolders = [], ...other }) {
const { setFieldValue } = useFormikContext();
const folders = useArchiveFolders();
const folderOptions = React.useMemo(
() =>
(folders || []).map((folder) => ({
() => [
...(folders || []).map((folder) => ({
value: folder.name,
label: folder.name,
})),
...additionalFolders
.filter((x) => !(folders || []).find((y) => y.name == x))
.map((folder) => ({
value: folder,
label: folder,
})),
],
[folders]
);

View File

@@ -38,6 +38,7 @@ export default function ToolBar({ toolbarPortalRef }) {
showModal((modalState) => (
<ImportExportModal
modalState={modalState}
importToArchive
initialValues={{
sourceStorageType: 'csv',
// sourceConnectionId: data.conid,