Docs, ticks, working app

This commit is contained in:
Hugh Kaznowski
2026-09-05 15:05:39 +01:00
parent 41362aa3d8
commit 51e577f01e
41 changed files with 1039 additions and 683 deletions
+41
View File
@@ -0,0 +1,41 @@
# 024 — Time range controls (Grafana-style presets)
## Summary
Today the only way to set the active time range is dragging over `LogTimeline`
(`App.tsx`'s `range` state, passed to `LogPreview`/`Metrics`/`Dashboards` as
`startMs`/`endMs`). The wishlist wants explicit controls like Grafana's: an "All"
option and relative presets ("last 5 minutes", etc.), not just drag-to-select.
## Scope
- A time-range control component (dropdown or button row) offering at least:
"All" (no range — today's `range === null` default) and a handful of relative
presets (e.g. last 5m / 15m / 1h / 24h), placed near `LogTimeline` alongside the
existing drag-select interaction.
- Selecting a preset computes `{startMs, endMs}` relative to now and feeds the
same `range` state `App.tsx` already threads through to `LogTimeline`,
`LogPreview`, `Metrics`, and `Dashboards` — no new plumbing needed downstream,
since all four already accept/consume a range.
- Relative presets need to "move with time" while active (e.g. "last 5 minutes"
should mean *rolling* last 5 minutes, not a frozen window from selection time) —
decide and implement a refresh cadence (e.g. re-resolve the relative range on
the same interval the app already polls for new data) versus a one-shot
resolved range; document the choice.
- Manually dragging on `LogTimeline` after a preset is active should override it
back to a fixed (non-rolling) range, same as today.
## Acceptance criteria
- Selecting "All" clears the range the same way today's implicit default does.
- Selecting a relative preset narrows `LogPreview`, `LogTimeline`, `Metrics`, and
`Dashboards` to that window.
- A rolling preset's window visibly advances over time without user interaction,
if that's the chosen behavior (see Scope).
- Dragging on `LogTimeline` while a preset is active switches back to a fixed
range bounded by the drag.
## Depends on
None — the underlying range plumbing (`App.tsx` → `LogTimeline`/`LogPreview`/
`Metrics`/`Dashboards`) already exists; this only adds the control surface.