[ADF-3367] facets multiselect fixes (#3611)

* group facet buckets by field

* unit tests and code fixes
This commit is contained in:
Denys Vuika
2018-07-24 11:08:35 +01:00
committed by Eugenio Romano
parent 43e43de2e2
commit 0670c93d7b
5 changed files with 81 additions and 28 deletions

View File

@@ -89,7 +89,7 @@
<mat-checkbox
*ngFor="let bucket of field.buckets"
[checked]="bucket.checked"
(change)="onToggleBucket($event, bucket)">
(change)="onToggleBucket($event, field, bucket)">
{{ bucket.display || bucket.label }} ({{ bucket.count }})
</mat-checkbox>
</div>

View File

@@ -57,12 +57,13 @@ describe('SearchFilterComponent', () => {
spyOn(queryBuilder, 'addUserFacetBucket').and.callThrough();
const event: any = { checked: true };
const field: FacetField = { field: 'f1', label: 'f1' };
const bucket: FacetFieldBucket = { checked: false, filterQuery: 'q1', label: 'q1', count: 1 };
component.onToggleBucket(event, bucket);
component.onToggleBucket(event, field, bucket);
expect(bucket.checked).toBeTruthy();
expect(queryBuilder.addUserFacetBucket).toHaveBeenCalledWith(bucket);
expect(queryBuilder.addUserFacetBucket).toHaveBeenCalledWith(field, bucket);
expect(queryBuilder.update).toHaveBeenCalled();
});
@@ -71,11 +72,12 @@ describe('SearchFilterComponent', () => {
spyOn(queryBuilder, 'removeUserFacetBucket').and.callThrough();
const event: any = { checked: false };
const field: FacetField = { field: 'f1', label: 'f1' };
const bucket: FacetFieldBucket = { checked: true, filterQuery: 'q1', label: 'q1', count: 1 };
component.onToggleBucket(event, bucket);
component.onToggleBucket(event, field, bucket);
expect(queryBuilder.removeUserFacetBucket).toHaveBeenCalledWith(bucket);
expect(queryBuilder.removeUserFacetBucket).toHaveBeenCalledWith(field, bucket);
expect(queryBuilder.update).toHaveBeenCalled();
});
@@ -217,7 +219,8 @@ describe('SearchFilterComponent', () => {
it('should update query builder only when has bucket to unselect', () => {
spyOn(queryBuilder, 'update').and.stub();
component.onToggleBucket(<any> { checked: true }, null);
const field: FacetField = { field: 'f1', label: 'f1' };
component.onToggleBucket(<any> { checked: true }, field, null);
expect(queryBuilder.update).not.toHaveBeenCalled();
});

View File

@@ -130,29 +130,29 @@ export class SearchFilterComponent implements OnInit, OnDestroy {
}
}
onToggleBucket(event: MatCheckboxChange, bucket: FacetFieldBucket) {
onToggleBucket(event: MatCheckboxChange, field: FacetField, bucket: FacetFieldBucket) {
if (event && bucket) {
if (event.checked) {
this.selectFacetBucket(bucket);
this.selectFacetBucket(field, bucket);
} else {
this.unselectFacetBucket(bucket);
this.unselectFacetBucket(field, bucket);
}
}
}
selectFacetBucket(bucket: FacetFieldBucket) {
selectFacetBucket(field: FacetField, bucket: FacetFieldBucket) {
if (bucket) {
bucket.checked = true;
this.queryBuilder.addUserFacetBucket(bucket);
this.queryBuilder.addUserFacetBucket(field, bucket);
this.updateSelectedBuckets();
this.queryBuilder.update();
}
}
unselectFacetBucket(bucket: FacetFieldBucket) {
unselectFacetBucket(field: FacetField, bucket: FacetFieldBucket) {
if (bucket) {
bucket.checked = false;
this.queryBuilder.removeUserFacetBucket(bucket);
this.queryBuilder.removeUserFacetBucket(field, bucket);
this.updateSelectedBuckets();
this.queryBuilder.update();
}
@@ -181,7 +181,7 @@ export class SearchFilterComponent implements OnInit, OnDestroy {
if (field && field.buckets) {
for (let bucket of field.buckets.items) {
bucket.checked = false;
this.queryBuilder.removeUserFacetBucket(bucket);
this.queryBuilder.removeUserFacetBucket(field, bucket);
}
this.updateSelectedBuckets();
this.queryBuilder.update();