summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Wall <richard@largo>2010-04-07 18:50:50 +0100
committerRichard Wall <richard@largo>2010-04-07 18:50:50 +0100
commitea8221a11b392e5e6d75df35dce8387b958ee0b1 (patch)
tree8c832107ff21382122df420bb22fb05c89e37d05
parent13c06a283089c85e682097eb0ecb17a86df805a0 (diff)
Objectify things
-rw-r--r--index.html74
1 files changed, 50 insertions, 24 deletions
diff --git a/index.html b/index.html
index 74b5462..e781ee6 100644
--- a/index.html
+++ b/index.html
@@ -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);