UNPKG

6.06 kBJavaScriptView Raw
1import { bind, Injector, OpaqueToken } from 'angular2/src/core/di';
2import { StringMapWrapper } from 'angular2/src/facade/collection';
3import { PromiseWrapper } from 'angular2/src/facade/async';
4import { Metric } from '../metric';
5export class MultiMetric extends Metric {
6 constructor(_metrics) {
7 super();
8 this._metrics = _metrics;
9 }
10 static createBindings(childTokens) {
11 return [
12 bind(_CHILDREN)
13 .toFactory((injector) => childTokens.map(token => injector.get(token)), [Injector]),
14 bind(MultiMetric).toFactory(children => new MultiMetric(children), [_CHILDREN])
15 ];
16 }
17 /**
18 * Starts measuring
19 */
20 beginMeasure() {
21 return PromiseWrapper.all(this._metrics.map(metric => metric.beginMeasure()));
22 }
23 /**
24 * Ends measuring and reports the data
25 * since the begin call.
26 * @param restart: Whether to restart right after this.
27 */
28 endMeasure(restart) {
29 return PromiseWrapper.all(this._metrics.map(metric => metric.endMeasure(restart)))
30 .then(values => mergeStringMaps(values));
31 }
32 /**
33 * Describes the metrics provided by this metric implementation.
34 * (e.g. units, ...)
35 */
36 describe() {
37 return mergeStringMaps(this._metrics.map((metric) => metric.describe()));
38 }
39}
40function mergeStringMaps(maps) {
41 var result = {};
42 maps.forEach(map => { StringMapWrapper.forEach(map, (value, prop) => { result[prop] = value; }); });
43 return result;
44}
45var _CHILDREN = new OpaqueToken('MultiMetric.children');
46//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWV0cmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC14QkxJQnJWUi50bXAvYmVuY2hwcmVzcy9zcmMvbWV0cmljL211bHRpX21ldHJpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FBTyxFQUFDLElBQUksRUFBOEIsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQjtPQUNyRixFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDO09BQ3hELEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCO09BRWpELEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVztBQUVoQyxpQ0FBaUMsTUFBTTtJQVVyQyxZQUFvQixRQUFrQjtRQUFJLE9BQU8sQ0FBQztRQUE5QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQWEsQ0FBQztJQVRwRCxPQUFPLGNBQWMsQ0FBQyxXQUFrQjtRQUN0QyxNQUFNLENBQUM7WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUNWLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNyRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEYsQ0FBQztJQUNKLENBQUM7SUFJRDs7T0FFRztJQUNILFlBQVk7UUFDVixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdFLElBQUksQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztBQUNILENBQUM7QUFFRCx5QkFBeUIsSUFBaUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQ1IsR0FBRyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2JpbmQsIHByb3ZpZGUsIEJpbmRpbmcsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5pbXBvcnQge01ldHJpY30gZnJvbSAnLi4vbWV0cmljJztcblxuZXhwb3J0IGNsYXNzIE11bHRpTWV0cmljIGV4dGVuZHMgTWV0cmljIHtcbiAgc3RhdGljIGNyZWF0ZUJpbmRpbmdzKGNoaWxkVG9rZW5zOiBhbnlbXSk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBiaW5kKF9DSElMRFJFTilcbiAgICAgICAgICAudG9GYWN0b3J5KChpbmplY3RvcjogSW5qZWN0b3IpID0+IGNoaWxkVG9rZW5zLm1hcCh0b2tlbiA9PiBpbmplY3Rvci5nZXQodG9rZW4pKSxcbiAgICAgICAgICAgICAgICAgICAgIFtJbmplY3Rvcl0pLFxuICAgICAgYmluZChNdWx0aU1ldHJpYykudG9GYWN0b3J5KGNoaWxkcmVuID0+IG5ldyBNdWx0aU1ldHJpYyhjaGlsZHJlbiksIFtfQ0hJTERSRU5dKVxuICAgIF07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tZXRyaWNzOiBNZXRyaWNbXSkgeyBzdXBlcigpOyB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBtZWFzdXJpbmdcbiAgICovXG4gIGJlZ2luTWVhc3VyZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5hbGwodGhpcy5fbWV0cmljcy5tYXAobWV0cmljID0+IG1ldHJpYy5iZWdpbk1lYXN1cmUoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZHMgbWVhc3VyaW5nIGFuZCByZXBvcnRzIHRoZSBkYXRhXG4gICAqIHNpbmNlIHRoZSBiZWdpbiBjYWxsLlxuICAgKiBAcGFyYW0gcmVzdGFydDogV2hldGhlciB0byByZXN0YXJ0IHJpZ2h0IGFmdGVyIHRoaXMuXG4gICAqL1xuICBlbmRNZWFzdXJlKHJlc3RhcnQ6IGJvb2xlYW4pOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBhbnl9PiB7XG4gICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLmFsbCh0aGlzLl9tZXRyaWNzLm1hcChtZXRyaWMgPT4gbWV0cmljLmVuZE1lYXN1cmUocmVzdGFydCkpKVxuICAgICAgICAudGhlbih2YWx1ZXMgPT4gbWVyZ2VTdHJpbmdNYXBzKHZhbHVlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyB0aGUgbWV0cmljcyBwcm92aWRlZCBieSB0aGlzIG1ldHJpYyBpbXBsZW1lbnRhdGlvbi5cbiAgICogKGUuZy4gdW5pdHMsIC4uLilcbiAgICovXG4gIGRlc2NyaWJlKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gbWVyZ2VTdHJpbmdNYXBzKHRoaXMuX21ldHJpY3MubWFwKChtZXRyaWMpID0+IG1ldHJpYy5kZXNjcmliZSgpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VTdHJpbmdNYXBzKG1hcHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSk6IE9iamVjdCB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgbWFwcy5mb3JFYWNoKFxuICAgICAgbWFwID0+IHsgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKG1hcCwgKHZhbHVlLCBwcm9wKSA9PiB7IHJlc3VsdFtwcm9wXSA9IHZhbHVlOyB9KTsgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBfQ0hJTERSRU4gPSBuZXcgT3BhcXVlVG9rZW4oJ011bHRpTWV0cmljLmNoaWxkcmVuJyk7XG4iXX0=
\No newline at end of file