From 77895c5cdcaf226f741ab282ce68bb5c7e29e76a Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Sat, 4 Jan 2020 20:53:24 +0100 Subject: [PATCH] Fix sorting in leaderboard --- Handler/Tables.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Handler/Tables.hs b/Handler/Tables.hs index 2fdad4e..f07cbea 100644 --- a/Handler/Tables.hs +++ b/Handler/Tables.hs @@ -339,8 +339,10 @@ compareResult _ Nothing (Just _) = LT compareResult _ Nothing Nothing = EQ onlyTheBestVariant :: [(Int, (Entity Submission, Entity Variant))] -> [(Int, (Entity Submission, Entity Variant))] -onlyTheBestVariant = DL.nubBy (\(_, (Entity aid _, _)) (_, (Entity bid _, _)) -> aid == bid) -- assumes items sorted by rank - +onlyTheBestVariant = DL.nubBy (\(_, (Entity aid _, _)) (_, (Entity bid _, _)) -> aid == bid) + . (sortBy (\(r1, (_, Entity _ va)) (r2, (_, Entity _ vb)) -> (r1 `compare` r2) + `thenCmp` + ((variantName va) `compare` (variantName vb)))) getChallengeSubmissionInfos :: (MonadIO m, PersistQueryRead backend, BackendCompatible SqlBackend backend, @@ -369,10 +371,10 @@ getChallengeSubmissionInfos maxMetricPriority condition variantCondition presele scores <- mapM (getScore (entityKey mainTest)) $ map (entityKey . snd) allSubmissionsVariants let allSubmissionsVariantsWithRanks = - preselector - $ sortBy (\(r1, (s1, _)) (r2, (s2, _)) -> (submissionStamp (entityVal s2) `compare` submissionStamp (entityVal s1)) + sortBy (\(r1, (s1, _)) (r2, (s2, _)) -> (submissionStamp (entityVal s2) `compare` submissionStamp (entityVal s1)) `thenCmp` (r2 `compare` r1)) + $ preselector $ filter (\(_, (s, _)) -> condition s) $ map (\(rank, (_, sv)) -> (rank, sv)) $ zip [1..]