diff --git a/messages/uniworx/misc/de-de-formal.msg b/messages/uniworx/misc/de-de-formal.msg index ef68eb735..e8852cdaa 100644 --- a/messages/uniworx/misc/de-de-formal.msg +++ b/messages/uniworx/misc/de-de-formal.msg @@ -23,4 +23,5 @@ AvsLicenceRollfeld: Rollfeld Fahrberechtigung PaginationSize: Einträge pro Seite PaginationPage: Angzeigte Seite -PaginationError: Paginierung Parameter dürfen nicht negativ sein \ No newline at end of file +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. \ No newline at end of file diff --git a/messages/uniworx/misc/en-eu.msg b/messages/uniworx/misc/en-eu.msg index 97423bdda..cfa0a6141 100644 --- a/messages/uniworx/misc/en-eu.msg +++ b/messages/uniworx/misc/en-eu.msg @@ -23,4 +23,5 @@ AvsLicenceRollfeld: Maneuvering area driving licence PaginationSize: Rows per Page PaginationPage: Page to show -PaginationError: Pagination parameter must not be negative \ No newline at end of file +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. \ No newline at end of file diff --git a/src/Handler/Admin/Avs.hs b/src/Handler/Admin/Avs.hs index bb3832572..a4519a380 100644 --- a/src/Handler/Admin/Avs.hs +++ b/src/Handler/Admin/Avs.hs @@ -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 -> diff --git a/src/Handler/Qualification.hs b/src/Handler/Qualification.hs index 5dcd6fe1a..54bd84f81 100644 --- a/src/Handler/Qualification.hs +++ b/src/Handler/Qualification.hs @@ -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 diff --git a/templates/i18n/avs-synchronisation/de-de-formal.hamlet b/templates/i18n/avs-synchronisation/de-de-formal.hamlet index f23862a6e..265ef6b96 100644 --- a/templates/i18n/avs-synchronisation/de-de-formal.hamlet +++ b/templates/i18n/avs-synchronisation/de-de-formal.hamlet @@ -10,6 +10,7 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
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) }
+ _{MsgPaginationWorkaround nlimit}
+
+ ^{lmsTable}
diff --git a/templates/qualification.hamlet b/templates/qualification.hamlet
index aa9b6ee9d..b3f4c64f4 100644
--- a/templates/qualification.hamlet
+++ b/templates/qualification.hamlet
@@ -36,6 +36,9 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
#{icon IconNotificationError}
_{MsgLmsErrorNoRefreshElearning}
-
-^{qualificationTable}
+$if isAdmin
+
+ _{MsgPaginationWorkaround 2000}
+
+ ^{qualificationTable}
\ No newline at end of file
diff --git a/templates/lms.hamlet b/templates/lms.hamlet
index 0f9f7b0a6..d41505fb0 100644
--- a/templates/lms.hamlet
+++ b/templates/lms.hamlet
@@ -37,5 +37,8 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
#{icon IconNotificationError}
_{MsgLmsErrorNoRefreshElearning}
-^{lmsTable}
+