playoff visual fixes

This commit is contained in:
2026-03-09 13:01:28 +11:00
parent 723a213be3
commit 3666870111
11 changed files with 528 additions and 215 deletions

View File

@@ -336,17 +336,19 @@ func generate7to9Bracket(
// generate10to15Bracket creates a finals bracket for 10-15 teams:
//
// Qualifying Finals (QF1-QF4): Top 4 get second chance
// Qualifying Finals: Top 4 get second chance
// QF1: 1st vs 4th
// QF2: 2nd vs 3rd
// QF3: 5th vs 8th
// QF4: 6th vs 7th
//
// Semi Finals:
// SF1: Loser(QF1) vs Winner(QF4) — loser eliminated
// SF2: Loser(QF2) vs Winner(QF3) — loser eliminated
// Elimination Finals: Single elimination
// EF1: 5th vs 8th
// EF2: 6th vs 7th
//
// Preliminary Finals:
// Semi Finals (same-side: QF loser faces same-side EF winner):
// SF1: Loser(QF1) vs Winner(EF1) — loser eliminated
// SF2: Loser(QF2) vs Winner(EF2) — loser eliminated
//
// Preliminary Finals (QF winner vs opposite SF winner):
// PF1: Winner(QF1) vs Winner(SF2)
// PF2: Winner(QF2) vs Winner(SF1)
//
@@ -412,7 +414,7 @@ func generate10to15Bracket(
// Semi Finals
sf1, err := NewPlayoffSeries(ctx, tx, bracket, 5,
"semi_final", "SF1",
nil, nil, // Loser(QF1) vs Winner(EF2)
nil, nil, // Loser(QF1) vs Winner(EF1)
nil, nil,
getMatchesToWin(roundFormats, "semi_final"), SeriesStatusPending)
if err != nil {
@@ -421,7 +423,7 @@ func generate10to15Bracket(
sf2, err := NewPlayoffSeries(ctx, tx, bracket, 6,
"semi_final", "SF2",
nil, nil, // Loser(QF2) vs Winner(EF1)
nil, nil, // Loser(QF2) vs Winner(EF2)
nil, nil,
getMatchesToWin(roundFormats, "semi_final"), SeriesStatusPending)
if err != nil {
@@ -482,28 +484,28 @@ func generate10to15Bracket(
return errors.Wrap(err, "wire QF2")
}
// EF1 (QF3): Winner -> SF2 (team2), Loser eliminated
// EF1 (QF3): Winner -> SF1 (team2), Loser eliminated
err = SetSeriesAdvancement(ctx, tx, qf3.ID,
&sf2.ID, strPtr("team2"), nil, nil)
&sf1.ID, strPtr("team2"), nil, nil)
if err != nil {
return errors.Wrap(err, "wire EF1")
}
// EF2 (QF4): Winner -> SF1 (team2), Loser eliminated
// EF2 (QF4): Winner -> SF2 (team2), Loser eliminated
err = SetSeriesAdvancement(ctx, tx, qf4.ID,
&sf1.ID, strPtr("team2"), nil, nil)
&sf2.ID, strPtr("team2"), nil, nil)
if err != nil {
return errors.Wrap(err, "wire EF2")
}
// SF1: Winner -> PF2 (team2), Loser eliminated
// SF1: Winner -> PF2 (team2), Loser eliminated (crosses to face QF2 winner)
err = SetSeriesAdvancement(ctx, tx, sf1.ID,
&pf2.ID, strPtr("team2"), nil, nil)
if err != nil {
return errors.Wrap(err, "wire SF1")
}
// SF2: Winner -> PF1 (team2), Loser eliminated
// SF2: Winner -> PF1 (team2), Loser eliminated (crosses to face QF1 winner)
err = SetSeriesAdvancement(ctx, tx, sf2.ID,
&pf1.ID, strPtr("team2"), nil, nil)
if err != nil {