Skip to content

Commit

Permalink
five front-end metric slider filters; debounce pool requests
Browse files Browse the repository at this point in the history
  • Loading branch information
andrew committed Jun 6, 2016
1 parent 9454c4c commit 3a23d5e
Show file tree
Hide file tree
Showing 6 changed files with 128 additions and 19 deletions.
10 changes: 9 additions & 1 deletion src/cljs/ulysses/components/basic.cljs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(ns ulysses.components.basic
(:require [reagent.core :as reagent]
[ulysses.utils :refer [d-p map-subels classes-attr]]
[ulysses.utils :refer [d-p map-subels classes-attr str->int]]
[ulysses.routes :refer [url-for]]
[re-frame.core :refer [dispatch subscribe]]
[clojure.string :as string]))
Expand Down Expand Up @@ -104,6 +104,14 @@
;; misc
;; ----------------------------------------------------------------------------

(defn range-slider
[& {:keys [min max value on-change]}]
[:input {:type :range
:min min
:max max
:value value
:on-change #(on-change (-> % .-target .-value str->int))}])

(defn loading-or-no-results
"show a loading... message if loading, otherwise
show a not found message. message(s) can be customized:
Expand Down
7 changes: 6 additions & 1 deletion src/cljs/ulysses/db.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,12 @@

; builder pool filters
:builder-filters {:faculty-title-set ["director"]
:faculty-years-uconn 0}
:faculty-years-uconn 0
:metrics {:publicationCount 0
:grantCount 0
:grantFunds 0
:recentGrantCount 0
:recentGrantFunds 0}}

; user workspace-faculty hover (id)
:builder-workspace-faculty-hover nil})
Expand Down
24 changes: 12 additions & 12 deletions src/cljs/ulysses/handlers.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
new-id
scroll-to
request
faculties-pool-params
update-db-pagination
debounce-request-grant-ops]]))
debounce-request-grant-ops
debounce-request-faculties-pool]]))

;; ----------------------------------------------------------------------------
;; general
Expand Down Expand Up @@ -120,16 +120,10 @@

(register-handler
:request-faculties-pool
(fn [db [_]]
(let [grant-op-id (-> db :route-args :grant-op-id)]
(when (valid-request-id? grant-op-id)
(request db
[:faculty :pool]
:params (merge {:fundingOppType "NihRfa"
:fundingOppId grant-op-id}
(faculties-pool-params db))
:handler #(dispatch [:receive-faculties-pool %])))
(assoc db :builder-faculties-pool []))))
(fn [db _]
(debounce-request-faculties-pool db)
; (assoc db :builder-faculties-pool [])))
db))

(register-handler
:receive-faculties-pool
Expand Down Expand Up @@ -353,6 +347,12 @@
(assoc-in db [:builder-filters :faculty-years-uconn]
(or (str->int years-uconn) 0))))

(register-handler
:builder-filter-faculty-metric
(fn [db [_ metric value]]
(assoc-in db [:builder-filters :metrics metric]
value)))

;; builder faculty workspace hover ----

(register-handler
Expand Down
48 changes: 44 additions & 4 deletions src/cljs/ulysses/pages/builder.cljs
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
(ns ulysses.pages.builder
(:require [re-frame.core :as re-frame :refer [subscribe dispatch]]
[ulysses.components.basic :refer [hink link loading-or-no-results fa tabs]]
[ulysses.components.basic :refer [hink
link
loading-or-no-results
fa
tabs
range-slider]]
[ulysses.components.misc :refer [grant-op-meta]]
[ulysses.components.word-cloud :refer [word-cloud]]
[ulysses.utils :refer [map-subels map-lookup str->int classes-attr]]
Expand Down Expand Up @@ -49,6 +54,17 @@
(fn [t] [:option {:value t} t])
faculty-titles)])

(defn metric-slider
[metric filters]
(let [value (get-in filters [:metrics metric])]
[:div
; [:div value "+"]
[range-slider
:min 0 :max 100 :value value
:on-change
(fn [v]
(dispatch [:builder-filter-faculty-metric metric v]))]]))

