blob: 1e8374eacc09e36870811b1469ffd015321a856f [file] [log] [blame]
<html>
<head>
<title>Benchtracker viewer</title>
<link rel="stylesheet" type="text/css" href="/static/viewer.css" />
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script type="text/javascript" src="http://gabelerner.github.io/canvg/rgbcolor.js"></script>
<script type="text/javascript" src="http://gabelerner.github.io/canvg/StackBlur.js"></script>
<script type="text/javascript" src="http://gabelerner.github.io/canvg/canvg.js"></script>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js'></script>
<script type='text/javascript' src='/static/FileSaver.js'></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.7.0/nv.d3.css" rel="stylesheet" type="text/css"></link>
<script>
var database = '{{database}}';
</script>
<script src="/static/plotter.js"></script>
<script src="/static/viewer.js"></script>
</head>
<body>
<div id="selection_bar">
<div class="box_wrapper"><div class="selection_box" id="task_select">
<h5 class="box_header">Select tasks</h5>
{% for task_name in tasks %}
<a class="task" title="{{ task_name }}">{{task_name}}</a>
{% endfor %}
</div></div>
<div class="box_wrapper"><div class="selection_box" id="x_box">
<h5 class="box_header">x parameter</h5>
<form id="x_param"></form>
</div></div>
<div class="box_wrapper"><div class="selection_box" id="y_box">
<h5 class="box_header">y parameter</h5>
<form id="y_param"></form>
</div> </div>
<div class="box_wrapper page_divider" id="add_filter"><br><br><br><br><h1>+</h1><br>filter</div>
</div>
<div id="display_canvas">
<div class="options_container">
<a class='page_divider divider_options' id="generate_plot">Generate plot</a>
<a class='page_divider divider_options' id="generate_csv">Download as CSV</a>
<a class='page_divider divider_options' id="get_query">Get query string</a>
</div>
<div id="plotter_container">
<a class='page_divider plotter_options' id='customizePlot'>Customize plot</a>
<a class='page_divider plotter_options' id='savePlot'>Save plots (png, svg)</a>
<a class='page_divider plotter_options' id='savePlotData'>Save plotter data</a>
<div id='custom_panel'>
<div class="custom_plot_selection_box" id="gmean_select">
<form class="custom_plot_form" id="gmean_options" action="">
<fieldset>
<legend><strong>average (geometric) over:</strong></legend>
</fieldset>
</form>
</div>
<div class="custom_plot_selection_box" id="overlay_select">
<form class="custom_plot_form" id="overlay_options" action="">
<fieldset>
<legend><strong>combined series over:</strong></legend>
</fieldset>
</form>
</div>
<button class='custom_plot_selection_box' id='get_custom_plot'>Get plot
</button>
</div>
</div>
<div id="chart">
</div>
<!--canvas id='canvas' width='1000px' height='600px'></canvas-->
</div>
<!--temp div for storing image-->
<div id='temp' style='display: none'>
</div>
</body>
<script>
var exec_delay = 100;
var t = "";
$(document).ready(function() {
report_debug(x_param);
{% if queried_x %}
x_sel = '{{queried_x}}';
{% endif %}
{% if queried_y %}
y_sel = '{{queried_y}}';
{% endif %}
{% for task in queried_tasks %}
var t = task_select.querySelector("a[title='{{task}}']");
if (t) toggle_task(t);
{% endfor %}
{% if filters %}
if (t) {
report_debug("preloading filters");
preload_filters();
}
{% endif %}
});
window.onload = function() {
}
function preload_filters() {
if (params.length !== 0) {
{% for filter in filters %}
var f_args = [];
{% for arg in filter.args %}
f_args.push('{{arg}}');
{% endfor %}
// convert each filter object to a filter window
preload_one_filter('{{filter.param}}', '{{filter.method}}', f_args);
{% endfor %}
}
else {report_debug("waiting for params"); setTimeout(preload_filters, exec_delay);}
}
function preload_one_filter(param, method, args) {
if (!active_querying_filter) {
var f = create_filter_window(param);
// make sure the selection box matches the filter method
preload_filter_sel(f, method, args);
}
else {report_debug("waiting for construction"); setTimeout(preload_one_filter, exec_delay, param, method, args);}
}
function preload_filter_sel(filter, method, args) {
var filter_sel = filter.getElementsByClassName("filter_sel");
if (filter_sel.length !== 0) {
filter_sel = filter_sel[0];
// all the incompatible selections
if ((method.toUpperCase() === "IN" && filter_sel.value === "range") ||
(method.toUpperCase() === "BETWEEN" && filter_sel.value === "categorical")) {
if (filter_sel.value === "categorical") filter_sel.value = "range";
else filter_sel.value = "categorical";
fire_event(filter_sel, 'change');
// keep calling itself until a compatible selection results and preload_filter_val is called
setTimeout(preload_filter_sel, exec_delay, filter, method, args);
}
else {
// can safely proceed to populate values
preload_filter_val(filter, method, args);
}
}
else {report_debug("waiting for filter sel"); setTimeout(preload_filter_sel, exec_delay, filter, method, args);}
}
function preload_filter_val(filter, method, args) {
var filter_val = filter.getElementsByClassName("filter_val");
if (filter_val.length !== 0) {
filter_val = filter_val[0];
if (method.toUpperCase() === "IN") {
report_debug("selecting in");
var sel_in = filter_val.getElementsByClassName("in")[0];
set_selected(sel_in, new Set(args));
}
else {
var min = filter_val.getElementsByClassName("min")[0];
var max = filter_val.getElementsByClassName("max")[0];
if (args.length !== 2) {report_debug("incorrect number of filter arguments:" + args.length + "for range"); return;}
min.value = Number(args[0]);
max.value = Number(args[1]);
}
}
else {report_debug("waiting for filter val"); setTimeout(preload_filter_val, exec_delay, filter, method, args);}
}
</script>
</html>