Файл: templates/backend/default/assets/plugins/jquery-ricksaw-chart/js/Rickshaw.Graph.Smoother.js
Строк: 41
<?php
Rickshaw.namespace('Rickshaw.Graph.Smoother');
Rickshaw.Graph.Smoother = Rickshaw.Class.create({
initialize: function(args) {
this.graph = args.graph;
this.element = args.element;
this.aggregationScale = 1;
this.build();
this.graph.stackData.hooks.data.push( {
name: 'smoother',
orderPosition: 50,
f: this.transformer.bind(this)
} );
},
build: function() {
var self = this;
if (this.element) {
$( function() {
$(self.element).slider( {
min: 1,
max: 100,
slide: function( event, ui ) {
self.setScale(ui.value);
self.graph.update();
}
} );
} );
}
},
setScale: function(scale) {
if (scale < 1) {
throw "scale out of range: " + scale;
}
this.aggregationScale = scale;
this.graph.update();
},
transformer: function(data) {
if (this.aggregationScale == 1) return data;
var aggregatedData = [];
data.forEach( function(seriesData) {
var aggregatedSeriesData = [];
while (seriesData.length) {
var avgX = 0, avgY = 0;
var slice = seriesData.splice(0, this.aggregationScale);
slice.forEach( function(d) {
avgX += d.x / slice.length;
avgY += d.y / slice.length;
} );
aggregatedSeriesData.push( { x: avgX, y: avgY } );
}
aggregatedData.push(aggregatedSeriesData);
}.bind(this) );
return aggregatedData;
}
});
?>