]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/helpers/Tournament.js
always fill scorechart
[alttp.git] / resources / js / helpers / Tournament.js
index 25981d87fe0c8e11d58a82a342218d47a2dd2864..fac1681f2bbc94170f41715f9a69238019e0ed9a 100644 (file)
@@ -1,3 +1,4 @@
+import Application from './Application';
 import Participant from './Participant';
 import Round from './Round';
 
@@ -15,6 +16,13 @@ export const findParticipant = (tournament, user) => {
        return tournament.participants.find(p => p.user_id == user.id);
 };
 
+export const getPendingApplications = tournament => {
+       if (!tournament || !tournament.applications || !tournament.applications.length) return [];
+       return tournament.applications
+               .filter(Application.isPending)
+               .sort(Application.compareUsername);
+};
+
 export const getRunners = tournament => {
        if (!tournament || !tournament.participants || !tournament.participants.length) return [];
        return tournament.participants
@@ -22,6 +30,28 @@ export const getRunners = tournament => {
                .sort(Participant.compareUsername);
 };
 
+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}` };
+               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
@@ -132,6 +162,16 @@ export const patchUser = (tournament, user) => {
        };
 };
 
+export const removeApplication = (tournament, id) => {
+       if (!tournament || !tournament.applications || !tournament.applications.find(a => a.id == id)) {
+               return tournament;
+       }
+       return {
+               ...tournament,
+               applications: tournament.applications.filter(a => a.id != id),
+       };
+};
+
 export const sortParticipants = tournament => {
        if (!tournament || !tournament.participants || !tournament.participants.length) {
                return tournament;