transaction insights dialog.
This commit is contained in:
@@ -55,7 +55,7 @@
|
||||
[(>= ?d ?starting)]]
|
||||
|
||||
:args [(dc/db conn)
|
||||
(iol-ion.query/recent-date 120)
|
||||
(iol-ion.query/recent-date 300)
|
||||
(map :db/id clients)
|
||||
|
||||
pull-expr]})
|
||||
@@ -234,43 +234,49 @@
|
||||
:hide-actions? true
|
||||
"_" (hiccup/raw "init transition opacity to 0 over 500ms then remove me")))))
|
||||
(defn explain [{:keys [identity session] {:keys [transaction-id]} :route-params}]
|
||||
(let [r (dc/pull (dc/db conn)
|
||||
(let [r (dc/pull (dc/db conn)
|
||||
pull-expr
|
||||
(Long/parseLong transaction-id))
|
||||
similar (pinecone-similarity-list transaction-id)]
|
||||
similar (pinecone-similarity-list transaction-id)]
|
||||
(modal-response
|
||||
(com/modal {}
|
||||
(com/modal-card {:style {:width "900px"}}
|
||||
[:div.flex [:div.p-2 "Similar Transactions"]]
|
||||
[:table.w-full
|
||||
[:thead
|
||||
[:tr
|
||||
[:td "Date"]
|
||||
[:td "Description"]
|
||||
[:td "Amount"]
|
||||
[:td "Vendor"]
|
||||
[:td "Account"]
|
||||
[:td "Score"]]]
|
||||
[:tbody
|
||||
[:tr
|
||||
[:th.text-left (some-> r :transaction/date coerce/to-date-time (atime/unparse-local atime/normal-date))]
|
||||
[:th.text-left (-> r :transaction/description-original)]
|
||||
[:th.text-left (if (> (-> r :transaction/amount) 0.0)
|
||||
[:div.tag.is-success.is-light (str "$" (Math/round (:transaction/amount r)))]
|
||||
[:div.tag.is-danger.is-light (str "$" (Math/round (:transaction/amount r)))])]
|
||||
[:th]
|
||||
[:th]
|
||||
[:th.text-left]]
|
||||
(take 10
|
||||
(for [{:keys [amount date description vendor-name numeric-code score]} similar]
|
||||
[:tr
|
||||
[:td (subs date 0 10)]
|
||||
[:td description]
|
||||
[:td (some->> amount double (format "$%.2f"))]
|
||||
[:td vendor-name]
|
||||
[:td numeric-code]
|
||||
[:td (format "%.1f%%" (* 100 (double score)))]]))]]
|
||||
[:div])))))
|
||||
(com/modal {}
|
||||
(com/modal-card {:style {:width "900px"}}
|
||||
[:div.flex [:div.p-2 "Similar Transactions"]]
|
||||
(com/data-grid {:headers [(com/data-grid-header {:name "Date"
|
||||
:key "date"})
|
||||
(com/data-grid-header {:name "Description"
|
||||
:key "description"})
|
||||
(com/data-grid-header {:name "Amount"
|
||||
:key "amount"})
|
||||
(com/data-grid-header {:name "Vendor"
|
||||
:key "vendor"})
|
||||
(com/data-grid-header {:name "Account"
|
||||
:key "account"})
|
||||
(com/data-grid-header {:name "Score"
|
||||
:key "score"})]}
|
||||
|
||||
(com/data-grid-row {:class "bg-primary-200"}
|
||||
(com/data-grid-cell {:class "text-left font-bold"} (some-> r :transaction/date coerce/to-date-time (atime/unparse-local atime/normal-date)))
|
||||
(com/data-grid-cell {:class "text-left font-bold"} (-> r :transaction/description-original) )
|
||||
(com/data-grid-cell {:class "font-bold"} (if (> (-> r :transaction/amount) 0.0)
|
||||
[:div.tag.is-success.is-light (str "$" (Math/round (:transaction/amount r)))]
|
||||
[:div.tag.is-danger.is-light (str "$" (Math/round (:transaction/amount r)))]))
|
||||
(com/data-grid-cell {})
|
||||
(com/data-grid-cell {})
|
||||
(com/data-grid-cell {}))
|
||||
|
||||
(com/data-grid-row {}
|
||||
(take 10
|
||||
(for [{:keys [amount date description vendor-name numeric-code score]} similar]
|
||||
(com/data-grid-row
|
||||
{}
|
||||
(com/data-grid-cell {:class "text-left"} (subs date 0 10))
|
||||
(com/data-grid-cell {:class "text-left"} description )
|
||||
(com/data-grid-cell {} (some->> amount double (format "$%.2f")))
|
||||
(com/data-grid-cell {} vendor-name)
|
||||
(com/data-grid-cell {} numeric-code)
|
||||
(com/data-grid-cell {} (format "%.1f%%" (* 100 (double score)))))))))
|
||||
[:div])))))
|
||||
|
||||
(defn transaction-rows* [{:keys [clients identity after]}]
|
||||
(let [recommendations (transaction-recommendations identity clients :after after)]
|
||||
|
||||
Reference in New Issue
Block a user