| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Yesod.Paginator
Description
Inspiration from a concept by ajdunlap: http://hackage.haskell.org/package/yesod-paginate
But uses an entirely different approach.
There are two pagination functions. One for arbitrary items where you provide the list of things to be paginated:
getSomeRoute = do
things' <- getAllThings
(things, widget) <- paginate 10 things'
defaultLayout $ do
[whamlet|
$forall thing <- things
^{showThing thing}
<div .pagination>
^{widget}
|]And another for paginating directly out of the database, you provide
the same filters as you would to selectList.
getSomeRoute something = do
-- note: things is [Entity val] just like selectList returns
(things, widget) <- runDB $ selectPaginated 10 [SomeThing ==. something] []
defaultLayout $ do
[whamlet|
$forall thing <- things
^{showThing $ entityVal thing}
<div .pagination>
^{widget}
|]Both functions return a tuple: the first element being the list of items (or Entities) to display on this page and the second being a widget showing the pagination navagation links.
Documentation
paginateWith :: Yesod m => PageWidget m -> Int -> [a] -> HandlerT m IO ([a], WidgetT m IO ()) #
selectPaginated :: (PersistEntity val, PersistEntityBackend val ~ BaseBackend (YesodPersistBackend m), PersistQuery (YesodPersistBackend m), Yesod m) => Int -> [Filter val] -> [SelectOpt val] -> YesodDB m ([Entity val], WidgetT m IO ()) #
selectPaginatedWith :: (PersistEntity val, PersistEntityBackend val ~ BaseBackend (YesodPersistBackend m), PersistQuery (YesodPersistBackend m), Yesod m) => PageWidget m -> Int -> [Filter val] -> [SelectOpt val] -> YesodDB m ([Entity val], WidgetT m IO ()) #
module Yesod.Paginator.Widget