FilterUI for Submission (Part2)
This commit is contained in:
parent
669c803105
commit
745feeac83
@ -79,8 +79,17 @@ 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
|
||||||
|
|
||||||
|
queryCourse :: CorrectionTableExpr -> E.SqlExpr (Entity Course)
|
||||||
|
queryCourse = $(sqlIJproj 3 1) . $(sqlLOJproj 2 1)
|
||||||
|
|
||||||
|
querySheet :: CorrectionTableExpr -> E.SqlExpr (Entity Sheet)
|
||||||
|
querySheet = $(sqlIJproj 3 2) . $(sqlLOJproj 2 1)
|
||||||
|
|
||||||
querySubmission :: CorrectionTableExpr -> E.SqlExpr (Entity Submission)
|
querySubmission :: CorrectionTableExpr -> E.SqlExpr (Entity Submission)
|
||||||
querySubmission = $(sqlIJproj 3 3) . $(sqlLOJproj 2 1)
|
querySubmission = $(sqlIJproj 3 3) . $(sqlLOJproj 2 1)
|
||||||
|
|
||||||
|
queryCorrector :: CorrectionTableExpr -> E.SqlExpr (Maybe (Entity User))
|
||||||
|
queryCorrector = $(sqlLOJproj 2 2)
|
||||||
|
|
||||||
-- Where Clauses
|
-- Where Clauses
|
||||||
ratedBy :: UserId -> CorrectionTableWhere
|
ratedBy :: UserId -> CorrectionTableWhere
|
||||||
@ -330,6 +339,13 @@ 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
|
||||||
)
|
)
|
||||||
|
, ( "corrector-name-email" -- corrector filter does not work for text-filtering
|
||||||
|
, FilterColumn $ E.anyFilter
|
||||||
|
[ E.mkContainsFilter $ queryCorrector >>> (E.?. UserSurname)
|
||||||
|
, E.mkContainsFilter $ queryCorrector >>> (E.?. UserDisplayName)
|
||||||
|
, E.mkContainsFilter $ queryCorrector >>> (E.?. UserEmail)
|
||||||
|
]
|
||||||
|
)
|
||||||
, ( "user-name-email"
|
, ( "user-name-email"
|
||||||
, FilterColumn $ E.mkExistsFilter $ \table needle -> E.from $ \(submissionUser `E.InnerJoin` user) -> do
|
, FilterColumn $ E.mkExistsFilter $ \table needle -> E.from $ \(submissionUser `E.InnerJoin` user) -> do
|
||||||
E.on $ submissionUser E.^. SubmissionUserUser E.==. user E.^. UserId
|
E.on $ submissionUser E.^. SubmissionUserUser E.==. user E.^. UserId
|
||||||
@ -340,6 +356,18 @@ makeCorrectionsTable whereClause dbtColonnade dbtFilterUI psValidator dbtProj' d
|
|||||||
, E.mkContainsFilter (E.^. UserEmail)
|
, E.mkContainsFilter (E.^. UserEmail)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
, ( "user-matriclenumber"
|
||||||
|
, 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.mkContainsFilter (E.^. UserMatrikelnummer)
|
||||||
|
)
|
||||||
|
-- , ( "pseudonym"
|
||||||
|
-- , FilterColumn $ E.mkExistsFilter $ \table needle -> E.from $ \(pseudonym) -> do
|
||||||
|
-- E.where_ $ querySheet table E.^. SheetId E.==. pseudonym E.^. SheetPseudonymSheet
|
||||||
|
-- E.where_ $ E.mkContainsFilter -- DB only stores Pseudonym == Word24. Conversion not possible in DB.
|
||||||
|
-- )
|
||||||
]
|
]
|
||||||
, dbtFilterUI = fromMaybe mempty dbtFilterUI
|
, dbtFilterUI = fromMaybe mempty dbtFilterUI
|
||||||
, dbtStyle = def { dbsFilterLayout = maybe (\_ _ _ -> id) (\_ -> defaultDBSFilterLayout) dbtFilterUI }
|
, dbtStyle = def { dbsFilterLayout = maybe (\_ _ _ -> id) (\_ -> defaultDBSFilterLayout) dbtFilterUI }
|
||||||
@ -599,17 +627,14 @@ postCCorrectionsR tid ssh csh = do
|
|||||||
, colAssigned
|
, colAssigned
|
||||||
] -- Continue here
|
] -- Continue here
|
||||||
filterUI = Just $ \mPrev -> mconcat
|
filterUI = Just $ \mPrev -> mconcat
|
||||||
[ -- "name"
|
[ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseMembers)
|
||||||
-- "matrikel"
|
, prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgMatrikelNr)
|
||||||
-- "corrector"
|
, prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector)
|
||||||
-- "pseudonym" TODO
|
-- "pseudonym" TODO DB only stores Word24
|
||||||
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)))
|
, 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)
|
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime)
|
||||||
]
|
]
|
||||||
|
psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway
|
||||||
|
|
||||||
psValidator = def & defaultPagesize PagesizeAll
|
|
||||||
correctionsR whereClause colonnade filterUI psValidator $ Map.fromList
|
correctionsR whereClause colonnade filterUI psValidator $ Map.fromList
|
||||||
[ downloadAction
|
[ downloadAction
|
||||||
, assignAction (Left cid)
|
, assignAction (Left cid)
|
||||||
@ -633,8 +658,15 @@ postSSubsR tid ssh csh shn = do
|
|||||||
, colCorrector
|
, colCorrector
|
||||||
, colAssigned
|
, colAssigned
|
||||||
]
|
]
|
||||||
psValidator = def & defaultPagesize PagesizeAll
|
filterUI = Just $ \mPrev -> mconcat
|
||||||
correctionsR whereClause colonnade Nothing psValidator $ Map.fromList
|
[ prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseMembers)
|
||||||
|
, prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgMatrikelNr)
|
||||||
|
, prismAForm (singletonFilter "corrector-name-email") mPrev $ aopt textField (fslI MsgCorrector)
|
||||||
|
-- "pseudonym" TODO DB only stores Word24
|
||||||
|
, prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime)
|
||||||
|
]
|
||||||
|
psValidator = def & defaultPagesize PagesizeAll -- Assisstant always want to see them all at once anyway
|
||||||
|
correctionsR whereClause colonnade filterUI psValidator $ Map.fromList
|
||||||
[ downloadAction
|
[ downloadAction
|
||||||
, assignAction (Right shid)
|
, assignAction (Right shid)
|
||||||
, autoAssignAction shid
|
, autoAssignAction shid
|
||||||
|
|||||||
Reference in New Issue
Block a user