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))))]
{: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 []

View File

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