diff options
author | Richard Wall <richard@aziz> | 2010-04-10 17:06:34 +0100 |
---|---|---|
committer | Richard Wall <richard@aziz> | 2010-04-10 17:06:34 +0100 |
commit | 887896a5019a4e5bd1fe6d1550eae3248faeb18e (patch) | |
tree | 85bcd02d06d8e1c575d4708b8576b7a74085cfa4 | |
parent | 7bda611c65b63b8f9dd1d46033dabb190984f3a9 (diff) |
pass arguments where possible
-rw-r--r-- | index.html | 29 | ||||
-rw-r--r-- | jrrd.js | 56 |
2 files changed, 50 insertions, 35 deletions
@@ -71,21 +71,22 @@ return c; } - var RrdQueryDsProxy = function(rrdQuery, dsId) { - this.rrdQuery = rrdQuery; - this.dsId = dsId; - }; - - RrdQueryDsProxy.prototype.getData = function(startTime, endTime) { - return this.rrdQuery.getData(startTime, endTime, this.dsId); - }; - function loadChartFactory(template) { var c = new jrrd.Chart(template, baseOptions); var data = new jrrd.RrdQueryRemote('data/localhost/load/load.rrd'); var rrdDSs = ['shortterm', 'midterm', 'longterm']; jQuery.each(rrdDSs, function(i, rrdDS) { - c.addData(rrdDS, new RrdQueryDsProxy(data, rrdDS)); + c.addData(rrdDS, new jrrd.RrdQueryDsProxy(data, rrdDS)); + }); + return c; + } + + function nicChartFactory(template, nicname) { + var c = new jrrd.Chart(template, baseOptions); + var data = new jrrd.RrdQueryRemote('data/localhost/interface/if_octets-' + nicname + '.rrd'); + var rrdDSs = ['tx', 'rx']; + jQuery.each(rrdDSs, function(i, rrdDS) { + c.addData(rrdDS, new jrrd.RrdQueryDsProxy(data, rrdDS)); }); return c; } @@ -96,6 +97,12 @@ loadChartFactory( chartTemplate.clone().appendTo('.charts')), + nicChartFactory( + chartTemplate.clone().appendTo('.charts'), 'lo'), + + nicChartFactory( + chartTemplate.clone().appendTo('.charts'), 'eth0'), + cpuChartFactory( chartTemplate.clone().appendTo('.charts')), @@ -105,7 +112,7 @@ jQuery.each(charts, function(i, chart) { chart.draw(new Date('7 April 2010 09:30:00'), - new Date('7 April 2010 15:00:00')); + new Date('10 April 2010 15:00:00')); }); $('.chart').bind("plotselected", function(event, ranges) { @@ -54,6 +54,10 @@ jrrd.RrdQuery.prototype.getData = function(startTime, endTime, dsId) { var consolidationFunc = 'AVERAGE'; var lastUpdated = this.rrd.getLastUpdate(); + // If end time stamp is beyond the range of this rrd then reset it + if(lastUpdated < endTimestamp) { + endTimestamp = lastUpdated; + } var bestRRA = null; for(var i=0; i<this.rrd.getNrRRAs(); i++) { // Look through all RRAs looking for the most suitable @@ -76,8 +80,8 @@ jrrd.RrdQuery.prototype.getData = function(startTime, endTime, dsId) { throw new Error('Unrecognised consolidation function: ' + consolidationFunc); } - var startRow = rraRowCount - parseInt((lastUpdated - startTimestamp)/step); - var endRow = rraRowCount - parseInt((lastUpdated - endTimestamp)/step); + var startRow = rraRowCount - parseInt((lastUpdated - startTimestamp)/step) - 1; + var endRow = rraRowCount - parseInt((lastUpdated - endTimestamp)/step) - 1; var flotData = []; var timestamp = firstUpdated + (startRow - 1) * step; @@ -100,8 +104,6 @@ jrrd.RrdQueryRemote = function(url) { jrrd.RrdQueryRemote.prototype.getData = function(startTime, endTime, dsId) { var endTimestamp = endTime.getTime()/1000; - var self = this; - // Download the rrd if there has never been a download or if the last // completed download had a lastUpdated timestamp less than the requested // end time. @@ -109,42 +111,50 @@ jrrd.RrdQueryRemote.prototype.getData = function(startTime, endTime, dsId) { if(!this._download || (this._download.fired > -1 && this.lastUpdate < endTimestamp )) { this._download = jrrd.downloadBinary(this.url) .addCallback( - function(binary) { + function(self, binary) { // Upon successful download convert the resulting binary // into an RRD file and pass it on to the next callback // in the chain. var rrd = new RRDFile(binary); self.lastUpdate = rrd.getLastUpdate(); return rrd; - }); + }, this); } // Set up a deferred which will call getData on the local RrdQuery object // returning a flot compatible data object to the caller. var ret = new MochiKit.Async.Deferred().addCallback( - function(rrd) { + function(startTime, endTime, dsId, rrd) { return new jrrd.RrdQuery(rrd).getData(startTime, endTime, dsId); - }); + }, startTime, endTime, dsId); // Add a pair of callbacks to the current download which will callback the // result which we setup above. - this._download.addCallbacks( - function(res) { - ret.callback(res); + this._download.addBoth( + function(ret, res) { + if(res instanceof Error) { + ret.errback(res); + } else { + ret.callback(res); + } return res; - }, - function(err) { - ret.errback(err); - return err; - }); + }, ret); return ret; }; -jrrd.Chart = function(template, options) { - var self = this; +jrrd.RrdQueryDsProxy = function(rrdQuery, dsId) { + this.rrdQuery = rrdQuery; + this.dsId = dsId; +}; +jrrd.RrdQueryDsProxy.prototype.getData = function(startTime, endTime) { + return this.rrdQuery.getData(startTime, endTime, this.dsId); +}; + + +jrrd.Chart = function(template, options) { this.template = template; this.options = options; this.data = []; @@ -155,8 +165,6 @@ jrrd.Chart.prototype.addData = function(label, db) { }; jrrd.Chart.prototype.draw = function(startTime, endTime) { - var self = this; - var results = []; for(var i=0; i<this.data.length; i++) { results.push(this.data[i][1].getData(startTime, endTime)); @@ -164,14 +172,14 @@ jrrd.Chart.prototype.draw = function(startTime, endTime) { return MochiKit.Async.gatherResults(results) .addCallback( - function(data) { + function(self, data) { for(var i=0; i<data.length; i++) { data[i].label = self.data[i][0]; } var plot = $.plot(self.template, data, self.options); - }) + }, this) .addErrback( - function(failure) { + function(self, failure) { self.template.text('error: ' + failure.message); - }); + }, this); }; |