Repository navigation
Feat/game focused scoreboard - #10
Merged
Merged
Conversation
Scoreboard (Home featured event, Scoreboard and Overview tabs, public link), all rendering one EventScoreboardView in three states: - Not started: a pre-start overview of the games (objective count, points, Custom chip) and the competitor roster, built from the event response alone; no /scoreboard request. EventCompetitorResponse gains twitchLogin and profileImageUrl for it. - Started with an enabled game: a "Current game / Whole event" switch bound to ?view=, defaulting to the current game: "Now playing" header and standings ordered by the server's new per-game rank (GameBreakdown.Rank, computed with the event's tie-break mode from official figures only), with a named progress bar, Done chip, event total with event rank, and trial figures for the current game only. - Whole event: a per-game matrix (score, x/y, per-game #rank or "—" before anyone has a result), rows in event-rank order. Rows and cells open an objectives dialog for that competitor and game; a competitor search filters without renumbering and announces the match count; below md both views become cards. Surfaces re-read the event and the scoreboard every 30 s and resync at once when the event starts or the enabled game changes. The old table, rows, cards and the Overview preview are removed; docs updated. Server timestamps are UTC only: global JSON converters read a zone-less request timestamp as UTC (never the server's local time) and write UTC, and the backend test assemblies run in a non-UTC zone so a local-time leak fails the tests.
Sample events: an admin "Sample data" page (any environment, behind a
confirmation) creates the same five "Sample: " events every time, each in
a different state (not started, game in progress, between games, seven
games, empty setup), with custom Souls-series games and categorised
objectives but no competitors. POST /admin/sample-events runs
SampleEventSeeder, which writes everything plus an event.created audit
each in one save and is callable directly from IntegrationTests.
Custom display names: users gain TwitchDisplayName (refreshed on sign-in)
and DisplayNameOverride (max 50 chars); DisplayName stays the shown name,
override ?? Twitch, so a chosen name survives sign-in. Migration
AddDisplayNameOverride backfills the Twitch name. Users set or clear their
own on the Profile page (PATCH /users/me/display-name), admins anyone's
from the Users tab (PATCH /admin/users/{id}/display-name). Changes are
validated (trimmed, 1-50 chars, no control characters), audited as
user.display_name_changed, and evict the cached scoreboard of every event
the user plays (also /scores, overlay, Twitch extension) and the calendar.
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.
No description provided.