incorporating UI feedback

This commit is contained in:
Bryce Covert
2019-08-22 07:34:17 -07:00
parent c9fab1de9f
commit c88840c719
2 changed files with 50 additions and 32 deletions

View File

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

View File

@@ -21,7 +21,7 @@
::report ::report
:comparable-balance-sheet-accounts :comparable-balance-sheet-accounts
(map :location))) (map :location)))
(filter #(not= "A" %)) #_(filter #(not= "A" %))
(filter identity) (filter identity)
(set) (set)