Skip to content

Commit f94f1d0

Browse files
authored
Merge branch '19.1.x' into mpopov/query-builder/fix-fake-ghost-colors-19-1-x
2 parents 765411d + 68cb311 commit f94f1d0

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export enum FilteringLogic {
77
Or
88
}
99

10-
/* tsPlainInterface */
1110
/* marshalByValue */
1211
/**
1312
* Represents filtering expressions.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export declare interface IExpressionTree {
1616
returnFields?: string[] | null;
1717
}
1818

19+
/* alternateBaseType: ExpressionTree */
1920
/* marshalByValue */
2021
export declare interface IFilteringExpressionsTree extends IBaseEventArgs, IExpressionTree {
2122
filteringOperands: (IFilteringExpressionsTree | IFilteringExpression)[];

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,29 @@ describe('Unit testing FilteringStrategy', () => {
4949
const res = fs.matchRecord(rec, expressionTree);
5050
expect(res).toBeTruthy();
5151
});
52+
53+
it ('tests `findMatchByExpression` for working with filtering operands with missing condition', () => {
54+
const rec = data[0];
55+
const expressionTree = JSON.parse('{"filteringOperands":[{"fieldName":"Missing","condition":{"name":"notEmpty","isUnary":true,"iconName":"filter_not_empty"},"conditionName":"notEmpty","ignoreCase":true,"searchVal":null,"searchTree":null}],"operator":0,"returnFields":[],"type":1}');
56+
const res = fs.matchRecord(rec, expressionTree);
57+
expect(res).toBeFalsy();
58+
});
59+
60+
it ('no error when condition is missing in the filtering expressions tree', () => {
61+
const rec = data[0];
62+
const expressionTree = new FilteringExpressionsTree(FilteringLogic.Or);
63+
expressionTree.filteringOperands = [
64+
{
65+
conditionName: 'contains',
66+
fieldName: 'string',
67+
ignoreCase: false,
68+
searchVal: 'ROW'
69+
}
70+
];
71+
const res = fs.matchRecord(rec, expressionTree);
72+
expect(res).toBeFalsy();
73+
});
74+
5275
it ('tests `findMatch`', () => {
5376
const rec = data[0];
5477
const res = fs.findMatchByExpression(rec, {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ export interface IgxFilterItem {
3939
export abstract class BaseFilteringStrategy implements IFilteringStrategy {
4040
// protected
4141
public findMatchByExpression(rec: any, expr: IFilteringExpression, isDate?: boolean, isTime?: boolean, grid?: GridType): boolean {
42-
const cond = expr.condition;
4342
const val = this.getFieldValue(rec, expr.fieldName, isDate, isTime, grid);
44-
return cond.logic(val, expr.searchVal, expr.ignoreCase);
43+
if (expr.condition?.logic) {
44+
return expr.condition.logic(val, expr.searchVal, expr.ignoreCase);
45+
}
4546
}
4647

4748
// protected

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6608,10 +6608,10 @@ export abstract class IgxGridBaseDirective implements GridType,
66086608
.filter((c) => c.pinned);
66096609
this._unpinnedColumns = newColumns.filter((c) => !c.pinned);
66106610
this._columns = newColumns;
6611-
if (this._columns && this._filteringExpressionsTree) {
6611+
if (this._columns && this._columns.length && this._filteringExpressionsTree) {
66126612
this._filteringExpressionsTree = recreateTreeFromFields(this._filteringExpressionsTree, this.columns) as IFilteringExpressionsTree;
66136613
}
6614-
if (this._columns && this._advancedFilteringExpressionsTree) {
6614+
if (this._columns && this._columns.length && this._advancedFilteringExpressionsTree) {
66156615
this._advancedFilteringExpressionsTree = recreateTreeFromFields(this._advancedFilteringExpressionsTree, this.columns) as IFilteringExpressionsTree;
66166616
}
66176617
this.resetCaches();
@@ -6676,10 +6676,10 @@ export abstract class IgxGridBaseDirective implements GridType,
66766676
} else {
66776677
this._columns = this.getColumnList();
66786678
}
6679-
if (this._columns && this._filteringExpressionsTree) {
6679+
if (this._columns && this._columns.length && this._filteringExpressionsTree) {
66806680
this._filteringExpressionsTree = recreateTreeFromFields(this._filteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
66816681
}
6682-
if (this._columns && this._advancedFilteringExpressionsTree) {
6682+
if (this._columns && this._columns.length && this._advancedFilteringExpressionsTree) {
66836683
this._advancedFilteringExpressionsTree = recreateTreeFromFields(this._advancedFilteringExpressionsTree, this._columns) as IFilteringExpressionsTree;
66846684
}
66856685

0 commit comments

Comments
 (0)