module LoggedIn.Home.View.Table ( paymentsTable ) where import Dict exposing (..) import Date exposing (Date) import Signal exposing (Address) import String exposing (append) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import LoggedIn.Action as LoggedInAction import LoggedIn.Home.Action as HomeAction import LoggedIn.Home.Model as HomeModel import LoggedIn.Home.View.Date exposing (..) import LoggedIn.Home.View.Price exposing (price) import Model exposing (Model) import Model.User exposing (getUserName) import Model.Payment exposing (..) import Model.Translations exposing (getMessage) import Action exposing (..) import View.Icon exposing (renderIcon) paymentsTable : Address Action -> Model -> HomeModel.Model -> Html paymentsTable address model homeModel = div [ class "table" ] ( headerLine model :: paymentLines address model homeModel) headerLine : Model -> Html headerLine model = div [ class "header" ] [ div [ class "cell category" ] [ renderIcon "shopping-cart" ] , div [ class "cell cost" ] [ text model.conf.currency ] , div [ class "cell user" ] [ renderIcon "user" ] , div [ class "cell date" ] [ renderIcon "calendar" ] , div [ class "cell" ] [] ] paymentLines : Address Action -> Model -> HomeModel.Model -> List Html paymentLines address model homeModel = homeModel.payments |> List.sortBy (Date.toTime << .creation) |> List.reverse |> List.drop ((homeModel.currentPage - 1) * perPage) |> List.take perPage |> List.map (paymentLine address model homeModel) paymentLine : Address Action -> Model -> HomeModel.Model -> Payment -> Html paymentLine address model homeModel payment = a [ classList [ ("row", True) , ("edition", homeModel.paymentEdition == Just payment.id) ] , onClick address (UpdateLoggedIn << LoggedInAction.HomeAction << HomeAction.ToggleEdit <| payment.id) ] [ div [ class "cell category" ] [ text payment.name ] , div [ classList [ ("cell cost", True) , ("refund", payment.cost < 0) ] ] [ text (price model payment.cost) ] , div [ class "cell user" ] [ payment.userId |> getUserName homeModel.users |> Maybe.withDefault "−" |> text ] , div [ class "cell date" ] [ span [ class "shortDate" ] [ text (renderShortDate payment.creation model.translations) ] , span [ class "longDate" ] [ text (renderLongDate payment.creation model.translations) ] ] , if homeModel.account.me == payment.userId then div [ class "cell delete" ] [ button [ onClick address (UpdateLoggedIn <| LoggedInAction.HomeAction <| HomeAction.DeletePayment payment Punctual)] [ renderIcon "times" ] ] else div [ class "cell" ] [] ]