A page for every player in the basketball league
Until now the site's search found only the players on the leader boards, about 25 of the league's 150, and a search for anyone else came back empty. Now every player has a page of their own. Search for any name and it lands there, and every name on the season page's leader boards and box scores links to it.
Their season
A player's page gives their games played and, per game, their points, rebounds, assists, turnovers and steals, with their field goal and three-point shooting as a percentage and as makes and attempts. These are counted from the same season totals the leader boards are made from, by the same code, so a player's page and the boards can never disagree about a number.
("Points", per_game(row.pts)), ("Rebounds", per_game(row.reb)), ("Assists", per_game(row.ast)),
("Turnovers", per_game(row.tov)), ("Steals", per_game(row.stl)),
("Field goal %", share(row.fgm, row.fga)), ("Three-point %", share(row.tpm, row.tpa))
Like the leader boards, it is a sum over every game of the season, so it never gives away how any one game ended.
Their body
Below the season sits the body: height, mass, wingspan and the length of the hand, in metres, kilograms and centimetres. These are not a rating of anything. They are the values the league holds for that player, the same ones the simulation builds them from, read straight from it when the site is built. A player listed at 2.11 m with a 2.28 m wingspan is that size in every game they play, and in the replay.
Small pages, one shape
Each page is under 100 KB, built ahead of time like the rest of the site, with the same header, footer and release number as every other page. All 150 are in the site map, so a search engine can find them too.