-export const compareResult = round => (a, b) => {
+import User from './User';
+
+export const compareFinished = round => (a, b) => {
const a_result = findResult(a, round);
const b_result = findResult(b, round);
- const a_time = a_result && !a_result.forfeit ? a_result.time : 0;
- const b_time = b_result && !b_result.forfeit ? b_result.time : 0;
- if (a_time) {
- if (b_time) {
- if (a_time < b_time) return -1;
- if (b_time < a_time) return 1;
- return 0;
+ const a_finished = a_result && a_result.has_finished;
+ const b_finished = b_result && b_result.has_finished;
+ if (a_finished) {
+ if (b_finished) {
+ return compareUsername(a, b);
}
return -1;
}
- if (b_time) {
+ if (b_finished) {
return 1;
}
- const a_forfeit = a_result && a_result.forfeit;
- const b_forfeit = b_result && b_result.forfeit;
- if (a_forfeit) {
- if (b_forfeit) {
- return 0;
+ return compareUsername(a, b);
+};
+
+export const comparePlacement = (a, b) => {
+ if (a.placement < b.placement) return -1;
+ if (b.placement < a.placement) return 1;
+ return compareUsername(a, b);
+};
+
+export const compareResult = round => (a, b) => {
+ const a_result = findResult(a, round);
+ const b_result = findResult(b, round);
+ const a_placement = a_result && a_result.placement ? a_result.placement : 0;
+ const b_placement = b_result && b_result.placement ? b_result.placement : 0;
+ if (a_placement) {
+ if (b_placement) {
+ if (a_placement < b_placement) return -1;
+ if (b_placement < a_placement) return 1;
+ return compareUsername(a, b);
}
return -1;
}
- if (b_forfeit) {
+ if (b_placement) {
return 1;
}
return compareUsername(a, b);
};
export const compareUsername = (a, b) => {
- const a_name = a && a.user && a.user.username ? a.user.username : '';
- const b_name = b && b.user && b.user.username ? b.user.username : '';
+ const a_name = a && a.user ? User.getUserName(a.user) : '';
+ const b_name = b && b.user ? User.getUserName(b.user) : '';
return a_name.localeCompare(b_name);
};
export const isTournamentAdmin = participant =>
participant && participant.roles && participant.roles.includes('admin');
+export const isTournamentCrew = participant =>
+ isTournamentAdmin(participant) || isTournamentMonitor(participant);
+
+export const isTournamentMonitor = participant =>
+ participant && participant.roles && participant.roles.includes('monitor');
+
export const patchUser = (participant, user) => {
if (!participant || !user) return participant;
if (participant.user_id != user.id) return participant;
};
};
+export const sortByFinished = (participants, round) => {
+ if (!participants || !participants.length) return participants;
+ if (!round || !round.results || !round.results.length) return participants;
+ return participants.sort(compareFinished(round));
+};
+
export const sortByResult = (participants, round) => {
if (!participants || !participants.length) return participants;
if (!round || !round.results || !round.results.length) return participants;
return participants.sort(compareResult(round));
};
+export const sortByUsername = (participants, round) => {
+ if (!participants || !participants.length) return participants;
+ if (!round || !round.results || !round.results.length) return participants;
+ return participants.sort(compareUsername);
+};
+
export default {
+ compareFinished,
compareResult,
compareUsername,
findResult,
isRunner,
isTournamentAdmin,
+ isTournamentCrew,
+ isTournamentMonitor,
patchUser,
sortByResult,
};