feat(plugin-data-viewer): CB-2375 Add fetch settings to config

This commit is contained in:
Konstantin Vasilev
2022-08-16 13:55:05 +03:00
parent c3d736a1ad
commit a618cbdf1d
6 changed files with 29 additions and 34 deletions
@@ -11,6 +11,9 @@ import { PluginManagerService, PluginSettings } from '@cloudbeaver/core-plugin';
const defaultSettings = {
disableEdit: false,
fetchMin: 100,
fetchMax: 5000,
fetchDefault: 200,
};
export type DataViewerSettings = typeof defaultSettings;
@@ -25,4 +28,16 @@ export class DataViewerSettingsService {
this.settings = this.pluginManagerService.getPluginSettings('data-viewer', defaultSettings);
this.deprecatedSettings = this.pluginManagerService.getDeprecatedPluginSettings('core.app.dataViewer', defaultSettings);
}
getDefaultRowsCount(count?: number): number {
if (typeof count === 'number' && Number.isNaN(count)) {
count = 0;
}
return count !== undefined
? Math.max(
this.settings.getValue('fetchMin'),
Math.min(count, this.settings.getValue('fetchMax'))
)
: this.settings.getValue('fetchDefault');
}
}
@@ -17,7 +17,7 @@ import type { IDatabaseDataModel } from './DatabaseDataModel/IDatabaseDataModel'
import { DatabaseDataAccessMode } from './DatabaseDataModel/IDatabaseDataSource';
import type { IDatabaseResultSet } from './DatabaseDataModel/IDatabaseResultSet';
import { DataViewerService } from './DataViewerService';
import { getDefaultRowsCount } from './getDefaultRowsCount';
import { DataViewerSettingsService } from './DataViewerSettingsService';
import { TableViewerStorageService } from './TableViewer/TableViewerStorageService';
@injectable()
@@ -29,6 +29,7 @@ export class DataViewerTableService {
private readonly asyncTaskInfoService: AsyncTaskInfoService,
private readonly connectionExecutionContextService: ConnectionExecutionContextService,
private readonly dataViewerService: DataViewerService,
private readonly dataViewerSettingsService: DataViewerSettingsService,
) { }
has(tableId: string): boolean {
@@ -71,7 +72,7 @@ export class DataViewerTableService {
const editable = this.dataViewerService.isDataEditable(connection);
const dataModel = this.tableViewerStorageService.add(new DatabaseDataModel(source))
.setCountGain(getDefaultRowsCount())
.setCountGain(this.dataViewerSettingsService.getDefaultRowsCount())
.setSlice(0)
.setAccess(editable ? DatabaseDataAccessMode.Default : DatabaseDataAccessMode.Readonly);
@@ -11,10 +11,11 @@ import { useCallback, useEffect, useRef, useState } from 'react';
import styled, { css, use } from 'reshadow';
import { SubmittingForm, ToolsPanel } from '@cloudbeaver/core-blocks';
import { useService } from '@cloudbeaver/core-di';
import { useStyles } from '@cloudbeaver/core-theming';
import type { IDatabaseDataModel } from '../../DatabaseDataModel/IDatabaseDataModel';
import { getDefaultRowsCount } from '../../getDefaultRowsCount';
import { DataViewerSettingsService } from '../../DataViewerSettingsService';
import { AutoRefreshButton } from './AutoRefresh/AutoRefreshButton';
import { TableFooterMenu } from './TableFooterMenu/TableFooterMenu';
@@ -78,6 +79,7 @@ export const TableFooter = observer<Props>(function TableFooter({
}) {
const ref = useRef<HTMLInputElement>(null);
const [limit, setLimit] = useState(model.countGain + '');
const dataViewerSettingsService = useService(DataViewerSettingsService);
const handleChange = useCallback(
async () => {
@@ -85,7 +87,7 @@ export const TableFooter = observer<Props>(function TableFooter({
return;
}
const value = getDefaultRowsCount(parseInt(ref.current.value, 10));
const value = dataViewerSettingsService.getDefaultRowsCount(parseInt(ref.current.value, 10));
setLimit(value + '');
if (model.countGain !== value) {
@@ -1,25 +0,0 @@
/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2022 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
const fetchingSettings = {
fetchMin: 100,
fetchMax: 5000,
fetchDefault: 200,
};
export function getDefaultRowsCount(count?: number): number {
if (typeof count === 'number' && Number.isNaN(count)) {
count = 0;
}
return count !== undefined
? Math.max(
fetchingSettings.fetchMin,
Math.min(count, fetchingSettings.fetchMax)
)
: fetchingSettings.fetchDefault;
}
@@ -52,6 +52,6 @@ export * from './TableViewer/TableFooter/TableFooterMenu/TableFooterMenuService'
export * from './ContainerDataSource';
export * from './DataPresentationService';
export * from './DataViewerDataChangeConfirmationService';
export * from './getDefaultRowsCount';
export * from './useDataModel';
export * from './ValuePanelPresentation/BooleanValue/isBooleanValuePresentationAvailable';
export * from './DataViewerSettingsService';
@@ -14,7 +14,8 @@ import { NotificationService } from '@cloudbeaver/core-events';
import { AsyncTaskInfoService, GraphQLService } from '@cloudbeaver/core-sdk';
import {
DatabaseDataAccessMode, DatabaseDataModel, DatabaseEditAction, DataViewerDataChangeConfirmationService,
getDefaultRowsCount, IDatabaseDataModel, IDatabaseResultSet, DataViewerService, TableViewerStorageService
IDatabaseDataModel, IDatabaseResultSet, DataViewerService, TableViewerStorageService,
DataViewerSettingsService
} from '@cloudbeaver/plugin-data-viewer';
import type { IResultGroup, ISqlEditorTabState } from '../ISqlEditorTabState';
@@ -50,7 +51,8 @@ export class SqlQueryService {
private readonly asyncTaskInfoService: AsyncTaskInfoService,
private readonly dataViewerDataChangeConfirmationService: DataViewerDataChangeConfirmationService,
private readonly dataViewerService: DataViewerService,
private readonly sqlDataSourceService: SqlDataSourceService
private readonly sqlDataSourceService: SqlDataSourceService,
private readonly dataViewerSettingsService: DataViewerSettingsService
) {
this.statisticsMap = new Map();
@@ -121,7 +123,7 @@ export class SqlQueryService {
try {
await model
.setCountGain(getDefaultRowsCount())
.setCountGain(this.dataViewerSettingsService.getDefaultRowsCount())
.setSlice(0)
.request();
@@ -209,7 +211,7 @@ export class SqlQueryService {
try {
await model
.setCountGain(getDefaultRowsCount())
.setCountGain(this.dataViewerSettingsService.getDefaultRowsCount())
.setSlice(0)
.request();