cross mix knockout seeds
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user