| Index: tracing/tracing/value/value_set.html
|
| diff --git a/tracing/tracing/value/value_set.html b/tracing/tracing/value/value_set.html
|
| index 9aed25a58196777d8c2c44d205f663d258bcf764..4446e59e5052b4ddbe023a759df71beb1d5cf70c 100644
|
| --- a/tracing/tracing/value/value_set.html
|
| +++ b/tracing/tracing/value/value_set.html
|
| @@ -14,6 +14,8 @@ found in the LICENSE file.
|
| 'use strict';
|
|
|
| tr.exportTo('tr.v', function() {
|
| + var SUMMARY_VALUE_MAP_DIAGNOSTIC_NAME = 'summary values';
|
| +
|
| function ValueSet(opt_values) {
|
| this.values_ = {};
|
|
|
| @@ -32,13 +34,34 @@ tr.exportTo('tr.v', function() {
|
| return this.values_[guid];
|
| },
|
|
|
| + toArray: function() {
|
| + return tr.b.dictionaryValues(this.values_);
|
| + },
|
| +
|
| + *[Symbol.iterator]() {
|
| + for (var guid in this.values_)
|
| + yield this.values_[guid];
|
| + },
|
| +
|
| /**
|
| * @param {!function(!tr.v.Value):*} callback
|
| * @param {*=} opt_this
|
| */
|
| map: function(callback, opt_this) {
|
| - return tr.b.dictionaryValues(this.values_).map(
|
| - callback, opt_this || this);
|
| + return this.toArray().map(callback, opt_this || this);
|
| + },
|
| +
|
| + get organizedByName() {
|
| + return this.getValuesOrganizedByCallback(v => v.name);
|
| + },
|
| +
|
| + /**
|
| + * @param {!function(!tr.v.Value):*} callback
|
| + * @param {*=} opt_this
|
| + * @return {!Object}
|
| + */
|
| + getValuesOrganizedByCallback: function(callback, opt_this) {
|
| + return tr.b.group(this.toArray(), callback, opt_this || this);
|
| },
|
|
|
| /**
|
| @@ -50,7 +73,7 @@ tr.exportTo('tr.v', function() {
|
| addValuesFromDicts: function(dicts) {
|
| dicts.forEach(function(dict) {
|
| var value = tr.v.Value.fromDict(dict);
|
| - this.addValue(value);
|
| + this.addValueInternal_(value);
|
| }, this);
|
|
|
| // Now resolve the RelatedValueSet references between values.
|
| @@ -94,19 +117,21 @@ tr.exportTo('tr.v', function() {
|
| },
|
|
|
| getValuesWithName: function(name) {
|
| - return tr.b.dictionaryValues(this.values_).filter(function(value) {
|
| - return value.name.indexOf(name) > -1;
|
| - });
|
| + return this.toArray().filter(v => v.name.indexOf(name) > -1);
|
| },
|
|
|
| - addValue: function(v) {
|
| - if (this.values_[v.guid]) {
|
| - var err = new Error('Tried to add same value twice');
|
| - err.name = 'ValueError';
|
| - throw err;
|
| - }
|
| + getValuesNamed: function(name) {
|
| + return this.toArray().filter(v => v.name == name);
|
| + },
|
|
|
| + addValueInternal_: function(v) {
|
| + if (this.values_[v.guid])
|
| + throw new Error('Tried to add same value twice');
|
| this.values_[v.guid] = v;
|
| + },
|
| +
|
| + addValue: function(v) {
|
| + this.addValueInternal_(v);
|
|
|
| if (v.numeric instanceof tr.v.Numeric) {
|
| ValueSet.computeSummaryValuesForNumericValue(v).forEach(function(s) {
|
| @@ -120,15 +145,21 @@ tr.exportTo('tr.v', function() {
|
| if (!(value instanceof tr.v.NumericValue &&
|
| value.numeric instanceof tr.v.Numeric))
|
| throw new Error('Tried to compute summary values for non-numeric');
|
| - return value.numeric.getSummarizedScalarNumericsWithNames().map(
|
| - function(stat) {
|
| - return new tr.v.NumericValue(
|
| - value.name + '_' + stat.name, stat.scalar,
|
| - { description: value.description });
|
| - });
|
| +
|
| + var summaryValueMap = new tr.v.d.RelatedValueMap();
|
| + value.diagnostics.add(SUMMARY_VALUE_MAP_DIAGNOSTIC_NAME, summaryValueMap);
|
| + var options = {description: value.description};
|
| + var stats = value.numeric.getSummarizedScalarNumericsWithNames();
|
| + return stats.map(function(stat) {
|
| + var summaryValue = new tr.v.NumericValue(
|
| + value.name + '_' + stat.name, stat.scalar, options);
|
| + summaryValueMap.set(stat.name, summaryValue);
|
| + return summaryValue;
|
| + });
|
| };
|
|
|
| return {
|
| + SUMMARY_VALUE_MAP_DIAGNOSTIC_NAME: SUMMARY_VALUE_MAP_DIAGNOSTIC_NAME,
|
| ValueSet: ValueSet
|
| };
|
| });
|
|
|