Makes the entire form work but it just looks janky
This commit is contained in:
@@ -7,9 +7,9 @@
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.ui :refer [base-page]]
|
||||
[auto-ap.ssr.utils :refer [html-response]]
|
||||
[bidi.bidi :as bidi]
|
||||
[cemerick.url :as url]
|
||||
[clojure.set :as set]
|
||||
[clojure.string :as str]
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]
|
||||
@@ -72,17 +72,59 @@
|
||||
|
||||
(defn search [{:keys [clients query-params]}]
|
||||
(let [valid-client-ids (set (map :db/id clients))
|
||||
name-like-ids (when (not-empty (get query-params "q"))
|
||||
name-like-ids (when (not-empty (get query-params "q"))
|
||||
(set (map (comp #(Long/parseLong %) :id)
|
||||
(solr/query solr/impl "clients"
|
||||
{"query" (format "_text_:(%s*)" (str/upper-case (solr/escape (get query-params "q"))))
|
||||
"fields" "id"
|
||||
"limit" 300}))))
|
||||
valid-clients (for [n name-like-ids
|
||||
:when (valid-client-ids n)]
|
||||
{"value" n "label" (pull-attr (dc/db conn) :client/name n)}
|
||||
valid-clients (for [n name-like-ids
|
||||
:when (valid-client-ids n)]
|
||||
{"value" n "label" (pull-attr (dc/db conn) :client/name n)}
|
||||
)]
|
||||
{:body (take 10 valid-clients)}))
|
||||
|
||||
(def search (wrap-json-response search))
|
||||
|
||||
|
||||
(defn bank-account-search [{:keys [route-params query-params clients]}]
|
||||
(let [valid-client-ids (set (map :db/id clients))
|
||||
selected-client-id (Long/parseLong (get route-params :db/id))
|
||||
bank-accounts (when (valid-client-ids selected-client-id)
|
||||
(->> (dc/pull (dc/db conn) [{:client/bank-accounts [:db/id :bank-account/name]}]
|
||||
selected-client-id)
|
||||
:client/bank-accounts
|
||||
(filter (fn [{:keys [bank-account/name]}]
|
||||
(str/includes? (str/upper-case name)
|
||||
(or (some-> query-params
|
||||
(get "q")
|
||||
str/upper-case)
|
||||
"__"))))
|
||||
(map (fn [{:keys [db/id bank-account/name]}]
|
||||
{"value" id "label" name}))))]
|
||||
{:body (take 10 bank-accounts)}))
|
||||
|
||||
(def bank-account-search (wrap-json-response bank-account-search))
|
||||
|
||||
(defn bank-account-typeahead* [{:keys [client-id name value]}]
|
||||
(if client-id
|
||||
(com/typeahead {:name name
|
||||
:class "w-96"
|
||||
:placeholder "Search..."
|
||||
:url (bidi/path-for ssr-routes/only-routes :bank-account-search
|
||||
:db/id client-id)
|
||||
:id (str "form-bank-account-search")
|
||||
:value value
|
||||
:value-fn (some-fn :db/id identity)
|
||||
:content-fn (some-fn :bank-account/name #(pull-attr (dc/db conn) :bank-account/name %))})
|
||||
[:span.text-xs.text-gray-500 "Please select a client before selecting a bank account."
|
||||
[:input {:type "hidden"
|
||||
:name name}]]))
|
||||
|
||||
(defn bank-account-typeahead [{:keys [query-params clients]}]
|
||||
(html-response (bank-account-typeahead* {:client-id ((set (map :db/id clients))
|
||||
(some->> "client-id"
|
||||
(get query-params)
|
||||
not-empty
|
||||
Long/parseLong))
|
||||
:name (get query-params "name")})))
|
||||
|
||||
Reference in New Issue
Block a user