diff --git a/packages/web/src/tabs/SqlObjectTab.svelte b/packages/web/src/tabs/SqlObjectTab.svelte index 7a874a021..5d78318f8 100644 --- a/packages/web/src/tabs/SqlObjectTab.svelte +++ b/packages/web/src/tabs/SqlObjectTab.svelte @@ -29,6 +29,9 @@ import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte'; import SelectField from '../forms/SelectField.svelte'; import { changeTab } from '../utility/common'; + import ToolStripButton from '../buttons/ToolStripButton.svelte'; + import openNewTab from '../utility/openNewTab'; + import { template } from 'lodash'; export let tabid; export let appObjectData; @@ -109,5 +112,67 @@ })); }} /> + {#if objectTypeField == 'tables' || objectTypeField == 'views' || objectTypeField == 'matviews'} + { + openNewTab({ + title: pureName, + icon: 'img table-structure', + tabComponent: 'TableStructureTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'openStructure', + }, + }); + }}>Open structure + { + openNewTab({ + title: pureName, + icon: objectTypeField == 'tables' ? 'img table' : 'img view', + tabComponent: objectTypeField == 'tables' ? 'TableDataTab' : 'ViewDataTab', + objectTypeField, + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'openTable', + }, + }); + }}>Open data + {/if} + {#each getSupportedScriptTemplates(appObjectData.objectTypeField) as template} + { + openNewTab({ + title: 'Query #', + icon: 'img sql-file', + tabComponent: 'QueryTab', + objectTypeField: appObjectData.objectTypeField, + props: { + conid, + database, + schemaName, + pureName, + objectTypeField, + initialArgs: { scriptTemplate: template.scriptTemplate }, + }, + }); + }}>{template.label} + {/each} diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte index 83a6f13df..4a6eaae88 100644 --- a/packages/web/src/tabs/TableDataTab.svelte +++ b/packages/web/src/tabs/TableDataTab.svelte @@ -298,17 +298,39 @@ title: pureName, icon: 'img table-structure', tabComponent: 'TableStructureTab', + tabPreviewMode: true, props: { schemaName, pureName, conid, database, objectTypeField: 'tables', + defaultActionId: 'openStructure', }, }); }}>Open structure + { + openNewTab({ + title: pureName, + icon: 'img sql-file', + tabComponent: 'SqlObjectTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField: 'tables', + defaultActionId: 'showSql', + }, + }); + }}>Table SQL + collapsedLeftColumnStore.update(x => !x)}>View columns - {#if objectTypeField == 'tables'} - { - openNewTab({ - title: pureName, - icon: 'img table', - tabComponent: 'TableDataTab', - props: { - schemaName, - pureName, - conid, - database, - objectTypeField: 'tables', - }, - }); - }}>Open data - {/if} + { + openNewTab({ + title: pureName, + icon: objectTypeField == 'tables' ? 'img table' : 'img view', + tabComponent: objectTypeField == 'tables' ? 'TableDataTab' : 'ViewDataTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'openTable', + }, + }); + }}>Open data + { + openNewTab({ + title: pureName, + icon: 'img sql-file', + tabComponent: 'SqlObjectTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'showSql', + }, + }); + }}>Show SQL diff --git a/packages/web/src/tabs/ViewDataTab.svelte b/packages/web/src/tabs/ViewDataTab.svelte index a5fb401db..6fe518c82 100644 --- a/packages/web/src/tabs/ViewDataTab.svelte +++ b/packages/web/src/tabs/ViewDataTab.svelte @@ -18,16 +18,24 @@ import SqlFormView from '../formview/SqlFormView.svelte'; import { getBoolSettingsValue } from '../settings/settingsTools'; import { extensions } from '../stores'; - import { useConnectionInfo, useDatabaseInfo, useDatabaseServerVersion, useViewInfo } from '../utility/metadataLoaders'; + import { + useConnectionInfo, + useDatabaseInfo, + useDatabaseServerVersion, + useViewInfo, + } from '../utility/metadataLoaders'; import { getLocalStorage, setLocalStorage } from '../utility/storageCache'; import useGridConfig from '../utility/useGridConfig'; import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte'; + import ToolStripButton from '../buttons/ToolStripButton.svelte'; + import openNewTab from '../utility/openNewTab'; export let tabid; export let conid; export let database; export let schemaName; export let pureName; + export let objectTypeField; $: connection = useConnectionInfo({ conid }); $: viewInfo = useViewInfo({ conid, database, schemaName, pureName }); @@ -76,6 +84,46 @@ + + { + openNewTab({ + title: pureName, + icon: 'img table-structure', + tabComponent: 'TableStructureTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'openStructure', + }, + }); + }}>Open structure + + { + openNewTab({ + title: pureName, + icon: 'img sql-file', + tabComponent: 'SqlObjectTab', + tabPreviewMode: true, + props: { + schemaName, + pureName, + conid, + database, + objectTypeField, + defaultActionId: 'showSql', + }, + }); + }}>View SQL {/if} diff --git a/packages/web/src/utility/applyScriptTemplate.ts b/packages/web/src/utility/applyScriptTemplate.ts index 9ddeb1bc3..3b72f5877 100644 --- a/packages/web/src/utility/applyScriptTemplate.ts +++ b/packages/web/src/utility/applyScriptTemplate.ts @@ -138,4 +138,6 @@ export function getSupportedScriptTemplates(objectTypeField: string): { label: s }, ]; } + + return []; }