Merge pull request #679 from dbeaver/fix/remove-constraints-on-presentation-change

Fix/remove constraints on presentation change
This commit is contained in:
Alexey
2022-02-24 17:13:06 +03:00
committed by GitHub
@@ -11,11 +11,12 @@ import { observer } from 'mobx-react-lite';
import { useEffect } from 'react';
import styled, { css } from 'reshadow';
import { Loader, Pane, ResizerControls, Split, splitStyles, TextPlaceholder, useObservableRef } from '@cloudbeaver/core-blocks';
import { Loader, Pane, ResizerControls, Split, splitStyles, TextPlaceholder, useObjectRef, useObservableRef } from '@cloudbeaver/core-blocks';
import { useService } from '@cloudbeaver/core-di';
import { ResultDataFormat } from '@cloudbeaver/core-sdk';
import { composes, useStyles } from '@cloudbeaver/core-theming';
import { ResultSetConstraintAction } from '../DatabaseDataModel/Actions/ResultSet/ResultSetConstraintAction';
import { DataPresentationService, DataPresentationType } from '../DataPresentationService';
import type { IDataTableActionsPrivate } from './IDataTableActions';
import { TableError } from './TableError';
@@ -120,6 +121,16 @@ export const TableViewer = observer<Props>(function TableViewer({
const loading = dataModel?.isLoading() ?? true;
const dataFormat = result?.dataFormat || ResultDataFormat.Resultset;
const localActions = useObjectRef({
clearConstraints() {
const constraints = dataModel?.source.tryGetAction(resultIndex, ResultSetConstraintAction);
if (constraints) {
constraints.deleteAll();
}
},
});
const dataTableActions = useObservableRef<IDataTableActionsPrivate>(() => ({
setPresentation(id: string) {
const presentation = dataPresentationService.get(id);
@@ -131,6 +142,8 @@ export const TableViewer = observer<Props>(function TableViewer({
) {
this.dataModel?.setDataFormat(presentation.dataFormat).reload();
}
localActions.clearConstraints();
this.onPresentationChange(id);
}
},
@@ -196,6 +209,7 @@ export const TableViewer = observer<Props>(function TableViewer({
const presentation = dataPresentationService.get(presentationId);
if (presentation?.dataFormat && !dataModel.supportedDataFormats.includes(presentation.dataFormat)) {
localActions.clearConstraints();
onPresentationChange(dataFormat);
}
}, [dataFormat]);