From 2cfd87de87835a9bdfbc4f18e6da49e58d1fb89e Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 16 Mar 2018 14:09:12 +0100 Subject: [PATCH] Page indicator --- messages/de.msg | 3 ++- src/Handler/Term.hs | 2 +- src/Handler/Utils/Table/Pagination.hs | 10 +++++++--- templates/table-layout-wrapper.hamlet | 1 + templates/table-layout.hamlet | 5 ++++- 5 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 templates/table-layout-wrapper.hamlet diff --git a/messages/de.msg b/messages/de.msg index 0f6ec28bb..710f73cae 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -1,3 +1,4 @@ SummerTerm year@Integer: Sommersemester #{tshow year} WinterTerm year@Integer: Wintersemester #{tshow year}/#{tshow $ succ year} -PSLimitNonPositive: “pagesize” muss größer als null sein \ No newline at end of file +PSLimitNonPositive: “pagesize” muss größer als null sein +Page n@Int64 num@Int64: Seite #{tshow n} von #{tshow num} \ No newline at end of file diff --git a/src/Handler/Term.hs b/src/Handler/Term.hs index 60776bbef..0ec926787 100644 --- a/src/Handler/Term.hs +++ b/src/Handler/Term.hs @@ -30,7 +30,7 @@ getTermShowR = do -- let termData = E.from $ \term -> do - E.orderBy [E.desc $ term E.^. TermStart ] + -- E.orderBy [E.desc $ term E.^. TermStart ] let courseCount :: E.SqlExpr (E.Value Int) courseCount = E.sub_select . E.from $ \course -> do E.where_ $ term E.^. TermId E.==. course E.^. CourseTermId diff --git a/src/Handler/Utils/Table/Pagination.hs b/src/Handler/Utils/Table/Pagination.hs index 2f67bf522..76a988ddb 100644 --- a/src/Handler/Utils/Table/Pagination.hs +++ b/src/Handler/Utils/Table/Pagination.hs @@ -3,6 +3,7 @@ , RecordWildCards , OverloadedStrings , TemplateHaskell + , QuasiQuotes , LambdaCase , ViewPatterns #-} @@ -116,10 +117,13 @@ dbTable PSValidator{..} DBTable{ dbtIdent = (toPathPiece -> dbtIdent), .. } = do mapM_ (addMessageI "warning") errs - rows <- runDB $ E.select sqlQuery' + (rows, [E.Value rowCount]) <- runDB $ (,) <$> E.select sqlQuery' <*> E.select (E.countRows <$ dbtSQLQuery :: E.SqlQuery (E.SqlExpr (E.Value Int64))) bool return (sendResponse <=< tblLayout) psShortcircuit $ do - encodeCellTable dbtAttrs' dbtColonnade rows + let table = encodeCellTable dbtAttrs' dbtColonnade rows + $(widgetFile "table-layout") where tblLayout :: Widget -> Handler Html - tblLayout = widgetToPageContent >=> (\tbl -> withUrlRenderer $(hamletFile "templates/table-layout.hamlet")) + tblLayout tbl' = do + tbl <- widgetToPageContent tbl' + withUrlRenderer $(hamletFile "templates/table-layout-wrapper.hamlet") diff --git a/templates/table-layout-wrapper.hamlet b/templates/table-layout-wrapper.hamlet new file mode 100644 index 000000000..34b53ce1f --- /dev/null +++ b/templates/table-layout-wrapper.hamlet @@ -0,0 +1 @@ +^{pageBody tbl} diff --git a/templates/table-layout.hamlet b/templates/table-layout.hamlet index 34b53ce1f..323be24bb 100644 --- a/templates/table-layout.hamlet +++ b/templates/table-layout.hamlet @@ -1 +1,4 @@ -^{pageBody tbl} +
+ ^{table} +

+ _{MsgPage (succ psPage) (succ $ div rowCount psLimit)}