And now with inertia
This commit is contained in:
parent
b3c624eb5c
commit
c83b557d41
|
@ -1,6 +1,6 @@
|
|||
(ns swinging-needle-meter.core
|
||||
(:require [reagent.core :as reagent]
|
||||
[re-frame.core :as re-frame]
|
||||
[re-frame.core :as rf]
|
||||
[swinging-needle-meter.events]
|
||||
[swinging-needle-meter.subs]
|
||||
[swinging-needle-meter.views :as views]
|
||||
|
@ -14,12 +14,20 @@
|
|||
(enable-console-print!)
|
||||
(println "dev mode")))
|
||||
|
||||
(defn dispatch-timer-event
|
||||
[]
|
||||
(let [now (js/Date.)]
|
||||
(rf/dispatch [:timer now]))) ;; <-- dispatch used
|
||||
|
||||
;; call the dispatching function every tenth of a second
|
||||
(defonce do-timer (js/setInterval dispatch-timer-event 100))
|
||||
|
||||
(defn mount-root []
|
||||
(re-frame/clear-subscription-cache!)
|
||||
(rf/clear-subscription-cache!)
|
||||
(reagent/render [views/main-panel]
|
||||
(.getElementById js/document "app")))
|
||||
|
||||
(defn ^:export init []
|
||||
(re-frame/dispatch-sync [:initialize-db])
|
||||
(rf/dispatch-sync [:initialize-db])
|
||||
(dev-setup)
|
||||
(mount-root))
|
||||
|
|
|
@ -8,17 +8,22 @@
|
|||
(fn [_ _]
|
||||
state/default-state))
|
||||
|
||||
;; The clock ticked.
|
||||
;; The clock ticked. Implement a mechanical swing.
|
||||
(re-frame/reg-event-db
|
||||
:timer
|
||||
(fn [db _]
|
||||
db))
|
||||
(fn [db [x value]]
|
||||
(let [old-value (:old-value db)
|
||||
target (:value db)
|
||||
new-value (+ old-value (/ (- target old-value) 10))]
|
||||
(assoc db :old-value new-value))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
:set-value
|
||||
(fn [db [x value]]
|
||||
(js/console.log (str :set-value " " x " " value))
|
||||
(assoc db :value value)))
|
||||
(assoc
|
||||
(assoc db :old-value (:value db))
|
||||
:value
|
||||
value)))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
:set-setpoint
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
(def default-state
|
||||
{:timer (js/Date.)
|
||||
:value 60
|
||||
:old-value 0
|
||||
:setpoint 75
|
||||
:gradations 5
|
||||
:size 70
|
||||
|
|
|
@ -12,6 +12,11 @@
|
|||
(fn [db]
|
||||
(:value db)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:old-value
|
||||
(fn [db]
|
||||
(:old-value db)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:setpoint
|
||||
(fn [db]
|
||||
|
|
|
@ -11,14 +11,6 @@
|
|||
;; Demo: swinging-needle-meter
|
||||
;; ------------------------------------------------------------------------------------
|
||||
|
||||
(defn dispatch-timer-event
|
||||
[]
|
||||
(let [now (js/Date.)]
|
||||
(rf/dispatch [:timer now]))) ;; <-- dispatch used
|
||||
|
||||
;; call the dispatching function every tenth of a second
|
||||
(defonce do-timer (js/setInterval dispatch-timer-event 100))
|
||||
|
||||
|
||||
(defn swinging-needle-demo
|
||||
[]
|
||||
|
@ -69,7 +61,7 @@
|
|||
[v-box
|
||||
:gap "20px"
|
||||
:children [[swinging-needle-meter
|
||||
:model @(rf/subscribe [:value])
|
||||
:model @(rf/subscribe [:old-value])
|
||||
:setpoint @(rf/subscribe [:setpoint])
|
||||
:unit @(rf/subscribe [:unit])
|
||||
:min-value @(rf/subscribe [:min-val])
|
||||
|
|
Loading…
Reference in a new issue