From df1801dd44e3468b89813cab3ff79f48db5f074e Mon Sep 17 00:00:00 2001 From: "swapnil.verma" Date: Mon, 12 Jun 2023 12:57:38 +0530 Subject: [PATCH] [ACS-4985] Using widget-composite component now correctly updates the search query on submit. Added optional property to disable update on submit button click for widget-composite. --- .../search-date-range-advanced.component.ts | 4 +-- .../search-widget-container.component.ts | 4 +++ .../search/models/search-widget.interface.ts | 1 + .../services/base-query-builder.service.ts | 25 +++++++++++++++---- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/content-services/src/lib/search/components/search-date-range-advanced/search-date-range-advanced.component.ts b/lib/content-services/src/lib/search/components/search-date-range-advanced/search-date-range-advanced.component.ts index 6fa9ba1f21..f43d08b970 100644 --- a/lib/content-services/src/lib/search/components/search-date-range-advanced/search-date-range-advanced.component.ts +++ b/lib/content-services/src/lib/search/components/search-date-range-advanced/search-date-range-advanced.component.ts @@ -57,6 +57,7 @@ export class SearchDateRangeAdvancedComponent implements SearchWidget, OnInit, O settings?: SearchWidgetSettings; context?: SearchQueryBuilderService; startValue: SearchDateRangeAdvanced; + disableUpdateOnSubmit: boolean; maxDate: any; dateRangeTypeValue: DateRangeType = DateRangeType.ANY; inLastValue: string; @@ -69,7 +70,6 @@ export class SearchDateRangeAdvancedComponent implements SearchWidget, OnInit, O private enableChangeUpdate: boolean; private datePickerFormat: string; - private disableUpdateOnSubmit = false; private onDestroy$ = new Subject(); @@ -234,5 +234,5 @@ export class SearchDateRangeAdvancedComponent implements SearchWidget, OnInit, O } } } - //TODO: Format dates for Between date range type + diff --git a/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts b/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts index 1455e456d2..1e08a9423a 100644 --- a/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts +++ b/lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts @@ -57,6 +57,9 @@ export class SearchWidgetContainerComponent implements OnInit, OnDestroy, OnChan @Input() value: any; + @Input() + disableUpdateOnSubmit = false; + componentRef: ComponentRef; constructor( @@ -89,6 +92,7 @@ export class SearchWidgetContainerComponent implements OnInit, OnDestroy, OnChan ref.instance.id = this.id; ref.instance.settings = {...this.settings}; ref.instance.context = this.queryBuilder; + ref.instance.disableUpdateOnSubmit = this.disableUpdateOnSubmit; if (this.value) { ref.instance.isActive = true; ref.instance.startValue = this.value; diff --git a/lib/content-services/src/lib/search/models/search-widget.interface.ts b/lib/content-services/src/lib/search/models/search-widget.interface.ts index b7dcbf58b0..233899de9d 100644 --- a/lib/content-services/src/lib/search/models/search-widget.interface.ts +++ b/lib/content-services/src/lib/search/models/search-widget.interface.ts @@ -25,6 +25,7 @@ export interface SearchWidget { settings?: SearchWidgetSettings; context?: SearchQueryBuilderService; isActive?: boolean; + disableUpdateOnSubmit?: boolean; startValue: any; /* stream emit value on changes */ displayValue$: Subject; diff --git a/lib/content-services/src/lib/search/services/base-query-builder.service.ts b/lib/content-services/src/lib/search/services/base-query-builder.service.ts index c0446f98a0..6979f3b118 100644 --- a/lib/content-services/src/lib/search/services/base-query-builder.service.ts +++ b/lib/content-services/src/lib/search/services/base-query-builder.service.ts @@ -487,12 +487,27 @@ export abstract class BaseQueryBuilderService { let query = ''; this.categories.forEach((facet) => { - const customQuery = this.queryFragments[facet.id]; - if (customQuery) { - if (query.length > 0) { - query += ' AND '; + let customQuery: string; + + if (facet.component.selector === 'widget-composite') { + const widgetTabs: any[] = facet.component.settings.tabs; + widgetTabs.forEach(tab => { + customQuery = this.queryFragments[tab.id]; + if (customQuery) { + if (query.length > 0) { + query += ' AND '; + } + query += `(${customQuery})`; + } + }); + } else { + customQuery = this.queryFragments[facet.id]; + if (customQuery) { + if (query.length > 0) { + query += ' AND '; + } + query += `(${customQuery})`; } - query += `(${customQuery})`; } });