FilterUI for Submission (Part 1)
This commit is contained in:
parent
51e0502117
commit
669c803105
5
.vscode/tasks.json
vendored
5
.vscode/tasks.json
vendored
@ -48,6 +48,11 @@
|
|||||||
"type": "npm",
|
"type": "npm",
|
||||||
"script": "yesod:lint",
|
"script": "yesod:lint",
|
||||||
"problemMatcher": []
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "npm",
|
||||||
|
"script": "yesod:start",
|
||||||
|
"problemMatcher": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -35,7 +35,9 @@ import Data.Monoid (All(..))
|
|||||||
-- import qualified Data.UUID.Cryptographic as UUID
|
-- import qualified Data.UUID.Cryptographic as UUID
|
||||||
-- import qualified Data.Conduit.List as C
|
-- import qualified Data.Conduit.List as C
|
||||||
|
|
||||||
|
import Database.Esqueleto.Utils.TH
|
||||||
import qualified Database.Esqueleto as E
|
import qualified Database.Esqueleto as E
|
||||||
|
import qualified Database.Esqueleto.Utils as E
|
||||||
import qualified Database.Esqueleto.Internal.Language (From)
|
import qualified Database.Esqueleto.Internal.Language (From)
|
||||||
-- import qualified Database.Esqueleto.Internal.Sql as E
|
-- import qualified Database.Esqueleto.Internal.Sql as E
|
||||||
|
|
||||||
@ -77,6 +79,9 @@ lastEditQuery submission = E.sub_select $ E.from $ \edit -> do
|
|||||||
E.where_ $ edit E.^. SubmissionEditSubmission E.==. submission E.^. SubmissionId
|
E.where_ $ edit E.^. SubmissionEditSubmission E.==. submission E.^. SubmissionId
|
||||||
return $ E.max_ $ edit E.^. SubmissionEditTime
|
return $ E.max_ $ edit E.^. SubmissionEditTime
|
||||||
|
|
||||||
|
querySubmission :: CorrectionTableExpr -> E.SqlExpr (Entity Submission)
|
||||||
|
querySubmission = $(sqlIJproj 3 3) . $(sqlLOJproj 2 1)
|
||||||
|
|
||||||
-- Where Clauses
|
-- Where Clauses
|
||||||
ratedBy :: UserId -> CorrectionTableWhere
|
ratedBy :: UserId -> CorrectionTableWhere
|
||||||
ratedBy uid ((_course `E.InnerJoin` _sheet `E.InnerJoin` submission) `E.LeftOuterJoin` _corrector) = submission E.^. SubmissionRatingBy E.==. E.just (E.val uid)
|
ratedBy uid ((_course `E.InnerJoin` _sheet `E.InnerJoin` submission) `E.LeftOuterJoin` _corrector) = submission E.^. SubmissionRatingBy E.==. E.just (E.val uid)
|
||||||
@ -325,6 +330,16 @@ makeCorrectionsTable whereClause dbtColonnade dbtFilterUI psValidator dbtProj' d
|
|||||||
Just True -> E.not_ . E.isNothing $ submission E.^. SubmissionRatingTime
|
Just True -> E.not_ . E.isNothing $ submission E.^. SubmissionRatingTime
|
||||||
Just False-> E.isNothing $ submission E.^. SubmissionRatingTime
|
Just False-> E.isNothing $ submission E.^. SubmissionRatingTime
|
||||||
)
|
)
|
||||||
|
, ( "user-name-email"
|
||||||
|
, FilterColumn $ E.mkExistsFilter $ \table needle -> E.from $ \(submissionUser `E.InnerJoin` user) -> do
|
||||||
|
E.on $ submissionUser E.^. SubmissionUserUser E.==. user E.^. UserId
|
||||||
|
E.where_ $ querySubmission table E.^. SubmissionId E.==. submissionUser E.^. SubmissionUserSubmission
|
||||||
|
E.where_ $ (\f -> f user $ Set.singleton needle) $ E.anyFilter
|
||||||
|
[ E.mkContainsFilter (E.^. UserSurname)
|
||||||
|
, E.mkContainsFilter (E.^. UserDisplayName)
|
||||||
|
, E.mkContainsFilter (E.^. UserEmail)
|
||||||
|
]
|
||||||
|
)
|
||||||
]
|
]
|
||||||
, dbtFilterUI = fromMaybe mempty dbtFilterUI
|
, dbtFilterUI = fromMaybe mempty dbtFilterUI
|
||||||
, dbtStyle = def { dbsFilterLayout = maybe (\_ _ _ -> id) (\_ -> defaultDBSFilterLayout) dbtFilterUI }
|
, dbtStyle = def { dbsFilterLayout = maybe (\_ _ _ -> id) (\_ -> defaultDBSFilterLayout) dbtFilterUI }
|
||||||
@ -442,7 +457,7 @@ correctionsR whereClause displayColumns dbtFilterUI psValidator actions = do
|
|||||||
[whamlet|_{MsgAssignSubmissionExceptionSubmissionsNotFound (length subCIDs)}|]
|
[whamlet|_{MsgAssignSubmissionExceptionSubmissionsNotFound (length subCIDs)}|]
|
||||||
(Right $(widgetFile "messages/submissionsAssignNotFound"))
|
(Right $(widgetFile "messages/submissionsAssignNotFound"))
|
||||||
addMessageWidget Error errorModal
|
addMessageWidget Error errorModal
|
||||||
|
|
||||||
handle assignExceptions . runDB $ do
|
handle assignExceptions . runDB $ do
|
||||||
alreadyAssigned <- selectList [SubmissionId <-. subs, SubmissionRatingBy !=. Nothing] []
|
alreadyAssigned <- selectList [SubmissionId <-. subs, SubmissionRatingBy !=. Nothing] []
|
||||||
unless (null alreadyAssigned) $ do
|
unless (null alreadyAssigned) $ do
|
||||||
@ -583,8 +598,19 @@ postCCorrectionsR tid ssh csh = do
|
|||||||
, colCorrector
|
, colCorrector
|
||||||
, colAssigned
|
, colAssigned
|
||||||
] -- Continue here
|
] -- Continue here
|
||||||
psValidator = def
|
filterUI = Just $ \mPrev -> mconcat
|
||||||
correctionsR whereClause colonnade Nothing psValidator $ Map.fromList
|
[ -- "name"
|
||||||
|
-- "matrikel"
|
||||||
|
-- "corrector"
|
||||||
|
-- "pseudonym" TODO
|
||||||
|
prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseMembers)
|
||||||
|
, Map.singleton "sheet-search" . maybeToList <$> aopt textField (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev)))
|
||||||
|
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
psValidator = def & defaultPagesize PagesizeAll
|
||||||
|
correctionsR whereClause colonnade filterUI psValidator $ Map.fromList
|
||||||
[ downloadAction
|
[ downloadAction
|
||||||
, assignAction (Left cid)
|
, assignAction (Left cid)
|
||||||
, deleteAction
|
, deleteAction
|
||||||
@ -607,7 +633,7 @@ postSSubsR tid ssh csh shn = do
|
|||||||
, colCorrector
|
, colCorrector
|
||||||
, colAssigned
|
, colAssigned
|
||||||
]
|
]
|
||||||
psValidator = def
|
psValidator = def & defaultPagesize PagesizeAll
|
||||||
correctionsR whereClause colonnade Nothing psValidator $ Map.fromList
|
correctionsR whereClause colonnade Nothing psValidator $ Map.fromList
|
||||||
[ downloadAction
|
[ downloadAction
|
||||||
, assignAction (Right shid)
|
, assignAction (Right shid)
|
||||||
|
|||||||
@ -151,7 +151,7 @@ fltrUserDisplayName :: (IsFilterColumn t (a -> Set Text -> E.SqlExpr (E.Value Bo
|
|||||||
-> (d, FilterColumn t)
|
-> (d, FilterColumn t)
|
||||||
fltrUserDisplayName queryUser = ( "user-display-name", FilterColumn $ mkContainsFilter $ queryUser >>> (E.^. UserDisplayName))
|
fltrUserDisplayName queryUser = ( "user-display-name", FilterColumn $ mkContainsFilter $ queryUser >>> (E.^. UserDisplayName))
|
||||||
|
|
||||||
-- | Searche all names, i.e. DisplayName, Surname, EMail
|
-- | Search all names, i.e. DisplayName, Surname, EMail
|
||||||
fltrUserNameEmail :: (IsFilterColumn t (a -> Set Text -> E.SqlExpr (E.Value Bool)), IsString d)
|
fltrUserNameEmail :: (IsFilterColumn t (a -> Set Text -> E.SqlExpr (E.Value Bool)), IsString d)
|
||||||
=> (a -> E.SqlExpr (Entity User))
|
=> (a -> E.SqlExpr (Entity User))
|
||||||
-> (d, FilterColumn t)
|
-> (d, FilterColumn t)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user