from operator import itemgetter __all__ = ('chart_colors', 'highlight_colors', 'get_pie_chart', 'get_bar_chart') chart_colors = [0x3366CC, 0xDC3912, 0xFF9900, 0x109618, 0x990099, 0x3B3EAC, 0x0099C6, 0xDD4477, 0x66AA00, 0xB82E2E, 0x316395, 0x994499, 0x22AA99, 0xAAAA11, 0x6633CC, 0xE67300, 0x8B0707, 0x329262, 0x5574A6, 0x3B3EAC] highlight_colors = [] def _highlight_colors(): for color in chart_colors: r, g, b = color >> 16, (color >> 8) & 0xFF, color & 0xFF highlight_colors.append('#%02X%02X%02X' % (min(int(r * 1.2), 255), min(int(g * 1.2), 255), min(int(b * 1.2), 255))) _highlight_colors() chart_colors = list(map('#%06X'.__mod__, chart_colors)) def get_pie_chart(data): return { 'labels': list(map(itemgetter(0), data)), 'datasets': [ { 'backgroundColor': chart_colors, 'highlightBackgroundColor': highlight_colors, 'data': list(map(itemgetter(1), data)), }, ], } def get_bar_chart(data, **kwargs): return { 'labels': list(map(itemgetter(0), data)), 'datasets': [ { 'backgroundColor': kwargs.get('fillColor', 'rgba(151,187,205,0.5)'), 'borderColor': kwargs.get('strokeColor', 'rgba(151,187,205,0.8)'), 'borderWidth': 1, 'hoverBackgroundColor': kwargs.get('highlightFill', 'rgba(151,187,205,0.75)'), 'hoverBorderColor': kwargs.get('highlightStroke', 'rgba(151,187,205,1)'), 'data': list(map(itemgetter(1), data)), }, ], } def get_histogram(data, **kwargs): return { 'labels': [round(i, 1) for i in list(map(itemgetter(0), data))], 'datasets': [ { 'backgroundColor': kwargs.get('fillColor', 'rgba(151,187,205,0.5)'), 'borderColor': kwargs.get('strokeColor', 'rgba(151,187,205,0.8)'), 'borderWidth': 1, 'hoverBackgroundColor': kwargs.get('highlightFill', 'rgba(151,187,205,0.75)'), 'hoverBorderColor': kwargs.get('highlightStroke', 'rgba(151,187,205,1)'), 'data': list(map(itemgetter(1), data)), }, ], }