Skip to content

Commit eb58fd8

Browse files
author
=
committed
1 parent e3c72c9 commit eb58fd8

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

chartjs/views/columns.py

+24-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Tools to build Columns HighCharts parameters."""
22
from .base import JSONView
3-
3+
from ..colors import next_color
44

55
class BaseColumnsHighChartsView(JSONView):
66
"""Base Class to generate Column HighCharts configuration.
@@ -12,19 +12,23 @@ class BaseColumnsHighChartsView(JSONView):
1212
providers = {}
1313
credits = {"enabled": True}
1414

15+
def get_colors(self):
16+
return next_color()
17+
1518
def get_context_data(self, **kwargs):
1619
"""Return graph configuration."""
1720
context = super(BaseColumnsHighChartsView, self).get_context_data(**kwargs)
1821
context.update(
1922
{
23+
'labels': self.get_labels(),
2024
"chart": self.get_type(),
2125
"title": self.get_title(),
2226
"subtitle": self.get_subtitle(),
2327
"xAxis": self.get_xAxis(),
2428
"yAxis": self.get_yAxis(),
2529
"tooltip": self.get_tooltip(),
2630
"plotOptions": self.get_plotOptions(),
27-
"series": self.get_series(),
31+
"datasets": self.get_series(),
2832
"credits": self.credits,
2933
}
3034
)
@@ -100,13 +104,26 @@ def get_plotOptions(self):
100104
return {"column": {"pointPadding": 0.2, "borderWidth": 0}}
101105

102106
def get_series(self):
103-
"""Generate HighCharts series from providers and data."""
104-
series = []
107+
datasets = []
108+
color_generator = self.get_colors()
105109
data = self.get_data()
106110
providers = self.get_providers()
107-
for i, d in enumerate(data):
108-
series.append({"name": providers[i], "data": d})
109-
return series
111+
for i, entry in enumerate(data):
112+
color = tuple(next(color_generator))
113+
dataset = {"data": entry,
114+
"label": providers[i],}
115+
dataset.update(self.get_dataset_options(i, color))
116+
datasets.append(dataset)
117+
return datasets
118+
119+
def get_dataset_options(self, index, color):
120+
default_opt = {
121+
"backgroundColor": "rgba(%d, %d, %d, 0.5)" % color,
122+
"borderColor": "rgba(%d, %d, %d, 1)" % color,
123+
"pointBackgroundColor": "rgba(%d, %d, %d, 1)" % color,
124+
"pointBorderColor": "#fff",
125+
}
126+
return default_opt
110127

111128
def get_data(self):
112129
"""Return a list of series [[25, 34, 0, 1, 50], ...]).

0 commit comments

Comments
 (0)