Skip to content
wdj

Chart

Implemented Data Visualization

Server-built Apache ECharts (line, area, bar, donut) themed to wdj tokens.

Kumo reference: kumo-ui.com/charts/timeseries/

Presentation commands show demo feedback. Read the interaction guide to connect real actions.

Line

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=chart_line_option label="Requests and errors over time" height=300 %}

Area

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=chart_area_option label="Bandwidth over time" height=300 %}

Stacked bars

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=chart_bar_option label="Requests by status class" height=300 %}

Donut

  • Cache hit 62%
  • Cache miss 24%
  • Origin error 9%
  • Other 5%
Show template
{% load wdj %}
<div class="flex w-full flex-col items-center gap-4 sm:flex-row sm:justify-center">
  <div class="w-64 max-w-full">
    {% include "wdj/components/chart.html" with option=chart_donut_option label="Cache performance breakdown" height=240 %}
  </div>
  <ul class="flex flex-col gap-1 text-base">
    <li class="flex items-center gap-2"><span class="size-2.5 rounded-full" style="background:#2563eb"></span>Cache hit <span class="text-kumo-subtle">62%</span></li>
    <li class="flex items-center gap-2"><span class="size-2.5 rounded-full" style="background:#059669"></span>Cache miss <span class="text-kumo-subtle">24%</span></li>
    <li class="flex items-center gap-2"><span class="size-2.5 rounded-full" style="background:#d97706"></span>Origin error <span class="text-kumo-subtle">9%</span></li>
    <li class="flex items-center gap-2"><span class="size-2.5 rounded-full" style="background:#dc2626"></span>Other <span class="text-kumo-subtle">5%</span></li>
  </ul>
</div>

Loading

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with loading=True label="Loading chart" height=300 %}

Stepped line

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_step_option label="Stepped line" only %}</div>

Stacked area

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_stacked_area_option label="Stacked area" only %}</div>

Category axis

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_category_option label="Category axis" only %}</div>

Threshold

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_threshold_option label="Threshold" only %}</div>

Zoom

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_zoom_option label="Zoom" only %}</div>

Grouped bars

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_grouped_bar_option label="Grouped bars" only %}</div>

Horizontal bars

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_horizontal_option label="Horizontal bars" only %}</div>

Pie

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_pie_option label="Pie" only %}</div>

Legend

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_legend_option label="Legend" only %}</div>

Nested donut

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_nested_option label="Nested donut" only %}</div>

Empty

No chart data

Data will appear when observations are available.

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_empty_option label="Empty" empty=True only %}</div>

Straight line

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_straight_option label="Straight line" only %}</div>

Visible points

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_points_option label="Visible points" only %}</div>

Missing values

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_gaps_option label="Missing values" only %}</div>

Multiple lines

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_multiple_lines_option label="Multiple lines" only %}</div>

Capacity bounds

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_bounds_option label="Capacity bounds" only %}</div>

Single bars

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_single_bars_option label="Single bars" only %}</div>

Zoom slider

Show template
{% load wdj %}
<div class="w-full">{% include "wdj/components/chart.html" with option=chart_zoom_slider_option label="Zoom slider" only %}</div>

Reference markers

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=audit_chart_markers label="Requests with reference markers" only %}

Formatted axes and tooltip

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=audit_chart_formats label="Formatted request counts" only %}

Gradient fill

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=audit_chart_gradient label="Requests with gradient area" only %}

Incomplete interval

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=audit_chart_incomplete label="Incomplete latest interval" only %}

Crosshair cursor

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=audit_chart_crosshair label="Requests with crosshair" only %}

Legend toggle and highlight

Show template
{% load wdj %}
{% include "wdj/components/chart.html" with option=chart_multiple_lines_option label="Toggle series in the legend" only %}

API Reference

