yesod-paginator-1.1.2.2: A pagination approach for yesod
Safe HaskellNone
LanguageHaskell2010

Yesod.Paginator

Description

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}
            |]
Synopsis

Type-safe numerics

data PageNumber Source #

Instances

Instances details
Enum PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Eq PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Integral PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Num PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Ord PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Real PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

Show PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

ToMarkup PageNumber Source # 
Instance details

Defined in Yesod.Paginator.Pages

data PerPage Source #

Instances

Instances details
Enum PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Eq PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

(==) :: PerPage -> PerPage -> Bool #

(/=) :: PerPage -> PerPage -> Bool #

Integral PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Num PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Ord PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Read PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Real PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

Show PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

PathPiece PerPage Source # 
Instance details

Defined in Yesod.Paginator.Pages

data ItemsCount Source #

Instances

Instances details
Enum ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Eq ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Integral ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Num ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Ord ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Read ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Real ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Show ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

PathPiece ItemsCount Source # 
Instance details

Defined in Yesod.Paginator.Pages

Paginated data

data Pages a Source #

Instances

Instances details
Functor Pages Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

fmap :: (a -> b) -> Pages a -> Pages b #

(<$) :: a -> Pages b -> Pages a #

Foldable Pages Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

fold :: Monoid m => Pages m -> m #

foldMap :: Monoid m => (a -> m) -> Pages a -> m #

foldMap' :: Monoid m => (a -> m) -> Pages a -> m #

foldr :: (a -> b -> b) -> b -> Pages a -> b #

foldr' :: (a -> b -> b) -> b -> Pages a -> b #

foldl :: (b -> a -> b) -> b -> Pages a -> b #

foldl' :: (b -> a -> b) -> b -> Pages a -> b #

foldr1 :: (a -> a -> a) -> Pages a -> a #

foldl1 :: (a -> a -> a) -> Pages a -> a #

toList :: Pages a -> [a] #

null :: Pages a -> Bool #

length :: Pages a -> Int #

elem :: Eq a => a -> Pages a -> Bool #

maximum :: Ord a => Pages a -> a #

minimum :: Ord a => Pages a -> a #

sum :: Num a => Pages a -> a #

product :: Num a => Pages a -> a #

Traversable Pages Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

traverse :: Applicative f => (a -> f b) -> Pages a -> f (Pages b) #

sequenceA :: Applicative f => Pages (f a) -> f (Pages a) #

mapM :: Monad m => (a -> m b) -> Pages a -> m (Pages b) #

sequence :: Monad m => Pages (m a) -> m (Pages a) #

Eq a => Eq (Pages a) Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

(==) :: Pages a -> Pages a -> Bool #

(/=) :: Pages a -> Pages a -> Bool #

Show a => Show (Pages a) Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

showsPrec :: Int -> Pages a -> ShowS #

show :: Pages a -> String #

showList :: [Pages a] -> ShowS #

The current page

data Page a Source #

Instances

Instances details
Functor Page Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

fmap :: (a -> b) -> Page a -> Page b #

(<$) :: a -> Page b -> Page a #

Foldable Page Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

fold :: Monoid m => Page m -> m #

foldMap :: Monoid m => (a -> m) -> Page a -> m #

foldMap' :: Monoid m => (a -> m) -> Page a -> m #

foldr :: (a -> b -> b) -> b -> Page a -> b #

foldr' :: (a -> b -> b) -> b -> Page a -> b #

foldl :: (b -> a -> b) -> b -> Page a -> b #

foldl' :: (b -> a -> b) -> b -> Page a -> b #

foldr1 :: (a -> a -> a) -> Page a -> a #

foldl1 :: (a -> a -> a) -> Page a -> a #

toList :: Page a -> [a] #

null :: Page a -> Bool #

length :: Page a -> Int #

elem :: Eq a => a -> Page a -> Bool #

maximum :: Ord a => Page a -> a #

minimum :: Ord a => Page a -> a #

sum :: Num a => Page a -> a #

product :: Num a => Page a -> a #

Traversable Page Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

traverse :: Applicative f => (a -> f b) -> Page a -> f (Page b) #

sequenceA :: Applicative f => Page (f a) -> f (Page a) #

mapM :: Monad m => (a -> m b) -> Page a -> m (Page b) #

sequence :: Monad m => Page (m a) -> m (Page a) #

Eq a => Eq (Page a) Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

(==) :: Page a -> Page a -> Bool #

(/=) :: Page a -> Page a -> Bool #

Show a => Show (Page a) Source # 
Instance details

Defined in Yesod.Paginator.Pages

Methods

showsPrec :: Int -> Page a -> ShowS #

show :: Page a -> String #

showList :: [Page a] -> ShowS #

pageItems :: Page a -> [a] Source #

Paginators

paginate :: MonadHandler m => PerPage -> [a] -> m (Pages a) Source #

Paginate a list of items

paginateWith :: MonadHandler m => PaginationConfig -> [a] -> m (Pages a) Source #

Paginate a list of items given a pagination config

selectPaginated :: (MonadHandler m, PersistEntity record, PersistEntityBackend record ~ BaseBackend backend, PersistQueryRead backend) => PerPage -> [Filter record] -> [SelectOpt record] -> ReaderT backend m (Pages (Entity record)) Source #

Paginate out of a persistent database

selectPaginatedWith :: (MonadHandler m, PersistEntity record, PersistEntityBackend record ~ BaseBackend backend, PersistQueryRead backend) => PaginationConfig -> [Filter record] -> [SelectOpt record] -> ReaderT backend m (Pages (Entity record)) Source #

Paginate out of a persistent database given a pagination config

Widgets

simple :: Natural -> PaginationWidget m a Source #

Simple widget, limited to show the given number of total page elements

Pseudo-HTML for simple 5, on page 1:

  <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

Pagination configuration