X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhelpers%2FParticipant.js;h=7a689960ea831945428edb9aed1aa43cb3f889a4;hb=855decfd62b51ed500c8a5903f4b263c4c9afb5c;hp=8545e0335c2f37c9fb854138e1a930211d18648e;hpb=d32516335ea2534e15256c948e9c38d3de40794b;p=alttp.git diff --git a/resources/js/helpers/Participant.js b/resources/js/helpers/Participant.js index 8545e03..7a68996 100644 --- a/resources/js/helpers/Participant.js +++ b/resources/js/helpers/Participant.js @@ -1,3 +1,20 @@ +export const compareFinished = round => (a, b) => { + const a_result = findResult(a, round); + const b_result = findResult(b, round); + 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_finished) { + return 1; + } + return compareUsername(a, b); +}; + export const comparePlacement = (a, b) => { if (a.placement < b.placement) return -1; if (b.placement < a.placement) return 1; @@ -41,6 +58,12 @@ export const isRunner = participant => 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; @@ -53,18 +76,33 @@ export const patchUser = (participant, user) => { }; }; +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, };