cleans up grids
This commit is contained in:
@@ -206,49 +206,6 @@
|
||||
|
||||
|
||||
|
||||
(defn default-unparse-query-params [query-params]
|
||||
(reduce
|
||||
(fn [query-params [k value]]
|
||||
(assoc query-params k
|
||||
(cond (= k :sort)
|
||||
(sort->query value)
|
||||
|
||||
(instance? org.joda.time.base.AbstractInstant value)
|
||||
(atime/unparse-local value atime/normal-date)
|
||||
|
||||
(instance? Long value)
|
||||
(str value)
|
||||
|
||||
(instance? Double value)
|
||||
(format "%.2f" value)
|
||||
|
||||
(instance? Float value)
|
||||
(format "%.2f" value)
|
||||
|
||||
(keyword? value)
|
||||
(name value)
|
||||
|
||||
(and (map? value)
|
||||
(:db/id value))
|
||||
(:db/id value)
|
||||
|
||||
:else
|
||||
value)))
|
||||
query-params
|
||||
query-params))
|
||||
|
||||
(defn default-parse-query-params [grid-spec]
|
||||
(comp
|
||||
(query-params/apply-remove-sort)
|
||||
(query-params/apply-toggle-sort grid-spec)
|
||||
(query-params/apply-date-range :date-range :start-date :end-date)
|
||||
(query-params/parse-key :exact-match-id query-params/parse-long)
|
||||
(query-params/parse-key :sort #(query-params/parse-sort grid-spec %))
|
||||
(query-params/parse-key :per-page query-params/parse-long)
|
||||
(query-params/parse-key :start query-params/parse-long)
|
||||
(query-params/parse-key :start-date query-params/parse-date)
|
||||
(query-params/parse-key :end-date query-params/parse-date)))
|
||||
|
||||
(defn wrap-trim-client-ids [handler]
|
||||
(fn trim-client-ids [request]
|
||||
(let [valid-clients (extract-client-ids (:clients request)
|
||||
@@ -262,36 +219,30 @@
|
||||
(handler (assoc request :trimmed-clients valid-clients)))))
|
||||
|
||||
|
||||
(defn table-route [grid-spec & {:keys [parse-query-params? push-url?] :or {parse-query-params? true push-url? true}}]
|
||||
(defn table-route [grid-spec & {:keys [push-url?] :or { push-url? true}}]
|
||||
(cond-> (fn table [{:keys [identity] :as request}]
|
||||
|
||||
(println "SORT IS")
|
||||
(clojure.pprint/pprint (sort->query (:sort (:query-params request))))
|
||||
(let [unparse-query-params (or (:unparse-query grid-spec)
|
||||
default-unparse-query-params)]
|
||||
(html-response (table*
|
||||
grid-spec
|
||||
identity
|
||||
request)
|
||||
:headers (when push-url?
|
||||
{"hx-push-url" (str "?" (url/map->query
|
||||
(dissoc (if (:query-schema grid-spec)
|
||||
(update (filter-vals #(not (nil? %))
|
||||
(m/encode (:query-schema grid-spec)
|
||||
(:query-params request)
|
||||
main-transformer))
|
||||
"sort" sort->query)
|
||||
(unparse-query-params (:parsed-query-params request)))
|
||||
"selected" "all-selected")))}) ;; TODO seems hacky to special case selected and all-selected here
|
||||
:oob (when-let [oob-render (:oob-render grid-spec)]
|
||||
(oob-render request)))))
|
||||
true (wrap-trim-client-ids)
|
||||
parse-query-params? (query-params/wrap-parse-query-params (or (:parse-query-params grid-spec)
|
||||
(default-parse-query-params grid-spec)))
|
||||
true (wrap-secure)
|
||||
true (wrap-client-redirect-unauthenticated)))
|
||||
(html-response (table*
|
||||
grid-spec
|
||||
identity
|
||||
request)
|
||||
:headers (when push-url?
|
||||
{"hx-push-url" (str "?" (url/map->query
|
||||
(dissoc (if (:query-schema grid-spec)
|
||||
(update (filter-vals #(not (nil? %))
|
||||
(m/encode (:query-schema grid-spec)
|
||||
(:query-params request)
|
||||
main-transformer))
|
||||
"sort" sort->query)
|
||||
{})
|
||||
"selected" "all-selected")))}) ;; TODO seems hacky to special case selected and all-selected here
|
||||
:oob (when-let [oob-render (:oob-render grid-spec)]
|
||||
(oob-render request))))
|
||||
true (wrap-trim-client-ids)
|
||||
true (wrap-secure)
|
||||
true (wrap-client-redirect-unauthenticated)))
|
||||
|
||||
(defn csv-route [{:keys [fetch-page headers page->csv-entities]} & {:keys [parse-query-params?] :or {parse-query-params? true}}]
|
||||
(defn csv-route [{:keys [fetch-page headers page->csv-entities]} & {:keys []}]
|
||||
(cond-> (fn csv-route [{:keys [identity] :as request}]
|
||||
|
||||
(let [page-results (fetch-page (assoc-in request [:query-params :per-page] Long/MAX_VALUE))
|
||||
@@ -314,7 +265,7 @@
|
||||
true (wrap-secure)
|
||||
true (wrap-client-redirect-unauthenticated)))
|
||||
|
||||
(defn page-route [grid-spec & {:keys [parse-query-params?] :or {parse-query-params? true}}]
|
||||
(defn page-route [grid-spec & {:keys []}]
|
||||
(cond-> (fn page [{:keys [identity] :as request}]
|
||||
(alog/info ::page-route
|
||||
:pqp (:parsed-query-params request)
|
||||
@@ -346,8 +297,6 @@
|
||||
(:title grid-spec)
|
||||
((:title grid-spec) request))))
|
||||
true (wrap-trim-client-ids)
|
||||
parse-query-params? (query-params/wrap-parse-query-params (or (:parse-query-params grid-spec)
|
||||
(default-parse-query-params grid-spec)))
|
||||
true (wrap-secure)
|
||||
true (wrap-client-redirect-unauthenticated)))
|
||||
|
||||
@@ -376,14 +325,10 @@
|
||||
[:=>
|
||||
[:cat map?]
|
||||
nat-int?]]
|
||||
[:query-schema :any]
|
||||
[:fetch-page [:=>
|
||||
[:cat request-spec]
|
||||
[:cat [:vector entity-spec] :int]]]
|
||||
[:parse-query-params
|
||||
{:optional true}
|
||||
[:=>
|
||||
[:cat [:map-of :keyword :any]]
|
||||
[:map-of :keyword :any]]]
|
||||
[:above-grid
|
||||
{:optional true
|
||||
:default (fn [request])}
|
||||
|
||||
Reference in New Issue
Block a user