package seasonsview
import "git.haelnorr.com/h/oslstats/internal/db"
import "git.haelnorr.com/h/oslstats/internal/view/component/links"
import "fmt"
// PlayoffBracketView renders the full bracket visualization
templ PlayoffBracketView(season *db.Season, league *db.League, bracket *db.PlayoffBracket) {
★
Finals Bracket
{ formatLabel(bracket.Format) }
@playoffStatusBadge(bracket.Status)
switch bracket.Format {
case db.PlayoffFormat5to6:
@bracket5to6(season, league, bracket)
case db.PlayoffFormat7to9:
@bracket7to9(season, league, bracket)
case db.PlayoffFormat10to15:
@bracket10to15(season, league, bracket)
}
}
// ──────────────────────────────────────────────
// 5-6 TEAMS FORMAT
// ──────────────────────────────────────────────
// Round 1: [Upper Bracket] [Lower Bracket]
// Round 2: [Upper Final] [Lower Final]
// Round 3: [Grand Final]
templ bracket5to6(season *db.Season, league *db.League, bracket *db.PlayoffBracket) {
{{
s := seriesByNumber(bracket.Series)
conns := connectionsJSON(bracket.Series)
}}
{ series.Label }
@seriesFormatBadge(series.MatchesToWin)
@seriesStatusBadge(series.Status)
@seriesTeamRow(season, league, series.Team1, series.Team1Seed, series.Team1Wins,
series.WinnerTeamID, series.MatchesToWin)
@seriesTeamRow(season, league, series.Team2, series.Team2Seed, series.Team2Wins,
series.WinnerTeamID, series.MatchesToWin)
if series.MatchesToWin > 1 {
{ fmt.Sprint(series.Team1Wins) } - { fmt.Sprint(series.Team2Wins) }
}
}
templ seriesTeamRow(season *db.Season, league *db.League, team *db.Team, seed *int, wins int, winnerID *int, matchesToWin int) {
{{
isWinner := false
if team != nil && winnerID != nil {
isWinner = team.ID == *winnerID
}
isTBD := team == nil
}}