]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/helpers/Tournament.js
allow admins to lock/unlock rounds
[alttp.git] / resources / js / helpers / Tournament.js
index a3f97cc22b47a6e4a3f135a8bbb506ebf9134b0b..792b593091b70ba62a24414325420e8645100786 100644 (file)
@@ -2,8 +2,7 @@ import Participant from './Participant';
 import Round from './Round';
 
 export const calculateScores = tournament => {
-       if (!tournament || !tournament.participants || !tournament.participants.length) return [];
-       const scores = tournament.participants.map(participant => ({ participant, score: 0 }));
+       const scores = getRunners(tournament).map(participant => ({ participant, score: 0 }));
        if (!tournament.rounds || !tournament.rounds.length) return scores;
        tournament.rounds.forEach(round => {
                const filtered = Participant
@@ -39,7 +38,7 @@ export const compareScore = (a, b) => {
        const b_score = b && b.score ? b.score : 0;
        if (a_score < b_score) return -1;
        if (b_score < a_score) return 1;
-       return 0;
+       return Participant.compareUsername(a.participant, b.participant) * -1;
 };
 
 export const findParticipant = (tournament, user) => {
@@ -48,6 +47,28 @@ export const findParticipant = (tournament, user) => {
        return tournament.participants.find(p => p.user_id == user.id);
 };
 
+export const getRunners = tournament => {
+       if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+       return tournament.participants
+               .filter(Participant.isRunner)
+               .sort(Participant.compareUsername);
+};
+
+export const getTournamentAdmins = tournament => {
+       if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+       return tournament.participants
+               .filter(Participant.isTournamentAdmin)
+               .sort(Participant.compareUsername);
+};
+
+export const hasRunners = tournament => {
+       return getRunners(tournament).length > 0;
+};
+
+export const hasTournamentAdmins = tournament => {
+       return getTournamentAdmins(tournament).length > 0;
+};
+
 export const patchResult = (tournament, result) => {
        if (!tournament || !tournament.rounds) return tournament;
        return {
@@ -91,6 +112,8 @@ export default {
        calculateScores,
        compareScore,
        findParticipant,
+       getRunners,
+       getTournamentAdmins,
        patchResult,
        patchRound,
        patchUser,