aboutsummaryrefslogtreecommitdiff
path: root/src/client/View/Payments/Table.elm
blob: 9033db8bb265d2a4536d63b2169b4b809bba098c (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
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.Payment exposing (..)
import Model.View.PaymentView exposing (PaymentView)

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

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

paymentsTable : Model -> PaymentView -> Html
paymentsTable model paymentView =
  div
    [ class "table" ]
    ([ div
        [ class "header" ]
        [ div [ class "cell category" ] [ renderIcon "shopping-cart" ]
        , div [ class "cell cost" ] [ renderIcon "euro" ]
        , div [ class "cell user" ] [ renderIcon "user" ]
        , div [ class "cell date" ] [ renderIcon "calendar" ]
        , div [ class "cell" ] []
        ]
    ] ++ (paymentLines model paymentView))

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

paymentLine : Model -> PaymentView -> PaymentWithId -> Html
paymentLine model paymentView (id, payment) =
  a
    [ class ("row " ++ (if paymentView.edition == Just id then "edition" else ""))
    , onClick actions.address (UpdatePayment (ToggleEdit id))
    ]
    [ div [ class "cell" ] [ text payment.name ]
    , div [ class "cell" ] [ text ((toString payment.cost) ++ " €") ]
    , div [ class "cell" ] [ text payment.userName ]
    , div [ class "cell" ] [ text (renderDate payment.creation model.translations) ]
    , div
        [ class "cell remove"
        , onClick actions.address (UpdatePayment (Remove id))
        ]
        [ renderIcon "times" ]
    ]