cross mix knockout seeds

This commit is contained in:
yohlo
2026-03-01 19:36:26 -06:00
parent c5b3ad50ca
commit 873ca3e4c4
4 changed files with 84 additions and 20 deletions

View File

@@ -502,12 +502,30 @@ export const generateKnockoutBracket = createServerFn()
const orderedTeamIds: string[] = [];
const maxRank = tournament.group_config.advance_per_group;
const numGroups = tournament.group_config.num_groups;
for (let rank = 1; rank <= maxRank; rank++) {
const teamsAtRank = qualifiedTeams
.filter(t => t.rank === rank)
.sort((a, b) => a.groupOrder - b.groupOrder);
orderedTeamIds.push(...teamsAtRank.map(t => t.teamId));
const teamsByGroup: string[][] = [];
for (let g = 0; g < numGroups; g++) {
teamsByGroup[g] = [];
}
for (const qualified of qualifiedTeams) {
teamsByGroup[qualified.groupOrder][qualified.rank - 1] = qualified.teamId;
}
const totalTeams = numGroups * maxRank;
for (let i = 0; i < totalTeams / 2; i++) {
const group1 = i % numGroups;
const rankIndex1 = Math.floor(i / numGroups);
const group2 = (i + 1) % numGroups;
const rankIndex2 = maxRank - 1 - rankIndex1;
const team1 = teamsByGroup[group1]?.[rankIndex1];
const team2 = teamsByGroup[group2]?.[rankIndex2];
if (team1) orderedTeamIds.push(team1);
if (team2) orderedTeamIds.push(team2);
}
const teamCount = orderedTeamIds.length;
@@ -673,6 +691,7 @@ export const generateGroupStage = createServerFn()
createdGroups.push(group);
const teamIds = assignment.teamIds;
for (let i = 0; i < teamIds.length; i++) {
for (let j = i + 1; j < teamIds.length; j++) {
groupStageMatches.push({