X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhelpers%2FTournament.js;h=7270351512938a2f3481244d9dca91bf0c8679dd;hb=cce28e8619fe87d4be33f82df9a5ec16b2ad9cf6;hp=60354c2b6bdeae9d927a0cd32714b74e6941d830;hpb=cd36cb0ba2718e6bfa08765e7702d57dfe7fd733;p=alttp.git diff --git a/resources/js/helpers/Tournament.js b/resources/js/helpers/Tournament.js index 60354c2..7270351 100644 --- a/resources/js/helpers/Tournament.js +++ b/resources/js/helpers/Tournament.js @@ -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,