From 5266c5c5da1c5e4538b05713206652d89f467b59 Mon Sep 17 00:00:00 2001 From: Stefan Dresselhaus Date: Fri, 18 Sep 2015 01:08:15 +0200 Subject: [PATCH] pagination now works, but always shows all pages (#items/100) for selection. could get messy afterwards. but fixes #5 --- Handler/Item.hs | 21 +++++++++++++++------ config/routes | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Handler/Item.hs b/Handler/Item.hs index 4e764d1..baa9b7d 100644 --- a/Handler/Item.hs +++ b/Handler/Item.hs @@ -6,20 +6,23 @@ itemsPerPage :: Int itemsPerPage = 100 getItemR :: Int64 -> Handler Html -getItemR transactionTypeId = getItemPagedR transactionTypeId 0 +getItemR transactionTypeId = getItemPagedR transactionTypeId 1 getItemPagedR :: Int64 -> Int -> Handler Html -getItemPagedR tid page = - loginOrDo (\(uid,user) -> do - items <- runDB $ selectList [TransactionTypeId ==. tid] [Desc TransactionDateTime, LimitTo itemsPerPage, OffsetBy (itemsPerPage*page)] +getItemPagedR tid page + | page < 1 = getItemPagedR tid 1 + | otherwise = loginOrDo (\(uid,user) -> do + items <- runDB $ selectList [TransactionTypeId ==. tid] [Desc TransactionDateTime, LimitTo itemsPerPage, OffsetBy (itemsPerPage*(page-1))] total <- runDB $ count [TransactionTypeId ==. tid] let offset = itemsPerPage * page + let maxPages = total `div` itemsPerPage + let paginatePages = [1..maxPages+1] loginLayout user $ [whamlet|
$if page > 0 -
#{itemsPerPage} Transactions (starting at #{offset}) +
#{itemsPerPage} Transactions (starting at #{offset}) of #{total} $else -
#{itemsPerPage} Transactions +
#{itemsPerPage} Transactions of #{total}
Time @@ -79,6 +82,12 @@ getItemPagedR tid page = #{transactionStationName t} +
    + $forall p <- paginatePages + $if p == page +
  • #{p} + $else +
  • #{p} |] ) diff --git a/config/routes b/config/routes index 09c71f9..acd7fef 100644 --- a/config/routes +++ b/config/routes @@ -15,3 +15,4 @@ /analysis/items/#Int64 ProfitItemsDetailsR GET /orders OrdersR GET /history/#Int64 ItemR GET +/history/#Int64/#Int ItemPagedR GET