Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data PageNumber
- data PerPage
- data ItemsCount
- pageOffset :: PageNumber -> PerPage -> ItemsCount
- data Page a
- pageItems :: Page a -> [a]
- pageNumber :: Page a -> PageNumber
- toPage :: [a] -> PageNumber -> Page a
- data Pages a
- pagesCurrent :: Pages a -> Page a
- pagesLast :: Pages a -> PageNumber
- toPages :: PageNumber -> PerPage -> ItemsCount -> [a] -> Pages a
- takePreviousPages :: Natural -> Pages a -> [PageNumber]
- takeNextPages :: Natural -> Pages a -> [PageNumber]
- getPreviousPage :: Pages a -> Maybe PageNumber
- getNextPage :: Pages a -> Maybe PageNumber
Type safe Natural
s
Natural
N.B.
and PageNumber
will currently allow PerPage
0
, but it's
unclear if that's correct and may not be the case in the future.
data PageNumber Source #
Instances
Instances
Enum PerPage Source # | |
Eq PerPage Source # | |
Integral PerPage Source # | |
Defined in Yesod.Paginator.Pages | |
Num PerPage Source # | |
Ord PerPage Source # | |
Read PerPage Source # | |
Real PerPage Source # | |
Defined in Yesod.Paginator.Pages toRational :: PerPage -> Rational # | |
Show PerPage Source # | |
PathPiece PerPage Source # | |
Defined in Yesod.Paginator.Pages fromPathPiece :: Text -> Maybe PerPage # toPathPiece :: PerPage -> Text # |
data ItemsCount Source #
Instances
pageOffset :: PageNumber -> PerPage -> ItemsCount Source #
Calculate a page's zero-based offset in the overall items
>>>
pageOffset 4 3
9
Page
Instances
Functor Page Source # | |
Foldable Page Source # | |
Defined in Yesod.Paginator.Pages 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 # elem :: Eq a => a -> Page a -> Bool # maximum :: Ord a => Page a -> a # | |
Traversable Page Source # | |
Eq a => Eq (Page a) Source # | |
Show a => Show (Page a) Source # | |
pageNumber :: Page a -> PageNumber Source #
Pages
Instances
Functor Pages Source # | |
Foldable Pages Source # | |
Defined in Yesod.Paginator.Pages 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 # elem :: Eq a => a -> Pages a -> Bool # maximum :: Ord a => Pages a -> a # minimum :: Ord a => Pages a -> a # | |
Traversable Pages Source # | |
Eq a => Eq (Pages a) Source # | |
Show a => Show (Pages a) Source # | |
pagesCurrent :: Pages a -> Page a Source #
pagesLast :: Pages a -> PageNumber Source #
toPages :: PageNumber -> PerPage -> ItemsCount -> [a] -> Pages a Source #
Construct a
from paginated dataPages
a
>>>
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