fix: klargör Change-kolumnen — split i Δ month vs Δ predicted #3

Closed
opened 2026-05-21 11:31:24 +02:00 by shcizo · 0 comments
Owner

Beskrivning

Nuvarande "Change"-kolumn i players-tabellen är otydlig — den blandar ihop två semantiskt olika begrepp som användare lätt förväxlar:

  • Den verkliga förändringen mot förra månadens officiella PDGA-uppdatering
  • Gapet mellan dagens rating och förutspådd nästa rating

Idag visas bara den ena (player.rating_change = officiell månadsdelta), medan predictedRating existerar som en separat kolumn utan tydlig koppling. Det är inte uppenbart för användaren vad varje siffra betyder eller varför.

Förväntat beteende

Två tydligt åtskilda deltas, var och en med egen kolumn och egen "hint"-text som beskriver vad värdet betyder:

  • Δ month = current_rating − last_month_official_rating — verklig förändring sedan senaste PDGA-uppdatering
  • Δ predicted = predicted_rating − current_rating — estimerat gap från idag till nästa officiella uppdatering

Kolumnernas headers ska tydligt skilja dem åt med små "+ Δ since last update" / "+ gap from today"-hints (9.5px grå text under huvudlabeln, enligt designspec).

Teknisk kontext

  • Nuvarande rendering: views/partials/ratings-table.ejs:11 (header) och :38 (cell)
  • Datafält som finns: current_rating, rating_change, predicted_rating i src/models/player.js
  • Fält som saknas: last_month_official_rating är inte explicit lagrat. Kan antingen:
    • Beräknas härlett: last_month = current_rating - rating_change
    • Eller lagras explicit (säkrare om rating_change-semantiken ändras)
  • Delta-rendering har redan .positive / .negative / .neutral-klasser i public/css/

Designreferens

Se docs/design_handoff_pdga_rating/README.md — sektion "Delta pill" och "Critical: these two deltas are computed differently":

  • Pill-shape, 999px radius, signed nummer i tabular monospace
  • Upp: mint bakgrund (oklch(0.94 0.04 150)), moss text
  • Ned: peach bakgrund (oklch(0.95 0.04 25)), terracotta text
  • Flat/unknown: paper-2 bakgrund, grå text

Förslag till lösning

  1. Lägg en Δ month-pill i rating-cellen (under stora rating-numret)
  2. Lägg en Δ predicted-pill i predicted-cellen (under predicted-numret)
  3. Lägg till hint-text under kolumn-headers
  4. Returnera båda deltas från player-service.js så templates inte räknar inline
  5. Förtydliga semantik i kommentarer / variabelnamn (deltaMonth, deltaPredicted)

Scope

Inkluderat: Players-tabellens Change/Predicted-kolumner, deltarendering, datalager-justering för last_month_official_rating.

Exkluderat: Hela den övriga visuella redesignen (topbar, summary tiles, sparklines, expanded row, courses-sidan) — separata issues.

Beroende

Bör levereras innan eller tillsammans med #4 (shared visual layer) så pill-stylingen följer det nya tokensystemet. Kan dock implementeras fristående med nuvarande CSS om man hellre prioriterar UX-fixet först.

## Beskrivning Nuvarande "Change"-kolumn i players-tabellen är otydlig — den blandar ihop två semantiskt olika begrepp som användare lätt förväxlar: - Den **verkliga** förändringen mot förra månadens officiella PDGA-uppdatering - **Gapet** mellan dagens rating och förutspådd nästa rating Idag visas bara den ena (`player.rating_change` = officiell månadsdelta), medan `predictedRating` existerar som en separat kolumn utan tydlig koppling. Det är inte uppenbart för användaren vad varje siffra betyder eller varför. ## Förväntat beteende Två tydligt åtskilda deltas, var och en med egen kolumn och egen "hint"-text som beskriver vad värdet betyder: - **Δ month** = `current_rating − last_month_official_rating` — verklig förändring sedan senaste PDGA-uppdatering - **Δ predicted** = `predicted_rating − current_rating` — estimerat gap från idag till nästa officiella uppdatering Kolumnernas headers ska tydligt skilja dem åt med små "+ Δ since last update" / "+ gap from today"-hints (9.5px grå text under huvudlabeln, enligt designspec). ## Teknisk kontext - Nuvarande rendering: `views/partials/ratings-table.ejs:11` (header) och `:38` (cell) - Datafält som finns: `current_rating`, `rating_change`, `predicted_rating` i `src/models/player.js` - Fält som **saknas**: `last_month_official_rating` är inte explicit lagrat. Kan antingen: - Beräknas härlett: `last_month = current_rating - rating_change` - Eller lagras explicit (säkrare om `rating_change`-semantiken ändras) - Delta-rendering har redan `.positive` / `.negative` / `.neutral`-klasser i `public/css/` ## Designreferens Se `docs/design_handoff_pdga_rating/README.md` — sektion "Delta pill" och "Critical: these two deltas are computed differently": - Pill-shape, 999px radius, signed nummer i tabular monospace - Upp: mint bakgrund (`oklch(0.94 0.04 150)`), moss text - Ned: peach bakgrund (`oklch(0.95 0.04 25)`), terracotta text - Flat/unknown: paper-2 bakgrund, grå text ## Förslag till lösning 1. Lägg en `Δ month`-pill i `rating`-cellen (under stora rating-numret) 2. Lägg en `Δ predicted`-pill i `predicted`-cellen (under predicted-numret) 3. Lägg till hint-text under kolumn-headers 4. Returnera båda deltas från `player-service.js` så templates inte räknar inline 5. Förtydliga semantik i kommentarer / variabelnamn (`deltaMonth`, `deltaPredicted`) ## Scope **Inkluderat:** Players-tabellens Change/Predicted-kolumner, deltarendering, datalager-justering för `last_month_official_rating`. **Exkluderat:** Hela den övriga visuella redesignen (topbar, summary tiles, sparklines, expanded row, courses-sidan) — separata issues. ## Beroende Bör levereras innan eller tillsammans med #4 (shared visual layer) så pill-stylingen följer det nya tokensystemet. Kan dock implementeras fristående med nuvarande CSS om man hellre prioriterar UX-fixet först.
shcizo added the enhancement label 2026-05-21 11:31:24 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shcizo/pdga-rating#3