diff --git a/packages/web/src/fileformats/excel.ts b/packages/web/src/fileformats/excel.ts index 74a22a97b..3b1920e80 100644 --- a/packages/web/src/fileformats/excel.ts +++ b/packages/web/src/fileformats/excel.ts @@ -21,6 +21,32 @@ const excelFormat: FileFormatDefinition = { }; } }, + + args: [ + { + type: 'checkbox', + name: 'singleFile', + label: 'Create single file', + direction: 'target', + }, + ], + + getDefaultOutputName: (sourceName, values) => { + if (values.target_excel_singleFile) { + return sourceName; + } + return null; + }, + + getOutputParams: (sourceName, values) => { + if (values.target_excel_singleFile) { + return { + sheetName: values[`targetName_${sourceName}`] || sourceName, + fileName:'data.xlsx' + }; + } + return null; + }, }; export default excelFormat; diff --git a/packages/web/src/fileformats/types.ts b/packages/web/src/fileformats/types.ts index 0f21e710f..de9929955 100644 --- a/packages/web/src/fileformats/types.ts +++ b/packages/web/src/fileformats/types.ts @@ -14,4 +14,6 @@ export interface FileFormatDefinition { [key: string]: any; } ) => void; + getDefaultOutputName?: (sourceName, values) => string; + getOutputParams?: (sourceName, values) => any; } diff --git a/packages/web/src/impexp/createImpExpScript.js b/packages/web/src/impexp/createImpExpScript.js index 81d0c90c8..feb068550 100644 --- a/packages/web/src/impexp/createImpExpScript.js +++ b/packages/web/src/impexp/createImpExpScript.js @@ -10,7 +10,11 @@ export function getTargetName(source, values) { const key = `targetName_${source}`; if (values[key]) return values[key]; const format = findFileFormat(values.targetStorageType); - if (format) return `${source}.${format.extension}`; + if (format) { + const res = format.getDefaultOutputName ? format.getDefaultOutputName(source, values) : null; + if (res) return res; + return `${source}.${format.extension}`; + } return source; } @@ -113,10 +117,15 @@ function getTargetExpr(sourceName, values, targetConnection, targetDriver) { const { targetStorageType } = values; const format = findFileFormat(targetStorageType); if (format && format.writerFunc) { + const outputParams = format.getOutputParams && format.getOutputParams(sourceName, values); return [ format.writerFunc, { - fileName: getTargetName(sourceName, values), + ...(outputParams + ? outputParams + : { + fileName: getTargetName(sourceName, values), + }), ...extractApiParameters(values, 'target', format), }, ];