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
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) => {
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 {
calculateScores,
compareScore,
findParticipant,
+ getRunners,
+ getTournamentAdmins,
patchResult,
patchRound,
patchUser,