chore(qualifications): workaround for pagination error

This commit is contained in:
Steffen Jost 2023-03-01 12:37:07 +01:00
parent a97c8168da
commit d8d7b8ccc5
7 changed files with 19 additions and 9 deletions

View File

@ -23,4 +23,5 @@ AvsLicenceRollfeld: Rollfeld Fahrberechtigung
PaginationSize: Einträge pro Seite
PaginationPage: Angzeigte Seite
PaginationError: Paginierung Parameter dürfen nicht negativ sein
PaginationError: Paginierung Parameter dürfen nicht negativ sein
PaginationWorkaround n@Int64: Hinweis: Die Tabelle ist momentan auf maximal #{n} Zeilen beschränkt aufgrund eines Programmierfehlers in der Paginierungsautomatik. Wir hoffen dieses Problem möglichst bald in einer der kommenden Versionen lösen zu können.

View File

@ -23,4 +23,5 @@ AvsLicenceRollfeld: Maneuvering area driving licence
PaginationSize: Rows per Page
PaginationPage: Page to show
PaginationError: Pagination parameter must not be negative
PaginationError: Pagination parameter must not be negative
PaginationWorkaround n: Note: the table is currently limited to at most #{n} rows due to an unfortunate problem with the pagination mechanic. We hope the resolve the issue soon in a following release.

View File

@ -43,7 +43,7 @@ data PaginationParameters = PaginationParameters { pagLimit, pagOffset:: Int64 }
deriving (Eq, Show)
instance Default PaginationParameters where
def = PaginationParameters { pagLimit = 100, pagOffset = 0}
def = PaginationParameters { pagLimit = 500, pagOffset = 0}
makePaginationForm :: Maybe PaginationParameters -> Form PaginationParameters
makePaginationForm tmpl = identifyForm FIDPaginationWorkaround . validateForm validatePaginationForm $ \html ->

View File

@ -252,16 +252,17 @@ isExpiryAct :: QualificationTableActionData -> Bool -- const true, but this may
isExpiryAct QualificationActExpireData = True
isExpiryAct QualificationActUnexpireData = True
qualificationTableQuery :: QualificationId -> (_ -> E.SqlExpr (E.Value Bool)) -> QualificationTableExpr
qualificationTableQuery :: QualificationId -> (_ -> E.SqlExpr (E.Value Bool)) -> Bool -> QualificationTableExpr
-> E.SqlQuery ( E.SqlExpr (Entity QualificationUser)
, E.SqlExpr (Entity User)
, E.SqlExpr (Maybe (Entity LmsUser))
)
qualificationTableQuery qid fltr (qualUser `E.InnerJoin` user `E.LeftOuterJoin` lmsUser) = do
qualificationTableQuery qid fltr isAdmin (qualUser `E.InnerJoin` user `E.LeftOuterJoin` lmsUser) = do
E.on $ user E.^. UserId E.=?. lmsUser E.?. LmsUserUser
E.&&. E.val qid E.=?. lmsUser E.?. LmsUserQualification -- NOTE: condition was once erroneously placed in where-clause, which does not work
E.on $ user E.^. UserId E.==. qualUser E.^. QualificationUserUser
E.where_ $ fltr qualUser E.&&. (E.val qid E.==. qualUser E.^. QualificationUserQualification)
when isAdmin $ E.limit 2000 -- WORKAROUND Pagination Bug
return (qualUser, user, lmsUser)
@ -286,7 +287,7 @@ mkQualificationTable isAdmin (Entity qid quali) acts cols psValidator = do
dbtIdent :: Text
dbtIdent = "qualification"
fltrSvs = if isAdmin then const E.true else \quser -> quser E.^. QualificationUserUser `Ex.in_` E.vals svs
dbtSQLQuery q = qualificationTableQuery qid fltrSvs q
dbtSQLQuery q = qualificationTableQuery qid fltrSvs isAdmin q
dbtRowKey = queryUser >>> (E.^. UserId)
dbtProj = dbtProjFilteredPostId
dbtColonnade = cols

View File

@ -10,6 +10,7 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
Momentan werden aus Effizienzgründen alle Tabellen beschnitten und abgekürzt. #
Auch die Funktion zum Import unbekannter Führerscheininhaber ist derzeit auf ein paar Hundert beschränkt.
$# _{MsgPaginationWorkaround (pagLimit pagResult) }
<section>
<h2>

View File

@ -37,5 +37,8 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
#{icon IconNotificationError}
_{MsgLmsErrorNoRefreshElearning}
^{lmsTable}
<p>
_{MsgPaginationWorkaround nlimit}
<p>
^{lmsTable}

View File

@ -36,6 +36,9 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<p>
#{icon IconNotificationError}
_{MsgLmsErrorNoRefreshElearning}
^{qualificationTable}
$if isAdmin
<p>
_{MsgPaginationWorkaround 2000}
<p>
^{qualificationTable}