Redesign the PDF report: landscape pages, headers/footers, icon, daily stats

Every report section now gets its own landscape A4 page (or, for
Dagoverzicht, one page per day) via a GlucoseReportPDF(FPDF) subclass
with a real header (section title, report version, insulin/pump/sensor
type from new REPORT_* env vars) and footer (page number, generation
timestamp, Nightscout link) on every page, plus an original SVG icon
in the header — inspired by the LibreView AGP report.

New "Insulineprofiel" PDF section mirrors the dashboard page (basal
bar chart, ISF/carb-ratio segments, DIA). Each Dagoverzicht day now
draws the same basal/bolus/carb/target overlays as the interactive
charts (matplotlib port of the Plotly helpers from #30) plus a new
per-day stats block (reporting.daily_stats: avg/min/max glucose,
total/basal/bolus/SMB insulin, hypo/hyper counts and durations).

Builds on #29 (profile data) and #30 (overlay logic/colors).
This commit is contained in:
2026-09-05 22:44:14 +02:00
parent d33516e2a1
commit f2c3f97b1f
8 changed files with 718 additions and 100 deletions
+6
View File
@@ -15,3 +15,9 @@ NIGHTSCOUT_TOKEN=
# het diabetesteam). Zet hier een sha256-hash, NIET het wachtwoord zelf:
# python -c "import hashlib; print(hashlib.sha256(b'jouw-wachtwoord').hexdigest())"
DASHBOARD_PASSWORD_HASH=
# Optioneel: apparatuurinfo voor de kop van het PDF-rapport (pages/8_Export.py).
# Puur informatief, geen effect op de berekeningen — leeg = "Onbekend ...".
REPORT_INSULIN_TYPE=Lyumjev 100U
REPORT_PUMP_TYPE=
REPORT_SENSOR_TYPE=