fixed sorting.

This commit is contained in:
Bryce Covert
2019-05-04 08:40:52 -07:00
parent d07367dc19
commit f8d8872131
3 changed files with 35 additions and 19 deletions

View File

@@ -762,6 +762,7 @@
(defn add-sorter-field [q sort-map args] (defn add-sorter-field [q sort-map args]
(println sort-map)
(merge-query q (merge-query q
{:query {:find ['?sorter] {:query {:find ['?sorter]
:where (sort-map :where (sort-map
@@ -774,9 +775,18 @@
(= (:asc args) false) (reverse))) (= (:asc args) false) (reverse)))
(defn apply-sort-2 [args results ] (defn apply-sort-2 [args results ]
(let [comparator (if (= (:asc args) false) (let [comparator
(fn [x y] (compare y x)) (if (:sort-by args)
(fn [x y] (compare x y)))] (fn [[x & rest-x] [y & rest-y]]
(let [base-sort (if (:asc args)
(compare x y)
(compare y x))]
(if (= 0 base-sort)
(compare (vec rest-y) (vec rest-x))
base-sort)))
(fn [x y]
(compare y x)))]
(sort comparator results ))) (sort comparator results )))
(defn apply-pagination [args results] (defn apply-pagination [args results]

View File

@@ -34,6 +34,8 @@
[(ground "") ?sorter]))] [(ground "") ?sorter]))]
"description-original" ['[?e :transaction/description-original ?sorter]] "description-original" ['[?e :transaction/description-original ?sorter]]
"date" ['[?e :transaction/date ?sorter]] "date" ['[?e :transaction/date ?sorter]]
"vendor" ['[?e :transaction/vendor ?v]
'[?v :vendor/name ?sorter]]
"amount" ['[?e :transaction/amount ?sorter]] "amount" ['[?e :transaction/amount ?sorter]]
"status" ['[?e :transaction/status ?sorter]]} "status" ['[?e :transaction/status ?sorter]]}
args) args)
@@ -77,26 +79,30 @@
:args [(:original-id args)]}) :args [(:original-id args)]})
true true
(merge-query {:query {:find ['?e] :where ['[?e :transaction/id]]}}))] (merge-query {:query {:find ['?base-date '?e] :where ['[?e :transaction/id]
'[?e :transaction/date ?base-date]]}}))]
(cond->> query (cond->> query
true (d/query) true (d/query)
(:sort-by args) (apply-sort-2 args) true (apply-sort-2 args)
true (apply-pagination args)))) true (apply-pagination args))))
(defn graphql-results [ids db args] (defn graphql-results [ids db args]
(->> (d/pull-many db '[* {:transaction/client [:client/name :db/id :client/code] (let [results (->> (d/pull-many db '[* {:transaction/client [:client/name :db/id :client/code]
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id] :transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id]
:transaction/vendor [:db/id :vendor/name] :transaction/vendor [:db/id :vendor/name]
:transaction/accounts [:transaction-account/amount :transaction/accounts [:transaction-account/amount
:db/id :db/id
:transaction-account/location :transaction-account/location
{:transaction-account/account [:db/id :account/name :account/numeric-code]}] {:transaction-account/account [:db/id :account/name :account/numeric-code]}]
:transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]}] :transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]}]
ids) ids)
(map #(update % :transaction/date c/from-date)) (map #(update % :transaction/date c/from-date))
(map #(update % :transaction/post-date c/from-date)) (map #(update % :transaction/post-date c/from-date))
(map #(dissoc % :transaction/id)) (map #(dissoc % :transaction/id))
(apply-sort args (some-> (:sort-by args) sort-fn)))) (group-by :db/id))]
(->> ids
(map results)
(map first))))
(defn get-graphql [args] (defn get-graphql [args]
(let [db (d/db (d/connect uri)) (let [db (d/db (d/connect uri))

View File

@@ -57,7 +57,7 @@
[sorted-column {:on-sort opc [sorted-column {:on-sort opc
:style {:width percentage-size :cursor "pointer"} :style {:width percentage-size :cursor "pointer"}
:sort-key "description-original" :sort-key "vendor"
:sort-by sort-by :sort-by sort-by
:asc asc} :asc asc}
"Vendor"] "Vendor"]