mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 19:33:59 +00:00
query toolstip
This commit is contained in:
@@ -26,18 +26,20 @@
|
|||||||
|
|
||||||
const electron = getElectron();
|
const electron = getElectron();
|
||||||
|
|
||||||
export let quickExportHandlerRef;
|
export let quickExportHandlerRef = null;
|
||||||
|
export let command = 'sqlDataGrid.export';
|
||||||
|
export let label = 'Advanced settings';
|
||||||
|
|
||||||
function getExportMenu() {
|
function getExportMenu() {
|
||||||
return [
|
return [
|
||||||
quickExportHandlerRef?.value ? createQuickExportMenuItems($extensions, quickExportHandlerRef?.value) : null,
|
quickExportHandlerRef?.value ? createQuickExportMenuItems($extensions, quickExportHandlerRef?.value) : null,
|
||||||
{ divider: true },
|
{ divider: true },
|
||||||
{ command: 'sqlDataGrid.export', text: 'Advanced settings' },
|
{ command, text: label },
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if electron}
|
{#if quickExportHandlerRef && electron}
|
||||||
<ToolStripDropDownButton menu={getExportMenu} label="Export" icon="icon export" />
|
<ToolStripDropDownButton menu={getExportMenu} label="Export" icon="icon export" />
|
||||||
{:else}
|
{:else}
|
||||||
<ToolStripCommandButton command="sqlDataGrid.export" />
|
<ToolStripCommandButton command="sqlDataGrid.export" />
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { registerQuickExportHandler } from '../buttons/ToolStripExportButton.svelte';
|
||||||
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';
|
||||||
@@ -99,35 +100,38 @@
|
|||||||
showModal(ImportExportModal, { initialValues });
|
showModal(ImportExportModal, { initialValues });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const quickExportHandler = 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
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
registerQuickExportHandler(quickExportHandler);
|
||||||
|
|
||||||
registerMenu(
|
registerMenu(
|
||||||
{
|
{
|
||||||
...createQuickExportMenu($extensions, fmt => async () => {
|
...createQuickExportMenu($extensions, quickExportHandler),
|
||||||
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',
|
tag: 'export',
|
||||||
},
|
},
|
||||||
{ command: 'jslTableGrid.export', tag: 'export' }
|
{ command: 'jslTableGrid.export', tag: 'export' }
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
export let sessionId;
|
export let sessionId;
|
||||||
export let executeNumber;
|
export let executeNumber;
|
||||||
|
|
||||||
|
export let resultCount;
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
allResultsInOneTab = $allResultsInOneTabDefault;
|
allResultsInOneTab = $allResultsInOneTabDefault;
|
||||||
});
|
});
|
||||||
@@ -22,6 +24,8 @@
|
|||||||
let resultInfos = [];
|
let resultInfos = [];
|
||||||
let domTabs;
|
let domTabs;
|
||||||
|
|
||||||
|
$: resultCount = resultInfos.length;
|
||||||
|
|
||||||
const handleResultSet = async props => {
|
const handleResultSet = async props => {
|
||||||
const { jslid, resultIndex } = props;
|
const { jslid, resultIndex } = props;
|
||||||
resultInfos = [...resultInfos, { jslid, resultIndex }];
|
resultInfos = [...resultInfos, { jslid, resultIndex }];
|
||||||
|
|||||||
@@ -50,6 +50,9 @@
|
|||||||
import { apiCall, apiOff, apiOn } from '../utility/api';
|
import { apiCall, apiOff, apiOn } from '../utility/api';
|
||||||
import registerCommand from '../commands/registerCommand';
|
import registerCommand from '../commands/registerCommand';
|
||||||
import newQuery from '../query/newQuery';
|
import newQuery from '../query/newQuery';
|
||||||
|
import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
||||||
|
import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte';
|
||||||
|
import ToolStripExportButton, { createQuickExportHandlerRef } from '../buttons/ToolStripExportButton.svelte';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -233,53 +236,64 @@
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const quickExportHandlerRef = createQuickExportHandlerRef();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<VerticalSplitter initialValue="70%">
|
<ToolStripContainer>
|
||||||
<svelte:fragment slot="1">
|
<VerticalSplitter initialValue="70%">
|
||||||
<QueryDesigner
|
<svelte:fragment slot="1">
|
||||||
value={$modelState.value || {}}
|
<QueryDesigner
|
||||||
{conid}
|
value={$modelState.value || {}}
|
||||||
{database}
|
{conid}
|
||||||
engine={$connection && $connection.engine}
|
{database}
|
||||||
onChange={handleChange}
|
engine={$connection && $connection.engine}
|
||||||
menu={createMenu}
|
onChange={handleChange}
|
||||||
/>
|
menu={createMenu}
|
||||||
</svelte:fragment>
|
/>
|
||||||
|
</svelte:fragment>
|
||||||
|
|
||||||
<svelte:fragment slot="2">
|
<svelte:fragment slot="2">
|
||||||
<ResultTabs
|
<ResultTabs
|
||||||
tabs={[
|
tabs={[
|
||||||
{
|
{
|
||||||
label: 'Columns',
|
label: 'Columns',
|
||||||
component: QueryDesignColumns,
|
component: QueryDesignColumns,
|
||||||
props: {
|
props: {
|
||||||
value: $modelState.value || {},
|
value: $modelState.value || {},
|
||||||
onChange: handleChange,
|
onChange: handleChange,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
label: 'SQL',
|
||||||
label: 'SQL',
|
component: SqlEditor,
|
||||||
component: SqlEditor,
|
props: {
|
||||||
props: {
|
engine: $connection && $connection.engine,
|
||||||
engine: $connection && $connection.engine,
|
readOnly: true,
|
||||||
readOnly: true,
|
value: sqlPreview,
|
||||||
value: sqlPreview,
|
},
|
||||||
},
|
},
|
||||||
},
|
visibleResultTabs && { label: 'Messages', slot: 0 },
|
||||||
visibleResultTabs && { label: 'Messages', slot: 0 },
|
]}
|
||||||
]}
|
{sessionId}
|
||||||
{sessionId}
|
{executeNumber}
|
||||||
{executeNumber}
|
>
|
||||||
>
|
<svelte:fragment slot="0">
|
||||||
<svelte:fragment slot="0">
|
<SocketMessageView
|
||||||
<SocketMessageView
|
eventName={sessionId ? `session-info-${sessionId}` : null}
|
||||||
eventName={sessionId ? `session-info-${sessionId}` : null}
|
{executeNumber}
|
||||||
{executeNumber}
|
showProcedure
|
||||||
showProcedure
|
showLine
|
||||||
showLine
|
/>
|
||||||
/>
|
</svelte:fragment>
|
||||||
</svelte:fragment>
|
</ResultTabs>
|
||||||
</ResultTabs>
|
</svelte:fragment>
|
||||||
|
</VerticalSplitter>
|
||||||
|
<svelte:fragment slot="toolstrip">
|
||||||
|
<ToolStripCommandButton command="designer.execute" />
|
||||||
|
<ToolStripCommandButton command="designer.kill" />
|
||||||
|
<ToolStripCommandButton command="designer.openSql" />
|
||||||
|
<ToolStripCommandButton command="designer.save" />
|
||||||
|
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label="Export result" />
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
</VerticalSplitter>
|
</ToolStripContainer>
|
||||||
|
|||||||
@@ -68,8 +68,9 @@
|
|||||||
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
|
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
|
||||||
import { showSnackbarError } from '../utility/snackbar';
|
import { showSnackbarError } from '../utility/snackbar';
|
||||||
import { apiCall, apiOff, apiOn } from '../utility/api';
|
import { apiCall, apiOff, apiOn } from '../utility/api';
|
||||||
import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte';
|
import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte';
|
||||||
import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
||||||
|
import ToolStripExportButton, { createQuickExportHandlerRef } from '../buttons/ToolStripExportButton.svelte';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -85,6 +86,7 @@ import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
|||||||
let executeNumber = 0;
|
let executeNumber = 0;
|
||||||
let visibleResultTabs = false;
|
let visibleResultTabs = false;
|
||||||
let sessionId = null;
|
let sessionId = null;
|
||||||
|
let resultCount;
|
||||||
|
|
||||||
let domEditor;
|
let domEditor;
|
||||||
|
|
||||||
@@ -270,6 +272,8 @@ import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
|||||||
{ command: 'query.replace' },
|
{ command: 'query.replace' },
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const quickExportHandlerRef = createQuickExportHandlerRef();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ToolStripContainer>
|
<ToolStripContainer>
|
||||||
@@ -306,7 +310,7 @@ import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
|||||||
{/if}
|
{/if}
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
<svelte:fragment slot="2">
|
<svelte:fragment slot="2">
|
||||||
<ResultTabs tabs={[{ label: 'Messages', slot: 0 }]} {sessionId} {executeNumber}>
|
<ResultTabs tabs={[{ label: 'Messages', slot: 0 }]} {sessionId} {executeNumber} bind:resultCount>
|
||||||
<svelte:fragment slot="0">
|
<svelte:fragment slot="0">
|
||||||
<SocketMessageView
|
<SocketMessageView
|
||||||
eventName={sessionId ? `session-info-${sessionId}` : null}
|
eventName={sessionId ? `session-info-${sessionId}` : null}
|
||||||
@@ -324,6 +328,9 @@ import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
|
|||||||
<ToolStripCommandButton command="query.kill" />
|
<ToolStripCommandButton command="query.kill" />
|
||||||
<ToolStripCommandButton command="query.save" />
|
<ToolStripCommandButton command="query.save" />
|
||||||
<ToolStripCommandButton command="query.formatCode" />
|
<ToolStripCommandButton command="query.formatCode" />
|
||||||
|
{#if resultCount == 1}
|
||||||
|
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label="Export result" />
|
||||||
|
{/if}
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
</ToolStripContainer>
|
</ToolStripContainer>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user