blob: afdf765899a6e4b1bf4abf648e919e2f52e5357b [file] [log] [blame]
{% extends "layout.html" %}{
{% set components = [] %}
{% block head %}
<script src="{{ url_for('.static', filename='popup.js') }}"></script>
<script language="javascript" type="text/javascript"
src="{{ url_for('.static',
filename='jquery/1.7.2/jquery-1.7.2.min.js') }}"> </script>
<script language="javascript" type="text/javascript"
src="{{ url_for('.static',
filename='flot/jquery.flot.min.js') }}"> </script>
<script language="javascript" type="text/javascript"
src="{{ url_for('.static',
filename='flot/jquery.flot.pie.min.js') }}"> </script>
{% endblock %}
{% block title %}Summary Report{% endblock %}
{% block body %}
{# Warn the user if there were a lot of warnings during report generation. #}
{% if report.warnings|length > 20 %}
<font color="#F00">
<p><b>WARNING</b>: Report generation reported {{ report.warnings|length }}
warnings.</p>
</font>
{% endif %}
{% if true %}
<script type="text/javascript">
g = {}
g.tick_list = [{%
for order in report.report_orders %}
[{{ loop.index0 }}, "{{ order[0] }}"],{%
endfor %}
];
g.single_file_stage_order = {{ report.single_file_stage_order|tojson|safe }};
function init() {
{% for (metric,build_mode),items in report.grouped_table|dictsort %}
setup_grouped_plot("{{metric.replace(' ','')}}_{{build_mode}}", {{ items|tojson|safe }});
{% endfor %}
{% for (metric,build_mode),items in report.single_file_table|dictsort %}
setup_single_file_plot("{{metric.replace(' ','')}}_{{build_mode}}", {{ items|tojson|safe }});
{% endfor %}
}
function setup_single_file_plot(name, items) {
var graph = $("#single_file_" + name);
var plots = [];
for (var i = 0; i != items.length; ++i) {
var item = items[i];
if (item === null)
continue;
plots.push({ label : g.single_file_stage_order[i],
data : item });
}
$.plot(graph, plots, {
series: {
pie: {
show: true }
},
legend: {
show: true },
grid: {
hoverable: true }});
// Add tooltips.
graph.bind("plothover", function(e,p,i) {
update_tooltip(e, p, i, show_pie_tooltip); });
}
function setup_grouped_plot(name, items) {
var graph = $("#grouped_" + name);
var plots = [];
// Build the list of plots.
items.sort();
for (var i = 0; i != items.length; ++i) {
var item = items[i];
var test_name = item[0];
var arch = item[1];
var values = item[2];
var plot = [];
for (var j = 0; j != values.length; ++j) {
plot.push([j, 100 * (values[j] - 1)]);
}
plots.push({ label : test_name + " :: " + arch,
data : plot });
}
$.plot(graph, plots, {
legend: {
position: 'nw' },
series: {
lines: { show: true },
points: { show: true } },
xaxis: {
ticks: g.tick_list },
yaxis: {
ticks: 5 },
grid: {
hoverable: true } });
// Add tooltips.
graph.bind("plothover", function(e,p,i) {
update_tooltip(e, p, i, show_tooltip); });
}
// Show our overlay tooltip.
g.current_tip_point = null;
function show_tooltip(x, y, item, pos) {
var data = item.datapoint;
var tip_body = '<div id="tooltip">';
tip_body += "<b><u>" + item.series.label + "</u></b><br/>";
tip_body += "<b>" + g.tick_list[data[0]][1].toString() + "</b>: ";
tip_body += data[1].toFixed(2) + "%" + "</div>";
$(tip_body).css( {
position: 'absolute',
display: 'none',
top: y + 5,
left: x + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo("body").fadeIn(200);
}
function show_pie_tooltip(x, y, item, pos) {
var tip_body = '<div id="tooltip">';
tip_body += "<b><u>" + item.series.label + "</u></b><br/>";
tip_body += item.series.percent.toFixed(2) + "%" + "</div>";
$(tip_body).css( {
position: 'absolute',
display: 'none',
top: pos.pageY + 5,
left: pos.pageX + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo("body").fadeIn(200);
}
// Event handler function to update the tooltop.
function update_tooltip(event, pos, item, show_fn) {
if (!item) {
$("#tooltip").remove();
g.current_tip_point = null;
return;
}
if (!g.current_tip_point || (g.current_tip_point[0] != item.datapoint[0] ||
g.current_tip_point[1] != item.datapoint[1])) {
$("#tooltip").remove();
g.current_tip_point = item.datapoint;
show_fn(pos.pageX, pos.pageY, item, pos);
}
}
$(function () { init(); });
</script>
{% set width='800px' %}
{% set height='500px' %}
<table border="1">
{% for metric,build_mode in report.grouped_table|sort %}
<tr>
<td>
<center><b>{{metric}} (normalized) / {{build_mode}}</b></center>
<div id="grouped_{{metric.replace(' ','')}}_{{build_mode}}"
style="margin:20px;width:{{width}};height:{{height}};"></div>
</td>
</tr>
{% endfor %}
{% for metric,build_mode in report.single_file_table|sort %}
<tr>
<td>
<center><b>{{metric}} Single File Breakdown / {{build_mode}}</b></center>
<div id="single_file_{{metric.replace(' ','')}}_{{build_mode}}"
style="margin:20px;width:{{width}};height:{{height}};"></div>
</td>
</tr>
{% endfor %}
</table>
{% endif %}
<h3>Release Data Table</h3>
{% for (metric,build_mode),items in report.grouped_table|dictsort %}
<h4>{{ metric }} - {{ build_mode }}</h4>
<table>
<thead>
<tr>
<th>Name</th><th>Arch</th>
{% for order in report.report_orders %}
<th>{{order[0]}}</th>
{% endfor %}
</tr>
</thead>
{% for test_name,arch,values in items|sort %}
<tr>
<td>{{test_name}}</td>
<td>{{arch}}</td>
{% for value in values %}
<td>{{ '%.4f' % value }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% endfor %}
<h3>Single File Breakdown Data Table</h3>
{% set keys = report.single_file_table.keys()|sort %}
<table>
<thead>
<tr>
<th>Stage Name</th>
{% for metric,build_mode in keys %}
<th>{{ build_mode }}</th>
{% endfor %}
</tr>
</thead>
{% for stage in report.single_file_stage_order %}
{% set stage_index = loop.index0 %}
<tr>
<td>{{stage}}</td>
{% for key in keys %}
<td>
{% set value = report.single_file_table[key][stage_index] %}
{{ '%.4f' % value if value is not none else 'N/A' }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% if request.args.get('show_normalized_table') %}
<h3>Normalized Data Table</h3>
<pre>
{{ report.normalized_data_table|pprint }}
</pre>
{% endif %}
{% if request.args.get('show_indexed_table') %}
<h3>Indexed Data Table</h3>
<pre>
{{ report.indexed_data_table|pprint }}
</pre>
{% endif %}
{% if request.args.get('show_raw_table') %}
<h3>Raw Data Table</h3>
<pre>
{{ report.data_table|pprint }}
</pre>
{% endif %}
{% if report.warnings %}
{% if request.args.get('show_warnings') or report.warnings|length > 20 %}
<h3>Warnings</h3>
<ul>
{% for ln in report.warnings %}
<li><pre>{{ ln }}</pre></li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{% endblock %}