UNPKG

1.17 kBPlain TextView Raw
1import {bind, provide, Provider, Injector, OpaqueToken} from 'angular2/src/core/di';
2import {PromiseWrapper} from 'angular2/src/facade/async';
3
4import {MeasureValues} from '../measure_values';
5import {Reporter} from '../reporter';
6
7export class MultiReporter extends Reporter {
8 static createBindings(childTokens: any[]): Provider[] {
9 return [
10 bind(_CHILDREN)
11 .toFactory((injector: Injector) => childTokens.map(token => injector.get(token)),
12 [Injector]),
13 bind(MultiReporter).toFactory(children => new MultiReporter(children), [_CHILDREN])
14 ];
15 }
16
17 _reporters: Reporter[];
18
19 constructor(reporters) {
20 super();
21 this._reporters = reporters;
22 }
23
24 reportMeasureValues(values: MeasureValues): Promise<any[]> {
25 return PromiseWrapper.all(
26 this._reporters.map(reporter => reporter.reportMeasureValues(values)));
27 }
28
29 reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): Promise<any[]> {
30 return PromiseWrapper.all(
31 this._reporters.map(reporter => reporter.reportSample(completeSample, validSample)));
32 }
33}
34
35var _CHILDREN = new OpaqueToken('MultiReporter.children');