mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 11:23:59 +00:00
quick export - sql data grid
This commit is contained in:
@@ -48,7 +48,6 @@
|
|||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
electron && {
|
electron && {
|
||||||
label: 'Quick export',
|
|
||||||
isQuickExport: true,
|
isQuickExport: true,
|
||||||
functionName: 'tableReader',
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
@@ -116,7 +115,7 @@
|
|||||||
},
|
},
|
||||||
electron && {
|
electron && {
|
||||||
label: 'Quick export',
|
label: 'Quick export',
|
||||||
isQuickExport: true,
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Export',
|
label: 'Export',
|
||||||
@@ -177,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
electron && {
|
electron && {
|
||||||
label: 'Quick export',
|
label: 'Quick export',
|
||||||
isQuickExport: true,
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Export',
|
label: 'Export',
|
||||||
@@ -277,7 +276,7 @@
|
|||||||
},
|
},
|
||||||
electron && {
|
electron && {
|
||||||
label: 'Quick export',
|
label: 'Quick export',
|
||||||
isQuickExport: true,
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Export',
|
label: 'Export',
|
||||||
@@ -348,6 +347,7 @@
|
|||||||
import getConnectionLabel from '../utility/getConnectionLabel';
|
import getConnectionLabel from '../utility/getConnectionLabel';
|
||||||
import getElectron from '../utility/getElectron';
|
import getElectron from '../utility/getElectron';
|
||||||
import { exportElectronFile } from '../utility/exportElectronFile';
|
import { exportElectronFile } from '../utility/exportElectronFile';
|
||||||
|
import createQuickExportMenu from '../utility/createQuickExportMenu';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
|
||||||
@@ -397,29 +397,23 @@
|
|||||||
if (menu.divider) return menu;
|
if (menu.divider) return menu;
|
||||||
|
|
||||||
if (menu.isQuickExport) {
|
if (menu.isQuickExport) {
|
||||||
return {
|
return createQuickExportMenu($extensions, fmt => async () => {
|
||||||
text: menu.label,
|
const coninfo = await getConnectionInfo(data);
|
||||||
submenu: $extensions.quickExports.map(fmt => ({
|
exportElectronFile(
|
||||||
text: fmt.label,
|
data.pureName,
|
||||||
onClick: async () => {
|
{
|
||||||
const coninfo = await getConnectionInfo(data);
|
functionName: menu.functionName,
|
||||||
exportElectronFile(
|
props: {
|
||||||
data.pureName,
|
connection: {
|
||||||
{
|
..._.omit(coninfo, ['_id', 'displayName']),
|
||||||
functionName: menu.functionName,
|
..._.pick(data, ['database']),
|
||||||
props: {
|
|
||||||
connection: {
|
|
||||||
..._.omit(coninfo, ['_id', 'displayName']),
|
|
||||||
..._.pick(data, ['database']),
|
|
||||||
},
|
|
||||||
..._.pick(data, ['pureName', 'schemaName']),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
fmt
|
..._.pick(data, ['pureName', 'schemaName']),
|
||||||
);
|
},
|
||||||
},
|
},
|
||||||
})),
|
fmt
|
||||||
};
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -68,16 +68,23 @@
|
|||||||
|
|
||||||
return parseInt(response.data.rows[0].count);
|
return parseInt(response.data.rows[0].count);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
import registerCommand from '../commands/registerCommand';
|
import registerCommand from '../commands/registerCommand';
|
||||||
import ImportExportModal from '../modals/ImportExportModal.svelte';
|
import ImportExportModal from '../modals/ImportExportModal.svelte';
|
||||||
import { showModal } from '../modals/modalTools';
|
import { showModal } from '../modals/modalTools';
|
||||||
|
import { extensions } from '../stores';
|
||||||
|
|
||||||
import axiosInstance from '../utility/axiosInstance';
|
import axiosInstance from '../utility/axiosInstance';
|
||||||
import { registerMenu } from '../utility/contextMenu';
|
import { registerMenu } from '../utility/contextMenu';
|
||||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||||
|
import createQuickExportMenu from '../utility/createQuickExportMenu';
|
||||||
|
import { exportElectronFile } from '../utility/exportElectronFile';
|
||||||
|
import { getConnectionInfo } from '../utility/metadataLoaders';
|
||||||
import openNewTab from '../utility/openNewTab';
|
import openNewTab from '../utility/openNewTab';
|
||||||
import ChangeSetGrider from './ChangeSetGrider';
|
import ChangeSetGrider from './ChangeSetGrider';
|
||||||
|
|
||||||
@@ -169,8 +176,29 @@
|
|||||||
registerMenu(
|
registerMenu(
|
||||||
{ command: 'sqlDataGrid.openActiveChart', tag: 'chart' },
|
{ command: 'sqlDataGrid.openActiveChart', tag: 'chart' },
|
||||||
{ command: 'sqlDataGrid.openQuery', tag: 'export' },
|
{ command: 'sqlDataGrid.openQuery', tag: 'export' },
|
||||||
|
{
|
||||||
|
...createQuickExportMenu($extensions, fmt => async () => {
|
||||||
|
const coninfo = await getConnectionInfo({ conid });
|
||||||
|
exportElectronFile(
|
||||||
|
pureName || 'Data',
|
||||||
|
{
|
||||||
|
functionName: 'queryReader',
|
||||||
|
props: {
|
||||||
|
connection: {
|
||||||
|
..._.omit(coninfo, ['_id', 'displayName']),
|
||||||
|
database,
|
||||||
|
},
|
||||||
|
sql: display.getExportQuery(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
fmt
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
tag: 'export',
|
||||||
|
},
|
||||||
{ command: 'sqlDataGrid.export', tag: 'export' }
|
{ command: 'sqlDataGrid.export', tag: 'export' }
|
||||||
);
|
);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<LoadingDataGridCore
|
<LoadingDataGridCore
|
||||||
|
|||||||
14
packages/web/src/utility/createQuickExportMenu.ts
Normal file
14
packages/web/src/utility/createQuickExportMenu.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { ExtensionsDirectory, QuickExportDefinition } from 'dbgate-types';
|
||||||
|
|
||||||
|
export default function createQuickExportMenu(
|
||||||
|
extensions: ExtensionsDirectory,
|
||||||
|
handler: (fmt: QuickExportDefinition) => Function
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
text: 'Quick export',
|
||||||
|
submenu: extensions.quickExports.map(fmt => ({
|
||||||
|
text: fmt.label,
|
||||||
|
onClick: handler(fmt),
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user