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

@@ -1,11 +1,16 @@
const path = require('path');
const { archivedir, ensureDirectory } = require('../utility/directories');
const fs = require('fs');
const { archivedir } = require('../utility/directories');
// const socket = require('../utility/socket');
const jsonLinesWriter = require('./jsonLinesWriter');
function archiveWriter({ folderName, fileName }) {
if (folderName == 'default') ensureDirectory(path.join(archivedir(), folderName));
const jsonlFile = path.join(archivedir(), folderName, `${fileName}.jsonl`);
const dir = path.join(archivedir(), folderName);
if (!fs.existsSync(dir)) {
console.log(`Creating directory ${dir}`);
fs.mkdirSync(dir);
}
const jsonlFile = path.join(dir, `${fileName}.jsonl`);
const res = jsonLinesWriter({ fileName: jsonlFile });
// socket.emitChanged(`archive-files-changed-${folderName}`);
return res;

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,