diff --git a/packages/api/src/shell/archiveWriter.js b/packages/api/src/shell/archiveWriter.js
index f195f2fd9..20e1573d9 100644
--- a/packages/api/src/shell/archiveWriter.js
+++ b/packages/api/src/shell/archiveWriter.js
@@ -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;
diff --git a/packages/web/src/impexp/ImportExportConfigurator.js b/packages/web/src/impexp/ImportExportConfigurator.js
index 84594b526..1582aaab0 100644
--- a/packages/web/src/impexp/ImportExportConfigurator.js
+++ b/packages/web/src/impexp/ImportExportConfigurator.js
@@ -262,7 +262,10 @@ function SourceTargetConfig({
{storageType == 'archive' && (
<>
-
+
>
)}
diff --git a/packages/web/src/modals/ImportExportModal.js b/packages/web/src/modals/ImportExportModal.js
index aead0d510..0f8334151 100644
--- a/packages/web/src/modals/ImportExportModal.js
+++ b/packages/web/src/modals/ImportExportModal.js
@@ -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 ;
}
-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,
}}
>
diff --git a/packages/web/src/utility/UploadsProvider.js b/packages/web/src/utility/UploadsProvider.js
index 83ad73201..f700f4caf 100644
--- a/packages/web/src/utility/UploadsProvider.js
+++ b/packages/web/src/utility/UploadsProvider.js
@@ -47,6 +47,7 @@ export function useUploadsZone() {
;
}
-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]
);
diff --git a/packages/web/src/widgets/Toolbar.js b/packages/web/src/widgets/Toolbar.js
index f457dc3c6..dfb654b0b 100644
--- a/packages/web/src/widgets/Toolbar.js
+++ b/packages/web/src/widgets/Toolbar.js
@@ -38,6 +38,7 @@ export default function ToolBar({ toolbarPortalRef }) {
showModal((modalState) => (