From 6b8bf8161ea2796c44f69c2a000d558ccc52e101 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 3 Jun 2021 20:58:38 +0200 Subject: [PATCH] quick export WIP --- packages/types/extensions.d.ts | 7 + .../src/appobj/DatabaseObjectAppObject.svelte | 203 ++++++++++-------- .../web/src/plugins/PluginsProvider.svelte | 10 +- .../web/src/utility/exportElectronFile.ts | 29 +++ .../dbgate-plugin-csv/src/frontend/index.js | 25 +++ .../dbgate-plugin-excel/src/frontend/index.js | 13 ++ 6 files changed, 197 insertions(+), 90 deletions(-) create mode 100644 packages/web/src/utility/exportElectronFile.ts diff --git a/packages/types/extensions.d.ts b/packages/types/extensions.d.ts index 142b6658a..fca442fe9 100644 --- a/packages/types/extensions.d.ts +++ b/packages/types/extensions.d.ts @@ -33,9 +33,16 @@ export interface PluginDefinition { content: any; } +export interface QuickExportDefinition { + label: string; + createWriter: (fileName: string) => { functionName: string; props: any }; + extension: string; +} + export interface ExtensionsDirectory { plugins: PluginDefinition[]; fileFormats: FileFormatDefinition[]; + quickExports: QuickExportDefinition[]; drivers: EngineDriver[]; themes: ThemeDefinition[]; } diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index f125e77cc..edfc2de46 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -1,6 +1,7 @@ ({ name: x.label, extensions: [x.extension] })); +} + +export async function exportElectronFile() { + const electron = getElectron(); + const ext = get(extensions); + const filters = getFileFormatFilters(ext); + console.log('FLT', filters); + electron.remote.dialog + .showSaveDialog(electron.remote.getCurrentWindow(), { + filters, + }) + .then(filePaths => { + console.log('filePaths ASYNC2', filePaths); + const filePath = filePaths && filePaths[0]; + console.log('filePath', filePath); + }); +} diff --git a/plugins/dbgate-plugin-csv/src/frontend/index.js b/plugins/dbgate-plugin-csv/src/frontend/index.js index 33b0f6a17..94a199e3d 100644 --- a/plugins/dbgate-plugin-csv/src/frontend/index.js +++ b/plugins/dbgate-plugin-csv/src/frontend/index.js @@ -43,4 +43,29 @@ const fileFormat = { export default { fileFormats: [fileFormat], + + quickExports: [ + { + label: 'CSV file', + extension: 'csv', + createWriter: (fileName) => ({ + functionName: 'writer', + props: { + fileName, + delimiter: ',', + }, + }), + }, + { + label: 'CSV file (semicolor separated)', + extension: 'csv', + createWriter: (fileName) => ({ + functionName: 'writer', + props: { + fileName, + delimiter: ';', + }, + }), + }, + ], }; diff --git a/plugins/dbgate-plugin-excel/src/frontend/index.js b/plugins/dbgate-plugin-excel/src/frontend/index.js index 94d515376..f79e18307 100644 --- a/plugins/dbgate-plugin-excel/src/frontend/index.js +++ b/plugins/dbgate-plugin-excel/src/frontend/index.js @@ -64,5 +64,18 @@ const fileFormat = { export default { fileFormats: [fileFormat], + quickExports: [ + { + label: 'MS Excel', + extension: 'xlsx', + createWriter: (fileName) => ({ + functionName: 'writer', + props: { + fileName, + sheetName: 'data', + }, + }), + }, + ], initialize, };