mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3496] Grouped facet queries (#4209)
* [ADF-3496] search query format v2 response parser - replacer for the parseFacetFields * [ADF-3496] format v2 search facetQueries parser * [ADF-3496] cleanup * [ADF-3496] Grouped facet queries - selection working - needs code cleanup * [ADF-3496] code cleanup * [ADF-3496] code refactoring - renaming * [ADF-3496] update tests * [ADF-3496] update tests part2 * [ADF-3496] preserve order * [ADF-3496] fix facet queries expand * [ADF-3496] code cleanup & fixes * [ADF-3496] reorder methods * [ADF-3496] update test * fix unrelated failing test * [ADF-3496] fix config snippet * [ADF-3496] facet queries mincount * [ADF-3496] documentation updated * [ADF-3496] small fix * [ADF-3496] e2e testing * [ADF-3496] added TestRail ids * [ADF-3496] import from right api
This commit is contained in:
committed by
Eugenio Romano
parent
c91c3f5a81
commit
bf718d905f
@@ -50,7 +50,6 @@ export class SearchQueryBuilderService {
|
||||
paging: { maxItems?: number; skipCount?: number } = null;
|
||||
sorting: Array<SearchSortingDefinition> = [];
|
||||
|
||||
protected userFacetQueries: FacetQuery[] = [];
|
||||
protected userFacetBuckets: { [key: string]: Array<FacetFieldBucket> } = {};
|
||||
|
||||
get userQuery(): string {
|
||||
@@ -81,39 +80,12 @@ export class SearchQueryBuilderService {
|
||||
this.categories = (this.config.categories || []).filter((category) => category.enabled);
|
||||
this.filterQueries = this.config.filterQueries || [];
|
||||
this.userFacetBuckets = {};
|
||||
this.userFacetQueries = [];
|
||||
if (this.config.sorting) {
|
||||
this.sorting = this.config.sorting.defaults || [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a facet query.
|
||||
* @param query Query to add
|
||||
*/
|
||||
addUserFacetQuery(query: FacetQuery) {
|
||||
if (query) {
|
||||
const existing = this.userFacetQueries.find((facetQuery) => facetQuery.label === query.label);
|
||||
if (existing) {
|
||||
existing.query = query.query;
|
||||
} else {
|
||||
this.userFacetQueries.push({ ...query });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes an existing facet query.
|
||||
* @param query Query to remove
|
||||
*/
|
||||
removeUserFacetQuery(query: FacetQuery) {
|
||||
if (query) {
|
||||
this.userFacetQueries = this.userFacetQueries
|
||||
.filter((facetQuery) => facetQuery.label !== query.label);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a facet bucket to a field.
|
||||
* @param field The target field
|
||||
@@ -240,7 +212,7 @@ export class SearchQueryBuilderService {
|
||||
}
|
||||
|
||||
if (query) {
|
||||
const result: QueryBody = {
|
||||
const result: QueryBody = <QueryBody> {
|
||||
query: {
|
||||
query: query,
|
||||
language: 'afts'
|
||||
@@ -254,6 +226,7 @@ export class SearchQueryBuilderService {
|
||||
sort: this.sort
|
||||
};
|
||||
|
||||
result['facetFormat'] = 'V2';
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -282,6 +255,10 @@ export class SearchQueryBuilderService {
|
||||
return [];
|
||||
}
|
||||
|
||||
getQueryGroup(query) {
|
||||
return query.group || this.config.facetQueries.label || 'Facet Queries';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if FacetQueries has been defined
|
||||
* @returns True if defined, false otherwise
|
||||
@@ -309,6 +286,7 @@ export class SearchQueryBuilderService {
|
||||
protected get facetQueries(): FacetQuery[] {
|
||||
if (this.hasFacetQueries) {
|
||||
return this.config.facetQueries.queries.map((query) => {
|
||||
query.group = this.getQueryGroup(query);
|
||||
return <FacetQuery> { ...query };
|
||||
});
|
||||
}
|
||||
@@ -333,13 +311,6 @@ export class SearchQueryBuilderService {
|
||||
.filter((entry) => entry)
|
||||
.join(' AND ');
|
||||
|
||||
if (this.userFacetQueries && this.userFacetQueries.length > 0) {
|
||||
const combined = this.userFacetQueries
|
||||
.map((userQuery) => userQuery.query)
|
||||
.join(' OR ');
|
||||
result += ` AND (${combined})`;
|
||||
}
|
||||
|
||||
if (this.userFacetBuckets) {
|
||||
Object.keys(this.userFacetBuckets).forEach((key) => {
|
||||
const subQuery = (this.userFacetBuckets[key] || [])
|
||||
|
Reference in New Issue
Block a user