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);
 |