mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-24 22:16:00 +00:00
improt into archive improvement
This commit is contained in:
@@ -262,7 +262,10 @@ function SourceTargetConfig({
|
||||
{storageType == 'archive' && (
|
||||
<>
|
||||
<Label theme={theme}>Archive folder</Label>
|
||||
<FormArchiveFolderSelect name={archiveFolderField} />
|
||||
<FormArchiveFolderSelect
|
||||
name={archiveFolderField}
|
||||
additionalFolders={_.compact([values[archiveFolderField]])}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
||||
|
||||
@@ -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,
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -47,6 +47,7 @@ export function useUploadsZone() {
|
||||
<ImportExportModal
|
||||
uploadedFile={fileData}
|
||||
modalState={modalState}
|
||||
importToArchive
|
||||
initialValues={{
|
||||
sourceStorageType: fileData.storageType,
|
||||
// sourceConnectionId: data.conid,
|
||||
|
||||
@@ -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]
|
||||
);
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ export default function ToolBar({ toolbarPortalRef }) {
|
||||
showModal((modalState) => (
|
||||
<ImportExportModal
|
||||
modalState={modalState}
|
||||
importToArchive
|
||||
initialValues={{
|
||||
sourceStorageType: 'csv',
|
||||
// sourceConnectionId: data.conid,
|
||||
|
||||
Reference in New Issue
Block a user