feat: rework Results tab with derived records + gauntlet view#173
Open
jhonnold wants to merge 1 commit into
Open
feat: rework Results tab with derived records + gauntlet view#173jhonnold wants to merge 1 commit into
jhonnold wants to merge 1 commit into
Conversation
Derive analytics from the CT crosstable data already served — no parser or persisted-shape changes, so live and archived tournaments share one code path. - Pure helpers (results/derive.ts): per-engine W-L-D, score %, and a pentanomial pair distribution reconstructed by pairing each h2h cell's ordered result string; conservative gauntlet detection (engines that played far more opponents than the median). - Gauntlet broadcasts render a dedicated view: the gauntlet engine as the top row, then its record vs each opponent. Round-robins render the enhanced crosstable matrix. - Record shown as five colored counts (++ + = − −−), green→red. - Sticky engine-name column on horizontal scroll; row hover highlight.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reworks the Results tab — "the heart of what the audience reads" — to surface the analytics already implicit in the CT crosstable instead of rendering the raw
=/1/0/.matrix verbatim. Frontend-only: everything is derived from theParsedResultsalready served at/:port/result-table/json(and the identical/archive/:slug/result-table/json), so live and archived tournaments share one code path with no parser/persisted-shape changes.Implements idea B1 from the improvement-ideas backlog.
What changed
results/derive.ts(new, pure helpers): per-engine W-L-D, score %, and a pentanomial pair distribution reconstructed by splitting each head-to-head cell's ordered result string into back-to-back game pairs (++/+/=/−/−−). Plus a conservative gauntlet detector (engines that played far more opponents than the median; round-robins never trip it)..matrix.# · Engine · G · Record · Pts · Score · h2h…).++ + = − −−), green→red left→right, zeros dimmed.:rootin_variables.scss(uniform across themes).Verification
tsc(tsconfig.frontend), ESLint, and Prettier all clean. (Backendtschas a pre-existing duplicate-@types/nodeconflict in this environment, unrelated to this change.)0 8 86 5 0record, per-opponent breakdown, score % correct.🤖 Generated with Claude Code