blob: 944314c11f5bc1ec714f2ad8b4563281228ca533 (
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
|
module View.Payments.Monthly
( monthlyPayments
) where
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Update exposing (..)
import Update.LoggedView exposing (..)
import Update.LoggedView.Monthly exposing (..)
import Model exposing (Model)
import Model.View.Payment.Monthly exposing (Monthly)
import Model.Payment exposing (Payments, Payment)
import Model.View.LoggedView exposing (LoggedView)
import Model.Translations exposing (getMessage, getParamMessage)
import ServerCommunication as SC exposing (serverCommunications)
import View.Icon exposing (renderIcon)
monthlyPayments : Model -> LoggedView -> Html
monthlyPayments model loggedView =
let monthly = loggedView.monthly
in if List.isEmpty monthly.payments
then
text ""
else
div
[ class ("monthlyPayments" ++ if monthly.visibleDetail then " detail" else "") ]
[ monthlyCount model monthly
, if monthly.visibleDetail then paymentsTable model loggedView monthly else text ""
]
monthlyCount : Model -> Monthly -> Html
monthlyCount model monthly =
let count = List.length monthly.payments
key = if count > 1 then "PluralMonthlyCount" else "SingularMonthlyCount"
in button
[ class "count"
, onClick actions.address (UpdateLoggedView << UpdateMonthly <| ToggleDetail)
]
[ text (getParamMessage [toString count] key model.translations)
, div
[ class "expand" ]
[ if monthly.visibleDetail
then renderIcon "chevron-up"
else renderIcon "chevron-down"
]
]
paymentsTable : Model -> LoggedView -> Monthly -> Html
paymentsTable model loggedView monthly =
div
[ class "table" ]
( List.map (paymentLine model loggedView) monthly.payments )
paymentLine : Model -> LoggedView -> Payment -> Html
paymentLine model loggedView payment =
a
[ class ("row" ++ (if loggedView.paymentEdition == Just payment.id then " edition" else ""))
, onClick actions.address (UpdateLoggedView (ToggleEdit payment.id))
]
[ div [ class "cell" ] [ text (payment.name) ]
, div [ class "cell" ] [ text (toString payment.cost ++ " " ++ getMessage "MoneySymbol" model.translations) ]
, div
[ class "cell delete"
, onClick serverCommunications.address (SC.DeleteMonthlyPayment payment.id)
]
[ renderIcon "times" ]
]
|