diff --git a/src/clj/auto_ap/ssr/grid_page_helper.clj b/src/clj/auto_ap/ssr/grid_page_helper.clj index e104e602..5f62001a 100644 --- a/src/clj/auto_ap/ssr/grid_page_helper.clj +++ b/src/clj/auto_ap/ssr/grid_page_helper.clj @@ -64,10 +64,7 @@ per-page (or per-page 30) [entities total] ((:fetch-page grid-spec) user - {:start start - :per-page per-page - :clients clients - :sort sort})] + params)] (com/data-grid-card {:id (:id grid-spec) :title (:title grid-spec) :route (:route grid-spec) @@ -162,7 +159,7 @@ (defn params->query-string [q] (-> q - (dissoc :client :session :client-selection :clients) + (dissoc :client :session :client-selection :clients :query-params) (update :sort sort->query) (url/map->query))) @@ -177,6 +174,7 @@ hx-sort (assoc :sort (parse-sort grid-spec hx-sort)) q-sort (assoc :sort (parse-sort grid-spec q-sort)) (not-empty q-toggle-sort) (update :sort #(toggle-sort grid-spec % q-toggle-sort) ) + (seq query-params) (assoc :query-params query-params) (:session request) (assoc :session (:session request)) (:client-selection (:session request)) (assoc :client-selection (:client-selection (:session request))) (:clients request) (assoc :clients (:clients request)) @@ -193,15 +191,19 @@ :headers {"hx-push-url" (str "?" query-string)}))) (defn page [grid-spec {:keys [identity] :as request}] - (base-page - request - (com/page {:nav (:nav grid-spec) - :client-selection (:client-selection (:session request)) - :clients (:clients request) - :client (:client request) - :identity (:identity request)} - (apply com/breadcrumbs {} (:breadcrumbs grid-spec)) - (table* grid-spec - identity - (extract-params grid-spec request))) - (:title grid-spec))) + (let [params (extract-params grid-spec request)] + (base-page + request + (com/page {:nav (:nav grid-spec) + :page-specific (when-let [page-specific-nav (:page-specific-nav grid-spec)] + (page-specific-nav params)) + :client-selection (:client-selection (:session request)) + :clients (:clients request) + :client (:client request) + :identity (:identity request)} + (apply com/breadcrumbs {} (:breadcrumbs grid-spec)) + (table* grid-spec + identity + params + )) + (:title grid-spec)))) diff --git a/src/clj/auto_ap/ssr/pos/sales_orders.clj b/src/clj/auto_ap/ssr/pos/sales_orders.clj index 086b04c7..2276cd48 100644 --- a/src/clj/auto_ap/ssr/pos/sales_orders.clj +++ b/src/clj/auto_ap/ssr/pos/sales_orders.clj @@ -11,13 +11,44 @@ [bidi.bidi :as bidi] [clj-time.coerce :as coerce])) -(def grid-page {:id "sales-table" - :nav (com/main-aside-nav) - :id-fn :db/id - :fetch-page (fn [user args] - (d-sales/get-graphql (-> args - (assoc :date-range {:start (coerce/to-date-time #inst "2023-05-01")})))) - :breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes +(defn filters [params] + [:form {"hx-trigger" "change delay:1000ms" + "hx-get" (bidi/path-for ssr-routes/only-routes + :pos-sales-table) + "hx-target" "#sales-table"} + [:div.space-y-6 + [:div + (com/field {:label "Starting"} + (com/date-input {:name "start-date" + :value (:start-date params) + :placeholder "Date"}))] + [:div + (com/field {:label "Ending"} + (com/date-input {:name "end-date" + :value nil + :placeholder "Date"}))] + [:div + (com/field {:label "Total"} + (com/money-input {:name "total-gte" + :value nil + :placeholder "Total >="}))]]]) + +(def grid-page {:id "sales-table" + :nav (com/main-aside-nav) + :page-specific-nav filters + :id-fn :db/id + :fetch-page (fn [user args] + (d-sales/get-graphql (-> args + (assoc :date-range {:start (some-> args + :query-params + (get "start-date") + (atime/parse atime/iso-date)) + :end (some-> args + :query-params + (get "end-date") + (atime/parse atime/iso-date))} + :total-gte (some-> args :query-params (get "total-gte") (#(if (string? %) (Double/parseDouble %) (double %)))))))) + :breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes :company)} "POS"] @@ -40,7 +71,7 @@ :request-method :delete)) :hx-target "closest tr"} svg/trash))])) - :headers [ + :headers [ {:key "client" :name "Client" :sort-key "client"