better warning behavior.A
This commit is contained in:
@@ -18,20 +18,27 @@
|
||||
(mapv #(.toLowerCase (str/join "" %))
|
||||
(partition len 1 text)))
|
||||
|
||||
(defn partial-matches-vendor? [vendor vendors]
|
||||
(when (> (count (:name vendor)) 5)
|
||||
(let [text (.toLowerCase (:name vendor))]
|
||||
(->> vendors
|
||||
(filter #(not= (:id %) (:id vendor)))
|
||||
(map :name)
|
||||
(mapcat
|
||||
(fn [v] (mapv
|
||||
(fn [n] [v (jaro-winkler text n ) n text])
|
||||
(ngrams v (count text)))))
|
||||
(filter #(> (second %) 0.9))
|
||||
#_(map (fn [x] (doto x println)))
|
||||
(map first)
|
||||
first))))
|
||||
(re-frame/reg-event-db
|
||||
::settled
|
||||
[(forms/in-form ::vendor-form)]
|
||||
(fn [{:keys [data] :as form} _]
|
||||
(let [vendors @(re-frame/subscribe [::subs/vendors])
|
||||
text (.toLowerCase (:name data))
|
||||
matching-vendor (when (> (count text) 5)
|
||||
(->> vendors
|
||||
(filter #(not= (:id %) (:id data)))
|
||||
(map :name)
|
||||
(mapcat
|
||||
(fn [v] (mapv
|
||||
(fn [n] [v (jaro-winkler text n ) n text])
|
||||
(ngrams v (count text)))))
|
||||
(filter #(> (second %) 0.9))
|
||||
#_(map (fn [x] (doto x println)))
|
||||
(map first)
|
||||
first))]
|
||||
(if matching-vendor
|
||||
(assoc form :warning (str "Are you sure you don't mean " matching-vendor "?"))
|
||||
(dissoc form :warning)))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::removed-override
|
||||
@@ -76,6 +83,9 @@
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::changed
|
||||
[(forms/settles {:key ::vendor-form
|
||||
:time 500
|
||||
:event [::settled]})]
|
||||
(forms/change-handler
|
||||
::vendor-form
|
||||
(fn [data field value]
|
||||
@@ -308,7 +318,7 @@
|
||||
(defn vendor-dialog [{:keys [save-event] }]
|
||||
(let [clients @(re-frame/subscribe [::subs/clients])
|
||||
all-vendors @(re-frame/subscribe [::subs/vendors])
|
||||
{:keys [data error ] :as f} @(re-frame/subscribe [::forms/form ::vendor-form])
|
||||
{:keys [data error warning] :as f} @(re-frame/subscribe [::forms/form ::vendor-form])
|
||||
change-event [::changed]]
|
||||
[action-modal {:id ::dialog
|
||||
:class ["wide"]
|
||||
@@ -319,9 +329,7 @@
|
||||
[:span.icon.has-text-danger
|
||||
[:i.fa.fa-exclamation-triangle]])]
|
||||
:status-from ::vendor-form
|
||||
#_#_:warning
|
||||
(when-let [vendor (partial-matches-vendor? data all-vendors)]
|
||||
(str "Are you sure you don't mean " vendor "?"))
|
||||
:warning warning
|
||||
:action-text "Save"
|
||||
:save-event [::save]
|
||||
:can-submit? (s/valid? ::entity/vendor data)}
|
||||
|
||||
Reference in New Issue
Block a user