diff --git a/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx b/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx
index 27993c3312..30cf5b8ed1 100644
--- a/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx
+++ b/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx
@@ -116,28 +116,26 @@ export function PlacementsTable({
TB
) : null}
-
- W/L (M)
- |
- {bracket.type === "round_robin" ? (
-
- Scr
- |
- ) : null}
{bracket.type === "swiss" ? (
<>
-
- Buch.
-
+ OW%
|
-
- Buch. (M)
+
+ OW% (M)
|
>
) : null}
+
+ W/L (M)
+ |
+ {bracket.type === "round_robin" ? (
+
+ Scr
+ |
+ ) : null}
Seed |
|
{canEditDestination ? | : null}
@@ -199,6 +197,16 @@ export function PlacementsTable({
{(stats.lossesAgainstTied ?? 0) * -1}
) : null}
+ {bracket.type === "swiss" ? (
+ <>
+
+ {stats.opponentSetWinPercentage?.toFixed(2)}
+ |
+
+ {stats.opponentMapWinPercentage?.toFixed(2)}
+ |
+ >
+ ) : null}
{stats.mapWins}/{stats.mapLosses}
@@ -209,16 +217,6 @@ export function PlacementsTable({
{stats.points}
|
) : null}
- {bracket.type === "swiss" ? (
- <>
-
- {stats.buchholzSets}
- |
-
- {stats.buchholzMaps}
- |
- >
- ) : null}
{team?.seed} |
{
expect(standing.stats?.lossesAgainstTied).toBe(0); // they lost against "Tidy Tidings" but that team dropped out before final round
});
});
+
+describe("round robin standings", () => {
+ it("should sort teams primarily by set wins (per group) in paddling pool 255", () => {
+ const tournamentPP255 = new Tournament(PADDLING_POOL_255());
+
+ const standings = tournamentPP255.bracketByIdx(0)!.standings;
+
+ const groupIds = removeDuplicates(
+ standings.map((standing) => standing.groupId),
+ );
+ expect(
+ groupIds.length,
+ "Paddling Pool 255 should have groups from Group A to Group I",
+ ).toBe(9);
+
+ for (const groupId of groupIds) {
+ const groupStandings = standings.filter(
+ (standing) => standing.groupId === groupId,
+ );
+
+ for (let i = 0; i < groupStandings.length; i++) {
+ const current = groupStandings[i];
+ const next = groupStandings[i + 1];
+
+ if (!next) {
+ break;
+ }
+
+ expect(
+ current.stats!.setWins,
+ `Team with ID ${current.team.id} in wrong spot relative to ${next.team.id}`,
+ ).toBeGreaterThanOrEqual(next.stats!.setWins);
+ }
+ }
+ });
+
+ it("has ascending order from lower group id to higher group id for same placements", () => {
+ const tournamentPP255 = new Tournament(PADDLING_POOL_255());
+
+ const standings = tournamentPP255.bracketByIdx(0)!.standings;
+
+ const placements = removeDuplicates(
+ standings.map((standing) => standing.placement),
+ ).sort((a, b) => a - b);
+
+ for (const placement of placements) {
+ const placementStandings = standings.filter(
+ (standing) => standing.placement === placement,
+ );
+
+ for (let i = 0; i < placementStandings.length; i++) {
+ const current = placementStandings[i];
+ const next = placementStandings[i + 1];
+
+ if (!next) {
+ break;
+ }
+
+ expect(
+ current.groupId,
+ `Team with ID ${current.team.id} in wrong spot relative to ${next.team.id}`,
+ ).toBeLessThan(next.groupId!);
+ }
+ }
+ });
+});
diff --git a/app/features/tournament-bracket/core/Bracket.ts b/app/features/tournament-bracket/core/Bracket.ts
index 9cf943ee00..0afa75de77 100644
--- a/app/features/tournament-bracket/core/Bracket.ts
+++ b/app/features/tournament-bracket/core/Bracket.ts
@@ -7,6 +7,7 @@ import { removeDuplicates } from "~/utils/arrays";
import invariant from "~/utils/invariant";
import { logger } from "~/utils/logger";
import { assertUnreachable } from "~/utils/types";
+import { cutToNDecimalPlaces } from "../../../utils/number";
import { fillWithNullTillPowerOfTwo } from "../tournament-bracket-utils";
import * as Progression from "./Progression";
import type { OptionalIdObject, Tournament } from "./Tournament";
@@ -50,11 +51,16 @@ export interface Standing {
winsAgainstTied: number;
// first tiebreaker in swiss
lossesAgainstTied?: number;
- buchholzSets?: number;
- buchholzMaps?: number;
+ opponentSetWinPercentage?: number;
+ opponentMapWinPercentage?: number;
};
}
+interface TeamTrackRecord {
+ wins: number;
+ losses: number;
+}
+
export abstract class Bracket {
id;
idx;
@@ -1059,6 +1065,9 @@ class RoundRobinBracket extends Bracket {
if (a.mapWins > b.mapWins) return -1;
if (a.mapWins < b.mapWins) return 1;
+ if (a.mapLosses < b.mapLosses) return -1;
+ if (a.mapLosses > b.mapLosses) return 1;
+
if (a.points > b.points) return -1;
if (a.points < b.points) return 1;
@@ -1223,8 +1232,8 @@ class SwissBracket extends Bracket {
mapLosses: number;
winsAgainstTied: number;
lossesAgainstTied: number;
- buchholzSets: number;
- buchholzMaps: number;
+ opponentSets: TeamTrackRecord;
+ opponentMaps: TeamTrackRecord;
}[] = [];
const updateTeam = ({
@@ -1233,16 +1242,16 @@ class SwissBracket extends Bracket {
setLosses = 0,
mapWins = 0,
mapLosses = 0,
- buchholzSets = 0,
- buchholzMaps = 0,
+ opponentSets = { wins: 0, losses: 0 },
+ opponentMaps = { wins: 0, losses: 0 },
}: {
teamId: number;
setWins?: number;
setLosses?: number;
mapWins?: number;
mapLosses?: number;
- buchholzSets?: number;
- buchholzMaps?: number;
+ opponentSets?: TeamTrackRecord;
+ opponentMaps?: TeamTrackRecord;
}) => {
const team = teams.find((team) => team.id === teamId);
if (team) {
@@ -1250,8 +1259,11 @@ class SwissBracket extends Bracket {
team.setLosses += setLosses;
team.mapWins += mapWins;
team.mapLosses += mapLosses;
- team.buchholzSets += buchholzSets;
- team.buchholzMaps += buchholzMaps;
+
+ team.opponentSets.wins += opponentSets.wins;
+ team.opponentSets.losses += opponentSets.losses;
+ team.opponentMaps.wins += opponentMaps.wins;
+ team.opponentMaps.losses += opponentMaps.losses;
} else {
teams.push({
id: teamId,
@@ -1261,8 +1273,8 @@ class SwissBracket extends Bracket {
mapLosses,
winsAgainstTied: 0,
lossesAgainstTied: 0,
- buchholzMaps,
- buchholzSets,
+ opponentMaps,
+ opponentSets,
});
}
};
@@ -1357,12 +1369,18 @@ class SwissBracket extends Bracket {
});
}
- // buchholz
+ // opponent win %
for (const team of teams) {
const teamsWhoPlayedAgainst = matchUps.get(team.id) ?? [];
- let buchholzSets = 0;
- let buchholzMaps = 0;
+ const opponentSets = {
+ wins: 0,
+ losses: 0,
+ };
+ const opponentMaps = {
+ wins: 0,
+ losses: 0,
+ };
for (const teamId of teamsWhoPlayedAgainst) {
const opponent = teams.find((t) => t.id === teamId);
@@ -1373,14 +1391,17 @@ class SwissBracket extends Bracket {
continue;
}
- buchholzSets += opponent.setWins;
- buchholzMaps += opponent.mapWins;
+ opponentSets.wins += opponent.setWins;
+ opponentSets.losses += opponent.setLosses;
+
+ opponentMaps.wins += opponent.mapWins;
+ opponentMaps.losses += opponent.mapLosses;
}
updateTeam({
teamId: team.id,
- buchholzSets,
- buchholzMaps,
+ opponentSets,
+ opponentMaps,
});
}
@@ -1443,14 +1464,32 @@ class SwissBracket extends Bracket {
if (a.lossesAgainstTied > b.lossesAgainstTied) return 1;
if (a.lossesAgainstTied < b.lossesAgainstTied) return -1;
- if (a.mapWins > b.mapWins) return -1;
- if (a.mapWins < b.mapWins) return 1;
+ const aOpponentSetWinPercentage = this.trackRecordToWinPercentage(
+ a.opponentSets,
+ );
+ const bOpponentSetWinPercentage = this.trackRecordToWinPercentage(
+ b.opponentSets,
+ );
- if (a.buchholzSets > b.buchholzSets) return -1;
- if (a.buchholzSets < b.buchholzSets) return 1;
+ if (aOpponentSetWinPercentage > bOpponentSetWinPercentage) {
+ return -1;
+ }
+ if (aOpponentSetWinPercentage < bOpponentSetWinPercentage) return 1;
+
+ const aOpponentMapWinPercentage = this.trackRecordToWinPercentage(
+ a.opponentMaps,
+ );
+ const bOpponentMapWinPercentage = this.trackRecordToWinPercentage(
+ b.opponentMaps,
+ );
- if (a.buchholzMaps > b.buchholzMaps) return -1;
- if (a.buchholzMaps < b.buchholzMaps) return 1;
+ if (aOpponentMapWinPercentage > bOpponentMapWinPercentage) {
+ return -1;
+ }
+ if (aOpponentMapWinPercentage < bOpponentMapWinPercentage) return 1;
+
+ if (a.mapWins > b.mapWins) return -1;
+ if (a.mapWins < b.mapWins) return 1;
const aSeed = Number(this.tournament.teamById(a.id)?.seed);
const bSeed = Number(this.tournament.teamById(b.id)?.seed);
@@ -1472,8 +1511,12 @@ class SwissBracket extends Bracket {
mapLosses: team.mapLosses,
winsAgainstTied: team.winsAgainstTied,
lossesAgainstTied: team.lossesAgainstTied,
- buchholzSets: team.buchholzSets,
- buchholzMaps: team.buchholzMaps,
+ opponentSetWinPercentage: this.trackRecordToWinPercentage(
+ team.opponentSets,
+ ),
+ opponentMapWinPercentage: this.trackRecordToWinPercentage(
+ team.opponentMaps,
+ ),
points: 0,
},
};
@@ -1510,6 +1553,13 @@ class SwissBracket extends Bracket {
);
}
+ private trackRecordToWinPercentage(trackRecord: TeamTrackRecord) {
+ return cutToNDecimalPlaces(
+ (trackRecord.wins / (trackRecord.wins + trackRecord.losses)) * 100,
+ 2,
+ );
+ }
+
get type(): Tables["TournamentStage"]["type"] {
return "swiss";
}
diff --git a/app/features/tournament-bracket/core/tests/mocks.ts b/app/features/tournament-bracket/core/tests/mocks.ts
index 51effda352..a69f77ad54 100644
--- a/app/features/tournament-bracket/core/tests/mocks.ts
+++ b/app/features/tournament-bracket/core/tests/mocks.ts
@@ -6529,6 +6529,7 @@ export const PADDLING_POOL_255 = () =>
},
tournament_id: 18,
type: "round_robin",
+ createdAt: 1708538411,
},
],
group: [
@@ -6584,162 +6585,189 @@ export const PADDLING_POOL_255 = () =>
group_id: 56,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 286,
group_id: 56,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 287,
group_id: 56,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 288,
group_id: 57,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 289,
group_id: 57,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 290,
group_id: 57,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 291,
group_id: 58,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 292,
group_id: 58,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 293,
group_id: 58,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 294,
group_id: 59,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 295,
group_id: 59,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 296,
group_id: 59,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 297,
group_id: 60,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 298,
group_id: 60,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 299,
group_id: 60,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 300,
group_id: 61,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 301,
group_id: 61,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 302,
group_id: 61,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 303,
group_id: 62,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 304,
group_id: 62,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 305,
group_id: 62,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 306,
group_id: 63,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 307,
group_id: 63,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 308,
group_id: 63,
number: 3,
stage_id: 20,
+ maps: null,
},
{
id: 309,
group_id: 64,
number: 1,
stage_id: 20,
+ maps: null,
},
{
id: 310,
group_id: 64,
number: 2,
stage_id: 20,
+ maps: null,
},
{
id: 311,
group_id: 64,
number: 3,
stage_id: 20,
+ maps: null,
},
],
match: [
@@ -6756,6 +6784,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 2,
lastGameFinishedAt: null,
+ createdAt: null,
},
{
id: 1427,
@@ -6779,6 +6808,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539630,
+ createdAt: null,
},
{
id: 1428,
@@ -6793,6 +6823,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 2,
lastGameFinishedAt: null,
+ createdAt: null,
},
{
id: 1429,
@@ -6816,6 +6847,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540764,
+ createdAt: null,
},
{
id: 1430,
@@ -6830,6 +6862,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 2,
lastGameFinishedAt: null,
+ createdAt: null,
},
{
id: 1431,
@@ -6853,6 +6886,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541779,
+ createdAt: null,
},
{
id: 1432,
@@ -6876,6 +6910,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539432,
+ createdAt: null,
},
{
id: 1433,
@@ -6899,6 +6934,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540260,
+ createdAt: null,
},
{
id: 1434,
@@ -6922,6 +6958,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541534,
+ createdAt: null,
},
{
id: 1435,
@@ -6945,6 +6982,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541061,
+ createdAt: null,
},
{
id: 1436,
@@ -6968,6 +7006,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543160,
+ createdAt: null,
},
{
id: 1437,
@@ -6991,6 +7030,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542086,
+ createdAt: null,
},
{
id: 1438,
@@ -7014,6 +7054,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540004,
+ createdAt: null,
},
{
id: 1439,
@@ -7037,6 +7078,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539745,
+ createdAt: null,
},
{
id: 1440,
@@ -7060,6 +7102,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541376,
+ createdAt: null,
},
{
id: 1441,
@@ -7083,6 +7126,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541456,
+ createdAt: null,
},
{
id: 1442,
@@ -7106,6 +7150,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543165,
+ createdAt: null,
},
{
id: 1443,
@@ -7129,6 +7174,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543022,
+ createdAt: null,
},
{
id: 1444,
@@ -7152,6 +7198,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539666,
+ createdAt: null,
},
{
id: 1445,
@@ -7175,6 +7222,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539674,
+ createdAt: null,
},
{
id: 1446,
@@ -7198,6 +7246,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540981,
+ createdAt: null,
},
{
id: 1447,
@@ -7221,6 +7270,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540741,
+ createdAt: null,
},
{
id: 1448,
@@ -7244,6 +7294,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542080,
+ createdAt: null,
},
{
id: 1449,
@@ -7267,6 +7318,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542786,
+ createdAt: null,
},
{
id: 1450,
@@ -7290,6 +7342,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539616,
+ createdAt: null,
},
{
id: 1451,
@@ -7313,6 +7366,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539686,
+ createdAt: null,
},
{
id: 1452,
@@ -7336,6 +7390,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541068,
+ createdAt: null,
},
{
id: 1453,
@@ -7359,6 +7414,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540768,
+ createdAt: null,
},
{
id: 1454,
@@ -7382,6 +7438,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541871,
+ createdAt: null,
},
{
id: 1455,
@@ -7405,6 +7462,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542578,
+ createdAt: null,
},
{
id: 1456,
@@ -7428,6 +7486,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539276,
+ createdAt: null,
},
{
id: 1457,
@@ -7451,6 +7510,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539414,
+ createdAt: null,
},
{
id: 1458,
@@ -7474,6 +7534,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540235,
+ createdAt: null,
},
{
id: 1459,
@@ -7497,6 +7558,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541059,
+ createdAt: null,
},
{
id: 1460,
@@ -7520,6 +7582,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542478,
+ createdAt: null,
},
{
id: 1461,
@@ -7543,6 +7606,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543244,
+ createdAt: null,
},
{
id: 1462,
@@ -7566,6 +7630,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540410,
+ createdAt: null,
},
{
id: 1463,
@@ -7589,6 +7654,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539690,
+ createdAt: null,
},
{
id: 1464,
@@ -7612,6 +7678,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540751,
+ createdAt: null,
},
{
id: 1465,
@@ -7635,6 +7702,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541418,
+ createdAt: null,
},
{
id: 1466,
@@ -7658,6 +7726,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543162,
+ createdAt: null,
},
{
id: 1467,
@@ -7681,6 +7750,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708542607,
+ createdAt: null,
},
{
id: 1468,
@@ -7704,6 +7774,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540075,
+ createdAt: null,
},
{
id: 1469,
@@ -7727,6 +7798,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539852,
+ createdAt: null,
},
{
id: 1470,
@@ -7750,6 +7822,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541400,
+ createdAt: null,
},
{
id: 1471,
@@ -7773,6 +7846,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541516,
+ createdAt: null,
},
{
id: 1472,
@@ -7796,6 +7870,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708543015,
+ createdAt: null,
},
{
id: 1473,
@@ -7819,6 +7894,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541932,
+ createdAt: null,
},
{
id: 1474,
@@ -7842,6 +7918,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708540286,
+ createdAt: null,
},
{
id: 1475,
@@ -7865,6 +7942,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708539762,
+ createdAt: null,
},
{
id: 1476,
@@ -7888,6 +7966,7 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541235,
+ createdAt: null,
},
{
id: 1477,
@@ -7911,6 +7990,55 @@ export const PADDLING_POOL_255 = () =>
stage_id: 20,
status: 4,
lastGameFinishedAt: 1708541417,
+ createdAt: null,
+ },
+ {
+ id: 1478,
+ group_id: 64,
+ number: 1,
+ opponent1: {
+ id: 723,
+ position: 27,
+ score: 1,
+ result: "loss",
+ totalPoints: 110,
+ },
+ opponent2: {
+ id: 725,
+ position: 28,
+ score: 2,
+ result: "win",
+ totalPoints: 187,
+ },
+ round_id: 311,
+ stage_id: 20,
+ status: 4,
+ lastGameFinishedAt: 1708543181,
+ createdAt: null,
+ },
+ {
+ id: 1479,
+ group_id: 64,
+ number: 2,
+ opponent1: {
+ id: 709,
+ position: 10,
+ score: 2,
+ result: "win",
+ totalPoints: 188,
+ },
+ opponent2: {
+ id: 701,
+ position: 9,
+ score: 0,
+ result: "loss",
+ totalPoints: 155,
+ },
+ round_id: 311,
+ stage_id: 20,
+ status: 4,
+ lastGameFinishedAt: 1708542582,
+ createdAt: null,
},
],
},
@@ -12478,7 +12606,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 698, position: 1 },
+ opponent1: {
+ id: 698,
+ position: 1,
+ },
opponent2: null,
},
{
@@ -12488,8 +12619,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 2,
- opponent1: { id: 674, position: 16 },
- opponent2: { id: 706, position: 17 },
+ opponent1: {
+ id: 674,
+ position: 16,
+ },
+ opponent2: {
+ id: 706,
+ position: 17,
+ },
},
{
id: 2,
@@ -12498,7 +12635,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 697, position: 8 },
+ opponent1: {
+ id: 697,
+ position: 8,
+ },
opponent2: null,
},
{
@@ -12508,7 +12648,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 701, position: 9 },
+ opponent1: {
+ id: 709,
+ position: 9,
+ },
opponent2: null,
},
{
@@ -12518,7 +12661,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 724, position: 4 },
+ opponent1: {
+ id: 724,
+ position: 4,
+ },
opponent2: null,
},
{
@@ -12528,7 +12674,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 719, position: 13 },
+ opponent1: {
+ id: 719,
+ position: 13,
+ },
opponent2: null,
},
{
@@ -12538,7 +12687,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 713, position: 5 },
+ opponent1: {
+ id: 713,
+ position: 5,
+ },
opponent2: null,
},
{
@@ -12548,7 +12700,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 702, position: 12 },
+ opponent1: {
+ id: 702,
+ position: 12,
+ },
opponent2: null,
},
{
@@ -12558,7 +12713,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 718, position: 2 },
+ opponent1: {
+ id: 718,
+ position: 2,
+ },
opponent2: null,
},
{
@@ -12568,8 +12726,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 2,
- opponent1: { id: 720, position: 15 },
- opponent2: { id: 709, position: 18 },
+ opponent1: {
+ id: 720,
+ position: 15,
+ },
+ opponent2: {
+ id: 701,
+ position: 18,
+ },
},
{
id: 10,
@@ -12578,7 +12742,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 722, position: 7 },
+ opponent1: {
+ id: 722,
+ position: 7,
+ },
opponent2: null,
},
{
@@ -12588,7 +12755,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 673, position: 10 },
+ opponent1: {
+ id: 673,
+ position: 10,
+ },
opponent2: null,
},
{
@@ -12598,7 +12768,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 716, position: 3 },
+ opponent1: {
+ id: 716,
+ position: 3,
+ },
opponent2: null,
},
{
@@ -12608,7 +12781,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 715, position: 14 },
+ opponent1: {
+ id: 715,
+ position: 14,
+ },
opponent2: null,
},
{
@@ -12618,7 +12794,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 677, position: 6 },
+ opponent1: {
+ id: 677,
+ position: 6,
+ },
opponent2: null,
},
{
@@ -12628,7 +12807,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 0,
status: 0,
- opponent1: { id: 678, position: 11 },
+ opponent1: {
+ id: 678,
+ position: 11,
+ },
opponent2: null,
},
{
@@ -12638,8 +12820,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 1,
- opponent1: { id: 698, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: 698,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 17,
@@ -12648,8 +12834,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 697, position: undefined },
- opponent2: { id: 701, position: undefined },
+ opponent1: {
+ id: 697,
+ },
+ opponent2: {
+ id: 709,
+ },
},
{
id: 18,
@@ -12658,8 +12848,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 724, position: undefined },
- opponent2: { id: 719, position: undefined },
+ opponent1: {
+ id: 724,
+ },
+ opponent2: {
+ id: 719,
+ },
},
{
id: 19,
@@ -12668,8 +12862,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 713, position: undefined },
- opponent2: { id: 702, position: undefined },
+ opponent1: {
+ id: 713,
+ },
+ opponent2: {
+ id: 702,
+ },
},
{
id: 20,
@@ -12678,8 +12876,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 1,
- opponent1: { id: 718, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: 718,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 21,
@@ -12688,8 +12890,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 722, position: undefined },
- opponent2: { id: 673, position: undefined },
+ opponent1: {
+ id: 722,
+ },
+ opponent2: {
+ id: 673,
+ },
},
{
id: 22,
@@ -12698,8 +12904,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 716, position: undefined },
- opponent2: { id: 715, position: undefined },
+ opponent1: {
+ id: 716,
+ },
+ opponent2: {
+ id: 715,
+ },
},
{
id: 23,
@@ -12708,8 +12918,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 1,
status: 2,
- opponent1: { id: 677, position: undefined },
- opponent2: { id: 678, position: undefined },
+ opponent1: {
+ id: 677,
+ },
+ opponent2: {
+ id: 678,
+ },
},
{
id: 24,
@@ -12718,8 +12932,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 2,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 25,
@@ -12728,8 +12946,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 2,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 26,
@@ -12738,8 +12960,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 2,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 27,
@@ -12748,8 +12974,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 2,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 28,
@@ -12758,8 +12988,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 3,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 29,
@@ -12768,8 +13002,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 3,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 30,
@@ -12778,8 +13016,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 0,
round_id: 4,
status: 0,
- opponent1: { id: null, position: undefined },
- opponent2: { id: null, position: undefined },
+ opponent1: {
+ id: null,
+ },
+ opponent2: {
+ id: null,
+ },
},
{
id: 31,
@@ -12788,8 +13030,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [
group_id: 1,
round_id: 5,
status: 0,
- opponent1: { id: null, position: 1 },
- opponent2: { id: null, position: 2 },
+ opponent1: {
+ id: null,
+ position: 1,
+ },
+ opponent2: {
+ id: null,
+ position: 2,
+ },
},
];