Метрики и графики dashboard
Все виджеты 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
виджеты.