From cbde7fc679a17bb21e7f04c04aeaa9a3ed0316fd Mon Sep 17 00:00:00 2001 From: lotte Date: Thu, 16 May 2019 16:44:38 +0200 Subject: [PATCH] facet fix --- .../search-facet-selected-option.component.ts | 1 + .../search-facet-filter.component.ts | 33 ++++++++++++------- .../search-filter/search-filter.service.ts | 3 +- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts index 78dde92c2b..f01e1ade96 100644 --- a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.ts @@ -62,6 +62,7 @@ export class SearchFacetSelectedOptionComponent implements OnInit, OnDestroy { ngOnInit(): void { this.sub = observableCombineLatest(this.selectedValues$, this.searchConfigService.searchOptions) .subscribe(([selectedValues, searchOptions]) => { + console.log(selectedValues); this.updateRemoveParams(selectedValues) }); } diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts index b502fb6830..263344fbc3 100644 --- a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts @@ -6,7 +6,7 @@ import { Subject, Subscription } from 'rxjs'; -import { switchMap, distinctUntilChanged, map, take, flatMap } from 'rxjs/operators'; +import { switchMap, distinctUntilChanged, map, take, flatMap, tap } from 'rxjs/operators'; import { animate, state, style, transition, trigger } from '@angular/animations'; import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; import { Router } from '@angular/router'; @@ -117,14 +117,6 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { }) ); - this.selectedValues$ = observableCombineLatest( - this.filterService.getSelectedValuesForFilter(this.filterConfig), - facetValues$.pipe(flatMap((facetValues) => facetValues.values))).pipe( - map(([selectedValues, facetValues]) => { - return facetValues.payload.page.filter((facetValue) => selectedValues.includes(this.getFacetValue(facetValue))) - }) - ); - let filterValues = []; this.subs.push(facetValues$.subscribe((facetOutcome) => { const newValues$ = facetOutcome.values; @@ -140,9 +132,24 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { filterValues = [...filterValues, newValues$]; - this.subs.push(this.rdbs.aggregate(filterValues).subscribe((rd: RemoteData>>) => { + this.subs.push(this.rdbs.aggregate(filterValues).pipe( + tap((rd: RemoteData>>) => { + this.selectedValues$ = this.filterService.getSelectedValuesForFilter(this.filterConfig).pipe( + map((selectedValues) => { + return selectedValues.map((value: string) => { + const fValue = [].concat(...rd.payload.map((page) => page.page)).find((facetValue: FacetValue) => facetValue.value === value) + if (hasValue(fValue)) { + return fValue; + } + return Object.assign(new FacetValue(), { label: value, value: value }); + }); + }) + ); + }) + ).subscribe((rd: RemoteData>>) => { this.animationState = 'ready'; this.filterValues$.next(rd); + })); this.subs.push(newValues$.pipe(take(1)).subscribe((rd) => { this.isLastPage$.next(hasNoValue(rd.payload.next)) @@ -224,10 +231,12 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { if (isNotEmpty(data)) { this.router.navigate(this.getSearchLinkParts(), { queryParams: - { [this.filterConfig.paramName]: [ + { + [this.filterConfig.paramName]: [ ...selectedValues.map((facet) => this.getFacetValue(facet)), data - ] }, + ] + }, queryParamsHandling: 'merge' }); this.filter = ''; diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.service.ts b/src/app/+search-page/search-filters/search-filter/search-filter.service.ts index 9c9ca6e1b1..4b12417084 100644 --- a/src/app/+search-page/search-filters/search-filter/search-filter.service.ts +++ b/src/app/+search-page/search-filters/search-filter/search-filter.service.ts @@ -21,6 +21,8 @@ import { SearchOptions } from '../../search-options.model'; import { PaginatedSearchOptions } from '../../paginated-search-options.model'; import { SearchFixedFilterService } from './search-fixed-filter.service'; import { Params } from '@angular/router'; +import * as postcss from 'postcss'; +import prefix = postcss.vendor.prefix; // const spy = create(); const filterStateSelector = (state: SearchFiltersState) => state.searchFilter; @@ -142,7 +144,6 @@ export class SearchFilterService { const prefixValues$ = this.routeService.getQueryParamsWithPrefix(filterConfig.paramName + '.').pipe( map((params: Params) => [].concat(...Object.values(params))), ); - return observableCombineLatest(values$, prefixValues$).pipe( map(([values, prefixValues]) => { if (isNotEmpty(values)) {