Skip to content
Skip to guide
DesignTables

Tables

Full stat lines, with their game or season context.

GameResultMINPTSREBASTSTLBLKTOVFG3PFT+/-
Average3 games–25.818.03.74.00.30.01.76.7/14.047.6%4.0/9.044.4%0.7/1.066.7%-1.0
Nov 9vs LALL114-1242315330035-114-71-1-11
Nov 7vs BKNW124-1212620461007-195-131-2+12
Nov 6vs WASW139-1322919430028-123-70-0-4
Game context
Context for the same 3 games
GameMin vs expectedFGA vs usualNotes
Nov 9vs LAL–+11 teammate out
Nov 7vs BKN–+91 teammate out · Season high
Nov 6vs WAS–+21 teammate out

Expected (minutes): what Gist's model expected before that game. Usual (shots): his average shot attempts before that game. Notes mark back-to-back games, teammates out, 8+ points off the model's projection and season highs.

Teammate availability: injury log from Oct 28.

Totals · FG 20-42 (47.6%) · 3P 12-27 (44.4%) · FT 2-3 (66.7%)

Text
12px · tabular figures
Values
Right aligned
Phone
Scroll for the full line
Rules and code

Use a table to compare complete numeric lines. Keep a ranking row for a single-metric list.

Existing rules

  • Use shared body size and tabular numbers. Table weights are contextual: Sheet forecasts and past-game results, and Projection forecasts, use 500; Sheet minutes/context and Model record use 400. The generic 600 value role does not override these tables. Keep labels and source notes readable.
  • Projected and observed table values use the same body size. Projection retains its forecast-row label, weight and fill. Sheet uses an aligned forecast column and 500-weight values without a row fill.
  • Retain full fields, exact player/game destinations and a named keyboard/touch scroll region.
  • Distinguish observed games, season averages and model projections. Missing values stay unavailable.

Projection context

The log starts at the work-area edge. Factors sits in a 208px column to its right with twice the shared section gap; phone and narrow guide containers put Factors below the log. Expected minutes uses a contextual 20px figure; projected table cells remain body-sized.

Inspecting an observed game opens detail directly beneath its row, one at a time, with a 44px minimum target and focus retained on the opener. Last 3/5/10/Season changes the comparison only. Factors reads the position saved with the forecast; missing position or source cutoff stays explicit.

Blue raises and amber lowers the estimate, in the named statistic’s units. All bars share a symmetric scale within the panel. A missing term is Not used; a used term that rounds to zero is Near baseline. These are contributions, not allowance percentages or a defensive-strength rating.

Sheet comparison meaning

A projected stat is the player’s expected game total. Opponent allowance is a rate per 36 opponent player-minutes for the same G/F/C group. Its percentage compares that rate with the league position average; it is not a time trend or a percentage adjustment to the forecast. Rank 1 allows the most. Limited and missing data receive no directional color. The separate model contribution is in the detail; 3PM allowance is context only.

Projected belongs in its stat column header. Expanded history compares projected and actual game values with L3/L5/L10; Saved and Replay stay visible. Its Allowed column leads with vs expected, the schedule-adjusted strength (what the defense allowed against these players’ own norms), and keeps vs league in the grey line. Both use results before that game; neither is today’s rating or an individual defender rating. Replays use the current model and are excluded from Model record.

Keep contextual

Current detail and Stat sheet remain selected for their own tasks. The specimen demonstrates Current detail; it does not make its cell widths the default for every table.

Player and Team tables

Use the existing StatTableFrame for the hoops Recent form, Game log and silent-stat tables. Keep its native table, caption and named scroll region. Phone fades and direction hints follow measured hidden columns; a fitted table has no cue, and final values stay unfaded at the right edge.

Player puts Per game and the game count beside the headings while retaining accessible captions. This does not change other table families’ captions or widths.

View Player tables and percentiles · View Team tables

Keep contextual

Current detail and Stat sheet remain selected for their own tasks. The specimen demonstrates Current detail; it does not make its cell widths the default for every table.

Adoption and open work

Current adoption

Current detail is shared by Search, Home’s game-log answers (since Nov 12, through search/ui/quiet/ObservedLog.tsx) and the existing guide/prototype consumers. Search and this specimen use a full average row with exact game count; per-game model context is in Game context. Other existing consumers retain their footer/column defaults. Stat sheet is shared by actual Home and Search. The separate StatTableFrame serves Player box score, silent stats and game log, plus Team recent form and game log. Its scroll cues are locally adopted; Player-only caption grouping and 11px percentile markers do not migrate Team typography.

Open · projection order on phones

Phone font parity (R09) and numeric roles (R10) were decided on Nov 12 and applied. The full projection page still puts factors before the stat line on phone (R72).

Done when: agreed shared rules and exceptions are documented, applied to named consumers and checked on desktop and phone.

Implementation and checks
<PlayerGameLog player="Aaron Wiggins" games={3} selection={currentSeasonGames} summary="row" context="disclosure" />

Verify the displayed sample and averages match the requested games; preserve internal scrolling, row inspection, profile/game links and source dates after reload.

  • proto/hoops/shared/StatTable.tsx
  • proto/hoops/player/PlayerSnapshot.tsx
  • proto/boxlog/PlayerGameLog.tsx
  • proto/players/projection/Factors.tsx
  • components/nba/true-shooting/TrueShootingLeaders.tsx
  • proto/games/PlayerProjections.tsx
In Gist
GameResultMINPTSREBASTSTLBLKTOVFG3PFT+/-
Average10 games–25.614.44.02.80.70.41.35.6/12.943.4%3.0/7.639.5%0.2/0.450.0%+1.3
Nov 9vs LALL114-1242315330035-114-71-1-11
Nov 7vs BKNW124-1212620461007-195-131-2+12
Nov 6vs WASW139-1322919430028-123-70-0-4
Nov 4@ WASW120-1052915422126-143-70-0+15
Nov 2@ INDW108-104247321023-121-60-1+7
Oct 31@ NOPL99-1212310211124-112-70-0-7
Oct 29vs CLEW113-1112420730118-144-70-0+17
Oct 28vs MIAL117-1292410430014-112-70-0-2
Oct 26@ HOUL110-1202712431005-122-60-0-12
Oct 24vs HOUL114-1212916521106-134-90-0-2
Game context
Context for the same 10 games
GameMin vs expectedFGA vs usualNotes
Nov 9vs LAL–+11 teammate out
Nov 7vs BKN–+91 teammate out · Season high
Nov 6vs WAS–+21 teammate out
Nov 4@ WAS–+41 teammate out
Nov 2@ IND–+31 teammate out
Oct 31@ NOP–+21 teammate out
Oct 29vs CLE–+51 teammate out · Season high
Oct 28vs MIA–+21 teammate out
Oct 26@ HOU–+3–
Oct 24vs HOU–+5–

Expected (minutes): what Gist's model expected before that game. Usual (shots): his average shot attempts before that game. Notes mark back-to-back games, teammates out, 8+ points off the model's projection and season highs.

Teammate availability: injury log from Oct 28.

Totals · FG 56-129 (43.4%) · 3P 30-76 (39.5%) · FT 2-4 (50.0%)

Open player game log