incorporating UI feedback
This commit is contained in:
@@ -63,6 +63,7 @@
|
||||
existing-set (set (map :external-id (:existing (:import-ledger result))))]
|
||||
|
||||
{:db (-> (forms/save-succeeded db ::form )
|
||||
(assoc-in [::forms/forms ::form :result] {:errors error-set :success successful-set :existing existing-set})
|
||||
(update-in [::forms/forms ::form :data :line-items]
|
||||
(fn [lis]
|
||||
(mapv
|
||||
@@ -107,6 +108,7 @@
|
||||
|
||||
(defn textarea->table [{:keys [headings value on-change read-only-headings]} & children]
|
||||
(let [text-form (r/atom "")
|
||||
include-headers (r/atom false)
|
||||
table-form (r/atom nil)]
|
||||
(fn [{:keys [headings value on-change]}]
|
||||
[:form.form
|
||||
@@ -139,48 +141,64 @@
|
||||
(get row k)]))]))]
|
||||
children]
|
||||
[:div
|
||||
[:h1.title.is-2 "External Import"]
|
||||
|
||||
[:div.field
|
||||
[:p.help "Paste manual ledger entries below."]
|
||||
[:textarea.textarea {:on-change #(reset! text-form (.. % -target -value))} @text-form]]
|
||||
[:button.button.is-primary.is-pulled-right.is-large {:on-click (fn [e]
|
||||
(.preventDefault e)
|
||||
(on-change
|
||||
(->> (str/split @text-form #"\n")
|
||||
(drop 1)
|
||||
(mapv #(->> (str/split % "\t")
|
||||
(map (fn [[_ k] v] [k v]) headings)
|
||||
(into {}))))))}
|
||||
"Evaluate"]])])))
|
||||
[:div.field
|
||||
[:label.checkbox
|
||||
[:input {:type "checkbox" :checked @include-headers :on-change #(swap! include-headers (fn [x] (not x)))}
|
||||
]
|
||||
" Contains Header Row"]]
|
||||
[:button.button.is-medium {:on-click (fn [e]
|
||||
(.preventDefault e)
|
||||
(on-change
|
||||
(cond->> (str/split @text-form #"\n")
|
||||
@include-headers (drop 1)
|
||||
true (mapv #(->> (str/split % "\t")
|
||||
(map (fn [[_ k] v] [k v]) headings)
|
||||
(into {}))))))}
|
||||
"Parse"]
|
||||
])])))
|
||||
|
||||
(def balance-sheet-content
|
||||
(with-meta
|
||||
(fn []
|
||||
(let [current-client @(re-frame/subscribe [::subs/client])
|
||||
user @(re-frame/subscribe [::subs/user])
|
||||
{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::form]) ]
|
||||
(if @(re-frame/subscribe [::forms/is-loading? ::form])
|
||||
[:div [:i.icon.fa.fa-spin.fa-spinner]]
|
||||
[:div
|
||||
{:keys [data result active? error id]} @(re-frame/subscribe [::forms/form ::form]) ]
|
||||
[:div
|
||||
[:div.level
|
||||
[:div.level-left
|
||||
[:h1.title "Eternal Import"]]
|
||||
[:div.level-right
|
||||
[:button.button.is-primary.is-pulled-right.is-large {:disabled (not data)
|
||||
:on-click (dispatch-event [::importing])} "Import"]]]
|
||||
(when result
|
||||
[:div.notification
|
||||
"Imported with " (count (:errors result)) " errors, " (count (:success result)) " successful."])
|
||||
(if @(re-frame/subscribe [::forms/is-loading? ::form])
|
||||
[:div [:i.icon.fa.fa-spin.fa-spinner]]
|
||||
[:div
|
||||
|
||||
[bind-field
|
||||
[textarea->table {:type "textarea->table"
|
||||
:field [:line-items]
|
||||
:headings [["Id" :id]
|
||||
["Client" :client-code]
|
||||
["Source" :source]
|
||||
["Vendor" :vendor-name]
|
||||
["Date" :date]
|
||||
["Account" :account-identifier]
|
||||
["Location" :location]
|
||||
["Debit" :debit]
|
||||
["Credit" :credit]]
|
||||
:read-only-headings
|
||||
[["status" :status]]
|
||||
[bind-field
|
||||
[textarea->table {:type "textarea->table"
|
||||
:field [:line-items]
|
||||
:headings [["Id" :id]
|
||||
["Client" :client-code]
|
||||
["Source" :source]
|
||||
["Vendor" :vendor-name]
|
||||
["Date" :date]
|
||||
["Account" :account-identifier]
|
||||
["Location" :location]
|
||||
["Debit" :debit]
|
||||
["Credit" :credit]]
|
||||
:read-only-headings
|
||||
[["status" :status]]
|
||||
|
||||
:event [::forms/change ::form]
|
||||
:subscription data}
|
||||
[:button.button.is-primary.is-pulled-right.is-large {:on-click (dispatch-event [::importing])} "Import"]]]])))
|
||||
:event [::forms/change ::form]
|
||||
:subscription data}
|
||||
]]])]))
|
||||
{}))
|
||||
|
||||
(defn external-import-page []
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
::report
|
||||
:comparable-balance-sheet-accounts
|
||||
(map :location)))
|
||||
(filter #(not= "A" %))
|
||||
#_(filter #(not= "A" %))
|
||||
(filter identity)
|
||||
(set)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user