From 4ce4de89a5400b0d8b9cddaa2922901a081fdaaa Mon Sep 17 00:00:00 2001 From: Joris Date: Thu, 23 Jun 2016 23:43:23 +0200 Subject: Use a dialog to add a payment --- src/client/elm/LoggedIn/Home/Model.elm | 43 +++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'src/client/elm/LoggedIn/Home/Model.elm') 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") + ) -- cgit v1.2.3