function selectRankingTable() {
var val = $("#select_rankingTable").attr("value");
var types = ["qs", "lcssr", "lcssi", "lcss1r", "lcss1i"];
for (index in types) {
var type = types[index];
$("#div_rankingTable_" + type).css(
"display", (val == type) ? "block" : "none");
}
var nrows = $("#rankingTable_" + val).find("tr").length - 1;
$("#rankingTable_nrows").text(nrows + ((nrows == 1) ? " row" : " rows"));
}
// ### Same function in tsstats.js -> move both to a common place? tsbmbody.js?
// 2 B DONE!
function clickBenchmarkCheckbox(
cb, tableSel, database, host, platform, branch, sha11, sha12, benchmark,
metric, difftol, durtolmin, durtolmax) {
if (cb.checked) {
// Deselect all other benchmarks:
$(tableSel + " input").attr("checked", false);
cb.checked = true;
index = cb.id.match(/bm_cb:(\d+)/)[1];
// Fetch and plot time series:
fetchTimeSeries(
database, host, platform, branch, sha11, sha12, benchmark, metric,
difftol, durtolmin, durtolmax, true);
} else {
clearPlot();
}
}
function populateRankingTable(
tableSel, rankings, database, host, platform, branch, sha11, sha12,
difftol, durtolmin, durtolmax, bmarkId2Name, metricId2Name) {
// Remove all rows below the header ...
$(tableSel + " tr:gt(0)").remove();
var html = "";
for (var i = 0; i < rankings.length; ++i) {
row = rankings[i];
bmarkId = row[0];
metricId = row[1];
context1Id = row[2]; // unused?
pos = row[3];
val = row[4];
benchmark = bmarkId2Name[bmarkId];
metric = metricId2Name[metricId];
html += "
"
html += "";
html += " | " + pos + " | ";
html += "<trend> | ";
html += "" + val + " | ";
html += "" + metric + " | ";
html += "" + benchmark + " | ";
html += "
";
}
$(tableSel + " > tbody:last").append(html);
}
function fetchRankings(database, host, platform, branch, sha1) {
updateStatus("fetching rankings ...", true);
query = "?db=" + database +
"&cmd=rankings" +
"&host=" + encodeURIComponent(host) +
"&platform=" + encodeURIComponent(platform) +
"&branch=" + encodeURIComponent(branch) +
"&sha1=" + sha1;
url = "http://" + location.host + "/cgi-bin/getstatswrapper" + query;
//alert("url: >" + url + "<");
$.ajax({
url: url,
type: "GET",
dataType: "json",
success: function(data, textStatus, request) {
if (request.readyState == 4) {
if (request.status == 200) {
if (data.error != null) {
updateStatus(
"fetching rankings ... failed: " +
data.error, false);
return
}
updateStatus("fetching rankings ... done", false);
updateStatus("", false);
var sha11 = data.snapshots[0][0];
var sha12 = data.snapshots[data.snapshots.length - 1][0];
// Show context ...
$("#main_context_database").text(data.database);
$("#main_context_host").text(data.host);
$("#main_context_platform").text(data.platform);
$("#main_context_branch").text(data.branch);
$("#main_context_sha11").text(sha11);
$("#main_context_sha12").text(sha12);
$("#main_context_difftol").text("---");
$("#main_context_durtolmin").text("---");
$("#main_context_durtolmax").text("---");
setSnapshots(data.snapshots);
// ### The tolerance values should automatically be
// set to those hardcoded in finalizeresults.py!
// ... 2 B DONE!
difftol = 1.1;
durtolmin = 3;
durtolmax = 30;
var bmarkId2Name = [];
for (var i = 0; i < data.benchmarks.length; ++i) {
bmarkInfo = data.benchmarks[i];
bmarkId2Name[bmarkInfo[0]] = bmarkInfo[1];
}
var metricId2Name = [];
for (var i = 0; i < data.metrics.length; ++i) {
metricInfo = data.metrics[i];
metricId2Name[metricInfo[0]] = metricInfo[1];
}
rankings = {
"qs": data.rankings.qs,
"lcssr": data.rankings.lcssr,
"lcssi": data.rankings.lcssi,
"lcss1r": data.rankings.lcss1r,
"lcss1i": data.rankings.lcss1i
};
for (key in rankings)
populateRankingTable(
"#rankingTable_" + key, rankings[key],
data.database, data.host, data.platform,
data.branch, sha11, sha12, difftol, durtolmin,
durtolmax, bmarkId2Name, metricId2Name);
// Initially show the QS statistic table:
$("#select_rankingTable").attr("value", "qs");
selectRankingTable();
$("#div_tsbm_border").css("display", "block");
$("#div_tsbm").css("display", "block");
$("#div_perBenchmarkStats").css("display", "block");
$("#div_context").css("display", "block");
$("#div_rankings").css("display", "block");
clearPlot();
}
}
},
error: function(request, textStatus, errorThrown) {
descr = errorThrown;
if (errorThrown == null) {
descr = "undefined error - is the server down?";
}
updateStatus("fetching rankings ... error: " + descr, false);
}
// complete: function(request, textStatus) {
// alert("complete; request.status: " + request.status)
// }
});
}
function initRankingTable(tableSel) {
// Note: The nth-child selector below uses 1-based indexing!
setTooltip($(tableSel).find("th:nth-child(2)"), "---");
setTooltip($(tableSel).find("th:nth-child(3)"), "---");
}
$(document).ready(function() {
initTablesorter();
initTSBMBody();
initRankingTable("#rankingTable_qs");
initRankingTable("#rankingTable_lcssr");
initRankingTable("#rankingTable_lcssi");
initRankingTable("#rankingTable_lcss1r");
initRankingTable("#rankingTable_lcss1i");
var args = queryStringArgs();
database = extractArg(args, "db");
if (database == "") {
alert("ERROR: invalid query string (empty database)");
return;
}
host = extractArg(args, "host");
if (host == "") {
alert("ERROR: invalid query string (empty host)");
return;
}
platform = extractArg(args, "platform");
if (platform == "") {
alert("ERROR: invalid query string (empty platform)");
return;
}
branch = extractArg(args, "branch");
if (branch == "") {
alert("ERROR: invalid query string (empty branch)");
return;
}
sha1 = extractArg(args, "sha1");
if (sha1 == "") {
alert("ERROR: invalid query string (empty sha1)");
return;
}
$("#div_tsbm_border").css("display", "none");
$("#div_tsbm").css("display", "none");
$("#div_rankings").css("display", "none");
fetchRankings(database, host, platform, branch, sha1);
});