diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuFilter/DataGridContextMenuFilterService.ts b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuFilter/DataGridContextMenuFilterService.ts index ec18909c7d..5937a2b323 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuFilter/DataGridContextMenuFilterService.ts +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuFilter/DataGridContextMenuFilterService.ts @@ -60,10 +60,10 @@ export class DataGridContextMenuFilterService { const data = model.source.getAction(resultIndex, ResultSetDataAction); const columnLabel = data.getColumn(column)?.label || ''; - await model.requestDataAction(() => - constraints.setFilter(columnLabel, operator, filterValue) - ); - await model.refresh(); + await model.requestDataAction(async () => { + constraints.setFilter(columnLabel, operator, filterValue); + await model.refresh(true); + }); } private async getClipboardValue() { @@ -158,10 +158,10 @@ export class DataGridContextMenuFilterService { const { model, resultIndex } = context.data; const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - await model.requestDataAction(() => - constraints.deleteData() - ); - await model.refresh(); + await model.requestDataAction(async () => { + constraints.deleteData(); + await model.refresh(true); + }); }, } ); @@ -401,10 +401,10 @@ export class DataGridContextMenuFilterService { const data = model.source.getAction(resultIndex, ResultSetDataAction); const columnLabel = data.getColumn(key.column)?.label || ''; - await model.requestDataAction(() => - constraints.deleteFilter(columnLabel) - ); - await model.refresh(); + await model.requestDataAction(async () => { + constraints.deleteFilter(columnLabel); + await model.refresh(true); + }); }, } ); @@ -428,10 +428,10 @@ export class DataGridContextMenuFilterService { const { model, resultIndex } = context.data; const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); - await model.requestDataAction(() => - constraints.deleteDataFilters() - ); - await model.refresh(); + await model.requestDataAction(async () => { + constraints.deleteDataFilters(); + await model.refresh(true); + }); }, } ); diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts index 7832546fc6..6585324ca8 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuOrderService.ts @@ -33,10 +33,10 @@ export class DataGridContextMenuOrderService { const constraints = model.source.getAction(resultIndex, ResultSetConstraintAction); const columnLabel = data.getColumn(column)?.label || ''; - await model.requestDataAction(() => - constraints.setOrder(columnLabel, order, true) - ); - await model.refresh(); + await model.requestDataAction(async () => { + constraints.setOrder(columnLabel, order, true); + await model.refresh(true); + }); } register(): void { @@ -141,10 +141,10 @@ export class DataGridContextMenuOrderService { isDisabled: context => context.data.model.isLoading(), onClick: async context => { const constraints = context.data.model.source.getAction(context.data.resultIndex, ResultSetConstraintAction); - await context.data.model.requestDataAction(() => - constraints.deleteOrders() - ); - await context.data.model.refresh(); + await context.data.model.requestDataAction(async () => { + constraints.deleteOrders(); + await context.data.model.refresh(true); + }); }, } ); diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx index e14077ed0e..22fb1f0169 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/TableColumnHeader/OrderButton.tsx @@ -70,8 +70,8 @@ export const OrderButton = observer(function OrderButton({ const nextOrder = getNextOrder(currentOrder); await model.requestDataAction(async () => { constraints.setOrder(attribute, nextOrder, e.ctrlKey || e.metaKey); + await model.refresh(true); }); - await model.refresh(); }; return styled(styles)( diff --git a/webapp/packages/plugin-data-viewer/src/DataViewerTabService.ts b/webapp/packages/plugin-data-viewer/src/DataViewerTabService.ts index d384198e8d..60002284a1 100644 --- a/webapp/packages/plugin-data-viewer/src/DataViewerTabService.ts +++ b/webapp/packages/plugin-data-viewer/src/DataViewerTabService.ts @@ -125,7 +125,7 @@ export class DataViewerTabService { // TODO: used for initial data fetch, but can repeat request each time data tab is selected, // so probably should be refactored and managed by presentation if (model.source.error === null && model.source.results.length === 0) { - model.requestData(); + model.refresh(); } } diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataModel.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataModel.ts index a6156065ce..dd80d521f1 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataModel.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataModel.ts @@ -117,12 +117,16 @@ implements IDatabaseDataModel { await this.requestDataAction(() => this.source.retry()); } - async refresh(): Promise { - await this.requestData(); + async refresh(concurrent?: boolean): Promise { + if (concurrent) { + await this.source.requestData(); + return; + } + await this.requestDataAction(() => this.source.requestData()); } async reload(): Promise { - await this.requestDataAction(() => this + await this.requestDataAction(() => this.source .setSlice(0, this.countGain) .requestData() ); @@ -137,10 +141,6 @@ implements IDatabaseDataModel { } } - async requestData(): Promise { - await this.requestDataAction(() => this.source.requestData()); - } - cancel(): Promise | void { return this.source.cancel(); } @@ -157,8 +157,8 @@ implements IDatabaseDataModel { return action(); } - async requestDataAction(action: () => Promise | void, concurrent?: boolean): Promise { - if (this.currentTask && !concurrent) { + async requestDataAction(action: () => Promise | void): Promise { + if (this.currentTask) { return this.currentTask; } diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts index 099d2dff28..b4df88841c 100644 --- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts +++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/IDatabaseDataModel.ts @@ -43,11 +43,10 @@ export interface IDatabaseDataModel Promise; requestDataAction: (action: () => Promise | void) => Promise; retry: () => Promise; - save: (concurrent?: boolean) => Promise; - refresh: () => Promise; + save: () => Promise; + refresh: (concurrent?: boolean) => Promise; reload: () => Promise; requestDataPortion: (offset: number, count: number) => Promise; - requestData: () => Promise; cancel: () => Promise | void; resetData: () => void; dispose: () => Promise; diff --git a/webapp/packages/plugin-data-viewer/src/TableViewer/TableHeader/TableWhereFilter.tsx b/webapp/packages/plugin-data-viewer/src/TableViewer/TableHeader/TableWhereFilter.tsx index 7d79a89752..3575f6387e 100644 --- a/webapp/packages/plugin-data-viewer/src/TableViewer/TableHeader/TableWhereFilter.tsx +++ b/webapp/packages/plugin-data-viewer/src/TableViewer/TableHeader/TableWhereFilter.tsx @@ -73,14 +73,14 @@ export const TableWhereFilter: PlaceholderComponent - constraints.deleteDataFilters() - ); + await model.requestDataAction(async () => { + constraints.deleteDataFilters(); - const applyNeeded = !!model.requestInfo.requestFilter; - if (applyNeeded) { - await model.refresh(); - } + const applyNeeded = !!model.requestInfo.requestFilter; + if (applyNeeded) { + await model.refresh(true); + } + }); }, []); return styled(useStyles(styles))( diff --git a/webapp/packages/plugin-sql-editor/src/SqlResultTabs/SqlQueryService.ts b/webapp/packages/plugin-sql-editor/src/SqlResultTabs/SqlQueryService.ts index a65638c096..4e40f189a2 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlResultTabs/SqlQueryService.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlResultTabs/SqlQueryService.ts @@ -105,7 +105,7 @@ export class SqlQueryService { await model .setCountGain(getDefaultRowsCount()) .setSlice(0) - .requestData(); + .refresh(); this.sqlQueryResultService.updateGroupTabs(editorState, model, tabGroup.groupId); } catch (exception) { @@ -179,7 +179,7 @@ export class SqlQueryService { await model .setCountGain(getDefaultRowsCount()) .setSlice(0) - .requestData(); + .refresh(); statistics.executedQueries++; statistics.executeTime += source.requestInfo.requestDuration;