diff --git a/src/app/shared/search/search-filters/search-filter/search-authority-filter/search-authority-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-authority-filter/search-authority-filter.component.html index fdf154bc04..a59e2a2dca 100644 --- a/src/app/shared/search/search-filters/search-filter/search-authority-filter/search-authority-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-authority-filter/search-authority-filter.component.html @@ -1,7 +1,7 @@
- +
diff --git a/src/app/shared/search/search-filters/search-filter/search-boolean-filter/search-boolean-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-boolean-filter/search-boolean-filter.component.html index 7d0ad89914..bd3e7f35cb 100644 --- a/src/app/shared/search/search-filters/search-filter/search-boolean-filter/search-boolean-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-boolean-filter/search-boolean-filter.component.html @@ -1,7 +1,7 @@
- +
diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts index 8872473ca7..263f62ee7f 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts @@ -2,7 +2,7 @@ import { animate, state, style, transition, trigger } from '@angular/animations' import { Component, Inject, OnDestroy, OnInit, EventEmitter } from '@angular/core'; import { Router } from '@angular/router'; -import { BehaviorSubject, combineLatest as observableCombineLatest, Observable, of as observableOf, Subject, Subscription } from 'rxjs'; +import { BehaviorSubject, combineLatest as observableCombineLatest, Observable, of as observableOf, Subscription } from 'rxjs'; import { debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, take, tap } from 'rxjs/operators'; import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; @@ -15,13 +15,12 @@ import { SearchFilterConfig } from '../../../models/search-filter-config.model'; import { SearchService } from '../../../../../core/shared/search/search.service'; import { FILTER_CONFIG, IN_PLACE_SEARCH, REFRESH_FILTER, SearchFilterService, CHANGE_APPLIED_FILTERS } from '../../../../../core/shared/search/search-filter.service'; import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service'; -import { getFirstSucceededRemoteData } from '../../../../../core/shared/operators'; +import { getFirstSucceededRemoteData, getFirstSucceededRemoteDataPayload } from '../../../../../core/shared/operators'; import { InputSuggestion } from '../../../../input-suggestions/input-suggestions.model'; import { SearchOptions } from '../../../models/search-options.model'; import { SEARCH_CONFIG_SERVICE } from '../../../../../my-dspace-page/my-dspace-page.component'; import { currentPath } from '../../../../utils/route.utils'; import { getFacetValueForType, stripOperatorFromFilterValue, addOperatorToFilterValue } from '../../../search.utils'; -import { createPendingRemoteDataObject } from '../../../../remote-data.utils'; import { FacetValues } from '../../../models/facet-values.model'; import { AppliedFilter } from '../../../models/applied-filter.model'; @@ -37,7 +36,7 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { /** * Emits an array of pages with values found for this facet */ - filterValues$: Subject>; + filterValues$: BehaviorSubject = new BehaviorSubject([]); /** * Emits the current last shown page of this facet's values @@ -79,7 +78,7 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { /** * Emits all current search options available in the search URL */ - searchOptions$: Observable; + searchOptions$: BehaviorSubject; /** * The current URL @@ -103,7 +102,6 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { */ ngOnInit(): void { this.currentUrl = this.router.url; - this.filterValues$ = new BehaviorSubject(createPendingRemoteDataObject()); this.currentPage = this.getCurrentPage().pipe(distinctUntilChanged()); this.searchOptions$ = this.searchConfigService.searchOptions; @@ -264,33 +262,32 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { return getFacetValueForType(facet, this.filterConfig); } - protected retrieveFilterValues(useCachedVersionIfAvailable = true): Observable> { - const facetValues$: Observable> = observableCombineLatest([this.searchOptions$, this.currentPage]).pipe( - switchMap(([options, page]: [SearchOptions, number]) => this.searchService.getFacetValuesFor(this.filterConfig, page, options, null, useCachedVersionIfAvailable)), - getFirstSucceededRemoteData(), - tap((rd: RemoteData) => { - this.isLastPage$.next(hasNoValue(rd?.payload?.next)); - }), - ); + protected retrieveFilterValues(useCachedVersionIfAvailable = true): Observable { + return observableCombineLatest([this.searchOptions$, this.currentPage]).pipe( + switchMap(([options, page]: [SearchOptions, number]) => this.searchService.getFacetValuesFor(this.filterConfig, page, options, null, useCachedVersionIfAvailable).pipe( + getFirstSucceededRemoteDataPayload(), + tap((facetValues: FacetValues) => { + this.isLastPage$.next(hasNoValue(facetValues?.next)); + }), + )), + map((newFacetValues: FacetValues) => { + let filterValues: FacetValues[] = this.filterValues$.value; - let filterValues: Observable>[] = []; - return facetValues$.pipe( - mergeMap((newValues: RemoteData) => { if (this.collapseNextUpdate) { this.showFirstPageOnly(); filterValues = []; this.collapseNextUpdate = false; } - if (newValues.payload.pageInfo.currentPage === 1) { + if (newFacetValues.pageInfo.currentPage === 1) { filterValues = []; } - filterValues = [...filterValues, observableOf(newValues)]; + filterValues = [...filterValues, newFacetValues]; - return this.rdbs.aggregate(filterValues); + return filterValues; }), - tap((rd: RemoteData) => { - const allAppliedFilters: AppliedFilter[] = [].concat(...rd.payload.map((facetValues: FacetValues) => facetValues.appliedFilters)) + tap((rd: FacetValues[]) => { + const allAppliedFilters: AppliedFilter[] = [].concat(...rd.map((facetValues: FacetValues) => facetValues.appliedFilters)) .filter((appliedFilter: AppliedFilter) => hasValue(appliedFilter)); this.selectedValues$ = this.filterService.getSelectedValuesForFilter(this.filterConfig).pipe( map((selectedValues: string[]) => { diff --git a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.html index 49ca6fe3fd..e2db17d962 100644 --- a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.html @@ -1,7 +1,7 @@
- +
diff --git a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html index 7834c4c557..035295933d 100644 --- a/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-range-filter/search-range-filter.component.html @@ -39,7 +39,7 @@ [(ngModel)]="range" ngDefaultControl>
- +
diff --git a/src/app/shared/search/search-filters/search-filter/search-text-filter/search-text-filter.component.html b/src/app/shared/search/search-filters/search-filter/search-text-filter/search-text-filter.component.html index fdf154bc04..a59e2a2dca 100644 --- a/src/app/shared/search/search-filters/search-filter/search-text-filter/search-text-filter.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-text-filter/search-text-filter.component.html @@ -1,7 +1,7 @@
- +