mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-13 22:32:04 +00:00
feat(insights): blood pressure by time of day
Home monitoring reads morning and evening readings as separate sets, so the blood pressure page now shows the morning, midday and evening means side by side over the chart's range, each with its count and pulse, and the morning-minus-evening difference. A control under them narrows the chart to one part of the day; the choice lives in `?partOfDay=` so it survives a reload and a shared link, and the whole day keeps a bare URL. The split is resolved on the server in the record's own time zone and published as one response, `GET /api/measurements/blood-pressure/time-of-day`, so every client renders the same numbers. Morning is 04:00 to 11:59, midday 12:00 to 17:59, evening 18:00 to 03:59: the guidelines define the sets by waking and bedtime rather than by the clock, so the windows are wide, and a reading after midnight is a late evening one. Pairs follow the blood-pressure series' rule (same source within five minutes); the pulse is the reading's own. A part shows a mean from three readings on. `GET /api/measurements` takes `partOfDay` on the blood-pressure and pulse series read: each local day folds only that part's readings, a day runs from 04:00, and long ranges fold weekly instead of reading rollups that cannot tell the hour. Refs #1331
This commit is contained in:
1 parent
41e75b5bde
commit
b93241aa87
32 files changed
+2184
-43
No files matched your search
@@ -100,29 +100,32 @@ export const measurementKeys = {
|
||||
// appended when set, so every pre-v1.18.6 caller packs a
|
||||
// byte-identical tuple and the existing cache layout is unchanged.
|
||||
readMode: string = "",
|
||||
) =>
|
||||
readMode
|
||||
? ([
|
||||
"chart-data",
|
||||
types,
|
||||
valueMode,
|
||||
bmiDivisor,
|
||||
timezone,
|
||||
fromIso,
|
||||
toIso,
|
||||
valueScale,
|
||||
readMode,
|
||||
] as const)
|
||||
: ([
|
||||
"chart-data",
|
||||
types,
|
||||
valueMode,
|
||||
bmiDivisor,
|
||||
timezone,
|
||||
fromIso,
|
||||
toIso,
|
||||
valueScale,
|
||||
] as const),
|
||||
// #1331 — the part of the day the series is narrowed to. Appended only
|
||||
// when set (behind the read mode, which then always rides), so the
|
||||
// whole-day key of every chart stays as it was.
|
||||
partOfDay: string = "",
|
||||
) => {
|
||||
const base = [
|
||||
"chart-data",
|
||||
types,
|
||||
valueMode,
|
||||
bmiDivisor,
|
||||
timezone,
|
||||
fromIso,
|
||||
toIso,
|
||||
valueScale,
|
||||
] as const;
|
||||
if (partOfDay) return [...base, readMode, partOfDay] as const;
|
||||
return readMode ? ([...base, readMode] as const) : base;
|
||||
},
|
||||
|
||||
/**
|
||||
* #1331 — blood pressure by part of the day
|
||||
* (`GET /api/measurements/blood-pressure/time-of-day?days=`). Under the
|
||||
* `["measurements"]` prefix, so a new reading refreshes it with the list.
|
||||
*/
|
||||
bpTimeOfDay: (days: number) =>
|
||||
["measurements", "bp-time-of-day", days] as const,
|
||||
|
||||
/**
|
||||
* v1.8.5 — bounded recent-timestamp read powering the
|
||||
|
||||
Reference in new issue
Block a user