blob: 2ac45913cb20b260f61aeebb5f5858fd08327bef (
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
|
module Dialog.Model exposing
( Model
, AddPayment
, init
, addPaymentInitial
)
import Date exposing (Date)
import View.Date as Date
import Form exposing (Form)
import Form.Field as Field exposing (Field)
import Form.Validate as Validate exposing (Validation)
import Validation
import Model.Payment as Payment
import Model.Translations exposing (Translations)
type alias Model =
{ addPayment : Form String AddPayment
}
type alias AddPayment =
{ name : String
, cost : Int
, date : Date
, frequency : Payment.Frequency
}
init : Model
init =
{ addPayment = Form.initial [] addPaymentValidation
}
addPaymentInitial : Translations -> Date -> Payment.Frequency -> List (String, Field)
addPaymentInitial translations date frequency =
[ ("date", Field.Text (Date.shortView date translations))
, ("frequency", Field.Radio (toString frequency))
]
addPaymentValidation : Validation String AddPayment
addPaymentValidation =
Validate.form4 AddPayment
(Validate.get "name" (Validate.string `Validate.andThen` (Validate.nonEmpty)))
(Validate.get "cost" (Validate.int `Validate.andThen` (Validate.minInt 1)))
(Validate.get "date" Validation.date)
(Validate.get "frequency" Payment.validateFrequency)
|