yesod-paginator-0.10.0: A pagination approach for yesod

Safe HaskellNone
LanguageHaskell98

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

paginate :: Yesod m => Int -> [a] -> HandlerT m IO ([a], WidgetT m IO ()) Source

paginateWith :: Yesod m => PageWidget m -> Int -> [a] -> HandlerT m IO ([a], WidgetT m IO ()) Source