added finals forfeits

This commit is contained in:
2026-03-15 19:10:32 +11:00
parent ccc1b0505f
commit db24283037
7 changed files with 528 additions and 31 deletions

View File

@@ -201,6 +201,7 @@ templ seriesCard(season *db.Season, league *db.League, series *db.PlayoffSeries)
{{
hasTeams := series.Team1 != nil || series.Team2 != nil
seriesURL := fmt.Sprintf("/series/%d", series.ID)
isForfeit := series.IsForfeit
}}
<div
data-series={ fmt.Sprint(series.SeriesNumber) }
@@ -209,7 +210,8 @@ templ seriesCard(season *db.Season, league *db.League, series *db.PlayoffSeries)
}
class={ "bg-surface0 border rounded-lg overflow-hidden",
templ.KV("border-blue/50", series.Status == db.SeriesStatusInProgress),
templ.KV("border-surface1", series.Status != db.SeriesStatusInProgress),
templ.KV("border-red/50", isForfeit),
templ.KV("border-surface1", series.Status != db.SeriesStatusInProgress && !isForfeit),
templ.KV("hover:bg-surface1 hover:cursor-pointer transition", hasTeams) }
>
<!-- Series Header -->
@@ -218,17 +220,24 @@ templ seriesCard(season *db.Season, league *db.League, series *db.PlayoffSeries)
<span class="text-xs font-semibold text-subtext0">{ series.Label }</span>
@seriesFormatBadge(series.MatchesToWin)
</div>
@seriesStatusBadge(series.Status)
<div class="flex items-center gap-1">
if isForfeit {
<span class="px-1.5 py-0.5 bg-red/20 text-red rounded text-xs font-bold">
FF
</span>
}
@seriesStatusBadge(series.Status)
</div>
</div>
<!-- Teams -->
<div class="divide-y divide-surface1">
@seriesTeamRow(season, league, series.Team1, series.Team1Seed, series.Team1Wins,
series.WinnerTeamID, series.MatchesToWin)
series.WinnerTeamID, series.ForfeitTeamID, series.MatchesToWin)
@seriesTeamRow(season, league, series.Team2, series.Team2Seed, series.Team2Wins,
series.WinnerTeamID, series.MatchesToWin)
series.WinnerTeamID, series.ForfeitTeamID, series.MatchesToWin)
</div>
<!-- Series Score -->
if series.MatchesToWin > 1 {
if series.MatchesToWin > 1 && !isForfeit {
<div class="bg-mantle px-3 py-1 text-center text-xs text-subtext0 border-t border-surface1">
{ fmt.Sprint(series.Team1Wins) } - { fmt.Sprint(series.Team2Wins) }
</div>
@@ -236,16 +245,21 @@ templ seriesCard(season *db.Season, league *db.League, series *db.PlayoffSeries)
</div>
}
templ seriesTeamRow(season *db.Season, league *db.League, team *db.Team, seed *int, wins int, winnerID *int, matchesToWin int) {
templ seriesTeamRow(season *db.Season, league *db.League, team *db.Team, seed *int, wins int, winnerID *int, forfeitTeamID *int, matchesToWin int) {
{{
isWinner := false
if team != nil && winnerID != nil {
isWinner = team.ID == *winnerID
}
isForfeiter := false
if team != nil && forfeitTeamID != nil {
isForfeiter = team.ID == *forfeitTeamID
}
isTBD := team == nil
}}
<div class={ "flex items-center justify-between px-3 py-2",
templ.KV("bg-green/5", isWinner) }>
templ.KV("bg-green/5", isWinner && !isForfeiter),
templ.KV("bg-red/5", isForfeiter) }>
<div class="flex items-center gap-2 min-w-0">
if seed != nil {
<span class="text-xs font-mono text-subtext0 w-4 text-right flex-shrink-0">
@@ -260,12 +274,14 @@ templ seriesTeamRow(season *db.Season, league *db.League, team *db.Team, seed *i
<div class="truncate">
@links.TeamLinkInSeason(team, season, league)
</div>
if isWinner {
if isForfeiter {
<span class="text-red text-xs font-bold flex-shrink-0">FF</span>
} else if isWinner {
<span class="text-green text-xs flex-shrink-0">✓</span>
}
}
</div>
if matchesToWin > 1 {
if matchesToWin > 1 && forfeitTeamID == nil {
<span class={ "text-sm font-mono flex-shrink-0 ml-2",
templ.KV("text-text", !isWinner),
templ.KV("text-green font-bold", isWinner) }>