diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataAction.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataAction.ts index 636d6f95c8..b4d87c9e84 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataAction.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataAction.ts @@ -13,13 +13,17 @@ import type { IDatabaseDataResult } from './IDatabaseDataResult'; import type { IDatabaseDataSource } from './IDatabaseDataSource'; export abstract class DatabaseDataAction - implements IDatabaseDataAction { +implements IDatabaseDataAction { result: TResult; get resultIndex(): number { return this.source.results.indexOf(this.result); } + get empty(): boolean { + return !this.result.data; + } + readonly source: IDatabaseDataSource; constructor(source: IDatabaseDataSource, result: TResult) { diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataAction.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataAction.ts index d054138248..f0158dfa94 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataAction.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataAction.ts @@ -51,6 +51,7 @@ export type IDatabaseDataActionClass< export interface IDatabaseDataAction { readonly source: IDatabaseDataSource; + readonly empty: boolean; result: TResult; resultIndex: number; updateResult: (result: TResult) => void; diff --git a/webapp/packages/plugin-data-viewer/src/TableViewer/ValuePanel/DataValuePanelBootstrap.ts b/webapp/packages/plugin-data-viewer/src/TableViewer/ValuePanel/DataValuePanelBootstrap.ts index f93df97306..48525b5afe 100644 --- a/webapp/packages/plugin-data-viewer/src/TableViewer/ValuePanel/DataValuePanelBootstrap.ts +++ b/webapp/packages/plugin-data-viewer/src/TableViewer/ValuePanel/DataValuePanelBootstrap.ts @@ -10,6 +10,7 @@ import React from 'react'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; +import { ResultSetDataAction } from '../../DatabaseDataModel/Actions/ResultSet/ResultSetDataAction'; import { DataPresentationService, DataPresentationType } from '../../DataPresentationService'; import { DataValuePanelService } from './DataValuePanelService'; @@ -37,7 +38,15 @@ export class DataValuePanelBootstrap extends Bootstrap { dataFormat, model, resultIndex - ) => this.dataValuePanelService.getDisplayed({ model, resultIndex, dataFormat }).length === 0, + ) => { + if (!model.source.hasResult(resultIndex)) { + return true; + } + + const data = model.source.getAction(resultIndex, ResultSetDataAction); + return data.empty + || this.dataValuePanelService.getDisplayed({ model, resultIndex, dataFormat }).length === 0; + }, getPresentationComponent: () => ValuePanel, }); }