Files
HighCostDrugsDemo/dash_app/components/header.py
T
Andrew Charlwood 11b5cc5b81 feat: header fraction KPIs replacing KPI row (Task 10.3)
Remove KPI card row, add 3 inline fraction KPIs to header bar:
filtered/total patients, drugs, cost. Breadcrumb removed.
KPI callback refactored for 6 output IDs (3 filtered + 3 total).
total_cost added to load_initial_data() reference data.
2026-02-06 21:45:13 +00:00

66 lines
2.8 KiB
Python

"""Top header bar component with NHS branding, fraction KPIs, and data freshness."""
from dash import html
def make_header():
"""Return the fixed top header with NHS branding, fraction KPIs, and freshness indicators."""
return html.Header(
className="top-header",
children=[
# Left: brand (NHS logo + title)
html.Div(
className="top-header__brand",
children=[
html.Div("NHS", className="top-header__logo"),
html.Div(
html.Div("HCD Analysis", className="top-header__title"),
),
],
),
# Center: 3 fraction KPIs (filtered / total)
html.Div(
className="top-header__kpis",
children=[
html.Div(className="header-kpi", children=[
html.Span("", id="kpi-filtered-patients", className="header-kpi__num"),
html.Span(" / ", className="header-kpi__sep"),
html.Span("", id="kpi-total-patients", className="header-kpi__den"),
html.Span("patients", className="header-kpi__label"),
]),
html.Div(className="header-kpi", children=[
html.Span("", id="kpi-filtered-drugs", className="header-kpi__num"),
html.Span(" / ", className="header-kpi__sep"),
html.Span("", id="kpi-total-drugs", className="header-kpi__den"),
html.Span("drugs", className="header-kpi__label"),
]),
html.Div(className="header-kpi", children=[
html.Span("", id="kpi-filtered-cost", className="header-kpi__num"),
html.Span(" / ", className="header-kpi__sep"),
html.Span("", id="kpi-total-cost", className="header-kpi__den"),
html.Span("cost", className="header-kpi__label"),
]),
],
),
# Right: data freshness (status dot + record count + last updated)
html.Div(
className="top-header__right",
children=[
html.Span(
children=[
html.Span(className="status-dot"),
html.Span("...", id="header-record-count"),
],
),
html.Span(
children=[
"Updated: ",
html.Span("...", id="header-last-updated"),
],
),
],
),
],
)