Source code for shoop.admin.dashboard.charts

# -*- coding: utf-8 -*-
# This file is part of Shoop.
#
# Copyright (c) 2012-2016, Shoop Ltd. All rights reserved.
#
# This source code is licensed under the AGPLv3 license found in the
# LICENSE file in the root directory of this source tree.
import abc
import json

import six

from shoop.utils.serialization import ExtendedJSONEncoder


[docs]class Chart(six.with_metaclass(abc.ABCMeta)): def __init__(self, title): self.title = title @abc.abstractmethod
[docs] def get_config(self): """ Get a JSONable dictionary of configuration data for this chart. This is passed on as `CHART_CONFIGS` in the JS environment and eventually processed by `dashboard-charts.js`. :return: Dict of configuration :rtype: dict """ return {} # Implement me in a subclass, please.
[docs] def get_config_json(self): return json.dumps(self.get_config(), cls=ExtendedJSONEncoder, separators=',:')
[docs]class BarChart(Chart): def __init__(self, title, labels): super(BarChart, self).__init__(title) self.labels = labels self.series = []
[docs] def add_data(self, name, data): assert len(data) == len(self.labels) self.series.append({"name": name, "data": data})
[docs] def get_config(self): return { "type": "bar", "data": { "labels": self.labels, "series": self.series, }, "options": { "seriesBarDistance": 3 } }