From 9c5ed5f8424b36723e4ef483b85db305e7c6cfa9 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Wed, 10 Jul 2019 15:14:02 +0200 Subject: [PATCH] fix(corrector handling): show correctors by a consistent order --- src/Foundation.hs | 10 +++++++++- src/Handler/Corrections.hs | 2 ++ src/Handler/Sheet.hs | 1 + src/Handler/Utils/Table/Columns.hs | 4 ++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Foundation.hs b/src/Foundation.hs index d49734af3..f16c9dc79 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -689,7 +689,7 @@ tagAccessPredicate AuthTime = APDB $ \mAuthId route _ -> case route of _ -> return () return Authorized - + CTutorialR tid ssh csh tutn TRegisterR -> maybeT (unauthorizedI MsgUnauthorizedTutorialTime) $ do now <- liftIO getCurrentTime course <- $cachedHereBinary (tid, ssh, csh) . MaybeT . getKeyBy $ TermSchoolCourseShort tid ssh csh @@ -2374,6 +2374,14 @@ pageActions (CSheetR tid ssh csh shn SCorrR) = , menuItemModal = False , menuItemAccessCallback' = return True } + , MenuItem + { menuItemType = PageActionPrime + , menuItemLabel = MsgMenuCorrectionsAssign + , menuItemIcon = Nothing + , menuItemRoute = SomeRoute $ CSheetR tid ssh csh shn SAssignR + , menuItemModal = False + , menuItemAccessCallback' = return True + } , MenuItem { menuItemType = PageActionSecondary , menuItemLabel = MsgMenuSheetEdit diff --git a/src/Handler/Corrections.hs b/src/Handler/Corrections.hs index d6ca66636..02a12ef45 100644 --- a/src/Handler/Corrections.hs +++ b/src/Handler/Corrections.hs @@ -564,6 +564,8 @@ assignAction selId = ( CorrSetCorrector E.where_ $ either (\cId -> course E.^. CourseId E.==. E.val cId) (\shId -> sheet E.^. SheetId E.==. E.val shId) selId + E.orderBy $ [E.asc $ user E.^. UserSurname, E.asc $ user E.^. UserDisplayName] + E.distinct $ return user correctors' <- forM correctors $ \Entity{ entityKey, entityVal = User{..} } -> (SomeMessage userDisplayName, ) <$> encrypt entityKey diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index 946e0395f..06338a601 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -731,6 +731,7 @@ correctorForm shid = wFormToAForm $ do E.on $ sheet E.^. SheetId E.==. sheetCorrector E.^. SheetCorrectorSheet E.on $ sheetCorrector E.^. SheetCorrectorUser E.==. user E.^. UserId E.where_ $ lecturer E.^. LecturerUser E.==. E.val userId + E.orderBy $ [E.asc $ user E.^. UserSurname, E.asc $ user E.^. UserDisplayName] return user miAdd :: ListPosition diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index c5a637efc..2f06cd252 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -122,7 +122,7 @@ sortUserDisplayName queryUser = ("user-display-name", SortColumn $ queryUser >>> defaultSortingByName :: PSValidator m x -> PSValidator m x defaultSortingByName = -- defaultSorting [SortAscBy "user-surname", SortAscBy "user-display-name"] -- old way, requiring two exta sorters - defaultSorting [SortAscBy "user-name"] -- new way, untested, working with single sorter + defaultSorting [SortAscBy "user-name"] -- new way, working with single sorter -- | Alias for sortUserName for consistency fltrUserNameLink :: (IsFilterColumn t (a -> Set Text -> E.SqlExpr (E.Value Bool)), IsString d) => (a -> E.SqlExpr (Entity User)) -> (d, FilterColumn t) @@ -262,7 +262,7 @@ fltrFieldUI mPrev = colDegreeShort :: (IsDBTable m c, HasStudyDegree x) => Getting (Leftmost x) a x -> Colonnade Sortable a (DBCell m c) colDegreeShort terms = sortable (Just "degree-short") (i18nCell MsgDegreeShort) $ maybe mempty cellHasDegreeShort . firstOf terms - + sortDegreeShort :: IsString d => (t -> E.SqlExpr (Maybe (Entity StudyDegree))) -> (d, SortColumn t) sortDegreeShort queryTerms = ("degree-short", SortColumn $ queryTerms >>> (E.?. StudyDegreeShorthand))