Skip to content

Commit 6316199

Browse files
committed
chore(*): fix filtering when child grid is empty
1 parent 595c3cb commit 6316199

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

projects/igniteui-angular/src/lib/data-operations/filtering-strategy.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ export abstract class BaseFilteringStrategy implements IFilteringStrategy {
4242
if (expr.searchTree) {
4343
const records = rec[expr.searchTree.entity];
4444
const shouldMatchRecords = expr.conditionName === 'inQuery';
45-
// if records is empty, it means that the child grid is not created yet
46-
if (!records || !records.length) {
45+
if (!records) { // child grid is not yet created
4746
return true;
47+
} else if (records.length === 0) { // child grid is empty
48+
return false;
4849
}
4950

5051
for (let index = 0; index < records.length; index++) {

src/app/hierarchical-grid-advanced-filtering/hierarchical-grid-advanced-filtering.sample.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,28 @@ export class HierarchicalGridAdvancedFilteringSampleComponent implements AfterVi
2727
}
2828

2929
public ngAfterViewInit() {
30-
const innerTree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Albums', ['Artist']);
31-
innerTree.filteringOperands.push({
30+
const albumsTree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Albums', ['Artist']);
31+
albumsTree.filteringOperands.push({
3232
fieldName: 'USBillboard200',
3333
condition: IgxNumberFilteringOperand.instance().condition('lessThanOrEqualTo'),
3434
conditionName: IgxNumberFilteringOperand.instance().condition('lessThanOrEqualTo').name,
3535
searchVal: 5
3636
});
37-
const tree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Artists', ['*']);
38-
tree.filteringOperands.push({
37+
// const toursTree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Tours', ['TouredBy']);
38+
// toursTree.filteringOperands.push({
39+
// fieldName: 'Headliner',
40+
// condition: IgxStringFilteringOperand.instance().condition('equals'),
41+
// conditionName: IgxStringFilteringOperand.instance().condition('equals').name,
42+
// searchVal: 'YES'
43+
// });
44+
const artistsTree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Artists', ['*']);
45+
artistsTree.filteringOperands.push({
3946
fieldName: 'Artist',
4047
condition: IgxStringFilteringOperand.instance().condition('inQuery'),
4148
conditionName: IgxStringFilteringOperand.instance().condition('inQuery').name,
42-
searchTree: innerTree
49+
searchTree: albumsTree
4350
});
44-
this.hierarchicalGrid.advancedFilteringExpressionsTree = tree;
51+
this.hierarchicalGrid.advancedFilteringExpressionsTree = artistsTree;
4552
this.cdr.detectChanges();
4653
}
4754
}

0 commit comments

Comments
 (0)