Files
twitter-project/devjan_static/lib/linecharts.js

84 lines
1.8 KiB
JavaScript

(function($, block) {
// a simple linechart example
block.fn.linechart = function(config) {
var options = $.extend({
line_series : ["default"],
line_options : {
series: {
lines: {
show: true
}
}
}}, config);
// create empty linechart with parameter options
var plot = $.plot(this.$element, [],options.line_options);
// dict containing the labels and values
var linedata_series = {};
var initline = function(series) {
for(var k in series) {
linedata_series[series[k]] = {order:k,data:[]};
}
}
initline(options.line_series);
var addline = function(label, values) {
var data;
if (linedata_series.hasOwnProperty(label))
data = linedata_series[label].data;
else
data = linedata_series['default'].data;
for(var v in values) {
data.push(values[v]);
}
redraw();
}
var setline = function(label, values) {
if (linedata_series.hasOwnProperty(label))
linedata_series[label].data = values;
else
linedata_series['default'].data = values;
redraw();
}
var redraw = function() {
var result = [];
for(var k in linedata_series) {
if (linedata_series.hasOwnProperty(k)) {
var line_serie = linedata_series[k];
result.push({label:k,data:line_serie.data});
}
}
plot.setData(result);
plot.setupGrid();
plot.draw();
}
var reset = function() {
initline(options.line_series);
}
this.actions({
'set': function(e, message) {
addline(message.series, message.value);
},
'add': function(e, message) {
addline(message.series, message.value);
},
'reset': function(e, message) {
reset();
}
});
// return element to allow further work
return this.$element;
}
})(jQuery, block);