Skip to main content

Dashboard

SmartBase Admin supports dashboard views that can include charts, lists, and aggregate widgets for analytical and operational insight. You can fully customize and extend dashboards to fit your use case.

Dashboard

🛠 How It Works​

A dashboard is registered as an SBAdminDashboardView, which can contain one or more widgets like:

  • SBAdminDashboardLineChartWidgetByDate – for time-series charts

  • SBAdminDashboardListWidget – for paginated tabular views

  • SBAdminChartAggregateSubWidget – for statistics / aggregations displayed above charts

💡Example #1: Chart Widget​

This widget creates a line chart of total_price grouped by month (or other resolution), with sub-widgets for total turnover and count.

sb_admin_configuration.py
...
from django_smartbase_admin.engine.dashboard import (
SBAdminDashboardLineChartWidgetByDate,
SBAdminChartAggregateSubWidget,
)

# Custom formatting for subwidget
def format_total_price(sub_widget, request, value):
return f"{value} €"

class PurchaseChartWidget(SBAdminDashboardLineChartWidgetByDate):
name = "Turnover"
model = Purchase
date_annotate_field = "created_at" # Field with date
date_resolutions = SBAdminDashboardLineChartWidgetByDate.DateResolutionsOptions
sub_widgets = [
SBAdminChartAggregateSubWidget(
title="Total turnover",
aggregate=Sum("total_price"), # Aggregation will be used in chart as Y axis aggregation
python_formatter=format_total_price
),
SBAdminChartAggregateSubWidget(
title="Purchase count",
aggregate=Count("id"),
),
]

💡Example #2: List Widget​

This widget shows a paginated table of the latest purchases.

sb_admin_configuration.py
from django_smartbase_admin.engine.dashboard import SBAdminDashboardListWidget
from django_smartbase_admin.engine.field import SBAdminField

class PurchaseDashboardListWidget(SBAdminDashboardListWidget):
ordering = ["-created_at"]
name = "Latest Purchases"
model = Purchase
sbadmin_list_display = [
"created_at",
"customer_name",
SBAdminField(name="total_price", title="Total Price"),
]
list_per_page = 10

Register the Dashboard​

This configures the dashboard in the left navigation and sets it as the default view.

sb_admin_configuration.py

from django_smartbase_admin.views.dashboard_view import SBAdminDashboardView
from django_smartbase_admin.engine.menu_item import SBAdminMenuItem
from django_smartbase_admin.engine.configuration import SBAdminRoleConfiguration

config = SBAdminRoleConfiguration(
default_view=SBAdminMenuItem(view_id="dashboard"),
menu_items=[...], # Your menu items
registered_views=[
SBAdminDashboardView(
widgets=[
PurchaseChartWidget(settings=[]),
PurchaseDashboardListWidget(),
],
title="Dashboard"
),
],
)