From 3902900095d8cc0945d1e2b43049ddb11004a959 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Fri, 26 Apr 2019 14:50:13 -0700 Subject: [PATCH] the form is pretty good now. --- src/cljs/auto_ap/forms.cljs | 16 ++++++++++++ .../views/pages/transactions/form.cljs | 26 +++++++++---------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/cljs/auto_ap/forms.cljs b/src/cljs/auto_ap/forms.cljs index 798f8c63..9e16ee8d 100644 --- a/src/cljs/auto_ap/forms.cljs +++ b/src/cljs/auto_ap/forms.cljs @@ -59,6 +59,22 @@ db (partition 2 path-pairs)))) +(defn change-handler [form customize-fn] + (fn [db [_ & path-pairs]] + (println "CHA" form path-pairs) + (reduce + (fn [db [path value]] + (println "PATH" path "VALUE" value) + (let [updated (assoc-in db (into [::forms form :data] path) value)] + (reduce + (fn [updated [path value ]] + (println "custom PATH" path "custom VALUE" value) + (assoc-in updated (into [::forms form :data] path) value)) + updated + (partition 2 (customize-fn (get-in updated [::forms form :data]) path value))))) + db + (partition 2 path-pairs)))) + (re-frame/reg-event-db ::save-error (fn [db [_ form result]] diff --git a/src/cljs/auto_ap/views/pages/transactions/form.cljs b/src/cljs/auto_ap/views/pages/transactions/form.cljs index c3d9e114..20b60037 100644 --- a/src/cljs/auto_ap/views/pages/transactions/form.cljs +++ b/src/cljs/auto_ap/views/pages/transactions/form.cljs @@ -53,21 +53,19 @@ (assoc :potential-payment-matches potential-payment-matches) (update :accounts expense-accounts-field/from-graphql (:amount which) locations)))))) -(re-frame/reg-event-fx +(re-frame/reg-event-db ::changed - [(forms/in-form ::form)] - (fn [{{:keys [data]} :db} [_ field value]] - (let [locations @(re-frame/subscribe [::subs/locations-for-client (:id (:client data))])] - (if (and (= [:vendor] field) - value - (expense-accounts-field/can-replace-with-default? (:accounts data))) - {:dispatch [::forms/change ::form - field value - [:accounts] (expense-accounts-field/default-account (:accounts data) - @(re-frame/subscribe [::subs/vendor-default-account value]) - (:amount data) - locations)]} - {:dispatch [::forms/change ::form field value]})))) + (forms/change-handler ::form + (fn [data field value] + (let [locations @(re-frame/subscribe [::subs/locations-for-client (:id (:client data))])] + (if (and (= [:vendor] field) + value + (expense-accounts-field/can-replace-with-default? (:accounts data))) + [[:accounts] (expense-accounts-field/default-account (:accounts data) + @(re-frame/subscribe [::subs/vendor-default-account value]) + (:amount data) + locations)] + []))))) (re-frame/reg-event-fx ::saving