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 @@