Makes the entire form work but it just looks janky

This commit is contained in:
2023-10-19 22:11:19 -07:00
parent 6059e8a4ca
commit 6863684d9e
21 changed files with 1334 additions and 181 deletions

View File

@@ -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")})))