module View.Payments.Monthly ( monthlyPayments ) where import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import Update exposing (..) import Update.LoggedView exposing (..) import Update.LoggedView.Monthly exposing (..) import Model exposing (Model) import Model.View.Payment.Monthly exposing (Monthly) import Model.Payment exposing (Payments, Payment) import Model.View.LoggedView exposing (LoggedView) import Model.Translations exposing (getMessage, getVarMessage) import View.Icon exposing (renderIcon) monthlyPayments : Model -> LoggedView -> Html monthlyPayments model loggedView = let monthly = loggedView.monthly in if List.isEmpty monthly.payments then text "" else div [ class ("monthlyPayments" ++ if monthly.visibleDetail then " detail" else "") ] [ monthlyCount model monthly , if monthly.visibleDetail then paymentsTable model monthly else text "" ] monthlyCount : Model -> Monthly -> Html monthlyCount model monthly = let count = List.length monthly.payments key = if count > 1 then "PluralMonthlyCount" else "SingularMonthlyCount" in button [ class "count" , onClick actions.address (UpdateLoggedView << UpdateMonthly <| ToggleDetail) ] [ text (getVarMessage [toString count] key model.translations) , div [ class "expand" ] [ if monthly.visibleDetail then renderIcon "chevron-up" else renderIcon "chevron-down" ] ] paymentsTable : Model -> Monthly -> Html paymentsTable model monthly = div [ class "table" ] ( List.map (paymentLine model) monthly.payments ) paymentLine : Model -> Payment -> Html paymentLine model payment = a [ class "row" ] [ div [ class "cell" ] [ text (payment.name) ] , div [ class "cell" ] [ text (toString payment.cost ++ " " ++ getMessage "MoneySymbol" model.translations) ] ]