adapted remote data build method to aggregate relation remotedata arrays

This commit is contained in:
Art Lowel
2017-05-29 13:42:11 +02:00
committed by Lotte Hofstede
parent 2b74c3034a
commit fbb64a6031
12 changed files with 67 additions and 68 deletions

View File

@@ -134,9 +134,12 @@ export class RemoteDataBuildService {
});
}, 0);
links[relationship] = normalized[relationship].map((href: string) => {
return this.buildSingle(href, resourceConstructor);
let rdArr = [];
normalized[relationship].forEach((href: string) => {
rdArr.push(this.buildSingle(href, resourceConstructor));
});
links[relationship] = this.aggregate(rdArr);
}
else {
// without the setTimeout, the actions inside requestService.configure
@@ -155,29 +158,33 @@ export class RemoteDataBuildService {
}
aggregate<T>(input: RemoteData<T>[]): RemoteData<T[]> {
const requestPending: Observable<boolean> = <Observable<boolean>> Observable.combineLatest(
const requestPending = Observable.combineLatest(
...input.map(rd => rd.isRequestPending),
(...pendingArray) => pendingArray.every(e => e === true)
).distinctUntilChanged();
const responsePending: Observable<boolean> = <Observable<boolean>> Observable.combineLatest(
).map((...pendingArray) => pendingArray.every(e => e === true))
.distinctUntilChanged();
const responsePending = Observable.combineLatest(
...input.map(rd => rd.isResponsePending),
(...pendingArray) => pendingArray.every(e => e === true)
).distinctUntilChanged();
const isSuccessFul: Observable<boolean> = <Observable<boolean>> Observable.combineLatest(
).map((...pendingArray) => pendingArray.every(e => e === true))
.distinctUntilChanged();
const isSuccessFul = Observable.combineLatest(
...input.map(rd => rd.hasSucceeded),
(...successArray) => successArray.every(e => e === true)
).distinctUntilChanged();
const errorMessage: Observable<string> = <Observable<string>> Observable.combineLatest(
).map((...successArray) => successArray.every(e => e === true))
.distinctUntilChanged();
const errorMessage = Observable.combineLatest(
...input.map(rd => rd.errorMessage),
(...errors) => errors
.map((e, idx) => {
if (hasValue(e)) {
return `[${idx}]: ${e}`;
}
})
.filter(e => hasValue(e))
.join(", ")
).map((...errors) => errors
.map((e, idx) => {
if (hasValue(e)) {
return `[${idx}]: ${e}`;
}
})
.filter(e => hasValue(e))
.join(", ")
);
const payload = <Observable<T[]>> Observable.combineLatest(
...input.map(rd => rd.payload)
);