fixed sorting.
This commit is contained in:
@@ -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]
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
Reference in New Issue
Block a user