Skip to content

leaderboard: port to Pyserini-2cr-inspired layout with in-place reproduce panels#30

Merged
radinhamidi merged 1 commit into
mainfrom
leaderboard/pyserini-2cr-port
May 22, 2026
Merged

leaderboard: port to Pyserini-2cr-inspired layout with in-place reproduce panels#30
radinhamidi merged 1 commit into
mainfrom
leaderboard/pyserini-2cr-port

Conversation

@radinhamidi

@radinhamidi radinhamidi commented May 22, 2026

Copy link
Copy Markdown
Member

Summary

Rewrite the home matrix and every per-X page (datasets / methods / models / retrievers) on a new .lb-* table layout. The headline change: clicking any row expands an in-place reproduce panel with the three pipeline commands (reformulate → retrieve → evaluate), replacing the previous "click a cell to navigate to /runs/[id]" flow with copy-ready commands you can grab without leaving the leaderboard.

What changed

  • New table layout (.lb-* namespace): sticky two-row thead + sticky axis cols (rowspan-merged so axis labels are vertically centered), segmented metric control [Both | nDCG | Recall], grouped dataset multi-select dropdown (BEIR / MS MARCO DL with all/none shortcuts), inline sort arrows that don't shift column geometry, best-in-column pink highlight, expandable rows with tabbed reproduce panels.
  • src/lib/reproduce.ts: shared buildReproduceCmds(run) helper that emits the 3-step pipeline from a run summary. Used by every per-X expand panel; also the right place to refactor /runs/[id].astro toward.
  • Single-scrollbar layout: Default.astro body is flex h-screen flex-col overflow-hidden, main is flex-1 min-h-0 overflow-y-auto, table card is flex: 1 min-h: 0 (no fixed height). Page never scrolls — only the table's inner scroll shows.
  • @qg/shared Header + Footer widened to w-[90%] so all sites that use the shared layout get more horizontal room.
  • Cleanup: deleted InteractiveTable.astro, FilterChips.astro, MatrixCell.astro, and the .qg-table-card / .qg-axis-* / .qg-cell-best / .qg-itable CSS blocks they backed.

Page sizes

Page Raw Gzipped (approx, what users download)
/ (home matrix, 120 rows × 9 datasets) 2.2 MB ~80 KB
/methods/{id} (~12 rows × 9 datasets) ~250 KB ~12 KB
/models/{id} (~30 rows × 9 datasets) ~600 KB ~30 KB
/retrievers/{id} (~40 rows × 9 datasets) ~780 KB ~28 KB
/datasets/{id} (~120 rows × 2 metrics) ~140 KB ~8 KB

Server-rendering all expand panels inline keeps the click-to-expand interaction zero-fetch. If a future page grows past comfortable gzipped weight, lazy-rendering via a JSON lookup table is a follow-up.

Test plan

  • Home (/): sticky two-row thead + sticky axis cols hold up under both vertical (page-scroll) and horizontal (inner-scroll) movement
  • Home: Metric segmented control (Both / nDCG / Recall) collapses/expands columns without misalignment; Datasets dropdown hides whole column groups including tabs in expanded panels
  • Home: Sort by clicking metric subheader — arrow appears only on active column, toggles asc/desc, column geometry doesn't shift
  • Home: Expand a row, switch tabs, copy a step — three commands render correctly for each dataset
  • /methods/csqe, /models/openai__gpt-4.1, /retrievers/bm25: same behavior with one fewer axis col
  • /datasets/beir-v1.0.0-scifact: single-row thead, no per-dataset tabs (one run per row), sort works by column index
  • Single-scrollbar layout: only the table card scrolls vertically; page itself doesn't
  • Dark + light theme via the header toggle: best-cell highlight visible in both modes

🤖 Generated with Claude Code

…duce panels

Rewrite the home matrix and per-X pages (datasets/methods/models/retrievers)
on a new `.lb-*` table layout: sticky two-row thead + sticky axis cols,
segmented metric control (Both/nDCG/Recall), grouped dataset multi-select
dropdown, two-level dataset/metric header, expandable rows with tabbed
reproduce panels (one per dataset) that render the three-step pipeline
(reformulate → retrieve → evaluate) inline. Clicking a row replaces a
navigation to `/runs/[id]` with copy-ready commands in place.

- Add `src/lib/reproduce.ts` to centralize the three-step command generation
  shared by every expand panel.
- Single-scrollbar layout: `Default.astro` body is fixed-viewport flex
  column, table card fills the remaining space, only the inner table
  scrolls. Sticky thead anchors to the scroll container's top.
- Shared `Header.astro` / `Footer.astro` widened to `w-[90%]` so the
  leaderboard can use the full viewport.
- Remove unused `InteractiveTable.astro`, `FilterChips.astro`,
  `MatrixCell.astro` and the `.qg-table-card` / `.qg-axis-*` /
  `.qg-cell-best` / `.qg-itable` CSS blocks they backed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@radinhamidi radinhamidi merged commit 6eeaab5 into main May 22, 2026
3 checks passed
@radinhamidi radinhamidi deleted the leaderboard/pyserini-2cr-port branch May 22, 2026 22:21
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