X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhelpers%2FResult.js;h=329116d245515ffa0f3603d599a620388443156e;hb=816690cc4fadff954f4407999550f7feec2884da;hp=06ade091803e4a649a14914247e761ac01ad9619;hpb=812a270c7a410461e931394496512d36b34ef7b5;p=alttp.git diff --git a/resources/js/helpers/Result.js b/resources/js/helpers/Result.js index 06ade09..329116d 100644 --- a/resources/js/helpers/Result.js +++ b/resources/js/helpers/Result.js @@ -1,3 +1,29 @@ +import React from 'react'; +import Icon from '../components/common/Icon'; + +export const compareResult = (a, b) => { + const a_placement = a && a.placement ? a.placement : 0; + const b_placement = b && b.placement ? b.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_placement) { + return 1; + } + return compareUsername(a, b); +}; + +export const compareUsername = (a, b) => { + const a_name = (a && a.user && a.user.username) || ''; + const b_name = (b && b.user && b.user.username) || ''; + return a_name.localeCompare(b_name); +}; + export const formatTime = result => { const hours = `${Math.floor(result.time / 60 / 60)}`; let minutes = `${Math.floor((result.time / 60) % 60)}`; @@ -11,12 +37,48 @@ export const formatTime = result => { return `${hours}:${minutes}:${seconds}`; }; +export const getIcon = (result, maySee) => { + if (!result || !result.has_finished) { + return ; + } + if (result.forfeit && maySee) { + return ; + } + if (result.placement === 1 && maySee) { + return ; + } + if (result.placement === 2 && maySee) { + return ; + } + if (result.placement === 3 && maySee) { + return ; + } + return ; +}; + +export const getTime = (result, maySee) => { + if (!result || !maySee) { + return null; + } + if (result.time) { + return formatTime(result); + } + if (result.forfeit) { + return 'DNF'; + } + return '?'; +}; + export const parseTime = str => { if (!str) return null; - return `${str}`.split(/[-.: ]+/).reduce((acc,time) => (60 * acc) + +time, 0); + return `${str}`.trim().split(/[-.: ]+/).reduce((acc,time) => (60 * acc) + +time, 0); }; export default { + compareResult, + compareUsername, formatTime, + getIcon, + getTime, parseTime, };