Skip to content

Commit dd9823f

Browse files
committed
fix(query-builder): returnFields should be '*' on entity change
1 parent 4c537ec commit dd9823f

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,13 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
610610

611611
if (this._expressionTree) {
612612
this._expressionTree.entity = this._entityNewValue.name;
613-
this._expressionTree.returnFields = [];
613+
614+
if (this.fields.length === this._selectedReturnFields.length) {
615+
this._expressionTree.returnFields = ['*'];
616+
} else {
617+
this._expressionTree.returnFields = this._selectedReturnFields;
618+
}
619+
614620
this._expressionTree.filteringOperands = [];
615621

616622
this._editedExpression = null;

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,32 @@ describe('IgxQueryBuilder', () => {
444444
expect((dropdownItems[4] as HTMLElement).innerText).toBe('Released');
445445
}));
446446

447+
it('ReturnFields should be properly calculated.', fakeAsync(() => {
448+
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
449+
queryBuilder.showEntityChangeDialog = false;
450+
fix.detectChanges();
451+
452+
// Verify the returnFields
453+
let exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
454+
expect(exprTreeReturnFields).toBe(`["*"]`);
455+
456+
// Change the selected return fields
457+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [1]);
458+
tick(100);
459+
fix.detectChanges();
460+
461+
// Verify the returnFields
462+
exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
463+
expect(exprTreeReturnFields).toBe(`["OrderId"]`);
464+
465+
// Change the entity
466+
QueryBuilderFunctions.selectEntityAndClickInitialAddCondition(fix, 0);
467+
468+
// Verify the returnFields
469+
exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
470+
expect(exprTreeReturnFields).toBe(`["*"]`);
471+
}));
472+
447473
it('Column dropdown should contain proper fields based on the entity.', fakeAsync(() => {
448474
const queryBuilderElement: HTMLElement = fix.debugElement.queryAll(By.css(`.${QueryBuilderSelectors.QUERY_BUILDER_TREE}`))[0].nativeElement;
449475

0 commit comments

Comments
 (0)