mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-10-08 14:51:32 +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:
committed by
Eugenio Romano
parent
b92cc2ad60
commit
5aa523d9ac
@@ -35,13 +35,15 @@ import { SearchFilterList } from './models/search-filter-list.model';
|
|||||||
})
|
})
|
||||||
export class SearchFilterComponent implements OnInit {
|
export class SearchFilterComponent implements OnInit {
|
||||||
|
|
||||||
|
private DEFAULT_PAGE_SIZE = 5;
|
||||||
|
|
||||||
selectedFacetQueries: string[] = [];
|
selectedFacetQueries: string[] = [];
|
||||||
selectedBuckets: FacetFieldBucket[] = [];
|
selectedBuckets: FacetFieldBucket[] = [];
|
||||||
responseFacetQueries: ResponseFacetQueryList;
|
responseFacetQueries: ResponseFacetQueryList;
|
||||||
responseFacetFields: ResponseFacetField[] = [];
|
responseFacetFields: ResponseFacetField[] = [];
|
||||||
|
|
||||||
facetQueriesLabel: string = 'Facet Queries';
|
facetQueriesLabel: string = 'Facet Queries';
|
||||||
facetQueriesPageSize = 5;
|
facetQueriesPageSize = this.DEFAULT_PAGE_SIZE;
|
||||||
facetQueriesExpanded = false;
|
facetQueriesExpanded = false;
|
||||||
|
|
||||||
constructor(public queryBuilder: SearchQueryBuilderService,
|
constructor(public queryBuilder: SearchQueryBuilderService,
|
||||||
@@ -51,7 +53,7 @@ export class SearchFilterComponent implements OnInit {
|
|||||||
|
|
||||||
if (queryBuilder.config && queryBuilder.config.facetQueries) {
|
if (queryBuilder.config && queryBuilder.config.facetQueries) {
|
||||||
this.facetQueriesLabel = queryBuilder.config.facetQueries.label || 'Facet Queries';
|
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;
|
this.facetQueriesExpanded = queryBuilder.config.facetQueries.expanded;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,12 +163,21 @@ export class SearchFilterComponent implements OnInit {
|
|||||||
|
|
||||||
this.responseFacetQueries = new ResponseFacetQueryList(facetQueries, this.facetQueriesPageSize);
|
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(
|
this.responseFacetFields = (context.facetsFields || []).map(
|
||||||
field => {
|
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.label = this.translationService.instant(field.label);
|
||||||
field.pageSize = field.pageSize || 5;
|
field.pageSize = field.pageSize || fallbackPageSize;
|
||||||
field.currentPageSize = field.pageSize;
|
field.currentPageSize = field.pageSize;
|
||||||
field.expanded = expandedFields.includes(field.label);
|
field.expanded = expandedFields.includes(field.label);
|
||||||
|
|
||||||
|
@@ -23,5 +23,6 @@ export interface FacetField {
|
|||||||
offset?: number;
|
offset?: number;
|
||||||
prefix?: string;
|
prefix?: string;
|
||||||
|
|
||||||
|
pageSize?: number;
|
||||||
$checked?: boolean;
|
$checked?: boolean;
|
||||||
}
|
}
|
||||||
|
@@ -144,6 +144,35 @@ describe('SearchQueryBuilder', () => {
|
|||||||
expect(query2).toBeNull();
|
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 () => {
|
xit('should build query and raise an event on update', async () => {
|
||||||
const builder = new SearchQueryBuilderService(buildConfig({}), null);
|
const builder = new SearchQueryBuilderService(buildConfig({}), null);
|
||||||
const query = {};
|
const query = {};
|
||||||
|
@@ -25,6 +25,7 @@ import { SearchRange } from './search-range.interface';
|
|||||||
import { SearchConfiguration } from './search-configuration.interface';
|
import { SearchConfiguration } from './search-configuration.interface';
|
||||||
import { FacetQuery } from './facet-query.interface';
|
import { FacetQuery } from './facet-query.interface';
|
||||||
import { SearchSortingDefinition } from './search-sorting-definition.interface';
|
import { SearchSortingDefinition } from './search-sorting-definition.interface';
|
||||||
|
import { FacetField } from './facet-field.interface';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SearchQueryBuilderService {
|
export class SearchQueryBuilderService {
|
||||||
@@ -47,7 +48,7 @@ export class SearchQueryBuilderService {
|
|||||||
this.config = appConfig.get<SearchConfiguration>('search');
|
this.config = appConfig.get<SearchConfiguration>('search');
|
||||||
|
|
||||||
if (this.config) {
|
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 || [];
|
this.filterQueries = this.config.filterQueries || [];
|
||||||
|
|
||||||
if (this.config.sorting) {
|
if (this.config.sorting) {
|
||||||
@@ -58,7 +59,7 @@ export class SearchQueryBuilderService {
|
|||||||
|
|
||||||
addFilterQuery(query: string): void {
|
addFilterQuery(query: string): void {
|
||||||
if (query) {
|
if (query) {
|
||||||
const existing = this.filterQueries.find(q => q.query === query);
|
const existing = this.filterQueries.find(filterQuery => filterQuery.query === query);
|
||||||
if (!existing) {
|
if (!existing) {
|
||||||
this.filterQueries.push({ query: query });
|
this.filterQueries.push({ query: query });
|
||||||
}
|
}
|
||||||
@@ -67,14 +68,23 @@ export class SearchQueryBuilderService {
|
|||||||
|
|
||||||
removeFilterQuery(query: string): void {
|
removeFilterQuery(query: string): void {
|
||||||
if (query) {
|
if (query) {
|
||||||
this.filterQueries = this.filterQueries.filter(f => f.query !== query);
|
this.filterQueries = this.filterQueries
|
||||||
|
.filter(filterQuery => filterQuery.query !== query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getFacetQuery(label: string): FacetQuery {
|
getFacetQuery(label: string): FacetQuery {
|
||||||
if (label) {
|
if (label) {
|
||||||
const queries = this.config.facetQueries.queries || [];
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user