fix(lms): sorting and filtering lms status works throughout now
This commit is contained in:
parent
f48862efbc
commit
ae4470333e
@ -314,13 +314,14 @@ mkExactFilterMaybeLast lenslike row criterias
|
||||
| otherwise = true
|
||||
|
||||
-- | like `mkExactFilterMaybeLast` but for doubly wrapped Maybes
|
||||
mkExactFilterMaybeLast' :: PersistField a
|
||||
=> (t -> E.SqlExpr (E.Value (Maybe (Maybe a)))) -- ^ getter from query to searched element
|
||||
-> t -- ^ query row
|
||||
-> Last (Maybe a) -- ^ needle
|
||||
mkExactFilterMaybeLast' :: (PersistField a, PersistField b)
|
||||
=> (t -> E.SqlExpr (E.Value (Maybe b))) -- ^ getter from query ensure entity exists at all
|
||||
-> (t -> E.SqlExpr (E.Value (Maybe (Maybe a)))) -- ^ getter from query to searched element
|
||||
-> t -- ^ query row
|
||||
-> Last (Maybe a) -- ^ needle
|
||||
-> E.SqlExpr (E.Value Bool)
|
||||
mkExactFilterMaybeLast' lenslike row criterias
|
||||
| Last (Just Nothing) <- criterias = lenslike row E.==. E.val (Just Nothing)
|
||||
mkExactFilterMaybeLast' lensexists lenslike row criterias
|
||||
| Last (Just Nothing) <- criterias = isJust (lensexists row) E.&&. E.isNothing (E.joinV $ lenslike row)
|
||||
| Last (Just crit) <- criterias = lenslike row E.==. E.val (Just crit)
|
||||
| otherwise = true
|
||||
|
||||
|
||||
@ -468,7 +468,7 @@ mkLmsTable isAdmin (Entity qid quali) acts cols psValidator = do
|
||||
-- , single ("status" , SortColumnNullsInv $ views (to queryLmsUser) (E.^. LmsUserStatusDay))
|
||||
, single ("status" , SortColumnNeverNull $ \row -> E.coalesceDefault [ queryLmsUser row E.^. LmsUserStatusDay
|
||||
, queryLmsUser row E.^. LmsUserNotified
|
||||
](queryLmsUser row E.?. LmsUserStarted))
|
||||
](queryLmsUser row E.^. LmsUserStarted))
|
||||
|
||||
, single ("started" , SortColumnNullsInv $ queryLmsUser >>> (E.^. LmsUserStarted))
|
||||
, single ("datepin" , SortColumnNullsInv $ queryLmsUser >>> (E.^. LmsUserDatePin))
|
||||
|
||||
@ -441,7 +441,7 @@ mkQualificationTable isAdmin (Entity qid quali) acts cols psValidator = do
|
||||
if | Just True <- getLast criterion -> quser `quserToNotify` now
|
||||
| otherwise -> E.true
|
||||
)
|
||||
, single ("status" , FilterColumn . E.mkExactFilterMaybeLast' $ views (to queryLmsUser) (E.?. LmsUserStatus))
|
||||
, single ("status" , FilterColumn . E.mkExactFilterMaybeLast' (views (to queryLmsUser) (E.?. LmsUserId)) $ views (to queryLmsUser) (E.?. LmsUserStatus))
|
||||
]
|
||||
dbtFilterUI mPrev = mconcat
|
||||
[ fltrUserNameEmailHdrUI MsgLmsUser mPrev
|
||||
|
||||
Loading…
Reference in New Issue
Block a user