Files

65 lines
1.4 KiB
JavaScript

(function($, block) {
// a simple piechart example
block.fn.piechart = function(config) {
var options = $.extend({
// see: http://www.flotcharts.org/flot/examples/series-pie/
pie_options : {
series: {
pie: {
show: true
}
}
}}, config);
// create empty piechart with parameter options
var plot = $.plot(this.$element, [],options.pie_options);
// dict containing the labels and values
var piedata_dict = {};
var addpie = function(label, value) {
if (piedata_dict.hasOwnProperty(label))
piedata_dict[label] = (piedata_dict[label] + value);
else
piedata_dict[label] = value;
redraw();
}
var setpie = function(label, value) {
piedata_dict[label] = value;
redraw();
}
var redraw = function() {
var result = [];
for(var k in piedata_dict) {
if (piedata_dict.hasOwnProperty(k)) {
result.push({label:k,data:piedata_dict[k]});
}
}
plot.setData(result);
plot.draw();
}
var reset = function() {
piedata_dict = {};
}
this.actions({
'set': function(e, message) {
setpie(message.value[0],message.value[1]);
},
'add': function(e, message) {
addpie(message.value[0],message.value[1]);
},
'reset': function(e, message) {
reset();
}
});
// return element to allow further work
return this.$element;
}
})(jQuery, block);