diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index a19ffa1a3..27268236b 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -60,6 +60,7 @@ isExport?: boolean; isImport?: boolean; isActiveChart?: boolean; + isShowSql?: boolean; scriptTemplate?: string; sqlGeneratorProps?: any; isDropCollection?: boolean; @@ -152,6 +153,10 @@ { divider: true, }, + { + isShowSql: true, + label: 'Show SQL', + }, createScriptTemplatesSubmenu('tables'), { label: 'SQL Generator: CREATE TABLE', @@ -222,6 +227,10 @@ { divider: true, }, + { + isShowSql: true, + label: 'Show SQL', + }, createScriptTemplatesSubmenu('views'), { label: 'SQL Generator: CREATE VIEW', @@ -276,6 +285,10 @@ { divider: true, }, + { + isShowSql: true, + label: 'Show SQL', + }, createScriptTemplatesSubmenu('matviews'), { label: 'SQL Generator: CREATE MATERIALIZED VIEW', @@ -310,6 +323,10 @@ isRename: true, requiresWriteAccess: true, }, + { + isShowSql: true, + label: 'Show SQL', + }, createScriptTemplatesSubmenu('procedures'), { label: 'SQL Generator: CREATE PROCEDURE', @@ -336,6 +353,10 @@ isRename: true, requiresWriteAccess: true, }, + { + isShowSql: true, + label: 'Show SQL', + }, createScriptTemplatesSubmenu('functions'), { label: 'SQL Generator: CREATE FUNCTION', @@ -611,6 +632,18 @@ // fixedTargetPureName: data.pureName, // }, // }); + } else if (menu.isShowSql) { + openNewTab({ + title: data.pureName, + icon: 'img sql-file', + tabComponent: 'SqlObjectTab', + tabPreviewMode: true, + props: { + appObjectData: data, + conid: data.conid, + database: data.database, + }, + }); } else { openDatabaseObjectDetail( menu.tab, diff --git a/packages/web/src/tabs/SqlObjectTab.svelte b/packages/web/src/tabs/SqlObjectTab.svelte new file mode 100644 index 000000000..8c17026cc --- /dev/null +++ b/packages/web/src/tabs/SqlObjectTab.svelte @@ -0,0 +1,70 @@ + + + + +{#await applyScriptTemplate(scriptTemplate, $extensions, appObjectData)} + +{:then sql} + { + activator.activate(); + domToolStrip?.activate(); + invalidateCommands(); + }} + bind:this={domEditor} + mode={driver?.editorMode || 'sql'} + /> +{/await} diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js index 2e35ac00e..7ae3b90aa 100644 --- a/packages/web/src/tabs/index.js +++ b/packages/web/src/tabs/index.js @@ -28,6 +28,7 @@ import * as ServerSummaryTab from './ServerSummaryTab.svelte'; import * as ProfilerTab from './ProfilerTab.svelte'; import * as DataDuplicatorTab from './DataDuplicatorTab.svelte'; import * as ImportExportTab from './ImportExportTab.svelte'; +import * as SqlObjectTab from './SqlObjectTab.svelte'; import protabs from './index-pro'; @@ -62,5 +63,6 @@ export default { ProfilerTab, DataDuplicatorTab, ImportExportTab, + SqlObjectTab, ...protabs, };