{# Radar / polar profile chart — v0.61.28 (#879). Server-rendered SVG polygon over a polar grid. Consumes `bucketed_metrics` (the same source bar_chart and line_chart use) — each entry's `value` becomes one spoke length. Each spoke's angle is `2π × i / N`, starting at the top (12 o'clock) and going clockwise so the natural reading order matches the bucket order. Single-series MVP: one polygon for the primary aggregate. Multi-series (target overlay, cohort comparison) deferred to a follow-up — requires `_compute_bucketed_aggregates` to return all metrics, not just the first. Card safety: region emits zero chrome + zero title. The dashboard slot owns both via region_card. #} {% from 'macros/region_wrapper.html' import region_card %} {% call region_card(title) %}
{{ count }} spokes · {{ _series_names | length }} {{ 'series' if _series_names | length > 1 else 'series' }} · peak {{ max_val | metric_number }}
{% elif bucketed_metrics and bucketed_metrics | length > 0 %} {# Fewer than 3 spokes is a degenerate radar (line or point); fall back to a compact KPI list rather than draw a meaningless shape. #}Radar needs ≥ 3 spokes — showing values list instead.
{% else %}{{ empty_message | default("No data available.") }}
{% endif %}