quick export - added to grids

This commit is contained in:
Jan Prochazka
2021-06-06 17:59:03 +02:00
parent af7c450f56
commit 8f19ce2607
5 changed files with 78 additions and 9 deletions

View File

@@ -47,7 +47,7 @@
{
divider: true,
},
electron && {
{
isQuickExport: true,
functionName: 'tableReader',
},
@@ -113,8 +113,8 @@
{
divider: true,
},
electron && {
label: 'Quick export',
{
isQuickExport: true,
functionName: 'tableReader',
},
{
@@ -174,8 +174,8 @@
{
divider: true,
},
electron && {
label: 'Quick export',
{
isQuickExport: true,
functionName: 'tableReader',
},
{
@@ -274,8 +274,8 @@
},
},
},
electron && {
label: 'Quick export',
{
isQuickExport: true,
functionName: 'tableReader',
},
{

View File

@@ -112,6 +112,7 @@
return response.data.count;
}
</script>
<script lang="ts">
@@ -125,10 +126,14 @@
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
import ImportExportModal from '../modals/ImportExportModal.svelte';
import { showModal } from '../modals/modalTools';
import { extensions } from '../stores';
import axiosInstance from '../utility/axiosInstance';
import { registerMenu } from '../utility/contextMenu';
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 ChangeSetGrider from './ChangeSetGrider';
@@ -201,8 +206,30 @@
registerMenu(
{ command: 'collectionDataGrid.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: getExportQuery(),
},
},
fmt
);
}),
tag: 'export',
},
{ command: 'collectionDataGrid.export', tag: 'export' }
);
</script>
<LoadingDataGridCore

View File

@@ -39,6 +39,7 @@
});
return response.data.rowCount;
}
</script>
<script lang="ts">
@@ -46,10 +47,13 @@
import registerCommand from '../commands/registerCommand';
import ImportExportModal from '../modals/ImportExportModal.svelte';
import { showModal } from '../modals/modalTools';
import { extensions } from '../stores';
import axiosInstance from '../utility/axiosInstance';
import { registerMenu } from '../utility/contextMenu';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import createQuickExportMenu from '../utility/createQuickExportMenu';
import { exportElectronFile } from '../utility/exportElectronFile';
import socket from '../utility/socket';
import useEffect from '../utility/useEffect';
@@ -103,7 +107,40 @@
showModal(ImportExportModal, { initialValues });
}
registerMenu({ command: 'jslTableGrid.export', tag: 'export' });
registerMenu(
{
...createQuickExportMenu($extensions, fmt => async () => {
const archiveMatch = jslid.match(/^archive:\/\/([^/]+)\/(.*)$/);
if (archiveMatch) {
exportElectronFile(
archiveMatch[2],
{
functionName: 'archiveReader',
props: {
folderName: archiveMatch[1],
fileName: archiveMatch[2],
},
},
fmt
);
} else {
exportElectronFile(
'Query',
{
functionName: 'jslDataReader',
props: {
jslid,
},
},
fmt
);
}
}),
tag: 'export',
},
{ command: 'jslTableGrid.export', tag: 'export' }
);
</script>
<LoadingDataGridCore

View File

@@ -38,7 +38,7 @@ function doExtractMenuItems(menu, res) {
for (const item of menu) {
doExtractMenuItems(item, res);
}
} else if (_.isPlainObject(menu)) {
} else if (_.isPlainObject(menu) && !menu._skip) {
res.push(menu);
}
}

View File

@@ -1,9 +1,14 @@
import { ExtensionsDirectory, QuickExportDefinition } from 'dbgate-types';
import getElectron from './getElectron';
export default function createQuickExportMenu(
extensions: ExtensionsDirectory,
handler: (fmt: QuickExportDefinition) => Function
) {
const electron = getElectron();
if (!electron) {
return { _skip: true };
}
return {
text: 'Quick export',
submenu: extensions.quickExports.map(fmt => ({