module View.Page ( renderPage ) where import Html exposing (..) import Html as H import Html.Attributes exposing (..) import Html.Attributes as A import Html.Events exposing (..) import Date import Date exposing (Date) import String exposing (append) import Model exposing (Model) import Model.Payment exposing (Payments, Payment) renderPage : Model -> Html renderPage model = div [] [ renderHeader , renderMain model ] renderHeader : Html renderHeader = header [] [ h1 [] [ text "Payments" ] ] renderMain : Model -> Html renderMain model = if model.forbiddenAccess then forbiddenAccess else model.payments |> Maybe.map paymentTable |> Maybe.withDefault loadingTable forbiddenAccess : Html forbiddenAccess = text "Forbidden access" loadingTable : Html loadingTable = text "" paymentTable : Payments -> Html paymentTable payments = table [] ([ tr [] [ th [] [ text "Utilisateur" ] , th [] [ text "Nom" ] , th [] [ text "Prix" ] , th [] [ text "Date" ] ] ] ++ (paymentLines payments)) paymentLines : Payments -> List Html paymentLines payments = payments |> List.sortBy (Date.toTime << .creation) |> List.reverse |> List.map paymentLine paymentLine : Payment -> Html paymentLine payment = tr [] [ td [] [ text payment.name ] , td [] [ text payment.userName ] , td [] [ text (toString payment.cost) ] , td [] [ text (renderDate payment.creation) ] ] renderDate : Date -> String renderDate date = toString (Date.day date) |> flip append (" " ++ (toString (Date.month date))) |> flip append (" " ++ (toString (Date.year date)))