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, };