fix
This commit is contained in:
@@ -130,10 +130,15 @@ function sideFrom(
|
||||
}
|
||||
|
||||
// Baut die komplette aufgelöste Bracket-Struktur.
|
||||
// resolveWinners: wenn true, werden die Gewinner-TeamIDs aus den aufgelösten
|
||||
// R32-Slots abgeleitet (basierend auf den Spiel-Scores), statt aus den Team-IDs
|
||||
// des Feeds. Nötig für die Simulation, wo KO-Matches Scores aber keine Team-IDs
|
||||
// im Feed haben.
|
||||
export function resolveBracket(
|
||||
matches: Match[], teams: Team[], tables: GroupTable[],
|
||||
thirds: ThirdPlaceRow[], assignment: ThirdAssignment | null,
|
||||
annexResolved: boolean,
|
||||
resolveWinners = false,
|
||||
): { r32: ResolvedTie[]; later: Record<number, ResolvedTie> } {
|
||||
// Map: Match-Nummer -> Sieger-Team-ID (für Propagation in Folgerunden)
|
||||
const winners = new Map<number, string | null>();
|
||||
@@ -153,8 +158,25 @@ export function resolveBracket(
|
||||
const home = sideFrom(h.teamId, slotLabel(rm.home, assignment, winnerGroup), teams, feed, "home", h.provisional, h.tooltip);
|
||||
const away = sideFrom(a.teamId, slotLabel(rm.away, assignment, winnerGroup), teams, feed, "away", a.provisional, a.tooltip);
|
||||
|
||||
winners.set(rm.matchNumber, winnerOf(feed));
|
||||
losers.set(rm.matchNumber, loserOf(feed));
|
||||
const feedWinner = winnerOf(feed);
|
||||
if (resolveWinners && !feedWinner && feed && h.teamId && a.teamId
|
||||
&& feed.homeScore != null && feed.awayScore != null) {
|
||||
// Simulation: Gewinner aus Scores und aufgelösten Team-IDs ableiten
|
||||
if (feed.homeScore > feed.awayScore) {
|
||||
winners.set(rm.matchNumber, h.teamId);
|
||||
losers.set(rm.matchNumber, loserOf(feed) ?? a.teamId);
|
||||
} else if (feed.awayScore > feed.homeScore) {
|
||||
winners.set(rm.matchNumber, a.teamId);
|
||||
losers.set(rm.matchNumber, loserOf(feed) ?? h.teamId);
|
||||
} else {
|
||||
// Unentschieden → Heim gewinnt
|
||||
winners.set(rm.matchNumber, h.teamId);
|
||||
losers.set(rm.matchNumber, loserOf(feed) ?? a.teamId);
|
||||
}
|
||||
} else {
|
||||
winners.set(rm.matchNumber, feedWinner);
|
||||
losers.set(rm.matchNumber, loserOf(feed));
|
||||
}
|
||||
decided.set(rm.matchNumber, feed?.status === "FINISHED");
|
||||
return {
|
||||
matchNumber: rm.matchNumber, stage: "R32",
|
||||
@@ -177,8 +199,24 @@ export function resolveBracket(
|
||||
const awayTtip = `${km.losers ? "Verlierer" : "Sieger"} aus Spiel ${km.fromAway}`;
|
||||
const home = sideFrom(homeId, homeLabel, teams, feed, "home", homeProv, homeTtip);
|
||||
const away = sideFrom(awayId, awayLabel, teams, feed, "away", awayProv, awayTtip);
|
||||
winners.set(km.matchNumber, winnerOf(feed));
|
||||
losers.set(km.matchNumber, loserOf(feed));
|
||||
|
||||
const feedWinner = winnerOf(feed);
|
||||
if (resolveWinners && !feedWinner && feed && homeId && awayId
|
||||
&& feed.homeScore != null && feed.awayScore != null) {
|
||||
if (feed.homeScore > feed.awayScore) {
|
||||
winners.set(km.matchNumber, homeId);
|
||||
losers.set(km.matchNumber, loserOf(feed) ?? awayId);
|
||||
} else if (feed.awayScore > feed.homeScore) {
|
||||
winners.set(km.matchNumber, awayId);
|
||||
losers.set(km.matchNumber, loserOf(feed) ?? homeId);
|
||||
} else {
|
||||
winners.set(km.matchNumber, homeId);
|
||||
losers.set(km.matchNumber, loserOf(feed) ?? awayId);
|
||||
}
|
||||
} else {
|
||||
winners.set(km.matchNumber, feedWinner);
|
||||
losers.set(km.matchNumber, loserOf(feed));
|
||||
}
|
||||
decided.set(km.matchNumber, feed?.status === "FINISHED");
|
||||
later[km.matchNumber] = {
|
||||
matchNumber: km.matchNumber, stage: km.stage,
|
||||
|
||||
Reference in New Issue
Block a user