+import Application from './Application';
import Participant from './Participant';
import Round from './Round';
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
.sort(Participant.compareUsername);
};
+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
};
};
+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;
getTournamentCrew,
getTournamentMonitors,
hasRunners,
+ hasScoreboard,
+ hasSignup,
hasTournamentAdmins,
hasTournamentCrew,
hasTournamentMonitors,