Fix toggle-amount-mode: set up form cursor context for grid re-render
The toggle-amount-mode handler was failing because account-grid-body* uses fc/cursor-map which requires the form cursor context to be set up. Added manual cursor binding in toggle-amount-mode to create a cursor pointing to the transaction/accounts vector and bind it to fc/*current* before rendering the grid.
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
[auto-ap.ssr.grid-page-helper :as helper]
|
[auto-ap.ssr.grid-page-helper :as helper]
|
||||||
[auto-ap.ssr.transaction.common :refer [grid-page]]
|
[auto-ap.ssr.transaction.common :refer [grid-page]]
|
||||||
[auto-ap.ssr.components.multi-modal :as mm]
|
[auto-ap.ssr.components.multi-modal :as mm]
|
||||||
|
[auto-ap.cursor :as cursor]
|
||||||
[auto-ap.ssr.form-cursor :as fc]
|
[auto-ap.ssr.form-cursor :as fc]
|
||||||
[auto-ap.ssr.hx :as hx]
|
[auto-ap.ssr.hx :as hx]
|
||||||
[auto-ap.ssr.svg :as svg]
|
[auto-ap.ssr.svg :as svg]
|
||||||
@@ -297,19 +298,19 @@
|
|||||||
(defn account-grid-body* [request]
|
(defn account-grid-body* [request]
|
||||||
(let [snapshot (-> request :multi-form-state :snapshot)
|
(let [snapshot (-> request :multi-form-state :snapshot)
|
||||||
amount-mode (or (:amount-mode snapshot) "$")
|
amount-mode (or (:amount-mode snapshot) "$")
|
||||||
total (Math/abs (or (:transaction/amount snapshot) 0.0))]
|
total (Math/abs (or (:transaction/amount snapshot) 0.0))]
|
||||||
(com/data-grid {:headers [(com/data-grid-header {} "Account")
|
(com/data-grid {:headers [(com/data-grid-header {} "Account")
|
||||||
(com/data-grid-header {:class "w-32"} "Location")
|
(com/data-grid-header {:class "w-32"} "Location")
|
||||||
(com/data-grid-header {:class "w-16"}
|
(com/data-grid-header {:class "w-16"}
|
||||||
(com/radio-card {:options [{:value "$" :content "$"}
|
(com/radio-card {:options [{:value "$" :content "$"}
|
||||||
{:value "%" :content "%"}]
|
{:value "%" :content "%"}]
|
||||||
:value amount-mode
|
:value amount-mode
|
||||||
:name "step-params[amount-mode]"
|
:name "step-params[amount-mode]"
|
||||||
:orientation :horizontal
|
:orientation :horizontal
|
||||||
:hx-post (bidi/path-for ssr-routes/only-routes ::route/toggle-amount-mode)
|
:hx-post (bidi/path-for ssr-routes/only-routes ::route/toggle-amount-mode)
|
||||||
:hx-target "#account-grid-body"
|
:hx-target "#account-grid-body"
|
||||||
:hx-swap "outerHTML"
|
:hx-swap "outerHTML"
|
||||||
:hx-include "closest form"}))
|
:hx-include "closest form"}))
|
||||||
(com/data-grid-header {:class "w-16"})]}
|
(com/data-grid-header {:class "w-16"})]}
|
||||||
(fc/cursor-map #(transaction-account-row* {:value %
|
(fc/cursor-map #(transaction-account-row* {:value %
|
||||||
:client-id (-> request :entity :transaction/client :db/id)
|
:client-id (-> request :entity :transaction/client :db/id)
|
||||||
@@ -358,13 +359,19 @@
|
|||||||
(let [snapshot (-> request :multi-form-state :snapshot)
|
(let [snapshot (-> request :multi-form-state :snapshot)
|
||||||
old-mode (or (:amount-mode snapshot) "$")
|
old-mode (or (:amount-mode snapshot) "$")
|
||||||
new-mode (or (get-in request [:form-params :amount-mode]) "$")
|
new-mode (or (get-in request [:form-params :amount-mode]) "$")
|
||||||
total (Math/abs (:transaction/amount snapshot))
|
total (Math/abs (or (:transaction/amount snapshot) 0.0))
|
||||||
accounts (convert-accounts-mode (:transaction/accounts snapshot) old-mode new-mode total)]
|
accounts (convert-accounts-mode (:transaction/accounts snapshot) old-mode new-mode total)
|
||||||
(html-response
|
updated-request (-> request
|
||||||
[:div#account-grid-body
|
(assoc-in [:multi-form-state :snapshot :transaction/accounts] accounts)
|
||||||
(account-grid-body* (-> request
|
(assoc-in [:multi-form-state :snapshot :amount-mode] new-mode))
|
||||||
(assoc-in [:multi-form-state :snapshot :transaction/accounts] accounts)
|
mfs-cursor (cursor/cursor (:multi-form-state updated-request))
|
||||||
(assoc-in [:multi-form-state :snapshot :amount-mode] new-mode)))])))
|
accounts-cursor (get (get (get mfs-cursor :snapshot) :step-params) :transaction/accounts)]
|
||||||
|
(binding [fc/*form-data* (:multi-form-state updated-request)
|
||||||
|
fc/*form-errors* {}
|
||||||
|
fc/*current* accounts-cursor]
|
||||||
|
(html-response
|
||||||
|
[:div#account-grid-body
|
||||||
|
(account-grid-body* updated-request)]))))
|
||||||
|
|
||||||
(defrecord BasicDetailsStep [linear-wizard]
|
(defrecord BasicDetailsStep [linear-wizard]
|
||||||
mm/ModalWizardStep
|
mm/ModalWizardStep
|
||||||
@@ -1316,12 +1323,12 @@
|
|||||||
(fn render [cursor request]
|
(fn render [cursor request]
|
||||||
(let [snapshot (-> request :multi-form-state :snapshot)
|
(let [snapshot (-> request :multi-form-state :snapshot)
|
||||||
amount-mode (or (:amount-mode snapshot) "$")
|
amount-mode (or (:amount-mode snapshot) "$")
|
||||||
total (Math/abs (or (:transaction/amount snapshot) 0.0))]
|
total (Math/abs (or (:transaction/amount snapshot) 0.0))]
|
||||||
(transaction-account-row*
|
(transaction-account-row*
|
||||||
{:value cursor
|
{:value cursor
|
||||||
:client-id (:client-id (:query-params request))
|
:client-id (:client-id (:query-params request))
|
||||||
:amount-mode amount-mode
|
:amount-mode amount-mode
|
||||||
:total total})))
|
:total total})))
|
||||||
(fn build-new-row [base _]
|
(fn build-new-row [base _]
|
||||||
(assoc base :transaction-account/location "Shared")))
|
(assoc base :transaction-account/location "Shared")))
|
||||||
(wrap-schema-enforce :query-schema [:map
|
(wrap-schema-enforce :query-schema [:map
|
||||||
|
|||||||
Reference in New Issue
Block a user