(defn sidebar-section
[title & body]
[:div.builder-panel-sidebar-section
Expand All @@ -59,18 +75,42 @@
[faculty-titles filters]
[:div.builder-panel-sidebar
[:h3 "Filters"]

[sidebar-section
"Titles"
[faculty-title-multiselect
faculty-titles
filters]]

[sidebar-section
"Years at UConn"
[faculty-years-uconn
filters]]
[sidebar-section
"Publication Count"
[metric-slider
:publicationCount
filters]]
[sidebar-section
"Grant Count"
[metric-slider
:grantCount
filters]]
[sidebar-section
"Grant Funds"
[metric-slider
:grantFunds
filters]]
[sidebar-section
"Recent Grant Count"
[metric-slider
:recentGrantCount
filters]]
[sidebar-section
"Recent Grant Funds"
[metric-slider
:recentGrantFunds
filters]]])


(defn workspace-row [faculty]
(let [{:keys [id name title year_hired]} faculty]
[:tr.faculty-row
Expand Down Expand Up @@ -198,7 +238,7 @@

faculties (subscribe [:faculties])
faculty-titles (subscribe [:faculty-titles])
faculties-pool (subscribe [:builder-faculties-pool])
faculties-pool (subscribe [:builder-faculties-pool-filtered])

workspaces (subscribe [:workspaces-current])
workspace (subscribe [:builder-workspace])
Expand Down
18 changes: 18 additions & 0 deletions src/cljs/ulysses/subs.cljs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(ns ulysses.subs
(:require-macros [reagent.ratom :refer [reaction]])
(:require [re-frame.core :as re-frame :refer [register-sub]]
[ulysses.utils :refer [remap metric-maxes]]
[ulysses.config :as config]))

;; ----------------------------------------------------------------------------
Expand Down Expand Up @@ -112,6 +113,23 @@
;; derived data
;; ----------------------------------------------------------------------------

(register-sub
:builder-faculties-pool-filtered
(fn [db _]
(reaction
(let [{:keys [builder-faculties-pool builder-filters]} @db]
(let [{:keys [metrics]} builder-filters
maxes (metric-maxes metrics builder-faculties-pool)
metrics-n (remap #(/ % 100) metrics)]
(filter
(fn [f]
(every?
(fn [[k v]]
(< v (/ (get-in f [:metrics k])
(get maxes k))))
metrics-n))
builder-faculties-pool))))))

(register-sub
:workspaces-current
(fn [db _]
Expand Down
40 changes: 39 additions & 1 deletion src/cljs/ulysses/utils.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@
[f m]
(into {} (for [[k v] m] [k (f v)])))

(defn remap-kv
"map the values of a hashmap, given key and value"
[f m]
(into {} (for [[k v] m] [k (f k v)])))

(defn map-subels
"reagent util: apply f to each item in collection,
associating :key metadata (first tries :id of each el;
Expand Down Expand Up @@ -273,7 +278,7 @@
(assoc :page-last last_page)))

(defn faculties-pool-params
"make a params map with titleSet[0..n] and yearsUconn"
"make a pool request params map with titleSet[0..n] and yearsUconn"
[db]
(->> [:builder-filters :faculty-title-set]
(get-in db)
Expand All @@ -284,6 +289,19 @@
(merge {:yearsAtUconn
(get-in db [:builder-filters :faculty-years-uconn])})))

(defn metric-maxes
"given metrics builder filters (0-100) and faculties,
return the maximum values for each metric"
[metrics faculties]
(let [fm (map :metrics faculties)]
(remap-kv
(fn [metric _]
(->> fm
(map (fn [f] (get f metric)))
(filter integer?)
(apply max)))
metrics)))

;; ----------------------------------------------------------------------------
;; data transforms
;; ----------------------------------------------------------------------------
Expand Down Expand Up @@ -362,6 +380,8 @@
(finish e))})) ; user
db) ; (no direct db change)

; grant ops requests

(def request-grant-ops-channel
(debounce-standard
(fn [db page]
Expand All @@ -384,6 +404,24 @@
[db page]
(put! request-grant-ops-channel [db page]))

; faculty requests

(def request-faculties-pool-channel
(debounce-standard
(fn [db]
(let [grant-op-id (-> db :route-args :grant-op-id)]
(when (valid-request-id? grant-op-id)
(request db
[:faculty :pool]
:params (merge {:fundingOppType "NihRfa"
:fundingOppId grant-op-id}
(faculties-pool-params db))
:handler #(dispatch [:receive-faculties-pool %])))))))

(defn debounce-request-faculties-pool
[db]
(put! request-faculties-pool-channel [db]))

;; ----------------------------------------------------------------------------
;; direct dom mutations
;; ----------------------------------------------------------------------------
Expand Down

0 comments on commit 3a23d5e

Please sign in to comment.