Skip to content

Commit b3c60b4

Browse files
committed
fix(grid): move 'in' condition to the IgxFilteringOperand class #5216
# Conflicts: # projects/igniteui-angular/src/lib/data-operations/filtering-condition.ts
1 parent b36197b commit b3c60b4

File tree

2 files changed

+27
-44
lines changed

2 files changed

+27
-44
lines changed

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

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,27 @@ export class IgxFilteringOperand {
2323
logic: (target: any) => {
2424
return target !== null;
2525
}
26+
}, {
27+
name: 'in',
28+
isUnary: false,
29+
iconName: 'is_in',
30+
hidden: true,
31+
logic: (target: any, searchVal: Set<any>) => {
32+
return this.findValueInSet(target, searchVal);
33+
}
2634
}];
2735
}
2836

2937
public static instance(): IgxFilteringOperand {
3038
return this._instance || (this._instance = new this());
3139
}
3240

41+
protected findValueInSet(target: any, searchVal: Set<any>) {
42+
return searchVal.has(target);
43+
}
44+
3345
public conditionList(): string[] {
34-
return this.operations.map((element) => element.name);
46+
return this.operations.filter(f => !f.hidden).map((element) => element.name);
3547
}
3648

3749
public condition(name: string): IFilteringOperation {
@@ -362,6 +374,10 @@ export class IgxDateFilteringOperand extends IgxFilteringOperand {
362374
throw new Error('Could not perform filtering on \'date\' column because the datasource object type is not \'Date\'.');
363375
}
364376
}
377+
378+
protected findValueInSet(target: any, searchVal: Set<any>) {
379+
return searchVal.has(new Date(target.getFullYear(), target.getMonth(), target.getDate()).toISOString());
380+
}
365381
}
366382

367383
/**
@@ -532,6 +548,7 @@ export interface IFilteringOperation {
532548
name: string;
533549
isUnary: boolean;
534550
iconName: string;
551+
hidden?: boolean;
535552
logic: (value: any, searchVal?: any, ignoreCase?: boolean) => boolean;
536553
}
537554

@@ -549,27 +566,3 @@ export interface IDateParts {
549566
seconds: number;
550567
milliseconds: number;
551568
}
552-
553-
/**
554-
* @hidden
555-
*/
556-
export class InFilteringOperation implements IFilteringOperation {
557-
name = 'in';
558-
isUnary = false;
559-
iconName = 'is_in';
560-
logic = (target: any, searchVal: Set<any>) => {
561-
return searchVal.has(target);
562-
}
563-
}
564-
565-
/**
566-
* @hidden
567-
*/
568-
export class InDateFilteringOperation extends InFilteringOperation {
569-
logic = (target: any, searchVal: Set<any>) => {
570-
if (target instanceof Date) {
571-
return searchVal.has(new Date(target.getFullYear(), target.getMonth(), target.getDate()).toISOString());
572-
}
573-
return searchVal.has(target);
574-
}
575-
}

projects/igniteui-angular/src/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.ts

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ import {
2525
IgxStringFilteringOperand,
2626
IgxNumberFilteringOperand,
2727
IgxBooleanFilteringOperand,
28-
IgxDateFilteringOperand,
29-
InFilteringOperation,
30-
InDateFilteringOperation
28+
IgxDateFilteringOperand
3129
} from '../../../data-operations/filtering-condition';
3230
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../../data-operations/filtering-expressions-tree';
3331
import { FilteringLogic, IFilteringExpression } from '../../../data-operations/filtering-expression.interface';
@@ -579,22 +577,14 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy, AfterView
579577
selectedItems.splice(blanksItemIndex, 1);
580578
}
581579

582-
if (this.column.dataType === DataType.Date) {
583-
filterTree.filteringOperands.push({
584-
condition: new InDateFilteringOperation(),
585-
fieldName: this.column.field,
586-
ignoreCase: this.column.filteringIgnoreCase,
587-
searchVal: new Set(selectedItems.map(d =>
588-
new Date(d.value.getFullYear(), d.value.getMonth(), d.value.getDate()).toISOString()))
589-
});
590-
} else {
591-
filterTree.filteringOperands.push({
592-
condition: new InFilteringOperation(),
593-
fieldName: this.column.field,
594-
ignoreCase: this.column.filteringIgnoreCase,
595-
searchVal: new Set(selectedItems.map(e => e.value))
596-
});
597-
}
580+
filterTree.filteringOperands.push({
581+
condition: this.createCondition('in'),
582+
fieldName: this.column.field,
583+
ignoreCase: this.column.filteringIgnoreCase,
584+
searchVal: new Set(this.column.dataType === DataType.Date ?
585+
selectedItems.map(d => new Date(d.value.getFullYear(), d.value.getMonth(), d.value.getDate()).toISOString()) :
586+
selectedItems.map(e => e.value))
587+
});
598588

599589
if (blanksItem) {
600590
filterTree.filteringOperands.push({

0 commit comments

Comments
 (0)