aboutsummaryrefslogtreecommitdiff
path: root/src/client/View/Payments/Table.elm
blob: 5374c44fcf9196e85473c2e8549d2a6db3673b7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
module View.Payments.Table
  ( paymentsTable
  ) where

import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Dict exposing (..)

import Date
import Date exposing (Date)

import String exposing (append)

import Model exposing (Model)
import Model.User exposing (getUserName)
import Model.Payment exposing (..)
import Model.View.LoggedView exposing (LoggedView)
import Model.Translations exposing (getMessage)

import ServerCommunication as SC exposing (serverCommunications)

import Update exposing (..)
import Update.Payment exposing (..)

import View.Icon exposing (renderIcon)
import View.Date exposing (..)

paymentsTable : Model -> LoggedView -> Html
paymentsTable model loggedView =
  div
    [ class "table" ]
    ([ div
        [ class "header" ]
        [ div [ class "cell category" ] [ renderIcon "shopping-cart" ]
        , div [ class "cell cost" ] [ text (getMessage "MoneySymbol" model.translations) ]
        , div [ class "cell user" ] [ renderIcon "user" ]
        , div [ class "cell date" ] [ renderIcon "calendar" ]
        , div [ class "cell" ] []
        ]
    ] ++ (paymentLines model loggedView))

paymentLines : Model -> LoggedView -> List Html
paymentLines model loggedView =
  loggedView.payments
    |> Dict.toList
    |> List.sortBy (\(_, payment) -> Date.toTime payment.creation)
    |> List.reverse
    |> List.map (paymentLine model loggedView)

paymentLine : Model -> LoggedView -> PaymentWithId -> Html
paymentLine model loggedView (id, payment) =
  a
    [ class ("row " ++ (if loggedView.edition == Just id then "edition" else ""))
    , onClick actions.address (UpdatePayment (ToggleEdit id))
    ]
    [ div [ class "cell category" ] [ text payment.name ]
    , div [ class "cell cost" ] [ text ((toString payment.cost) ++ " " ++ (getMessage "MoneySymbol" model.translations)) ]
    , div
        [ class "cell user" ]
        [ payment.userId
            |> getUserName loggedView.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 loggedView.me == payment.userId
        then
          div
            [ class "cell remove"
            , onClick serverCommunications.address (SC.DeletePayment id payment.userId payment.cost loggedView.currentPage)
            ]
            [ renderIcon "times" ]
        else
          div [ class "cell" ] []
    ]