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

Yesod.Paginator.Pages

Synopsis

Type safe Naturals

N.B. PageNumber and PerPage will currently allow 0, but it's unclear if that's correct and may not be the case in the future.

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

pageOffset :: PageNumber -> PerPage -> ItemsCount Source #

Calculate a page's zero-based offset in the overall items

>>> pageOffset 4 3
9

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 #

toPage :: [a] -> PageNumber -> Page a Source #

Page constructor

Pages

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 #

toPages :: PageNumber -> PerPage -> ItemsCount -> [a] -> Pages a Source #

Construct a Pages a from paginated data

>>> toPages 4 3 10 []
Pages {pagesCurrent = Page {pageItems = [], pageNumber = 4}, pagesPrevious = [1,2,3], pagesNext = [], pagesLast = 4}

Safely accessing Pages data

takePreviousPages :: Natural -> Pages a -> [PageNumber] Source #

Take previous pages, going back from current

>>> takePreviousPages 3 $ Pages (Page [] 5) [1,2,3,4] [6] 6
[2,3,4]

takeNextPages :: Natural -> Pages a -> [PageNumber] Source #

Take next pages, going forward from current

>>> takeNextPages 3 $ Pages (Page [] 2) [1] [3,4,5,6] 6
[3,4,5]

getPreviousPage :: Pages a -> Maybe PageNumber Source #

The previous page number, if it exists

>>> getPreviousPage $ Pages (Page [] 1) [] [2,3,4] 4
Nothing
>>> getPreviousPage $ Pages (Page [] 2) [1] [3,4] 4
Just 1

getNextPage :: Pages a -> Maybe PageNumber Source #

The next page number, if it exists

>>> getNextPage $ Pages (Page [] 4) [1,2,3] [] 4
Nothing
>>> getNextPage $ Pages (Page [] 3) [1,2] [4] 4
Just 4