blob: 5ccdb3595f41d7109e0d591d6c8d882fd84dcc1d (
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
|
module LoggedIn.Home.AddPayment.View exposing
( view
)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Html.App as Html
import Task
import Form exposing (Form)
import Dialog
import View.Form as Form
import View.Events exposing (onSubmitPrevDefault)
import Msg exposing (Msg)
import LoggedIn.Msg as LoggedInMsg
import LoggedIn.Home.Msg as HomeMsg
import Model.Translations exposing (getMessage)
import Model.Payment as Payment
import Model.View exposing (View(LoggedInView))
import LoggedData exposing (LoggedData)
import LoggedIn.Home.Model as HomeModel
view : LoggedData -> Html Msg
view loggedData =
let dialogConfig =
{ title = getMessage "AddPayment" loggedData.translations
, body = \view -> (
case view of
LoggedInView loggedIn -> addPaymentForm loggedData loggedIn.home
_ -> text ""
)
, confirm = getMessage "Confirm" loggedData.translations
, confirmMsg = \view -> (
case view of
LoggedInView loggedIn ->
case Form.getOutput loggedIn.home.addPayment of
Just data ->
Ok (Msg.UpdateLoggedIn <| LoggedInMsg.AddPayment data.name data.cost data.frequency)
Nothing ->
Err (Msg.UpdateLoggedIn <| LoggedInMsg.HomeMsg <| HomeMsg.AddPaymentMsg <| Form.Submit)
_ ->
Err (Msg.UpdateLoggedIn LoggedInMsg.NoOp)
)
, undo = getMessage "Undo" loggedData.translations
}
in button
[ class "addPayment"
, onClick (Msg.Dialog <| Dialog.Open dialogConfig)
]
[ text (getMessage "AddPayment" loggedData.translations) ]
addPaymentForm : LoggedData -> HomeModel.Model -> Html Msg
addPaymentForm loggedData { addPayment } =
let htmlMap = Html.map (Msg.UpdateLoggedIn << LoggedInMsg.HomeMsg << HomeMsg.AddPaymentMsg)
in Html.form
[ class "addPayment"
, onSubmitPrevDefault Msg.NoOp
]
[ Form.textInput loggedData.translations addPayment htmlMap "name"
, Form.textInput loggedData.translations addPayment htmlMap "cost"
, Form.radioInputs loggedData.translations addPayment htmlMap "frequency" [ toString Payment.Punctual, toString Payment.Monthly ]
]
|