| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Yesod.Paginator.Pages
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 Naturals
NaturalN.B. and PageNumber will currently allow PerPage0, 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 # | |
Defined in Yesod.Paginator.Pages | |
| Read PerPage Source # | |
| Real PerPage Source # | |
Defined in Yesod.Paginator.Pages Methods toRational :: PerPage -> Rational # | |
| Show PerPage Source # | |
| PathPiece PerPage Source # | |
Defined in Yesod.Paginator.Pages | |
data ItemsCount Source #
Instances
pageOffset :: PageNumber -> PerPage -> ItemsCount Source #
Calculate a page's zero-based offset in the overall items
>>>pageOffset 4 39
Page
Instances
| Functor Page Source # | |
| Foldable Page Source # | |
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 # 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 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 # 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] 4Nothing
>>>getPreviousPage $ Pages (Page [] 2) [1] [3,4] 4Just 1
getNextPage :: Pages a -> Maybe PageNumber Source #
The next page number, if it exists
>>>getNextPage $ Pages (Page [] 4) [1,2,3] [] 4Nothing
>>>getNextPage $ Pages (Page [] 3) [1,2] [4] 4Just 4