Safe Haskell | None |
---|---|
Language | Haskell2010 |
There are two pagination functions. One for arbitrary items where you provide the list of things to be paginated:
getSomeRoute = do -- 10 items per page pages <-paginate
10 =<< getAllThings defaultLayout $ do [whamlet| $forall thing <-pageItems
$pagesCurrent
pages ^{showThing thing} $# display at most 5 page elements, with current page middle-ish ^{simple
5 pages} |]
And another for paginating directly out of the database, you provide the same
arguments as you would for
:selectList
getSomeRoute something = do pages <- runDB $selectPaginated
10 [SomeThing ==. something] [] defaultLayout $ do [whamlet| $forall thing <-pageItems
$pagesCurrent
pages ^{showThing $ entityVal thing} ^{simple
5 pages} |]
- data PageNumber
- data PerPage
- data ItemsCount
- data Pages a
- pagesCurrent :: Pages a -> Page a
- data Page a
- pageItems :: Page a -> [a]
- paginate :: Yesod site => PerPage -> [a] -> HandlerFor site (Pages a)
- selectPaginated :: (PersistEntity val, PersistEntityBackend val ~ BaseBackend (YesodPersistBackend site), PersistQuery (YesodPersistBackend site), Yesod site) => PerPage -> [Filter val] -> [SelectOpt val] -> YesodDB site (Pages (Entity val))
- simple :: Natural -> PaginationWidget m a
- ellipsed :: Natural -> PaginationWidget m a
Type-safe numerics
data PageNumber Source #
data ItemsCount Source #
Paginated data
pagesCurrent :: Pages a -> Page a Source #
The current page
Paginators
paginate :: Yesod site => PerPage -> [a] -> HandlerFor site (Pages a) Source #
Paginate a list of items
selectPaginated :: (PersistEntity val, PersistEntityBackend val ~ BaseBackend (YesodPersistBackend site), PersistQuery (YesodPersistBackend site), Yesod site) => PerPage -> [Filter val] -> [SelectOpt val] -> YesodDB site (Pages (Entity val)) Source #
Paginate out of a persistent database
Widgets
simple :: Natural -> PaginationWidget m a Source #
Simple widget, limited to show the given number of total page elements
Pseudo-HTML for
, on page 1:simple
5
<ul .pagination> <li .prev .disabled><a>« <li .active .disabled><a>1 <li .next><a href="?p=2">2 <li .next><a href="?p=3">3 <li .next><a href="?p=4">4 <li .next><a href="?p=5">5 <li .next><a href="?p=2">»
And page 7:
<ul .pagination> <li .prev><a href="?p=6">« <li .prev><a href="?p=5">5 <li .prev><a href="?p=6">6 <li .active .disabled><a>7 <li .next><a href="?p=8">8 <li .next><a href="?p=9">9 <li .next><a href="?p=8">»
ellipsed :: Natural -> PaginationWidget m a Source #
Show pages before and after, ellipsis, and first/last