]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/helpers/Tournament.js
limits for huge tournaments
[alttp.git] / resources / js / helpers / Tournament.js
index 60354c2b6bdeae9d927a0cd32714b74e6941d830..7270351512938a2f3481244d9dca91bf0c8679dd 100644 (file)
@@ -30,6 +30,42 @@ export const getRunners = tournament => {
                .sort(Participant.compareUsername);
 };
 
+export const getLastRound = tournament => {
+       if (!tournament || !tournament.rounds || !tournament.rounds.length) return null;
+       return tournament.rounds.slice(-1)[0];
+};
+
+export const canLoadMoreRounds = tournament => {
+       const last_round = getLastRound(tournament);
+       return last_round && last_round.number > 1;
+};
+
+export const hasScoreboard = tournament => !!(tournament && tournament.type === 'signup-async');
+
+export const hasSignup = tournament => !!(tournament && tournament.type === 'signup-async');
+
+export const getScoreTable = tournament => {
+       if (!tournament || !tournament.rounds || !tournament.rounds.length) return [];
+       const runners = getRunners(tournament);
+       if (!runners.length) return [];
+       const running = {};
+       runners.forEach(participant => {
+               running[participant.id] = 0;
+       });
+       const data = [...tournament.rounds, {}].reverse().map(round => {
+               const entry = { number: round.number ? `#${round.number}` : '' };
+               runners.forEach(participant => {
+                       const result = Participant.findResult(participant, round);
+                       if (result && result.score) {
+                               running[participant.id] += result.score;
+                       }
+                       entry[Participant.getUserName(participant)] = running[participant.id];
+               });
+               return entry;
+       });
+       return data;
+};
+
 export const getTournamentAdmins = tournament => {
        if (!tournament || !tournament.participants || !tournament.participants.length) return [];
        return tournament.participants
@@ -168,6 +204,8 @@ export default {
        getTournamentCrew,
        getTournamentMonitors,
        hasRunners,
+       hasScoreboard,
+       hasSignup,
        hasTournamentAdmins,
        hasTournamentCrew,
        hasTournamentMonitors,