blob: 671e728347c8758e26826c030e406e1160fe616a [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/base/units/util.html">
<link rel="import" href="/core/analysis/analysis_sub_view.html">
<link rel="import" href="/core/analysis/analysis_results.html">
<link rel="import" href="/model/counter_sample.html">
<polymer-element name="tr-c-a-counter-sample-sub-view"
extends="tr-c-a-sub-view">
<script>
'use strict';
(function() {
var CounterSample = tr.model.CounterSample;
Polymer({
created: function() {
this.currentSelection_ = undefined;
},
get selection() {
return this.currentSelection_;
},
set selection(selection) {
var results = new tr.c.analysis.AnalysisResults();
this.appendChild(results);
this.analyzeCounterSamples_(results, selection);
},
analyzeCounterSamples_: function(results, allSamples) {
var samplesByCounter = {};
for (var i = 0; i < allSamples.length; i++) {
var ctr = allSamples[i].series.counter;
if (!samplesByCounter[ctr.guid])
samplesByCounter[ctr.guid] = [];
samplesByCounter[ctr.guid].push(allSamples[i]);
}
for (var guid in samplesByCounter) {
var samples = samplesByCounter[guid];
var ctr = samples[0].series.counter;
var timestampGroups = CounterSample.groupByTimestamp(samples);
if (timestampGroups.length == 1)
this.analyzeSingleCounterTimestamp_(results, ctr,
timestampGroups[0]);
else
this.analyzeMultipleCounterTimestamps_(results, ctr,
timestampGroups);
}
},
analyzeSingleCounterTimestamp_: function(
results, ctr, samplesWithSameTimestamp) {
results.appendHeader('Selected counter:');
var table = results.appendTable('analysis-counter-table', 2);
results.appendInfoRow(table, 'Title', ctr.name);
results.appendInfoRowTime(
table, 'Timestamp', samplesWithSameTimestamp[0].timestamp);
for (var i = 0; i < samplesWithSameTimestamp.length; i++) {
var sample = samplesWithSameTimestamp[i];
results.appendInfoRow(table, sample.series.name, sample.value);
}
},
analyzeMultipleCounterTimestamps_: function(results, ctr,
samplesByTimestamp) {
results.appendHeader('Counter ' + ctr.name);
var table = results.appendTable('analysis-counter-table', 2);
var sampleIndices = [];
for (var i = 0; i < samplesByTimestamp.length; i++)
sampleIndices.push(samplesByTimestamp[i][0].getSampleIndex());
var stats = ctr.getSampleStatistics(sampleIndices);
for (var i = 0; i < stats.length; i++) {
var samples = [];
for (var k = 0; k < sampleIndices.length; ++k)
samples.push(ctr.getSeries(i).getSample(sampleIndices[k]).value);
results.appendDataRow(
table,
ctr.name + ': series(' + ctr.getSeries(i).name + ')',
samples,
null,
null,
null,
samples.length,
null,
stats[i]);
}
}
});
})();
</script>
</polymer-element>