From 4f1b1bcca2874eaec3b83eb4f61a5fe02d0c5b92 Mon Sep 17 00:00:00 2001 From: Bryce Date: Wed, 1 May 2024 12:54:26 -0700 Subject: [PATCH] Accounts can filter by type --- src/clj/auto_ap/ssr/admin/accounts.clj | 44 ++++++++++++++++++++------ 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/clj/auto_ap/ssr/admin/accounts.clj b/src/clj/auto_ap/ssr/admin/accounts.clj index c903e60a..4bf448f5 100644 --- a/src/clj/auto_ap/ssr/admin/accounts.clj +++ b/src/clj/auto_ap/ssr/admin/accounts.clj @@ -64,7 +64,26 @@ :class "hot-filter" :value (:code (:parsed-query-params request)) :placeholder "11101" - :size :small}))]]) + :size :small})) + (com/field {:label "Type"} + (com/radio-card {:size :small + :name "type" + :options [{:value "" + :content "All"} + {:value "dividend" + :content "Dividend"} + {:value "asset" + :content "Asset"} + {:value "equity" + :content "Equity"} + {:value "liability" + :content "Liability"} + {:value "expense" + :content "Expense"} + {:value "revenue" + :content "Revenue"} + {:value "none" + :content "None"}]}))]]) (def default-read '[:db/id :account/code @@ -82,9 +101,9 @@ (defn fetch-ids [db request] (let [query-params (:parsed-query-params request) query (cond-> {:query {:find [] - :in '[$ ] + :in '[$] :where '[]} - :args [db ]} + :args [db]} (:sort query-params) (add-sorter-fields {"name" ['[?e :account/name ?n] '[(clojure.string/upper-case ?n) ?sort-name]] "code" ['[(get-else $ ?e :account/numeric-code 0) ?sort-code]] @@ -96,17 +115,24 @@ (merge-query {:query {:find [] :in ['?ns] :where ['[?e :account/name ?an] - '[(clojure.string/upper-case ?an) ?upper-an] - '[(clojure.string/includes? ?upper-an ?ns)]]} + '[(clojure.string/upper-case ?an) ?upper-an] + '[(clojure.string/includes? ?upper-an ?ns)]]} :args [(str/upper-case (:name query-params))]}) - + (some->> query-params :code) (merge-query {:query {:find [] :in ['?nc] - :where ['[?e :account/numeric-code ?nc] - ]} + :where ['[?e :account/numeric-code ?nc]]} :args [(:code query-params)]}) - + + (some->> query-params :type) + (merge-query {:query {:find [] + :in ['?rir] + :where ['[?e :account/type ?r] + '[?r :db/ident ?ri] + '[(name ?ri) ?rir] ]} + :args [(some->> query-params :type)]}) + true (merge-query {:query {:find ['?sort-default '?e] :where ['[?e :account/numeric-code ?un]