65 lines
1.4 KiB
JavaScript
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);
|