Skip to content

chart

django_spire.contrib.chart

__all__ = ('AreaChart', 'BarChart', 'Chart', 'LineChart', 'PieChart') module-attribute

AreaChart

Bases: Chart

Source code in django_spire/contrib/chart/charts.py
def __init__(self, params: dict[str, Any] | None = None) -> None:
    self.params = {**type(self).params, **(params or {})}

chart_type = 'line' class-attribute instance-attribute

BarChart

Bases: Chart

Source code in django_spire/contrib/chart/charts.py
def __init__(self, params: dict[str, Any] | None = None) -> None:
    self.params = {**type(self).params, **(params or {})}

chart_type = 'bar' class-attribute instance-attribute

Chart

Source code in django_spire/contrib/chart/charts.py
def __init__(self, params: dict[str, Any] | None = None) -> None:
    self.params = {**type(self).params, **(params or {})}

chart_type = '' class-attribute instance-attribute

default_grid = {'left': 50, 'right': 30, 'top': 70, 'bottom': 70} class-attribute instance-attribute

default_legend = {'bottom': 10} class-attribute instance-attribute

default_tooltip = {'trigger': 'axis'} class-attribute instance-attribute

title = None class-attribute instance-attribute

legend = {} class-attribute instance-attribute

tooltip = {} class-attribute instance-attribute

grid = {} class-attribute instance-attribute

params = {**type(self).params, **params or {}} class-attribute instance-attribute

glue_name = None class-attribute instance-attribute

data_function_path = None class-attribute instance-attribute

update_interval = 3 class-attribute instance-attribute

__init_subclass__

Source code in django_spire/contrib/chart/charts.py
def __init_subclass__(cls, **kwargs: Any) -> None:
    super().__init_subclass__(**kwargs)

    option_owner = next(
        (base for base in cls.__mro__ if 'build_option_body' in base.__dict__), None
    )

    if option_owner is None or option_owner is Chart:
        return

    cls.glue_name = cls.__dict__.get('glue_name', _snake_case(cls.__name__))

    data_attr = f'{_snake_case(cls.__name__)}_data'
    setattr(sys.modules[cls.__module__], data_attr, cls._build_option)
    cls.data_function_path = f'{cls.__module__}.{data_attr}'

build_option_body classmethod

Source code in django_spire/contrib/chart/charts.py
@classmethod
def build_option_body(cls, **kwargs: Any) -> dict[str, Any]:
    message = f'{cls.__name__} must implement build_option_body(**kwargs)'
    raise NotImplementedError(message)

to_option_dict

Source code in django_spire/contrib/chart/charts.py
def to_option_dict(self, **kwargs: Any) -> dict[str, Any]:
    return type(self)._build_option(**{**self.params, **kwargs})

glue

Source code in django_spire/contrib/chart/charts.py
def glue(self, request: HttpRequest) -> None:
    if not self.data_function_path:
        message = f'{type(self).__name__} has no data_function_path to glue'
        raise ValueError(message)

    Glue.function(request, self.glue_name, self.data_function_path)

LineChart

Bases: Chart

Source code in django_spire/contrib/chart/charts.py
def __init__(self, params: dict[str, Any] | None = None) -> None:
    self.params = {**type(self).params, **(params or {})}

chart_type = 'line' class-attribute instance-attribute

PieChart

Bases: Chart

Source code in django_spire/contrib/chart/charts.py
def __init__(self, params: dict[str, Any] | None = None) -> None:
    self.params = {**type(self).params, **(params or {})}

chart_type = 'pie' class-attribute instance-attribute

default_tooltip = {'trigger': 'item'} class-attribute instance-attribute