Current state
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
Rickshaw.namespace('Rickshaw.Series.FixedDuration');
|
||||
|
||||
Rickshaw.Series.FixedDuration = Rickshaw.Class.create(Rickshaw.Series, {
|
||||
|
||||
initialize: function (data, palette, options) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
if (typeof(options.timeInterval) === 'undefined') {
|
||||
throw new Error('FixedDuration series requires timeInterval');
|
||||
}
|
||||
|
||||
if (typeof(options.maxDataPoints) === 'undefined') {
|
||||
throw new Error('FixedDuration series requires maxDataPoints');
|
||||
}
|
||||
|
||||
this.palette = new Rickshaw.Color.Palette(palette);
|
||||
this.timeBase = typeof(options.timeBase) === 'undefined' ? Math.floor(new Date().getTime() / 1000) : options.timeBase;
|
||||
this.setTimeInterval(options.timeInterval);
|
||||
|
||||
if (this[0] && this[0].data && this[0].data.length) {
|
||||
this.currentSize = this[0].data.length;
|
||||
this.currentIndex = this[0].data.length;
|
||||
} else {
|
||||
this.currentSize = 0;
|
||||
this.currentIndex = 0;
|
||||
}
|
||||
|
||||
this.maxDataPoints = options.maxDataPoints;
|
||||
|
||||
|
||||
if (data && (typeof(data) == "object") && Array.isArray(data)) {
|
||||
data.forEach( function (item) { this.addItem(item) }, this );
|
||||
this.currentSize += 1;
|
||||
this.currentIndex += 1;
|
||||
}
|
||||
|
||||
// reset timeBase for zero-filled values if needed
|
||||
this.timeBase -= (this.maxDataPoints - this.currentSize) * this.timeInterval;
|
||||
|
||||
// zero-fill up to maxDataPoints size if we don't have that much data yet
|
||||
if ((typeof(this.maxDataPoints) !== 'undefined') && (this.currentSize < this.maxDataPoints)) {
|
||||
for (var i = this.maxDataPoints - this.currentSize - 1; i > 1; i--) {
|
||||
this.currentSize += 1;
|
||||
this.currentIndex += 1;
|
||||
this.forEach( function (item) {
|
||||
item.data.unshift({ x: ((i-1) * this.timeInterval || 1) + this.timeBase, y: 0, i: i });
|
||||
}, this );
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
addData: function($super, data, x) {
|
||||
|
||||
$super(data, x);
|
||||
|
||||
this.currentSize += 1;
|
||||
this.currentIndex += 1;
|
||||
|
||||
if (this.maxDataPoints !== undefined) {
|
||||
while (this.currentSize > this.maxDataPoints) {
|
||||
this.dropData();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
dropData: function() {
|
||||
|
||||
this.forEach(function(item) {
|
||||
item.data.splice(0, 1);
|
||||
} );
|
||||
|
||||
this.currentSize -= 1;
|
||||
},
|
||||
|
||||
getIndex: function () {
|
||||
return this.currentIndex;
|
||||
}
|
||||
} );
|
||||
|
||||
Reference in New Issue
Block a user