// Location Hash wrapper script var LocationHash=function(a){function c(){var a=location.hash.substr(1).split("&");b={};for(var c=0,d;d=a[c];c++){var e=d.split("="),f=e[1].split(",");b[e[0]]=f.length>1?f:f[0]}}function d(){var a=[];for(var c in b){var d=b[c];a.push(c+"="+(d.join?d.join(","):d))}location.hash=a.join("&")}var b;return a(window).on("hashchange",c).trigger("hashchange"),{params:function(){return a.param(b)},get:function(a){return b[a]},set:function(a){for(var c in a){var e=a[c];e==undefined?delete b[c]:b[c]=e}d()}}}(jQuery); // set Accept header to JSON $.ajaxSetup({ beforeSend: function(req){ req.setRequestHeader('Accept', 'application/json'); } }); // Date.now polyfill (if needed) if (!Date.now) Date.now = function(){ return +new Date; }; $(function(){ var main = $('#main-graph'); var graph_opts = { xaxis: { mode: 'time', timeformat: '%h:%M:%S', minTickSize: [10, 'second'] }, yaxis: { min: 0, minTickSize: 1 }, lines: { show: true }, points: { show: false }, grid: { borderColor:'#FFF', color:'#FFF' }, legend: { backgroundColor:'#000' } }; function timestamp(str){ return Math.round(+new Date(str) / 1000); } function parse_error(xhr){ var data; try { data = xhr.status == 500 ? { error: 'zomg server fail :(' } : $.parseJSON(xhr.responseText); } catch(e) { data = { error: 'unknown error' }; } finally { return data; } } function update_graph(graph){ var req = { dataType: 'json', data: LocationHash.params() }; var path = location.pathname; graph.html('