Merge "Mockup of second page"

This commit is contained in:
Jenkins 2015-09-16 15:52:27 +00:00 committed by Gerrit Code Review
commit 58a41eb680
2 changed files with 265 additions and 0 deletions

View File

@ -0,0 +1,131 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highcharts Example</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<style type="text/css">
${demo.css}
</style>
<script src="project_data.json"></script>
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/highcharts-more.js"></script>
<script src="http://code.highcharts.com/modules/solid-gauge.js"></script>
</head>
<body>
<button id="button" class"autocompare">Update</button>
<div id="timegraph" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<table id="jobtable">
<tr><td>Failures</td><td>Job Name</td><td>Run Time</td><td>Passed</td><td>Failed</td><td>%Failed</td>
</table>
<script type="text/javascript">
var data = JSON.parse(project_data);
$(function () {
$('#timegraph').highcharts('StockChart',{
title: {
text: 'Nova Jobs',
x: -20 //center
},
xAxis: {
categories: []
},
yAxis: {
title: {
text: 'Counts'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
});
});
$('#button').click(function() {
var range = new Array();
var pass = new Array();
var fail = new Array();
var jobs = new Array();
for (var ele=0; ele < data.timedata.length; ele++) {
var obj = data.timedata[ele];
range[ele]=obj.datetime;
var n_fail = 0;
var n_pass = 0;
for (var loop=0; loop < obj.job_data.length; loop++) {
var job = obj.job_data[loop].job_name;
n_fail += obj.job_data[loop].fail;
n_pass += obj.job_data[loop].pass;
var found = 0;
for (loop2=0; loop2 < jobs.length; loop2++) {
if (jobs[loop2].job_name === job) {
found = 1;
jobs[loop2].fail += obj.job_data[loop].fail;
jobs[loop2].pass += obj.job_data[loop].pass;
jobs[loop2].fail_sparc_data.push(obj.job_data[loop].fail);
jobs[loop2].run_time_sparc_data.push(obj.job_data[loop].mean_run_time);
}
}
if (found === 0) {
jobs.push({job_name: job, pass: obj.job_data[loop].pass, fail: obj.job_data[loop].fail, fail_sparc_data:[obj.job_data[loop].fail], run_time_sparc_data:[obj.job_data[loop].mean_run_time]});
}
}
pass[ele] = n_pass;
fail[ele] = n_fail;
}
var tgraph = $('#timegraph').highcharts();
while(tgraph.series.length > 0)
tgraph.series[0].remove(true);
tgraph.addSeries({name: "Pass", data: pass});
tgraph.addSeries({name: "Failed", data: fail});
tgraph.xAxis[0].setCategories(range);
tgraph.redraw();
var ttable=$('#jobtable').find('tbody');
for (var loop=0; loop<jobs.length; loop++) {
pct = ( jobs[loop].fail * 100 ) / (jobs[loop].fail + jobs[loop].pass);
ttable.append($('<tr>')
.append($('<td><div id="fail_sparc_'+loop+'" style="height:100px"></div></td>'))
.append($('<td>'+jobs[loop].job_name+'</td>'))
.append($('<td><div id="runtime_sparc_'+loop+'" style="height:100px"></div></td>'))
.append($('<td>'+jobs[loop].pass+'</td>'))
.append($('<td>'+jobs[loop].fail+'</td>'))
.append($('<td>'+pct+'</td></tr>'))
);
$('#fail_sparc_'+loop).highcharts({
title: { text: ' ' },
subtitle: { text: ' '},
xAxis: { lineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', title: { text: ' ' }, labels: { enabled: false }},
yAxis: { lineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', title: { text: ' ' }, labels: { enabled: false }},
series: [{name: ' ', data: jobs[loop].fail_sparc_data}],
plotOptions: {line: { marker: { enabled: false } } },
height: 100,
width: 150
});
$('#runtime_sparc_'+loop).highcharts({
title: { text: ' ' },
subtitle: { text: ' '},
xAxis: { lineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', title: { text: ' ' }, labels: { enabled: false }},
yAxis: { lineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', title: { text: ' ' }, labels: { enabled: false }},
series: [{name: ' ', data: jobs[loop].run_time_sparc_data}],
plotOptions: {line: { marker: { enabled: false } } },
height: 100,
width: 150
});
}
});
</script>
</body>
</html>

View File

@ -0,0 +1,134 @@
project_data = '{ "timedata": ['+
' { "datetime": "02 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 20,'+
' "fail": 40,'+
' "mean_run_time": 10.5 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 15,'+
' "fail": 45,'+
' "mean_run_time": 5.3 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 40,'+
' "fail": 20,'+
' "mean_run_time": 50 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 45,'+
' "fail": 15,'+
' "mean_run_time": 70 } ]'+
' },'+
' { "datetime": "03 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 30,'+
' "fail": 30,'+
' "mean_run_time": 12 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 20,'+
' "fail": 40,'+
' "mean_run_time": 6 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 45,'+
' "fail": 15,'+
' "mean_run_time": 35 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 45,'+
' "fail": 15,'+
' "mean_run_time": 70 } ]'+
' },'+
' { "datetime": "04 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 35,'+
' "fail": 25,'+
' "mean_run_time": 15 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 45,'+
' "fail": 15,'+
' "mean_run_time": 8.2 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 50,'+
' "fail": 10,'+
' "mean_run_time": 45 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 55,'+
' "fail": 5,'+
' "mean_run_time": 60 } ]'+
' },'+
' { "datetime": "05 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 20.5 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 8 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 40 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 45 } ]'+
' },'+
' { "datetime": "06 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 20.5 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 8 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 40 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 45 } ]'+
' },'+
' { "datetime": "07 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 20.5 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 8 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 40 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 45 } ]'+
' },'+
' { "datetime": "08 Jun 2015",'+
' "job_data": ['+
' { "job_name": "gate-devstack-dsvm-cells",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 20.5 },'+
' { "job_name": "gate-nove-tox-functional",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 8 },'+
' { "job_name": "gate-grenade-dsvm-partial",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 40 },'+
' { "job_name": "gate-grenade-dsvm-ironic-sideways",'+
' "pass": 60,'+
' "fail": 0,'+
' "mean_run_time": 45 } ]'+
' } ] }';