Add part4
This commit is contained in:
63
advanced/part4/src/PaginatedList.elm
Normal file
63
advanced/part4/src/PaginatedList.elm
Normal file
@@ -0,0 +1,63 @@
|
||||
module PaginatedList exposing (PaginatedList, fromList, map, mapPage, page, total, values)
|
||||
|
||||
import Html exposing (Html, a, li, text, ul)
|
||||
import Html.Attributes exposing (class, classList, href)
|
||||
import Html.Events exposing (onClick)
|
||||
|
||||
|
||||
|
||||
-- TYPES
|
||||
|
||||
|
||||
type PaginatedList a
|
||||
= PaginatedList
|
||||
{ values : List a
|
||||
, total : Int
|
||||
, page : Int
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- INFO
|
||||
|
||||
|
||||
values : PaginatedList a -> List a
|
||||
values (PaginatedList info) =
|
||||
info.values
|
||||
|
||||
|
||||
total : PaginatedList a -> Int
|
||||
total (PaginatedList info) =
|
||||
info.total
|
||||
|
||||
|
||||
page : PaginatedList a -> Int
|
||||
page (PaginatedList info) =
|
||||
info.page
|
||||
|
||||
|
||||
|
||||
-- CREATE
|
||||
|
||||
|
||||
fromList : Int -> List a -> PaginatedList a
|
||||
fromList totalCount list =
|
||||
PaginatedList { values = list, total = totalCount, page = 1 }
|
||||
|
||||
|
||||
|
||||
-- TRANSFORM
|
||||
|
||||
|
||||
map : (a -> a) -> PaginatedList a -> PaginatedList a
|
||||
map transform (PaginatedList info) =
|
||||
PaginatedList { info | values = List.map transform info.values }
|
||||
|
||||
|
||||
mapPage : (Int -> Int) -> PaginatedList a -> PaginatedList a
|
||||
mapPage transform (PaginatedList info) =
|
||||
PaginatedList { info | page = transform info.page }
|
||||
|
||||
|
||||
|
||||
-- VIEW
|
||||
Reference in New Issue
Block a user