yesod-paginator-1.1.0.0: A pagination approach for yesod

Safe HaskellNone
LanguageHaskell2010

Yesod.Paginator.Pages

Contents

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

Enum PageNumber Source # 
Eq PageNumber Source # 
Integral PageNumber Source # 
Num PageNumber Source # 
Ord PageNumber Source # 
Real PageNumber Source # 
Show PageNumber Source # 
ToMarkup PageNumber Source # 

data PerPage Source #

Instances

Enum PerPage Source # 
Eq PerPage Source # 

Methods

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

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

Integral PerPage Source # 
Num PerPage Source # 
Ord PerPage Source # 
Read PerPage Source # 
Real PerPage Source # 
Show PerPage Source # 
PathPiece PerPage Source # 

data ItemsCount Source #

Instances

Enum ItemsCount Source # 
Eq ItemsCount Source # 
Integral ItemsCount Source # 
Num ItemsCount Source # 
Ord ItemsCount Source # 
Read ItemsCount Source # 
Real ItemsCount Source # 
Show ItemsCount Source # 
PathPiece ItemsCount Source # 

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

Eq a => Eq (Page a) Source # 

Methods

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

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

Show a => Show (Page a) Source # 

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

Eq a => Eq (Pages a) Source # 

Methods

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

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

Show a => Show (Pages a) Source # 

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