37 lines
997 B
TypeScript
37 lines
997 B
TypeScript
// vim: set tw=80 ts=2 sw=2 sts=2:
|
|
|
|
import { Injectable } from '@angular/core';
|
|
import { DataSource } from '@angular/cdk/collections';
|
|
import { Observable } from 'rxjs/Rx';
|
|
|
|
import { Account } from './account';
|
|
import { AccountBalances } from './accountBalances';
|
|
import { AccountBalancesService } from './accountBalances.service';
|
|
import { AccountService } from './account.service';
|
|
|
|
@Injectable()
|
|
export class AccountDataSource extends DataSource<Account> {
|
|
constructor(
|
|
private accountService: AccountService,
|
|
private accountBalancesService: AccountBalancesService,
|
|
) {
|
|
super();
|
|
}
|
|
|
|
connect(): Observable<Account[]> {
|
|
return this.accountService.query().map((accounts: Account[]) => {
|
|
for(let account of accounts) {
|
|
this.accountBalancesService
|
|
.get(account.id)
|
|
.subscribe((accountBalances: AccountBalances) => {
|
|
account.balances = accountBalances;
|
|
})
|
|
}
|
|
|
|
return accounts;
|
|
});
|
|
}
|
|
|
|
disconnect() {}
|
|
}
|