aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Home/Model.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/LoggedIn/Home/Model.elm')
-rw-r--r--src/client/elm/LoggedIn/Home/Model.elm43
1 files changed, 34 insertions, 9 deletions
diff --git a/src/client/elm/LoggedIn/Home/Model.elm b/src/client/elm/LoggedIn/Home/Model.elm
index 6b29d8c..e802828 100644
--- a/src/client/elm/LoggedIn/Home/Model.elm
+++ b/src/client/elm/LoggedIn/Home/Model.elm
@@ -2,39 +2,64 @@ module LoggedIn.Home.Model exposing
( Model
, Search
, init
+ , addPaymentInitial
)
import Form exposing (Form)
import Form.Validate as Validate exposing (Validation)
+import Form.Field as Field exposing (Field)
import Model.User exposing (Users, UserId)
import Model.Payment exposing (PaymentId, Payments, Frequency(..))
import Model.Payer exposing (Payers)
-import LoggedIn.Home.AddPayment.Model as AddPaymentModel
-
type alias Model =
- { add : AddPaymentModel.Model
- , paymentEdition : Maybe PaymentId
+ { paymentEdition : Maybe PaymentId
, currentPage : Int
, monthlyDetail : Bool
, search : Form String Search
+ , addPayment : Form String AddPayment
}
type alias Search =
{ searchText : Maybe String
}
+type alias AddPayment =
+ { name : String
+ , cost : Int
+ , frequency : Frequency
+ }
+
init : Model
init =
- { add = AddPaymentModel.init Punctual
- , paymentEdition = Nothing
+ { paymentEdition = Nothing
, currentPage = 1
, monthlyDetail = False
- , search = Form.initial [] validate
+ , search = Form.initial [] searchValidation
+ , addPayment = Form.initial addPaymentInitial addPaymentValidation
}
-validate : Validation String Search
-validate =
+searchValidation : Validation String Search
+searchValidation =
Validate.form1 Search
(Validate.get "searchText" (Validate.maybe Validate.string))
+
+addPaymentInitial : List (String, Field)
+addPaymentInitial = [ ("frequency", Field.Radio (toString Punctual)) ]
+
+addPaymentValidation : Validation String AddPayment
+addPaymentValidation =
+ Validate.form3 AddPayment
+ (Validate.get "name" (Validate.string `Validate.andThen` (Validate.nonEmpty)))
+ (Validate.get "cost" (Validate.int `Validate.andThen` (Validate.minInt 1)))
+ (Validate.get "frequency" validateFrequency)
+
+validateFrequency : Validation String Frequency
+validateFrequency =
+ Validate.customValidation Validate.string (\str ->
+ case str of
+ "Punctual" -> Ok Punctual
+ "Monthly" -> Ok Monthly
+ _ -> Err (Validate.customError "InvalidFrequency")
+ )