From 698ee3cba14774aaa38987e081ede4e6f08c4cd2 Mon Sep 17 00:00:00 2001 From: alex <48489896+devnaumov@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:21:20 +0100 Subject: [PATCH] dbeaver/pro#7556 hide show sql button for editor and viewer (#3929) Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com> Co-authored-by: sergeyteleshev --- .../package.json | 2 ++ .../DataViewerRequestQueryViewerBootstrap.ts | 11 +++++-- ...ViewerRequestQueryViewerSettingsService.ts | 31 +++++++++++++++++++ .../src/index.ts | 1 + .../src/module.ts | 4 ++- .../tsconfig.json | 6 ++++ webapp/yarn.lock | 2 ++ 7 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerSettingsService.ts diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/package.json b/webapp/packages/plugin-data-viewer-request-query-viewer/package.json index f12981a779..e293971ce0 100644 --- a/webapp/packages/plugin-data-viewer-request-query-viewer/package.json +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/package.json @@ -29,6 +29,8 @@ "@cloudbeaver/core-dialogs": "workspace:*", "@cloudbeaver/core-localization": "workspace:*", "@cloudbeaver/core-navigation-tree": "workspace:*", + "@cloudbeaver/core-settings": "workspace:*", + "@cloudbeaver/core-utils": "workspace:*", "@cloudbeaver/plugin-codemirror6": "workspace:*", "@cloudbeaver/plugin-data-viewer": "workspace:*", "@cloudbeaver/plugin-sql-editor": "workspace:*", diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerBootstrap.ts b/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerBootstrap.ts index 261f00d747..80be1a53a2 100644 --- a/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerBootstrap.ts +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerBootstrap.ts @@ -10,13 +10,18 @@ import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import { importLazyComponent } from '@cloudbeaver/core-blocks'; import { isResultSetDataSource, TableHeaderService } from '@cloudbeaver/plugin-data-viewer'; +import { DataViewerRequestQueryViewerSettingsService } from './DataViewerRequestQueryViewerSettingsService.js'; + export const DataViewerRequestQueryViewer = importLazyComponent(() => import('./DataViewerRequestQueryViewer.js').then(m => m.DataViewerRequestQueryViewer), ); -@injectable(() => [TableHeaderService]) +@injectable(() => [TableHeaderService, DataViewerRequestQueryViewerSettingsService]) export class DataViewerRequestQueryViewerBootstrap extends Bootstrap { - constructor(private readonly tableHeaderService: TableHeaderService) { + constructor( + private readonly tableHeaderService: TableHeaderService, + private readonly dataViewerRequestQueryViewerSettingsService: DataViewerRequestQueryViewerSettingsService, + ) { super(); } @@ -24,7 +29,7 @@ export class DataViewerRequestQueryViewerBootstrap extends Bootstrap { this.tableHeaderService.tableHeaderPlaceholder.add( DataViewerRequestQueryViewer, Number.MIN_SAFE_INTEGER, - props => !isResultSetDataSource(props.model.source), + props => !isResultSetDataSource(props.model.source) || this.dataViewerRequestQueryViewerSettingsService.disabled, ); } } diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerSettingsService.ts b/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerSettingsService.ts new file mode 100644 index 0000000000..8ffa948a54 --- /dev/null +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/src/DataViewerRequestQueryViewerSettingsService.ts @@ -0,0 +1,31 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2025 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { injectable } from '@cloudbeaver/core-di'; +import { SettingsProvider, SettingsProviderService } from '@cloudbeaver/core-settings'; +import { schema, schemaExtra } from '@cloudbeaver/core-utils'; + +const defaultSettings = schema.object({ + 'plugin.data-viewer-request-query-viewer.disabled': schemaExtra.stringedBoolean().default(false), +}); + +export type DataViewerRequestQueryViewerSettingsSchema = typeof defaultSettings; +export type DataViewerRequestQueryViewerSettings = schema.infer; + +@injectable(() => [SettingsProviderService]) +export class DataViewerRequestQueryViewerSettingsService { + get disabled(): boolean { + return this.settings.getValue('plugin.data-viewer-request-query-viewer.disabled'); + } + + readonly settings: SettingsProvider; + + constructor(private readonly settingsProviderService: SettingsProviderService) { + this.settings = this.settingsProviderService.createSettings(defaultSettings); + } +} diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/src/index.ts b/webapp/packages/plugin-data-viewer-request-query-viewer/src/index.ts index f21f300333..ab1cc4caf2 100644 --- a/webapp/packages/plugin-data-viewer-request-query-viewer/src/index.ts +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/src/index.ts @@ -8,3 +8,4 @@ import './module.js'; +export * from './DataViewerRequestQueryViewerSettingsService.js'; diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/src/module.ts b/webapp/packages/plugin-data-viewer-request-query-viewer/src/module.ts index 8704c42296..c5af2b3557 100644 --- a/webapp/packages/plugin-data-viewer-request-query-viewer/src/module.ts +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/src/module.ts @@ -10,6 +10,7 @@ import { Bootstrap, ModuleRegistry, proxy } from '@cloudbeaver/core-di'; import { DataViewerRequestQueryViewerBootstrap } from './DataViewerRequestQueryViewerBootstrap.js'; import { LocaleService } from './LocaleService.js'; +import { DataViewerRequestQueryViewerSettingsService } from './DataViewerRequestQueryViewerSettingsService.js'; export default ModuleRegistry.add({ name: '@cloudbeaver/plugin-data-viewer-request-query-viewer', @@ -18,6 +19,7 @@ export default ModuleRegistry.add({ serviceCollection .addSingleton(Bootstrap, proxy(DataViewerRequestQueryViewerBootstrap)) .addSingleton(Bootstrap, LocaleService) - .addSingleton(DataViewerRequestQueryViewerBootstrap); + .addSingleton(DataViewerRequestQueryViewerBootstrap) + .addSingleton(DataViewerRequestQueryViewerSettingsService); }, }); diff --git a/webapp/packages/plugin-data-viewer-request-query-viewer/tsconfig.json b/webapp/packages/plugin-data-viewer-request-query-viewer/tsconfig.json index a0d2a16637..320af383b8 100644 --- a/webapp/packages/plugin-data-viewer-request-query-viewer/tsconfig.json +++ b/webapp/packages/plugin-data-viewer-request-query-viewer/tsconfig.json @@ -40,6 +40,12 @@ { "path": "../core-navigation-tree" }, + { + "path": "../core-settings" + }, + { + "path": "../core-utils" + }, { "path": "../plugin-codemirror6" }, diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 19fa81d6c5..a6bcc86c7d 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -2944,6 +2944,8 @@ __metadata: "@cloudbeaver/core-dialogs": "workspace:*" "@cloudbeaver/core-localization": "workspace:*" "@cloudbeaver/core-navigation-tree": "workspace:*" + "@cloudbeaver/core-settings": "workspace:*" + "@cloudbeaver/core-utils": "workspace:*" "@cloudbeaver/plugin-codemirror6": "workspace:*" "@cloudbeaver/plugin-data-viewer": "workspace:*" "@cloudbeaver/plugin-sql-editor": "workspace:*"