Skip to content

Commit b86100e

Browse files
committed
fix(filtering): Fixed expression tree rehydrating before columns are generated
1 parent 786473b commit b86100e

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,8 +1856,8 @@ export abstract class IgxGridBaseDirective implements GridType,
18561856
}
18571857

18581858
value.type = FilteringExpressionsTreeType.Regular;
1859-
if (value && this.columns) {
1860-
this._filteringExpressionsTree = recreateTreeFromFields(value, this.columns) as IFilteringExpressionsTree;
1859+
if (value && this._columns && this._columns.length > 0) {
1860+
this._filteringExpressionsTree = recreateTreeFromFields(value, this._columns) as IFilteringExpressionsTree;
18611861
} else {
18621862
this._filteringExpressionsTree = value;
18631863
}
@@ -1906,7 +1906,11 @@ export abstract class IgxGridBaseDirective implements GridType,
19061906

19071907
if (value && isTree(value)) {
19081908
value.type = FilteringExpressionsTreeType.Advanced;
1909-
this._advancedFilteringExpressionsTree = recreateTreeFromFields(value, this.columns) as IFilteringExpressionsTree;
1909+
if (this._columns && this._columns.length > 0) {
1910+
this._advancedFilteringExpressionsTree = recreateTreeFromFields(value, this._columns) as IFilteringExpressionsTree;
1911+
} else {
1912+
this._advancedFilteringExpressionsTree = value;
1913+
}
19101914
this.filteringPipeTrigger++;
19111915
} else {
19121916
this._advancedFilteringExpressionsTree = null;
@@ -6607,6 +6611,9 @@ export abstract class IgxGridBaseDirective implements GridType,
66076611
if (this._columns && this._filteringExpressionsTree) {
66086612
this._filteringExpressionsTree = recreateTreeFromFields(this._filteringExpressionsTree, this.columns) as IFilteringExpressionsTree;
66096613
}
6614+
if (this._columns && this._advancedFilteringExpressionsTree) {
6615+
this._advancedFilteringExpressionsTree = recreateTreeFromFields(this._advancedFilteringExpressionsTree, this.columns) as IFilteringExpressionsTree;
6616+
}
66106617
this.resetCaches();
66116618
}
66126619

@@ -6668,12 +6675,12 @@ export abstract class IgxGridBaseDirective implements GridType,
66686675
this.autogenerateColumns();
66696676
} else {
66706677
this._columns = this.getColumnList();
6671-
if (this._columns && this._filteringExpressionsTree) {
6672-
this._filteringExpressionsTree = recreateTreeFromFields(this._filteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
6673-
}
6674-
if (this._columns && this._advancedFilteringExpressionsTree) {
6675-
this._advancedFilteringExpressionsTree = recreateTreeFromFields(this._advancedFilteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
6676-
}
6678+
}
6679+
if (this._columns && this._filteringExpressionsTree) {
6680+
this._filteringExpressionsTree = recreateTreeFromFields(this._filteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
6681+
}
6682+
if (this._columns && this._advancedFilteringExpressionsTree) {
6683+
this._advancedFilteringExpressionsTree = recreateTreeFromFields(this._advancedFilteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
66776684
}
66786685

66796686
this.initColumns(this._columns, (col: IgxColumnComponent) => this.columnInit.emit(col));

projects/igniteui-angular/src/lib/grids/grid/grid-filtering-advanced.spec.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
4242
]
4343
});
4444
}));
45-
45+
4646
describe('General tests - ', () => {
4747
let fix: ComponentFixture<IgxGridAdvancedFilteringComponent>;
4848
let grid: IgxGridComponent;
@@ -1226,11 +1226,11 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
12261226
tick(100);
12271227
fix.detectChanges();
12281228

1229-
1229+
12301230
// Populate edit inputs.
12311231
QueryBuilderFunctions.selectColumnInEditModeExpression(fix, 1); // Select 'ProductName' column.
12321232
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, 0); // Select 'Contains' operator.
1233-
1233+
12341234
let input = QueryBuilderFunctions.getQueryBuilderValueInput(fix).querySelector('input');
12351235
UIInteractions.clickAndSendInputElementValue(input, 'angular', fix); // Type filter value.
12361236
// Commit the populated expression.
@@ -1279,7 +1279,7 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
12791279
grid = fix.componentInstance.grid;
12801280
fix.detectChanges();
12811281
}));
1282-
1282+
12831283
it('Should allow hosting Advanced Filtering dialog outside of the grid.', fakeAsync(() => {
12841284
// Add a root 'and' group.
12851285
QueryBuilderFunctions.clickQueryBuilderInitialAddConditionBtn(fix, 0);
@@ -1394,14 +1394,14 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
13941394
});
13951395

13961396
describe('Expression tree serialization - ', () => {
1397-
fit('should correctly filter with a deserialized expression tree.', fakeAsync(() => {
1398-
const errorSpy = spyOn(console, 'error');
1397+
it('should correctly filter with a deserialized expression tree.', fakeAsync(() => {
1398+
const errorSpy = spyOn(console, 'error');
13991399
let fix = TestBed.createComponent(IgxGridAdvancedFilteringSerializedTreeComponent);
1400-
fix.detectChanges();
1400+
fix.detectChanges();
14011401
let grid = fix.componentInstance.grid;
1402-
1402+
14031403
expect(errorSpy).not.toHaveBeenCalled();
1404-
1404+
14051405
// Verify filtered data
14061406
expect(grid.filteredData.length).toEqual(3);
14071407
expect(grid.rowList.length).toBe(3);

0 commit comments

Comments
 (0)