aboutsummaryrefslogtreecommitdiff
path: root/src/client/Dialog/Update.elm
diff options
context:
space:
mode:
authorJoris2017-03-26 21:10:42 +0200
committerJoris2017-03-26 21:10:42 +0200
commit1e47a7754ca38bd1a6c74765d8378caf68ce4619 (patch)
treed0d9238479dc2529a1b558bbbcde346e7e8c2935 /src/client/Dialog/Update.elm
parentc0ac16a713c4e53cf6af8e72a6d5f6b8ac5d6456 (diff)
downloadbudget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.tar.gz
budget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.tar.bz2
budget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.zip
Separate client and server watch
Diffstat (limited to 'src/client/Dialog/Update.elm')
-rw-r--r--src/client/Dialog/Update.elm74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/client/Dialog/Update.elm b/src/client/Dialog/Update.elm
new file mode 100644
index 0000000..3915548
--- /dev/null
+++ b/src/client/Dialog/Update.elm
@@ -0,0 +1,74 @@
+module Dialog.Update exposing
+ ( update
+ )
+
+import Dom exposing (Id)
+import Form exposing (Form)
+import Form.Field as Field
+import Task
+
+import Dialog.AddCategory.Model as AddCategory
+import Dialog.AddIncome.Model as AddIncome
+import Dialog.AddPayment.Model as AddPayment
+import Dialog.Model as Dialog
+import Dialog.Msg as Dialog
+
+import Model.Category exposing (Categories)
+import Model.PaymentCategory as PaymentCategory exposing (PaymentCategories)
+
+update : Dialog.Msg -> Dialog.Model -> (Dialog.Model, Cmd Dialog.Msg)
+update msg model =
+ case msg of
+
+ Dialog.NoOp ->
+ ( model
+ , Cmd.none
+ )
+
+ Dialog.Init inputId dialogMsg ->
+ update dialogMsg model
+ |> Tuple.mapSecond (\cmd -> Cmd.batch [cmd, inputFocus inputId])
+
+ Dialog.AddPaymentMsg categories paymentCategories formMsg ->
+ ( { model
+ | addPayment =
+ Form.update (AddPayment.validation categories) formMsg model.addPayment
+ |> updateCategory categories paymentCategories formMsg
+ }
+ , Cmd.none
+ )
+
+ Dialog.AddIncomeMsg formMsg ->
+ ( { model
+ | addIncome = Form.update AddIncome.validation formMsg model.addIncome
+ }
+ , Cmd.none
+ )
+
+ Dialog.AddCategoryMsg formMsg ->
+ ( { model
+ | addCategory = Form.update AddCategory.validation formMsg model.addCategory
+ }
+ , Cmd.none
+ )
+
+inputFocus : Id -> Cmd Dialog.Msg
+inputFocus id =
+ Dom.focus id
+ |> Task.map (always Dialog.NoOp)
+ |> Task.onError (\_ -> Task.succeed Dialog.NoOp)
+ |> Task.perform (always Dialog.NoOp)
+
+updateCategory : Categories -> PaymentCategories -> Form.Msg -> (Form String AddPayment.Model -> Form String AddPayment.Model)
+updateCategory categories paymentCategories formMsg =
+ case formMsg of
+ Form.Input "name" Form.Text (Field.String paymentName) ->
+ case PaymentCategory.search paymentName paymentCategories of
+ Just category ->
+ Form.update
+ (AddPayment.validation categories)
+ (Form.Input "category" Form.Text (Field.String <| toString category))
+ Nothing ->
+ identity
+ _ ->
+ identity