Skip to content

Commit 22aa835

Browse files
authored
feat(query-builder): add field formatter & support object search values (#14930)
* feat(query-builder): use field formatter to support object search values
1 parent 2fa39b1 commit 22aa835

File tree

5 files changed

+241
-130
lines changed

5 files changed

+241
-130
lines changed

projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ <h6 class="igx-filter-empty__title">
9696
<span igxPrefix class="igx-filter-tree__expression-condition">
9797
{{
9898
getConditionFriendlyName(
99-
expressionItem.expression.condition.name
99+
expressionItem.expression.condition?.name
100100
)
101101
}}
102102
</span>
@@ -106,35 +106,59 @@ <h6 class="igx-filter-empty__title">
106106
</ng-container>
107107

108108
<ng-container *ngIf="!expressionItem.expression.searchTree">
109-
{{
110-
isDate(expressionItem.expression.searchVal)
111-
? getFormatter(expressionItem.expression.fieldName)
112-
? (expressionItem.expression.searchVal
113-
| fieldFormatter
114-
: getFormatter(
115-
expressionItem.expression.fieldName
116-
)
117-
: undefined)
118-
: (expressionItem.expression.searchVal
119-
| date
120-
: getFormat(
121-
expressionItem.expression.fieldName
122-
)
123-
: undefined
124-
: this.locale)
125-
: expressionItem.expression.searchVal
126-
}}
109+
@if(isDate(expressionItem.expression.searchVal)) {
110+
@if(getFormatter(expressionItem.expression.fieldName)) {
111+
{{
112+
expressionItem.expression.searchVal
113+
| fieldFormatter
114+
: getFormatter(
115+
expressionItem.expression.fieldName
116+
)
117+
: undefined
118+
}}
119+
} @else {
120+
{{
121+
expressionItem.expression.searchVal
122+
| date
123+
: getFormat(
124+
expressionItem.expression.fieldName
125+
)
126+
: undefined
127+
: this.locale
128+
}}
129+
}
130+
} @else {
131+
@if(getFormatter(expressionItem.expression.fieldName)) {
132+
{{
133+
expressionItem.expression.searchVal
134+
| fieldFormatter
135+
: getFormatter(expressionItem.expression.fieldName)
136+
: (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)
137+
}}
138+
} @else {
139+
{{ expressionItem.expression.searchVal }}
140+
}
141+
}
127142
</ng-container>
128143
</span>
129144
</igx-chip>
130145
<div #tooltipRef="tooltip" igxTooltip>
131-
{{
132-
expressionItem.expression.searchTree ?
133-
expressionItem.expression.searchTree.returnFields.join(', ') :
134-
expressionItem.expression.condition.isUnary ?
135-
getConditionFriendlyName(expressionItem.expression.condition.name) :
146+
@if(expressionItem.expression.searchTree){
147+
{{expressionItem.expression.searchTree.returnFields.join(', ')}}
148+
} @else if (expressionItem.expression.condition.isUnary) {
149+
{{getConditionFriendlyName(expressionItem.expression.condition?.name)}}
150+
} @else {
151+
@if(getFormatter(expressionItem.expression.fieldName)) {
152+
{{
136153
expressionItem.expression.searchVal
137-
}}
154+
| fieldFormatter
155+
: getFormatter(expressionItem.expression.fieldName)
156+
: (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)
157+
}}
158+
} @else {
159+
{{ expressionItem.expression.searchVal }}
160+
}
161+
}
138162
</div>
139163
<div
140164
class="igx-filter-tree__expression-actions"

projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { IButtonGroupEventArgs, IgxButtonGroupComponent } from '../buttonGroup/b
1919
import { IgxChipComponent } from '../chips/chip.component';
2020
import { IQueryBuilderResourceStrings, QueryBuilderResourceStringsEN } from '../core/i18n/query-builder-resources';
2121
import { PlatformUtil } from '../core/utils';
22-
import { DataType, DataUtil } from '../data-operations/data-util';
22+
import { DataType } from '../data-operations/data-util';
2323
import { IgxBooleanFilteringOperand, IgxDateFilteringOperand, IgxDateTimeFilteringOperand, IgxNumberFilteringOperand, IgxStringFilteringOperand, IgxTimeFilteringOperand } from '../data-operations/filtering-condition';
2424
import { FilteringLogic, IFilteringExpression } from '../data-operations/filtering-expression.interface';
2525
import { FilteringExpressionsTree, IExpressionTree, IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
@@ -738,7 +738,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
738738
this._editedExpression.expression.fieldName = this.selectedField.field;
739739
this._editedExpression.expression.condition = this.selectedField.filters.condition(this.selectedCondition);
740740
this._editedExpression.expression.conditionName = this.selectedCondition;
741-
this._editedExpression.expression.searchVal = DataUtil.parseValue(this.selectedField.dataType, actualSearchValue);
741+
this._editedExpression.expression.searchVal = actualSearchValue;
742742
this._editedExpression.fieldLabel = this.selectedField.label
743743
? this.selectedField.label
744744
: this.selectedField.header
@@ -1145,7 +1145,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
11451145
* @hidden @internal
11461146
*/
11471147
public getFormatter(field: string) {
1148-
return this.fields.find(el => el.field === field).formatter;
1148+
return this.fields.find(el => el.field === field)?.formatter;
11491149
}
11501150

11511151
/**

0 commit comments

Comments
 (0)