84 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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);
 |