diff --git a/packages/web/src/appobj/ArchiveFileAppObject.svelte b/packages/web/src/appobj/ArchiveFileAppObject.svelte index ecb13d8ff..02c92fbdf 100644 --- a/packages/web/src/appobj/ArchiveFileAppObject.svelte +++ b/packages/web/src/appobj/ArchiveFileAppObject.svelte @@ -169,31 +169,33 @@ { text: 'Delete', onClick: handleDelete }, { text: 'Rename', onClick: handleRename }, data.fileType == 'jsonl' && - createQuickExportMenu(fmt => async () => { - exportQuickExportFile( - data.fileName, - { - functionName: 'archiveReader', - props: { - fileName: data.fileName, - folderName: data.folderName, + createQuickExportMenu( + fmt => async () => { + exportQuickExportFile( + data.fileName, + { + functionName: 'archiveReader', + props: { + fileName: data.fileName, + folderName: data.folderName, + }, }, + fmt + ); + }, + { + text: 'Export', + onClick: () => { + showModal(ImportExportModal, { + initialValues: { + sourceStorageType: 'archive', + sourceArchiveFolder: data.folderName, + sourceList: [data.fileName], + }, + }); }, - fmt - ); - }), - data.fileType == 'jsonl' && { - text: 'Export', - onClick: () => { - showModal(ImportExportModal, { - initialValues: { - sourceStorageType: 'archive', - sourceArchiveFolder: data.folderName, - sourceList: [data.fileName], - }, - }); - }, - }, + } + ), data.fileType.endsWith('.sql') && { text: 'Open SQL', onClick: handleOpenSqlFile }, data.fileType.endsWith('.yaml') && { text: 'Open YAML', onClick: handleOpenYamlFile }, ]; diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index fd4cb4154..c7bb2c01f 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -60,12 +60,9 @@ { divider: true, }, - { - isQuickExport: true, - functionName: 'tableReader', - }, { label: 'Export', + functionName: 'tableReader', isExport: true, }, { @@ -131,13 +128,10 @@ { divider: true, }, - { - isQuickExport: true, - functionName: 'tableReader', - }, { label: 'Export', isExport: true, + functionName: 'tableReader', }, { label: 'Open as data sheet', @@ -196,13 +190,10 @@ { divider: true, }, - { - isQuickExport: true, - functionName: 'tableReader', - }, { label: 'Export', isExport: true, + functionName: 'tableReader', }, { label: 'Open as data sheet', @@ -304,13 +295,10 @@ }, }, }, - { - isQuickExport: true, - functionName: 'tableReader', - }, { label: 'Export', isExport: true, + functionName: 'tableReader', }, { label: 'Drop collection', @@ -411,40 +399,45 @@ .map(menu => { if (menu.divider) return menu; - if (menu.isQuickExport) { - return createQuickExportMenu(fmt => async () => { - const coninfo = await getConnectionInfo(data); - exportQuickExportFile( - data.pureName, - { - functionName: menu.functionName, - props: { - connection: { - ..._.omit(coninfo, ['_id', 'displayName']), - ..._.pick(data, ['database']), + if (menu.isExport) { + return createQuickExportMenu( + fmt => async () => { + const coninfo = await getConnectionInfo(data); + exportQuickExportFile( + data.pureName, + { + functionName: menu.functionName, + props: { + connection: { + ..._.omit(coninfo, ['_id', 'displayName']), + ..._.pick(data, ['database']), + }, + ..._.pick(data, ['pureName', 'schemaName']), }, - ..._.pick(data, ['pureName', 'schemaName']), }, + fmt + ); + }, + { + onClick: () => { + showModal(ImportExportModal, { + initialValues: { + sourceStorageType: 'database', + sourceConnectionId: data.conid, + sourceDatabaseName: data.database, + sourceSchemaName: data.schemaName, + sourceList: [data.pureName], + }, + }); }, - fmt - ); - }); + } + ); } return { text: menu.label, onClick: async () => { - if (menu.isExport) { - showModal(ImportExportModal, { - initialValues: { - sourceStorageType: 'database', - sourceConnectionId: data.conid, - sourceDatabaseName: data.database, - sourceSchemaName: data.schemaName, - sourceList: [data.pureName], - }, - }); - } else if (menu.isOpenFreeTable) { + if (menu.isOpenFreeTable) { const coninfo = await getConnectionInfo(data); openNewTab({ title: data.pureName, diff --git a/packages/web/src/buttons/ToolStripExportButton.svelte b/packages/web/src/buttons/ToolStripExportButton.svelte index bbbbb4f1d..4e6311e52 100644 --- a/packages/web/src/buttons/ToolStripExportButton.svelte +++ b/packages/web/src/buttons/ToolStripExportButton.svelte @@ -23,23 +23,21 @@ import ToolStripCommandButton from './ToolStripCommandButton.svelte'; import ToolStripDropDownButton from './ToolStripDropDownButton.svelte'; - const electron = getElectron(); - export let quickExportHandlerRef = null; export let command = 'sqlDataGrid.export'; - export let label = 'Advanced settings'; + export let label = 'Export'; function getExportMenu() { return [ - quickExportHandlerRef?.value ? createQuickExportMenuItems(quickExportHandlerRef?.value) : null, - { divider: true }, - { command, text: label }, + quickExportHandlerRef?.value + ? createQuickExportMenuItems(quickExportHandlerRef?.value, { command }) + : { command }, ]; } -{#if quickExportHandlerRef && electron} - +{#if quickExportHandlerRef} + {:else} {/if} diff --git a/packages/web/src/datagrid/CollectionDataGridCore.svelte b/packages/web/src/datagrid/CollectionDataGridCore.svelte index b7ac7db1c..a3f798ba2 100644 --- a/packages/web/src/datagrid/CollectionDataGridCore.svelte +++ b/packages/web/src/datagrid/CollectionDataGridCore.svelte @@ -214,15 +214,10 @@ registerQuickExportHandler(quickExportHandler); - registerMenu( - { command: 'collectionDataGrid.openQuery', tag: 'export' }, - () => ({ - ...createQuickExportMenu(quickExportHandler), - tag: 'export', - }), - - { command: 'collectionDataGrid.export', tag: 'export' } - ); + registerMenu({ command: 'collectionDataGrid.openQuery', tag: 'export' }, () => ({ + ...createQuickExportMenu(quickExportHandler, { command: 'collectionDataGrid.export' }), + tag: 'export', + })); ({ - ...createQuickExportMenu(quickExportHandler), - tag: 'export', - }), - { command: 'jslTableGrid.export', tag: 'export' } - ); + registerMenu(() => ({ + ...createQuickExportMenu(quickExportHandler, { command: 'jslTableGrid.export' }), + tag: 'export', + })); ({ - ...createQuickExportMenu(quickExportHandler), + ...createQuickExportMenu(quickExportHandler, { command: 'sqlDataGrid.export' }), tag: 'export', - }), - { command: 'sqlDataGrid.export', tag: 'export' } + }) ); diff --git a/packages/web/src/utility/createQuickExportMenu.ts b/packages/web/src/utility/createQuickExportMenu.ts index 3d860a2e9..b304881c9 100644 --- a/packages/web/src/utility/createQuickExportMenu.ts +++ b/packages/web/src/utility/createQuickExportMenu.ts @@ -1,27 +1,27 @@ -import { ExtensionsDirectory, QuickExportDefinition } from 'dbgate-types'; +import { QuickExportDefinition } from 'dbgate-types'; import { getExtensions } from '../stores'; -import getElectron from './getElectron'; -export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function) { - // const electron = getElectron(); - // if (!electron) { - // return null; - // } +export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function, advancedExportMenuItem) { const extensions = getExtensions(); - console.log('extensions', extensions); - return extensions.quickExports.map(fmt => ({ - text: fmt.label, - onClick: handler(fmt), - })); + return [ + ...extensions.quickExports.map(fmt => ({ + text: fmt.label, + onClick: handler(fmt), + })), + { divider: true }, + { + text: 'More...', + ...advancedExportMenuItem, + }, + ]; } -export default function createQuickExportMenu(handler: (fmt: QuickExportDefinition) => Function) { - // const electron = getElectron(); - // if (!electron) { - // return { _skip: true }; - // } +export default function createQuickExportMenu( + handler: (fmt: QuickExportDefinition) => Function, + advancedExportMenuItem +) { return { - text: 'Quick export', - submenu: createQuickExportMenuItems(handler), + text: 'Export', + submenu: createQuickExportMenuItems(handler, advancedExportMenuItem), }; }