module View.LoggedIn.Account ( account ) where import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import List import Update exposing (..) import Update.LoggedIn exposing (..) import Update.LoggedIn.Account exposing (..) import Model exposing (Model) import Model.User exposing (getUserName) import Model.Payers exposing (..) import Model.View.LoggedInView exposing (LoggedInView) import Model.Translations exposing (getParamMessage, getMessage) import Model.View.LoggedIn.Account exposing (Account) import View.Expand exposing (..) import View.Price exposing (price) account : Model -> LoggedInView -> Html account model loggedInView = let account = loggedInView.account in div [ classList [ ("account", True) , ("detail", account.visibleDetail) ] ] [ exceedingPayers model loggedInView , if account.visibleDetail then income model account else text "" ] exceedingPayers : Model -> LoggedInView -> Html exceedingPayers model loggedInView = button [ class "header" , onClick actions.address (UpdateLoggedIn << UpdateAccount <| ToggleDetail) ] ( (List.map (exceedingPayer model loggedInView) (getOrderedExceedingPayers loggedInView.account.payers)) ++ [ expand ExpandDown loggedInView.account.visibleDetail ] ) exceedingPayer : Model -> LoggedInView -> ExceedingPayer -> Html exceedingPayer model loggedInView payer = div [ class "exceedingPayer" ] [ span [ class "userName" ] [ payer.userId |> getUserName loggedInView.users |> Maybe.withDefault "−" |> text ] , span [ class "amount" ] [ text ("+ " ++ (price model payer.amount)) ] ] income : Model -> Account -> Html income model account = div [ class "income" ] ( case account.income of Nothing -> [ text (getMessage "NoIncome" model.translations) ] Just income -> [ text (getParamMessage [price model income] "Income" model.translations) ] )