UNPKG

rickshaw

Version:

Rickshaw is a JavaScript toolkit for creating interactive time series graphs, developed at [Shutterstock](http://www.shutterstock.com)

68 lines (47 loc) 1.18 kB
Rickshaw.namespace('Rickshaw.Graph.Smoother'); Rickshaw.Graph.Smoother = function(args) { this.graph = args.graph; this.element = args.element; var self = this; this.aggregationScale = 1; if (this.element) { $( function() { $(self.element).slider( { min: 1, max: 100, slide: function( event, ui ) { self.setScale(ui.value); self.graph.update(); } } ); } ); } self.graph.stackData.hooks.data.push( { name: 'smoother', orderPosition: 50, f: function(data) { var aggregatedData = []; data.forEach( function(seriesData) { var aggregatedSeriesData = []; while (seriesData.length) { var avgX = 0, avgY = 0; var slice = seriesData.splice(0, self.aggregationScale); slice.forEach( function(d) { avgX += d.x / slice.length; avgY += d.y / slice.length; } ); aggregatedSeriesData.push( { x: avgX, y: avgY } ); } aggregatedData.push(aggregatedSeriesData); } ); return aggregatedData; } } ); this.setScale = function(scale) { if (scale < 1) { throw "scale out of range: " + scale; } this.aggregationScale = scale; this.graph.update(); } };