1 | import {bind, provide, Provider, Injector, OpaqueToken} from 'angular2/src/core/di';
|
2 | import {PromiseWrapper} from 'angular2/src/facade/async';
|
3 |
|
4 | import {MeasureValues} from '../measure_values';
|
5 | import {Reporter} from '../reporter';
|
6 |
|
7 | export 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 |
|
35 | var _CHILDREN = new OpaqueToken('MultiReporter.children');
|