aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Home/View/Table.elm
blob: a03faa2de1972415c4256b1f45ca93f2a7cde28d (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
85
86
87
88
89
90
91
92
93
94
95
96
97
module LoggedIn.Home.View.Table exposing
  ( paymentsTable
  )

import Dict exposing (..)
import Date exposing (Date)
import String exposing (append)
import Color

import FontAwesome

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

import Msg exposing (Msg)

import LoggedData exposing (LoggedData)

import LoggedIn.Msg as LoggedInMsg

import LoggedIn.Home.Msg as HomeMsg
import LoggedIn.Home.Model as HomeModel
import LoggedIn.View.Date exposing (..)
import LoggedIn.View.Format as Format

import Model.User exposing (getUserName)
import Model.Payment as Payment exposing (..)

paymentsTable : LoggedData -> HomeModel.Model -> Payments -> Html Msg
paymentsTable loggedData homeModel punctualPayments =
  div
    [ class "table" ]
    ( headerLine loggedData :: paymentLines loggedData homeModel punctualPayments)

headerLine : LoggedData -> Html Msg
headerLine loggedData =
  div
    [ class "header" ]
    [ div [ class "cell category" ] [ FontAwesome.shopping_cart Color.white 28 ]
    , div [ class "cell cost" ] [ text loggedData.conf.currency ]
    , div [ class "cell user" ] [ FontAwesome.user Color.white 28 ]
    , div [ class "cell date" ] [ FontAwesome.calendar Color.white 28 ]
    , div [ class "cell" ] []
    ]

paymentLines : LoggedData -> HomeModel.Model -> Payments -> List (Html Msg)
paymentLines loggedData homeModel punctualPayments =
  punctualPayments
    |> List.drop ((homeModel.currentPage - 1) * perPage)
    |> List.take perPage
    |> List.map (paymentLine loggedData homeModel)

paymentLine : LoggedData -> HomeModel.Model -> Payment -> Html Msg
paymentLine loggedData homeModel payment =
  a
    [ classList
        [ ("row", True)
        , ("edition", homeModel.paymentEdition == Just payment.id)
        ]
    , onClick (Msg.UpdateLoggedIn << LoggedInMsg.HomeMsg << HomeMsg.ToggleEdit <| payment.id)
    ]
    [ div [ class "cell category" ] [ text payment.name ]
    , div
        [ classList
            [ ("cell cost", True)
            , ("refund", payment.cost < 0)
            ]
        ]
        [ text (Format.price loggedData.conf payment.cost) ]
    , div
        [ class "cell user" ]
        [ payment.userId
            |> getUserName loggedData.users
            |> Maybe.withDefault "−"
            |> text
        ]
    , div
        [ class "cell date" ]
        [ span
            [ class "shortDate" ]
            [ text (renderShortDate payment.creation loggedData.translations) ]
        , span
            [ class "longDate" ]
            [ text (renderLongDate payment.creation loggedData.translations) ]
        ]
    , if loggedData.me == payment.userId
        then
          div
            [ class "cell delete" ]
            [ button
                [ onClick (Msg.UpdateLoggedIn <| LoggedInMsg.DeletePayment payment.id)]
                [ FontAwesome.times Color.white 20 ]
            ]
        else
          div [ class "cell" ] []
    ]