Skip to content

feat(dashboard): log pager — match count, rows-per-page, prev/next; grouping dropdown retired - #840

Merged
VijitSingh97 merged 3 commits into
developfrom
feat/log-pagination
Aug 2, 2026
Merged

feat(dashboard): log pager — match count, rows-per-page, prev/next; grouping dropdown retired#840
VijitSingh97 merged 3 commits into
developfrom
feat/log-pagination

Conversation

@VijitSingh97

Copy link
Copy Markdown
Collaborator

Follow-up to #838, per operator direction: with range presets, date jumps and search owning the time navigation, the hour/day/month grouping dropdown answered a strictly weaker question — it becomes a pager.

  • Each log card now shows "N entries · page X of Y" (the match-feedback line), a 5/10/20/50/100 rows-per-page select, and Prev/Next buttons with edge disabling.
  • Paging is client-side over the server-filtered, bounded result set. pageFor clamps so a shrinking result set never strands the view past the end; the page resets to 0 on any filter change.
  • Both cards page identically — the access card's filtered-vs-glance cap split dies along with the grouping machinery (bucketKey, groupAuditEntries, the group-header rows and their CSS). Net: the diff deletes more logic than it adds.
  • The audit handler docstring and docs/dashboard.md updated to match; deep history stays a documented pointer to the host files rather than dashboard scope.

Coverage: pageFor unit tests (slicing, clamping, empty-set), pager render tests (count line, per-page select, edge disabling, page-2 slice boundaries), flat-audit-rendering regression, and the #838 filter tests updated to the paging model. Frontend suite green (14/14 securityview + full run), dashboard 1649 pass, make lint clean.

🤖 Generated with Claude Code

VijitSingh97 and others added 3 commits August 1, 2026 21:10
…rouping dropdown retired

The grouping dropdown answered a strictly weaker question once range
presets, date jumps and search owned the time navigation — it becomes
a pager: '<N> entries · page X of Y', a 5/10/20/50/100 rows-per-page
select, and Prev/Next. Paging is client-side over the server-filtered,
bounded result set; pageFor clamps so a shrinking result set never
strands the view past the end, and the page resets to 0 on any filter
change (a new question starts at its first page). Both cards page
identically — the access card's special filtered-vs-glance cap split
dies with the grouping code (bucketKey, groupAuditEntries, the
group-header rows and their CSS).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…(verifier findings)

- pageFor falls back to the default page size on a 0/NaN/negative size
  and a non-finite page — a hostile value reaching the division would
  render 'page NaN of Infinity'. The clamp is the safety net behind
  every pager callback: a stale page lands on the last real page.
- The edge-disabling test now asserts the disabled attribute's
  presence/absence per pager (scoped by aria-label), plus a last-page
  case — previously it only matched button text.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VijitSingh97
VijitSingh97 merged commit a5bd1ec into develop Aug 2, 2026
16 checks passed
@VijitSingh97
VijitSingh97 deleted the feat/log-pagination branch August 2, 2026 02:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant