mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-06-30 18:15:11 +00:00
[ADF-3055] fix bug with page size for facet fields (#3359)
* fix bug with page size for facet fields * move page size to a constant * move const inside the scope * test fixes
This commit is contained in:
parent
b92cc2ad60
commit
5aa523d9ac
@ -35,13 +35,15 @@ import { SearchFilterList } from './models/search-filter-list.model';
|
||||
})
|
||||
export class SearchFilterComponent implements OnInit {
|
||||
|
||||
private DEFAULT_PAGE_SIZE = 5;
|
||||
|
||||
selectedFacetQueries: string[] = [];
|
||||
selectedBuckets: FacetFieldBucket[] = [];
|
||||
responseFacetQueries: ResponseFacetQueryList;
|
||||
responseFacetFields: ResponseFacetField[] = [];
|
||||
|
||||
facetQueriesLabel: string = 'Facet Queries';
|
||||
facetQueriesPageSize = 5;
|
||||
facetQueriesPageSize = this.DEFAULT_PAGE_SIZE;
|
||||
facetQueriesExpanded = false;
|
||||
|
||||
constructor(public queryBuilder: SearchQueryBuilderService,
|
||||
@ -51,7 +53,7 @@ export class SearchFilterComponent implements OnInit {
|
||||
|
||||
if (queryBuilder.config && queryBuilder.config.facetQueries) {
|
||||
this.facetQueriesLabel = queryBuilder.config.facetQueries.label || 'Facet Queries';
|
||||
this.facetQueriesPageSize = queryBuilder.config.facetQueries.pageSize || 5;
|
||||
this.facetQueriesPageSize = queryBuilder.config.facetQueries.pageSize || this.DEFAULT_PAGE_SIZE;
|
||||
this.facetQueriesExpanded = queryBuilder.config.facetQueries.expanded;
|
||||
}
|
||||
|
||||
@ -161,12 +163,21 @@ export class SearchFilterComponent implements OnInit {
|
||||
|
||||
this.responseFacetQueries = new ResponseFacetQueryList(facetQueries, this.facetQueriesPageSize);
|
||||
|
||||
const expandedFields = this.responseFacetFields.filter(field => field.expanded).map(field => field.label);
|
||||
const expandedFields = this.responseFacetFields
|
||||
.filter(field => field.expanded)
|
||||
.map(field => field.label);
|
||||
|
||||
this.responseFacetFields = (context.facetsFields || []).map(
|
||||
field => {
|
||||
const settings = this.queryBuilder.getFacetField(field.label);
|
||||
|
||||
let fallbackPageSize = this.DEFAULT_PAGE_SIZE;
|
||||
if (settings && settings.pageSize) {
|
||||
fallbackPageSize = settings.pageSize;
|
||||
}
|
||||
|
||||
field.label = this.translationService.instant(field.label);
|
||||
field.pageSize = field.pageSize || 5;
|
||||
field.pageSize = field.pageSize || fallbackPageSize;
|
||||
field.currentPageSize = field.pageSize;
|
||||
field.expanded = expandedFields.includes(field.label);
|
||||
|
||||
|
@ -23,5 +23,6 @@ export interface FacetField {
|
||||
offset?: number;
|
||||
prefix?: string;
|
||||
|
||||
pageSize?: number;
|
||||
$checked?: boolean;
|
||||
}
|
||||
|
@ -144,6 +144,35 @@ describe('SearchQueryBuilder', () => {
|
||||
expect(query2).toBeNull();
|
||||
});
|
||||
|
||||
it('should fetch facet from the config by label', () => {
|
||||
const config: SearchConfiguration = {
|
||||
categories: [],
|
||||
facetFields: [
|
||||
{ 'field': 'content.mimetype', 'mincount': 1, 'label': 'Type' },
|
||||
{ 'field': 'content.size', 'mincount': 1, 'label': 'Size' }
|
||||
]
|
||||
};
|
||||
const builder = new SearchQueryBuilderService(buildConfig(config), null);
|
||||
const field = builder.getFacetField('Size');
|
||||
|
||||
expect(field.label).toBe('Size');
|
||||
expect(field.field).toBe('content.size');
|
||||
});
|
||||
|
||||
it('should not fetch facet from the config by label', () => {
|
||||
const config: SearchConfiguration = {
|
||||
categories: [],
|
||||
facetFields: [
|
||||
{ 'field': 'content.mimetype', 'mincount': 1, 'label': 'Type' },
|
||||
{ 'field': 'content.size', 'mincount': 1, 'label': 'Size' }
|
||||
]
|
||||
};
|
||||
const builder = new SearchQueryBuilderService(buildConfig(config), null);
|
||||
const field = builder.getFacetField('Missing');
|
||||
|
||||
expect(field).toBeUndefined();
|
||||
});
|
||||
|
||||
xit('should build query and raise an event on update', async () => {
|
||||
const builder = new SearchQueryBuilderService(buildConfig({}), null);
|
||||
const query = {};
|
||||
|
@ -25,6 +25,7 @@ import { SearchRange } from './search-range.interface';
|
||||
import { SearchConfiguration } from './search-configuration.interface';
|
||||
import { FacetQuery } from './facet-query.interface';
|
||||
import { SearchSortingDefinition } from './search-sorting-definition.interface';
|
||||
import { FacetField } from './facet-field.interface';
|
||||
|
||||
@Injectable()
|
||||
export class SearchQueryBuilderService {
|
||||
@ -47,7 +48,7 @@ export class SearchQueryBuilderService {
|
||||
this.config = appConfig.get<SearchConfiguration>('search');
|
||||
|
||||
if (this.config) {
|
||||
this.categories = (this.config.categories || []).filter(f => f.enabled);
|
||||
this.categories = (this.config.categories || []).filter(category => category.enabled);
|
||||
this.filterQueries = this.config.filterQueries || [];
|
||||
|
||||
if (this.config.sorting) {
|
||||
@ -58,7 +59,7 @@ export class SearchQueryBuilderService {
|
||||
|
||||
addFilterQuery(query: string): void {
|
||||
if (query) {
|
||||
const existing = this.filterQueries.find(q => q.query === query);
|
||||
const existing = this.filterQueries.find(filterQuery => filterQuery.query === query);
|
||||
if (!existing) {
|
||||
this.filterQueries.push({ query: query });
|
||||
}
|
||||
@ -67,14 +68,23 @@ export class SearchQueryBuilderService {
|
||||
|
||||
removeFilterQuery(query: string): void {
|
||||
if (query) {
|
||||
this.filterQueries = this.filterQueries.filter(f => f.query !== query);
|
||||
this.filterQueries = this.filterQueries
|
||||
.filter(filterQuery => filterQuery.query !== query);
|
||||
}
|
||||
}
|
||||
|
||||
getFacetQuery(label: string): FacetQuery {
|
||||
if (label) {
|
||||
const queries = this.config.facetQueries.queries || [];
|
||||
return queries.find(q => q.label === label);
|
||||
return queries.find(query => query.label === label);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
getFacetField(label: string): FacetField {
|
||||
if (label) {
|
||||
const fields = this.config.facetFields || [];
|
||||
return fields.find(field => field.label === label);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user