Skip to content

Commit 8bf28c0

Browse files
authored
DataGrid: Don't calculate additional filter when filtering column list is empty (T1311818) (#31849) (#31859)
1 parent a2b8563 commit 8bf28c0

File tree

7 files changed

+57
-8
lines changed

7 files changed

+57
-8
lines changed

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/filter-method-with-case-sensitive-1 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/filtering/etalons/filter-method-with-case-sensitive-1 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/filter-method-with-case-sensitive-2 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/filtering/etalons/filter-method-with-case-sensitive-2 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/filtering-via-option-method-with-case-sensitive-1 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/filtering/etalons/filtering-via-option-method-with-case-sensitive-1 (fluent.blue.light).png

File renamed without changes.

e2e/testcafe-devextreme/tests/dataGrid/common/etalons/filtering-via-option-method-with-case-sensitive-2 (fluent.blue.light).png renamed to e2e/testcafe-devextreme/tests/dataGrid/common/filtering/etalons/filtering-via-option-method-with-case-sensitive-2 (fluent.blue.light).png

File renamed without changes.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import DataGrid from 'devextreme-testcafe-models/dataGrid';
2+
import url from '../../../../helpers/getPageUrl';
3+
import { createWidget } from '../../../../helpers/createWidget';
4+
5+
fixture.disablePageReloads`Filtering`
6+
.page(url(__dirname, '../../../container.html'));
7+
8+
const GRID_CONTAINER = '#container';
9+
10+
// T1311818
11+
test('Don\'t calculate additional filter when filtering column list is empty', async (t) => {
12+
// arrange
13+
const dataGrid = new DataGrid(GRID_CONTAINER);
14+
const consoleMessages = await t.getBrowserConsoleMessages();
15+
16+
// act
17+
await dataGrid.option({
18+
columns: [
19+
{ dataField: 'id', caption: 'ID', dataType: 'number' },
20+
{ dataField: 'name', caption: 'Name', dataType: 'string' },
21+
],
22+
dataSource: [
23+
{ id: 1, name: 'Item 1' },
24+
{ id: 2, name: 'Item 2' },
25+
{ id: 3, name: 'Item 3' },
26+
],
27+
});
28+
29+
// assert
30+
await t.expect(dataGrid.isReady()).ok();
31+
32+
// act
33+
await dataGrid.option({
34+
columns: [],
35+
dataSource: undefined,
36+
});
37+
38+
// assert
39+
await t
40+
.expect(consoleMessages.error.every((msg) => !msg.includes('E1047')))
41+
.ok();
42+
}).before(async () => createWidget('dxDataGrid', {
43+
keyExpr: 'id',
44+
filterValue: ['id', '>=', 1],
45+
dataSource: null,
46+
columns: [],
47+
showBorders: true,
48+
}));

e2e/testcafe-devextreme/tests/dataGrid/common/filtering.ts renamed to e2e/testcafe-devextreme/tests/dataGrid/common/filtering/visual.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { createScreenshotsComparer } from 'devextreme-screenshot-comparer';
22
import DataGrid from 'devextreme-testcafe-models/dataGrid';
3-
import url from '../../../helpers/getPageUrl';
4-
import { createWidget } from '../../../helpers/createWidget';
5-
import { testScreenshot } from '../../../helpers/themeUtils';
3+
import url from '../../../../helpers/getPageUrl';
4+
import { createWidget } from '../../../../helpers/createWidget';
5+
import { testScreenshot } from '../../../../helpers/themeUtils';
66

77
fixture.disablePageReloads`Filtering`
8-
.page(url(__dirname, '../../container.html'));
8+
.page(url(__dirname, '../../../container.html'));
99

1010
const GRID_CONTAINER = '#container';
1111

12-
test('Data should be filtered if True is selected via the filter method when case sensitive is enabled', async (t) => {
12+
test('Data should be filtered if True is selected via the filter method when case sensitivity is enabled', async (t) => {
1313
// arrange
1414
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);
1515
const dataGrid = new DataGrid(GRID_CONTAINER);
@@ -50,7 +50,7 @@ test('Data should be filtered if True is selected via the filter method when cas
5050
showBorders: true,
5151
}));
5252

53-
test('Data should be filtered if True is selected via the option method when case sensitive is enabled', async (t) => {
53+
test('Data should be filtered if True is selected via the option method when case sensitivity is enabled', async (t) => {
5454
// arrange
5555
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);
5656
const dataGrid = new DataGrid(GRID_CONTAINER);

packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_sync.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,13 @@ const data = (Base: ModuleType<DataController>) => class DataControllerFilterSyn
299299
}
300300

301301
protected _calculateAdditionalFilter() {
302-
if (this.option('filterPanel.filterEnabled') === false) {
302+
const columns = this._columnsController.getFilteringColumns();
303+
304+
if (!columns?.length || this.option('filterPanel.filterEnabled') === false) {
303305
return super._calculateAdditionalFilter();
304306
}
305307

306308
const filters = [super._calculateAdditionalFilter()];
307-
const columns = this._columnsController.getFilteringColumns();
308309
let filterValue = this.option('filterValue');
309310

310311
if (this.isFilterSyncActive()) {

0 commit comments

Comments
 (0)