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