1.8 KiB
Web Dashboard Tiles V1
Status: WEB_DASHBOARD_TILES_V1=PASS/FROZEN
Boundary
All seven tile components consume the single validated
TrainlogWebDashboardSnapshot returned by GET /api/v1/dashboard. React may
format values, select a bounded subset for the current logical size, and sum
the already projected daily counters. It does not derive business truth.
Density contract
compact exposes the essential fact, medium adds context, and large
exposes all useful bounded fields. Resize never changes a metric. Responsive
layouts reuse the same rule and never write a second layout truth.
Factual representations
- Prochaine séance and Cardio render explicit unavailable states without exposing backend reason identifiers or synthesizing values.
- Activité maps each supplied day to inactive, active-one-session, or
active-multiple-sessions CSS classes. The colour is not physiological
intensity. Totals are direct sums of
session_countandset_count. - Progression shows only the selected comparable identity, supplied points and
Core-owned
improvedflags. Legacy0.0 kgremains visible. - Dernière séance exposes supplied timestamps and counts. A null duration stays unavailable; primary zones are the Core projection.
- Records / MAX shows 1, 3 or at most 8 explicit records. A partial snapshot is labelled as recent rather than exhaustive.
- Répartition musculaire sorts the supplied primary zones deterministically
for display. Bar length represents only
session_count; occurrences and sets stay separate textual facts.
The global shell reports loading/transport failure once. invalid_data is a
discrete global warning; valid surviving projections remain usable. No
ECharts, inferred score, demo datum or production fixture is part of V1.
Next cursor: WEB_DASHBOARD_VISUALIZATIONS_V1.