Перейти к основному содержимому

Метрики и графики dashboard

Добавлено в 1.0.1

Все виджеты dashboard наследуют DashboardComponent. Реализуйте as_dto() косвенно: через конкретный базовый класс, который соответствует виджету.

Общие поля каждого компонента: slug, label, order (по умолчанию 100), status (по умолчанию DashboardComponentStatus.ACTIVE).

ХукРоль
check_view(request)classmethod — доп. видимость (superuser пропускает)
check_use(request)classmethod — доп. право использования (superuser пропускает)
get_status(request)может вернуть active / disabled / hidden / error
is_visible / is_availableсочетают статус и проверки
as_dto(request)реализует конкретный базовый класс

HIDDEN убирает виджет. Не-ACTIVE блокирует использование. Superuser всё равно видит не-скрытые виджеты и может ими пользоваться.

Метрика

from django_chassis.components import DashboardMetric
from django_chassis.enums import DashboardMetricResultType


class OpenOrdersMetric(DashboardMetric):
slug = 'open-orders'
label = 'Open orders'
result_type = DashboardMetricResultType.SINGLE_VALUE

def get_value(self, request):
return Order.objects.filter(status='open').count()

result_type может быть одним значением, таблицей или stacked-элементами. Для таблиц задайте columns и верните строки из get_value(). Необязательные get_fetched_at() / get_next_refresh_at() питают live-payload.

DashboardAnalyticsCacheService может кэшировать дорогие аналитические значения.

График

from decimal import Decimal

from django_chassis.components import DashboardChart
from django_chassis.dto import DashboardChartDataDTO, DashboardChartPointDTO, DashboardChartSeriesDTO
from django_chassis.enums import DashboardChartColor, DashboardChartType


class RevenueChart(DashboardChart):
slug = 'revenue'
label = 'Revenue'
chart_type = DashboardChartType.LINE

def get_data(self, request) -> DashboardChartDataDTO:
return DashboardChartDataDTO(
value='1 500',
period_label='2026',
series=(
DashboardChartSeriesDTO(
label='Revenue',
color=DashboardChartColor.BLUE,
points=(
DashboardChartPointDTO(label='2026-01', value=Decimal('1200')),
DashboardChartPointDTO(label='2026-02', value=Decimal('1500')),
),
),
),
)

Графики рисуются через ApexCharts. В блоке графика может быть только один компонент-график.

Alert

DashboardAlert — условно видимое стилизованное сообщение. Тон задаёт DashboardAlertStyle. Глобальными могут быть только блоки alerts.

Действие

DashboardAction — маршрутизируемое действие с проверками прав и доступности, необязательным подтверждением и хуками завершения.

  • URL: {admin}/dashboard/actions/{slug}/
  • Реализуйте тело действия; исключение попадает в exception hook
  • style — это ButtonColor

Toggle-действие

DashboardToggleAction — действие true/false на форме. Каждое состояние — DashboardActionVariantDTO (label, description, style).

Статус

DashboardComponentStatus: active, disabled, hidden, error. hidden убирает виджет. Суперпользователи всё равно видят не-hidden виджеты.

См. также