diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index d6eb21e46..07fc7f435 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -710,6 +710,13 @@ export abstract class GridDisplay { // return sql; } + getPageQueryText(offset: number, count: number) { + const select = this.getPageQuery(offset, count); + const sql = treeToSql(this.driver, select, dumpSqlSelect); + return sql; + } + + getExportQuery(postprocessSelect = null) { const select = this.createSelect({ isExport: true }); if (!select) return null; diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index a44bd39e9..e7429136c 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -462,6 +462,7 @@ export let tabControlHiddenTab = false; export let onCustomGridRefresh = null; export let onOpenQuery = null; + export let onOpenQueryOnError = null; export let jslid; // export let generalAllowSave = false; export let hideGridLeftColumn = false; @@ -1838,8 +1839,8 @@ display.clearFilters()} /> display.resetConfig()} /> - {#if onOpenQuery} - + {#if onOpenQueryOnError ?? onOpenQuery} + {/if} {:else if isDynamicStructure && isLoadedAll && grider?.rowCount == 0} diff --git a/packages/web/src/datagrid/SqlDataGridCore.svelte b/packages/web/src/datagrid/SqlDataGridCore.svelte index 471240974..caa6ec989 100644 --- a/packages/web/src/datagrid/SqlDataGridCore.svelte +++ b/packages/web/src/datagrid/SqlDataGridCore.svelte @@ -82,6 +82,7 @@ import LoadingDataGridCore from './LoadingDataGridCore.svelte'; import hasPermission from '../utility/hasPermission'; import { openImportExportTab } from '../utility/importExportTools'; + import { getIntSettingsValue } from '../settings/settingsTools'; export let conid; export let display; @@ -147,7 +148,7 @@ // showModal(ImportExportModal, { initialValues }); } - export function openQuery() { + export function openQuery(sql?) { openNewTab( { title: 'Query #', @@ -162,11 +163,15 @@ }, }, { - editor: display.getExportQuery(), + editor: sql ?? display.getExportQuery(), } ); } + function openQueryOnError() { + openQuery(display.getPageQueryText(0, getIntSettingsValue('dataGrid.pageSize', 100, 5, 1000))); + } + export function openActiveChart() { openNewTab( { @@ -241,4 +246,5 @@ {grider} {display} onOpenQuery={openQuery} + onOpenQueryOnError={openQueryOnError} />