From d3507d3f420c42f131f36da45f8a6f43da9b42cf Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Wed, 7 May 2025 16:13:45 +0200 Subject: [PATCH] fix some result display issues --- app/Policies/RoundPolicy.php | 3 +++ resources/js/components/results/List.js | 6 +++--- resources/js/helpers/Result.js | 16 ++++++++++------ resources/js/helpers/permissions.js | 3 +++ 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/Policies/RoundPolicy.php b/app/Policies/RoundPolicy.php index 5bb46c0..645a03f 100644 --- a/app/Policies/RoundPolicy.php +++ b/app/Policies/RoundPolicy.php @@ -101,6 +101,9 @@ class RoundPolicy */ public function seeResults(?User $user, Round $round) { + if ($round->tournament->result_reveal == 'always') { + return true; + } if ( $round->locked || ($user && $user->isTournamentMonitor($round->tournament)) || diff --git a/resources/js/components/results/List.js b/resources/js/components/results/List.js index 911b6a5..f26a131 100644 --- a/resources/js/components/results/List.js +++ b/resources/js/components/results/List.js @@ -5,7 +5,7 @@ import Item from './Item'; import { sortByFinished, sortByResult } from '../../helpers/Participant'; import { maySeeResults } from '../../helpers/permissions'; import { getRunners } from '../../helpers/Tournament'; -import { compareResult } from '../../helpers/Result'; +import { sortByTime, sortByUsername } from '../../helpers/Result'; import { useUser } from '../../hooks/user'; const List = ({ round, tournament }) => { @@ -13,8 +13,8 @@ const List = ({ round, tournament }) => { if (tournament.type === 'open-async') { const results = maySeeResults(user, tournament, round) - ? (round.results || []).sort(compareResult) - : round.results || []; + ? sortByTime(round.results || []) + : sortByUsername(round.results || []); return
{results.map(result => { + 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 compareResult = (a, b) => { const a_placement = a && a.placement ? a.placement : 0; const b_placement = b && b.placement ? b.placement : 0; @@ -18,12 +24,6 @@ export const compareResult = (a, b) => { 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)}`; @@ -74,6 +74,10 @@ export const parseTime = str => { return `${str}`.trim().split(/[-.: ]+/).reduce((acc,time) => (60 * acc) + +time, 0); }; +export const sortByTime = (results) => [...results].sort(compareResult); + +export const sortByUsername = (results) => [...results].sort(compareUsername); + export default { compareResult, compareUsername, diff --git a/resources/js/helpers/permissions.js b/resources/js/helpers/permissions.js index c24d75a..c406cd9 100644 --- a/resources/js/helpers/permissions.js +++ b/resources/js/helpers/permissions.js @@ -152,6 +152,9 @@ export const mayViewProtocol = (user, tournament) => isTournamentCrew(user, tournament); export const maySeeResults = (user, tournament, round) => { + if (tournament.result_reveal === 'always') { + return true; + } if ( round.locked || isTournamentMonitor(user, tournament) || -- 2.39.5