mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
feat(plugin-data-viewer): CB-2375 Add fetch settings to config
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user