Prop Type Default Description
dict unset Option; pass the documented value shown in the examples.
number 288 (Chart) Height; pass the documented value shown in the examples.
string unset Visible accessible label. Supply an explicit aria-label via attrs when the control is bare.
bool False Loading; pass the documented value shown in the examples.
bool False Empty; pass the documented value shown in the examples.
string unset Stable unique DOM ID; important for HTMX targets and focus restoration.
dict {} Dictionary of escaped native, HTMX or Alpine attributes. Literal Tailwind classes only.
string "" Class; pass the documented value shown in the examples.

Accessibility notes

Every interactive component keeps real semantics and keyboard support: native controls where possible, ARIA only where necessary, and a visible focus ring. See the Accessibility page for the shared contract.

Read the accessibility contract

Components

Components overview
AutocompleteFree-form input with local or HTMX-filtered suggestions.
BadgeSolid, tinted, outline and dot status labels.
BannerInline message bar with variants and optional action.
BreadcrumbsTrail navigation in two sizes.
ButtonVariants, sizes, shapes, icons and loading state.
ButtonGroupJoins a small set of tightly-coupled buttons into a single control (split buttons).
CheckboxSingle checkbox and indeterminate state.
ClipboardTextRead-only text field with a one-click copy-to-clipboard button.
Code / CodeHighlightedEscaped Pygments grammar highlighting, multiline tokens, line numbers, highlighted lines and localized copying.
CollapsibleComposable disclosure component for showing and hiding content.
Combobox / AutocompleteKumo-styled input/button triggers, search inside the popup, grouped local choices and debounced HTMX search.
CommandPaletteAccessible spotlight search overlay with Cmd+K keyboard shortcut.
DatePickerKumo-styled date and datetime popups; inline single, multiple and range calendars with bounds/presets.
DateRangePickerStyled popup or inline range calendar with bounds, presets and separately named form values.
DialogNative <dialog> modal with focus management.
DrawerEdge-anchored modal panel. LayerDialog has its own layered component.
DropdownMenuNative details menu with delegated keyboard navigation and dismissal.
EmptyEmpty-state placeholder with icon and action.
FieldLabel + description + error wrapper. Built into each control.
FlowDirected diagrams with branches, SVG connectors, custom anchors and responsive local scrolling.
GridResponsive CSS grid layout container with preset column configurations.
InlineCopyTextCompact borderless copy control for IDs and short values.
InputText field with label, description, leading/trailing icons.
InputAreaMulti-line textarea with auto-resize option.
InputGroupInput field with seamless prefix, suffix, and addon attachments.
LabelForm field label, optional marker and tooltip.
LayerCardCompound surface card with distinct primary and secondary layers.
LayerDialogLayered native modal with actions, forms, nested dialogs and pending states.
LinkInline, current and plain text links.
LoaderAnimated spinner in three sizes.
MenuBarCompact view selector using native radio semantics.
MeterProgress bar showing a measured value within a known range.
PaginationA page navigation component for navigating through paginated content.
PopoverAnchored popup with interactive content.
RadioRadio group, vertical and horizontal.
SelectKumo-styled Alpine dropdown with groups, rich options and multiple selection; native form values and fallback.
SensitiveInputPassword/secret input with reveal toggle and copy button.
SeparatorHorizontal / vertical rules with optional label.
SidebarRecursive navigation groups, account/zone views, search, loading, resize and full-screen mobile breadcrumbs.
SkeletonShimmer placeholder.
SliderInset single/range selection with vertical grips, value badges, endpoint labels and native keyboard/form behavior.
SurfaceBordered surface panel with header slot.
SwitchOn/off toggle in three sizes.
TableServer-driven table: sort, filter, select and paginate the full dataset.
Table of contentsPage section navigation tree with active link indicator.
TabsSegmented and underline tabs with a sliding indicator, responsive overflow and local Alpine or URL/HTMX state.
TagInputMulti-value badge input for tags and recipients.
TextHeading, body, secondary, success, error and mono text.
ToastyExpandable notification stack with variants, paused expiry and a live region.
ToolbarCompact grouped controls with shared borders, composed filters and keyboard arrow navigation.
TooltipHover and focus tooltip with grouped delays, Escape dismissal and viewport bounds.
↑ ↓ Navigate ↵ Select