109 lines
2.6 KiB
JavaScript
109 lines
2.6 KiB
JavaScript
(function($, block) {
|
|
|
|
// a simple barchart example
|
|
block.fn.barchart = function(config) {
|
|
var options = $.extend({
|
|
series : { "serie1":{
|
|
data: {"January": 10, "February": 8, "March": 4, "April": 13, "May": 20, "June": 9},
|
|
label: "serie 1",
|
|
bars: {
|
|
show: true,
|
|
barWidth: 0.2,
|
|
align: "left"
|
|
}
|
|
|
|
}, "serie2":{
|
|
data: {"January": 10, "February": 8, "March": 4, "April": 13, "May": 20, "June": 9},
|
|
label: "series 2",
|
|
bars: {
|
|
show: true,
|
|
barWidth: 0.2,
|
|
align: "center"
|
|
}
|
|
}, "serie3":{
|
|
data: {"January": 10, "February": 8, "March": 4, "April": 13, "May": 20, "June": 9},
|
|
label: "series 3",
|
|
bars: {
|
|
show: true,
|
|
barWidth: 0.2,
|
|
align: "right"
|
|
}
|
|
}}
|
|
}, config);
|
|
|
|
var bar_init = {
|
|
xaxis: {
|
|
mode: "categories",
|
|
tickLength: 0
|
|
}
|
|
}
|
|
|
|
var bardata_series = options.series;
|
|
|
|
var translate_bar = function() {
|
|
var result = [];
|
|
for(var k in bardata_series) {
|
|
if (bardata_series.hasOwnProperty(k)) {
|
|
var newserie = jQuery.extend({}, bardata_series[k]);
|
|
var newdata = [];
|
|
var data = newserie.data;
|
|
for(var l in data) {
|
|
if (data.hasOwnProperty(l)) {
|
|
newdata.push([l,data[l]]);
|
|
}
|
|
}
|
|
newserie.data = newdata;
|
|
result.push(newserie);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
var plot = $.plot(this.$element, translate_bar(), bar_init);
|
|
|
|
var addbar = function(serie_label, category, value) {
|
|
var data = bardata_series[serie_label].data;
|
|
if (data.hasOwnProperty(category))
|
|
data[category] = (data[category] + value);
|
|
else
|
|
data[category] = value;
|
|
redraw();
|
|
}
|
|
|
|
var setbar = function(serie_label, category, value) {
|
|
var data = bardata_series[serie_label].data;
|
|
data[category] = value;
|
|
redraw();
|
|
}
|
|
|
|
var redraw = function() {
|
|
plot.setData(translate_bar());
|
|
plot.setupGrid();
|
|
plot.draw();
|
|
}
|
|
|
|
var reset = function() {
|
|
for(var k in bardata_series) {
|
|
if (bardata_series.hasOwnProperty(k)) {
|
|
bardata_series[k].data = {};
|
|
}
|
|
}
|
|
}
|
|
|
|
this.actions({
|
|
'set': function(e, message) {
|
|
setbar(message.series,message.value[0],message.value[1]);
|
|
},
|
|
'add': function(e, message) {
|
|
addbar(message.series,message.value[0],message.value[1]);
|
|
},
|
|
'reset': function(e, message) {
|
|
reset();
|
|
}
|
|
});
|
|
// return element to allow further work
|
|
return this.$element;
|
|
}
|
|
|
|
})(jQuery, block);
|