mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 17:36:00 +00:00
quick export - added to grids
This commit is contained in:
@@ -47,7 +47,7 @@
|
|||||||
{
|
{
|
||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
electron && {
|
{
|
||||||
isQuickExport: true,
|
isQuickExport: true,
|
||||||
functionName: 'tableReader',
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
@@ -113,8 +113,8 @@
|
|||||||
{
|
{
|
||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
electron && {
|
{
|
||||||
label: 'Quick export',
|
isQuickExport: true,
|
||||||
functionName: 'tableReader',
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -174,8 +174,8 @@
|
|||||||
{
|
{
|
||||||
divider: true,
|
divider: true,
|
||||||
},
|
},
|
||||||
electron && {
|
{
|
||||||
label: 'Quick export',
|
isQuickExport: true,
|
||||||
functionName: 'tableReader',
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -274,8 +274,8 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
electron && {
|
{
|
||||||
label: 'Quick export',
|
isQuickExport: true,
|
||||||
functionName: 'tableReader',
|
functionName: 'tableReader',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -112,6 +112,7 @@
|
|||||||
|
|
||||||
return response.data.count;
|
return response.data.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -125,10 +126,14 @@
|
|||||||
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
||||||
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';
|
||||||
|
|
||||||
@@ -201,8 +206,30 @@
|
|||||||
|
|
||||||
registerMenu(
|
registerMenu(
|
||||||
{ command: 'collectionDataGrid.openQuery', tag: 'export' },
|
{ 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' }
|
{ command: 'collectionDataGrid.export', tag: 'export' }
|
||||||
);
|
);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<LoadingDataGridCore
|
<LoadingDataGridCore
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
});
|
});
|
||||||
return response.data.rowCount;
|
return response.data.rowCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -46,10 +47,13 @@
|
|||||||
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 socket from '../utility/socket';
|
import socket from '../utility/socket';
|
||||||
import useEffect from '../utility/useEffect';
|
import useEffect from '../utility/useEffect';
|
||||||
|
|
||||||
@@ -103,7 +107,40 @@
|
|||||||
showModal(ImportExportModal, { initialValues });
|
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>
|
</script>
|
||||||
|
|
||||||
<LoadingDataGridCore
|
<LoadingDataGridCore
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ function doExtractMenuItems(menu, res) {
|
|||||||
for (const item of menu) {
|
for (const item of menu) {
|
||||||
doExtractMenuItems(item, res);
|
doExtractMenuItems(item, res);
|
||||||
}
|
}
|
||||||
} else if (_.isPlainObject(menu)) {
|
} else if (_.isPlainObject(menu) && !menu._skip) {
|
||||||
res.push(menu);
|
res.push(menu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
import { ExtensionsDirectory, QuickExportDefinition } from 'dbgate-types';
|
import { ExtensionsDirectory, QuickExportDefinition } from 'dbgate-types';
|
||||||
|
import getElectron from './getElectron';
|
||||||
|
|
||||||
export default function createQuickExportMenu(
|
export default function createQuickExportMenu(
|
||||||
extensions: ExtensionsDirectory,
|
extensions: ExtensionsDirectory,
|
||||||
handler: (fmt: QuickExportDefinition) => Function
|
handler: (fmt: QuickExportDefinition) => Function
|
||||||
) {
|
) {
|
||||||
|
const electron = getElectron();
|
||||||
|
if (!electron) {
|
||||||
|
return { _skip: true };
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
text: 'Quick export',
|
text: 'Quick export',
|
||||||
submenu: extensions.quickExports.map(fmt => ({
|
submenu: extensions.quickExports.map(fmt => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user