Merge branch 'master' into browse-by-features

Conflicts:
	src/app/core/shared/operators.ts
This commit is contained in:
Kristof De Langhe
2018-09-07 11:15:01 +02:00
34 changed files with 400 additions and 162 deletions

View File

@@ -9,6 +9,9 @@ import { RestRequest } from '../data/request.models';
import { RequestEntry } from '../data/request.reducer';
import { RequestService } from '../data/request.service';
import { BrowseDefinition } from './browse-definition.model';
import { DSpaceObject } from './dspace-object.model';
import { PaginatedList } from '../data/paginated-list';
import { SearchResult } from '../../+search-page/search-result.model';
/**
* This file contains custom RxJS operators that can be used in multiple places
@@ -51,6 +54,16 @@ export const getSucceededRemoteData = () =>
<T>(source: Observable<RemoteData<T>>): Observable<RemoteData<T>> =>
source.pipe(first((rd: RemoteData<T>) => rd.hasSucceeded));
export const toDSpaceObjectListRD = () =>
<T extends DSpaceObject>(source: Observable<RemoteData<PaginatedList<SearchResult<T>>>>): Observable<RemoteData<PaginatedList<T>>> =>
source.pipe(
map((rd: RemoteData<PaginatedList<SearchResult<T>>>) => {
const dsoPage: T[] = rd.payload.page.map((searchResult: SearchResult<T>) => searchResult.dspaceObject);
const payload = Object.assign(rd.payload, { page: dsoPage }) as PaginatedList<T>;
return Object.assign(rd, {payload: payload});
})
);
/**
* Get the browse links from a definition by ID given an array of all definitions
* @param {string} definitionID