My games: result filters with counts, rich rows, and Show more #405

Closed
opened 2026-10-14 14:37:50 +00:00 by root · 5 comments
root commented 2026-10-14 14:37:50 +00:00 (Migrated from gitlab.core-project.space)

Parent

#400

Seam: S4 — MyGamesView with the games harness and MSW serving the paged game.list; plus the S6 My games steps in my-games.spec

What to build

My games as chosen in the prototype (variant D on prototype/399-front-screens), on the paged game.list.

  • Frame: the account page's: same width, padding and title row. No "New game" in the heading.
  • Filters on the left: All games, Won, Lost and Draw, each with its count from the server. The chosen one is a validated result search parameter (absent means all). Below md they become a row of tabs above the list.
  • Rows: a big W, L or D, then "vs " with the Player's Color and how the Game ended, a relative date with the full date on hover, and a chevron. The whole row links to the Game.
  • Paging: an infinite query keyed by result, built by the games vertical's query-options factory. "Show more" loads the next page, with "Showing n of N" beside it, N being the filter's count. Coming back from a Game keeps the pages loaded.
  • Empty states:
    • No Game at all: "No games yet", why, and a New game button. If the browser has never played, Sign in too.
    • A filter with no Game: a plain line saying so.
  • All copy goes into the Paraglide catalogue in English and French.

Acceptance criteria

  • Rows render with result, opponent, Color, ending and relative date, newest first, each linking to its Game.
  • The filters show the server's counts. Choosing one narrows the list, survives a reload, and falls back to all for an unknown value.
  • "Show more" appends the next page and disappears when nextCursor is null. "Showing n of N" is right under each filter.
  • Both empty states, and the empty-filter line, render as above.
  • The list keeps the accessible name "My games". my-games.spec filters the Games it played and still finds each Player's own result.
  • French copy on every new string.
  • The gate is green.
## Parent #400 Seam: S4 — `MyGamesView` with the games harness and MSW serving the paged `game.list`; plus the S6 My games steps in `my-games.spec` ## What to build My games as chosen in the prototype (variant D on `prototype/399-front-screens`), on the paged `game.list`. - **Frame:** the account page's: same width, padding and title row. No "New game" in the heading. - **Filters on the left:** All games, Won, Lost and Draw, each with its count from the server. The chosen one is a validated `result` search parameter (absent means all). Below `md` they become a row of tabs above the list. - **Rows:** a big W, L or D, then "vs <opponent>" with the Player's Color and how the Game ended, a relative date with the full date on hover, and a chevron. The whole row links to the Game. - **Paging:** an infinite query keyed by `result`, built by the `games` vertical's query-options factory. "Show more" loads the next page, with "Showing n of N" beside it, N being the filter's count. Coming back from a Game keeps the pages loaded. - **Empty states:** - No Game at all: "No games yet", why, and a New game button. If the browser has never played, Sign in too. - A filter with no Game: a plain line saying so. - All copy goes into the Paraglide catalogue in English and French. ## Acceptance criteria - [ ] Rows render with result, opponent, Color, ending and relative date, newest first, each linking to its Game. - [ ] The filters show the server's counts. Choosing one narrows the list, survives a reload, and falls back to all for an unknown value. - [ ] "Show more" appends the next page and disappears when `nextCursor` is null. "Showing n of N" is right under each filter. - [ ] Both empty states, and the empty-filter line, render as above. - [ ] The list keeps the accessible name "My games". `my-games.spec` filters the Games it played and still finds each Player's own result. - [ ] French copy on every new string. - [ ] The gate is green.
root commented 2026-10-14 14:37:58 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #400

marked this issue as related to #400
root commented 2026-10-14 14:38:00 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #401

marked this issue as related to #401
root commented 2026-10-14 14:52:27 +00:00 (Migrated from gitlab.core-project.space)

mentioned in merge request !527

mentioned in merge request !527
root commented 2026-10-14 15:12:25 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit fd2d26daf5

mentioned in commit fd2d26daf500cf8a4e3260f91d2ff4d3887566e7
root commented 2026-10-14 15:56:43 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 93cedf8629

mentioned in commit 93cedf862902579dc72eb7dd2aba065e4aa9b8e2
root (Migrated from gitlab.core-project.space) closed this issue 2026-10-14 16:10:10 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
amaurycoudr/chess-project#405
No description provided.