diff options
author | Richard Wall <richard@largo> | 2010-04-07 18:50:50 +0100 |
---|---|---|
committer | Richard Wall <richard@largo> | 2010-04-07 18:50:50 +0100 |
commit | ea8221a11b392e5e6d75df35dce8387b958ee0b1 (patch) | |
tree | 8c832107ff21382122df420bb22fb05c89e37d05 /index.html | |
parent | 13c06a283089c85e682097eb0ecb17a86df805a0 (diff) |
Objectify things
Diffstat (limited to 'index.html')
-rw-r--r-- | index.html | 74 |
1 files changed, 50 insertions, 24 deletions
@@ -13,9 +13,14 @@ <script type="text/javascript" src="assets/javascript/MochiKit/Base.js"></script> <script type="text/javascript" src="assets/javascript/MochiKit/Async.js"></script> <script type="text/javascript"> - var rrd, err; - function downloadRRD(url) { + var RrdDataWrapper = function(url, rrd) { + this.url = url; + this.rrd = rrd; + } + + RrdDataWrapper.load = function(url) { var d = new MochiKit.Async.Deferred(); + $.ajax({ url: url, dataType: 'text', @@ -28,7 +33,10 @@ }, success: function(data) { try { - d.callback(new RRDFile(new BinaryFile(data))); + d.callback( + new RrdDataWrapper( + url, + new RRDFile(new BinaryFile(data)))); } catch(e) { d.errback(e); } @@ -47,38 +55,56 @@ return d; } - $(function() { - var urls = [ - 'data/localhost/interface/if_packets-eth0.rrd', - 'data/localhost/interface/if_packets-lo.rrd' - ]; + RrdDataWrapper.prototype = { + getData: function(consolidationFunc, targetResolution) { + var bestRRA = null; + for(var i=0; i<this.rrd.getNrRRAs(); i++) { + // Look through all RRAs looking for the most suitable + // data resolution. + var rra = this.rrd.getRRA(i); - var results = [] - jQuery.each(urls, function(i, url) { - var d = downloadRRD(url); - results.push(d); - }); + if(rra.getCFName() != consolidationFunc) { + continue; + } - dl = new MochiKit.Async.DeferredList(results); + if(!bestRRA) { + bestRRA = rra; + continue; + } - dl.addCallbacks( - function(results) { - data = []; + var bestDiff = Math.abs(bestRRA.getStep() - targetResolution); + var newDiff = Math.abs(rra.getStep() - targetResolution); + if(newDiff < bestDiff) { + bestRRA = rra; + } else { + break; + } + } + + if(!bestRRA) { + throw new Error('Unrecognised consolidation function: ' + consolidationFunc); + } - jQuery.each(results, function(i, result) { - rrd = result[1]; - var series = rrdRRA2FlotObj(rrd, 3, [0, 1], 1, 1); - data = data.concat(series.data); - }); + return rrdRRA2FlotObj(this.rrd, bestRRA.getIdx(), + this.rrd.getDSNames(), 1, 1).data; + } + }; - options = { + $(function() { + var d = RrdDataWrapper.load('data/localhost/load/load.rrd'); + + d.addCallback( + function(rrd) { + var options = { xaxis: { mode: "time" } }; + var data = rrd.getData('AVERAGE', 100); var plot = $.plot($('.container'), data, options); - }, + }); + d.addErrback( function(failure) { err = failure; $('.container').text('error: ' + failure.message); |