some fixes and behaviours of sort and filter
This commit is contained in:
parent
d937bf361d
commit
12edb1abc6
|
@ -74,13 +74,13 @@
|
|||
on-change-fn (fn [min-val max-val]
|
||||
(rf/dispatch [::handlers/set-open-bounty-filter-type
|
||||
::ui-model/bounty-filter-type|value
|
||||
[(min min-val (dec default-max))
|
||||
(max max-val (inc default-min))]]))
|
||||
[(min min-val default-max)
|
||||
(max max-val default-min)]]))
|
||||
on-min-change-fn (fn [new-min]
|
||||
(let [new-max (max current-max (inc new-min))]
|
||||
(let [new-max (max current-max (min default-max new-min))]
|
||||
(on-change-fn new-min new-max)))
|
||||
on-max-change-fn (fn [new-max]
|
||||
(let [new-min (min current-min (dec new-max))]
|
||||
(let [new-min (min current-min (max default-min new-max))]
|
||||
(on-change-fn new-min new-max)))]
|
||||
[:div
|
||||
"$0 - $1000+"
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
(ns commiteth.ui-model
|
||||
(:require [clojure.set :as set]))
|
||||
(:require [clojure.set :as set]
|
||||
[cljs-time.core :as t]
|
||||
[cljs-time.coerce :as t-coerce]
|
||||
[cljs-time.format :as t-format]))
|
||||
|
||||
;;;; bounty sorting types
|
||||
|
||||
|
@ -10,11 +13,11 @@
|
|||
::bounty-sorting-type.sort-comparator-fn compare}
|
||||
::bounty-sorting-type|lowest-value {::bounty-sorting-type.name "Lowest value"
|
||||
::bounty-sorting-type.sort-key-fn (fn [bounty]
|
||||
(:value-usd bounty))
|
||||
(js/parseFloat (:value-usd bounty)))
|
||||
::bounty-sorting-type.sort-comparator-fn compare}
|
||||
::bounty-sorting-type|highest-value {::bounty-sorting-type.name "Highest value"
|
||||
::bounty-sorting-type.sort-key-fn (fn [bounty]
|
||||
(:value-usd bounty))
|
||||
(js/parseFloat (:value-usd bounty)))
|
||||
::bounty-sorting-type.sort-comparator-fn (comp - compare)}
|
||||
::bounty-sorting-type|owner {::bounty-sorting-type.name "Owner"
|
||||
::bounty-sorting-type.sort-key-fn (fn [bounty]
|
||||
|
@ -38,7 +41,9 @@
|
|||
(def bounty-filter-types-def
|
||||
{::bounty-filter-type|value {::bounty-filter-type.name "Value"
|
||||
::bounty-filter-type.predicate (fn [filter-value bounty]
|
||||
true)}
|
||||
(let [min-val (first filter-value)
|
||||
max-val (second filter-value)]
|
||||
(<= min-val (:value-usd bounty) max-val)))}
|
||||
::bounty-filter-type|currency {::bounty-filter-type.name "Currency"
|
||||
::bounty-filter-type.predicate (fn [filter-value bounty]
|
||||
(and (or (not-any? #{"ETH"} filter-value)
|
||||
|
@ -47,10 +52,19 @@
|
|||
(-> bounty :tokens keys set))))}
|
||||
::bounty-filter-type|date {::bounty-filter-type.name "Date"
|
||||
::bounty-filter-type.predicate (fn [filter-value bounty]
|
||||
true)}
|
||||
(when-let [created-at-inst (:created-at bounty)]
|
||||
(let [created-at-date (-> created-at-inst inst-ms t-coerce/from-long)
|
||||
filter-from (condp = filter-value
|
||||
::bounty-filter-type-date-option|last-week (t/minus (t/now) (t/weeks 1))
|
||||
::bounty-filter-type-date-option|last-month (t/minus (t/now) (t/months 1))
|
||||
::bounty-filter-type-date-option|last-3-months (t/minus (t/now) (t/months 3)))
|
||||
interval (t/interval filter-from (t/now))]
|
||||
(t/within? interval created-at-date))))}
|
||||
::bounty-filter-type|owner {::bounty-filter-type.name "Owner"
|
||||
::bounty-filter-type.predicate (fn [filter-value bounty]
|
||||
true)}})
|
||||
(->> filter-value
|
||||
(some #{(:repo-owner bounty)})
|
||||
boolean))}})
|
||||
|
||||
(def bounty-filter-types (keys bounty-filter-types-def))
|
||||
|
||||
|
|
Loading…
Reference in New Issue