49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
import extend from 'extend';
|
|
|
|
// This class is inspired by // http://bl.ocks.org/mbostock/3885304.
|
|
class BarChart {
|
|
|
|
get chart_options(){
|
|
return {
|
|
series_opacity_gradient: true,
|
|
margin: {top: 0, left: 70, bottom: 50, right: 20}
|
|
};
|
|
}
|
|
|
|
serializeData(data){
|
|
var bar_chart = this,
|
|
serialized_data = {
|
|
max: undefined,
|
|
series: []
|
|
};
|
|
|
|
data.forEach(function(data_set){
|
|
var series = extend({
|
|
css_class: bar_chart.toClass ? bar_chart.toClass(data_set) : "",
|
|
title: bar_chart.titleize ? bar_chart.titleize(data_set) : ""
|
|
}, data_set);
|
|
series.total = 0;
|
|
series.values = [];
|
|
data_set.values.forEach(function(datum, j){
|
|
var series_datum = extend({
|
|
name: datum.name,
|
|
value: datum.value,
|
|
cummulative: series.total,
|
|
css_class: bar_chart.toClass ? bar_chart.toClass(data_set, datum) : "",
|
|
title: bar_chart.titleize ? bar_chart.titleize(data_set, datum) : "",
|
|
opacity: 1.0 - 0.5 * (j / data_set.values.length)
|
|
}, datum);
|
|
series_datum.series = series;
|
|
series.total += datum.value;
|
|
series.values.push(series_datum);
|
|
});
|
|
serialized_data.series.push(series);
|
|
serialized_data.max = serialized_data.max === undefined ?
|
|
series.total :
|
|
Math.max(serialized_data.max, Math.abs(series.total));
|
|
});
|
|
return serialized_data;
|
|
};
|
|
|
|
}
|