diff --git a/src/app/+search-page/search-page.component.ts b/src/app/+search-page/search-page.component.ts index 052eccd33a..16fe86c018 100644 --- a/src/app/+search-page/search-page.component.ts +++ b/src/app/+search-page/search-page.component.ts @@ -84,7 +84,6 @@ export class SearchPageComponent implements OnInit, OnDestroy { private updateSearchResults(searchOptions) { // Resolve search results this.results = this.service.search(this.query, this.scope, searchOptions); - } ngOnDestroy() { diff --git a/src/app/+search-page/search-results/search-results.compontent.ts b/src/app/+search-page/search-results/search-results.compontent.ts index 62357b8e8d..c645489694 100644 --- a/src/app/+search-page/search-results/search-results.compontent.ts +++ b/src/app/+search-page/search-results/search-results.compontent.ts @@ -9,12 +9,10 @@ import { SearchOptions } from '../search-options.model'; * The route parameter 'id' is used to request the item it represents. * All fields of the item that should be displayed, are defined in its template. */ - @Component({ selector: 'ds-search-results', templateUrl: './search-results.component.html', }) - export class SearchResultsComponent { @Input() searchResults: RemoteData>>; @Input() searchConfig: SearchOptions; diff --git a/src/app/+search-page/search.service.ts b/src/app/+search-page/search.service.ts index 81d6a61c82..caf6e18076 100644 --- a/src/app/+search-page/search.service.ts +++ b/src/app/+search-page/search.service.ts @@ -1,15 +1,20 @@ import { Injectable } from '@angular/core'; -import { RemoteData } from '../core/data/remote-data'; + import { Observable } from 'rxjs/Observable'; -import { SearchResult } from './search-result.model'; -import { ItemDataService } from '../core/data/item-data.service'; -import { PageInfo } from '../core/shared/page-info.model'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; + import { DSpaceObject } from '../core/shared/dspace-object.model'; -import { SearchOptions } from './search-options.model'; -import { hasValue, isNotEmpty } from '../shared/empty.util'; -import { Metadatum } from '../core/shared/metadatum.model'; import { Item } from '../core/shared/item.model'; import { ItemSearchResult } from '../object-list/search-result-list-element/item-search-result/item-search-result.model'; +import { Metadatum } from '../core/shared/metadatum.model'; +import { PageInfo } from '../core/shared/page-info.model'; +import { RemoteData } from '../core/data/remote-data'; +import { SearchOptions } from './search-options.model'; +import { SearchResult } from './search-result.model'; + +import { ItemDataService } from '../core/data/item-data.service'; + +import { hasValue, isNotEmpty } from '../shared/empty.util'; function shuffle(array: any[]) { let i = 0; @@ -63,8 +68,12 @@ export class SearchService { if (isNotEmpty(searchOptions) && hasValue(searchOptions.sort.field)) { self += `&sortField=${searchOptions.sort.field}`; } - const requestPending = Observable.of(false); - const responsePending = Observable.of(false); + + const requestPendingSubject = new BehaviorSubject(true); + const responsePendingSubject = new BehaviorSubject(false); + + const requestPending = requestPendingSubject.asObservable(); + const responsePending = responsePendingSubject.asObservable(); const errorMessage = Observable.of(undefined); const statusCode = Observable.of('200'); const returningPageInfo = new PageInfo(); @@ -101,6 +110,11 @@ export class SearchService { }); }); + itemsRD.hasSucceeded.subscribe((success: boolean) => { + requestPendingSubject.next(!success); + responsePendingSubject.next(!success); + }); + return new RemoteData( Observable.of(self), requestPending, @@ -112,4 +126,5 @@ export class SearchService { payload ) } + } diff --git a/src/app/object-list/object-list.component.html b/src/app/object-list/object-list.component.html index 1fa0a85165..d488b29365 100644 --- a/src/app/object-list/object-list.component.html +++ b/src/app/object-list/object-list.component.html @@ -14,6 +14,6 @@ - - + +