Skip to content

charts

django_spire.contrib.chart.charts

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

glue_name = None class-attribute instance-attribute

data_function_path = None class-attribute instance-attribute

update_interval = 3 class-attribute instance-attribute

params = {**type(self).params, **params or {}} 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)

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

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

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

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

GaugeChart

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 = 'gauge' class-attribute instance-attribute

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

min = 0 class-attribute instance-attribute

max = 100 class-attribute instance-attribute

detail_formatter = '{value}' class-attribute instance-attribute

build_option_body classmethod

Source code in django_spire/contrib/chart/charts.py
@classmethod
def build_option_body(cls, value: float, name: str = '', **_kwargs: Any) -> dict[str, Any]:
    return {
        'series': [
            {
                'name': name,
                'min': cls.min,
                'max': cls.max,
                'detail': {'formatter': cls.detail_formatter},
                'data': [{'value': value, 'name': name}],
            }
        ]
    }