Skip to content

Commit a7b6942

Browse files
authored
fix(query-builder): returnFields should be '*' on entity change / all fileds are selected (#15445)
* fix(query-builder): returnFields should be '*' on entity change ---------
1 parent d1fb678 commit a7b6942

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

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

+4-2
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,9 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
610610

611611
if (this._expressionTree) {
612612
this._expressionTree.entity = this._entityNewValue.name;
613-
this._expressionTree.returnFields = [];
613+
614+
this._expressionTree.returnFields = this.fields.length === this._selectedReturnFields.length ? ['*'] : this._selectedReturnFields;
615+
614616
this._expressionTree.filteringOperands = [];
615617

616618
this._editedExpression = null;
@@ -643,7 +645,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
643645
this._selectedReturnFields = value;
644646

645647
if (this._expressionTree && !this.parentExpression) {
646-
this._expressionTree.returnFields = value;
648+
this._expressionTree.returnFields = value.length === this.fields.length ? ['*'] : value;
647649
this.expressionTreeChange.emit(this._expressionTree);
648650
}
649651
}

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

+50
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,56 @@ describe('IgxQueryBuilder', () => {
444444
expect((dropdownItems[4] as HTMLElement).innerText).toBe('Released');
445445
}));
446446

447+
it('ReturnFields should be properly calculated on entity change.', 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+
473+
it('ReturnFields should be properly calculated on selectAll click.', fakeAsync(() => {
474+
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
475+
queryBuilder.showEntityChangeDialog = false;
476+
fix.detectChanges();
477+
478+
// Click selectAll button in order to deselect all fields
479+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0]);
480+
tick(100);
481+
fix.detectChanges();
482+
483+
// Verify the returnFields
484+
let exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
485+
expect(exprTreeReturnFields).toBe(`[]`);
486+
487+
// Click selectAll button in order to select all fields
488+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0]);
489+
tick(100);
490+
fix.detectChanges();
491+
492+
// Verify the returnFields
493+
exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
494+
expect(exprTreeReturnFields).toBe(`["*"]`);
495+
}));
496+
447497
it('Column dropdown should contain proper fields based on the entity.', fakeAsync(() => {
448498
const queryBuilderElement: HTMLElement = fix.debugElement.queryAll(By.css(`.${QueryBuilderSelectors.QUERY_BUILDER_TREE}`))[0].nativeElement;
449499

0 commit comments

Comments
 (0)