]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/helpers/Participant.js
add forfeit result
[alttp.git] / resources / js / helpers / Participant.js
index af6eecc4d13aedf4f7aba5765a7218a9ee408410..3db4121c5b6d3689aca5911b9388c8af4d0cc7ac 100644 (file)
@@ -1,9 +1,54 @@
+export const compareResult = 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;
+               }
+               return -1;
+       }
+       if (b_time) {
+               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 -1;
+       }
+       if (b_forfeit) {
+               return 1;
+       }
+       return 0;
+};
+
+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 : '';
+       return a_name.localeCompare(b_name);
+};
+
 export const findResult = (participant, round) => {
        if (!participant || !participant.user_id) return null;
        if (!round || !round.results || !round.results.length) return null;
        return round.results.find(result => result.user_id === participant.user_id);
 };
 
+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 default {
+       compareResult,
+       compareUsername,
        findResult,
+       sortByResult,
 };