#43 Zoom and lat/long now captured in state.
This commit is contained in:
parent
4dc7ad396a
commit
3a18cacf0f
|
@ -169,8 +169,34 @@
|
|||
(assoc (clear-messages db) :issue issue)))
|
||||
|
||||
|
||||
(reg-event-db
|
||||
:set-latitude
|
||||
(fn [db [_ issue]]
|
||||
(assoc db :latitude issue)))
|
||||
|
||||
|
||||
(reg-event-db
|
||||
:set-longitude
|
||||
(fn [db [_ issue]]
|
||||
(assoc db :longitude issue)))
|
||||
|
||||
|
||||
(reg-event-db
|
||||
:set-telephone
|
||||
(fn [db [_ telephone]]
|
||||
(js/console.log (str "Setting telephone to " telephone))
|
||||
(assoc (clear-messages db) :telephone telephone)))
|
||||
|
||||
|
||||
(reg-event-db
|
||||
:set-view
|
||||
(fn [db [_ view]]
|
||||
(assoc db :view view)))
|
||||
|
||||
|
||||
(reg-event-db
|
||||
:set-zoom
|
||||
(fn [db [_ zoom]]
|
||||
(if (integer? zoom)
|
||||
(assoc db :zoom zoom)
|
||||
db)))
|
||||
|
|
|
@ -82,4 +82,8 @@
|
|||
;;; the queue of items waiting to be transmitted.
|
||||
:outqueue ()
|
||||
;;; the currently displayed page within the app.
|
||||
:page :home})
|
||||
:page :home
|
||||
:view nil
|
||||
:latitude 55.82
|
||||
:longitude -4.25
|
||||
:zoom 12})
|
||||
|
|
|
@ -76,6 +76,16 @@
|
|||
(fn [db _]
|
||||
(:issues db)))
|
||||
|
||||
(reg-sub
|
||||
:latitude
|
||||
(fn [db _]
|
||||
(:latitude db)))
|
||||
|
||||
(reg-sub
|
||||
:longitude
|
||||
(fn [db _]
|
||||
(:longitude db)))
|
||||
|
||||
(reg-sub
|
||||
:page
|
||||
(fn [db _]
|
||||
|
@ -91,3 +101,12 @@
|
|||
(fn [db _]
|
||||
(:outqueue db)))
|
||||
|
||||
(reg-sub
|
||||
:view
|
||||
(fn [db _]
|
||||
(:view db)))
|
||||
|
||||
(reg-sub
|
||||
:zoom
|
||||
(fn [db _]
|
||||
(:zoom db)))
|
||||
|
|
|
@ -77,6 +77,11 @@
|
|||
so back links work."
|
||||
[id]
|
||||
(js/console.log (str "Click handler for address #" id))
|
||||
(let [view @(subscribe [:view])
|
||||
centre (.getCenter view)]
|
||||
(dispatch [:set-zoom (.getZoom view)])
|
||||
(dispatch [:set-latitude (.-lat centre)])
|
||||
(dispatch [:set-longitude (.-lng centre)]))
|
||||
(set! window.location.href (str "#building/" id)))
|
||||
;; This way is probably more idiomatic React, but history doesn't work:
|
||||
;; (defn map-pin-click-handler
|
||||
|
@ -121,7 +126,10 @@
|
|||
(defn map-did-mount-osm
|
||||
"Did-mount function loading map tile data from Open Street Map."
|
||||
[]
|
||||
(let [view (.setView (.map js/L "map" (clj->js {:zoomControl false})) #js [55.82 -4.25] 13)
|
||||
(let [view (.setView
|
||||
(.map js/L "map" (clj->js {:zoomControl false}))
|
||||
#js [@(subscribe [:latitude]) @(subscribe [:longitude])]
|
||||
@(subscribe [:zoom]))
|
||||
addresses @(subscribe [:addresses])]
|
||||
(js/console.log (str "Adding " (count addresses) " pins"))
|
||||
(doall (map #(add-map-pin % view) addresses))
|
||||
|
@ -129,7 +137,8 @@
|
|||
(clj->js {:attribution osm-attrib
|
||||
:maxZoom 18}))
|
||||
view)
|
||||
))
|
||||
(dispatch [:set-view view])
|
||||
view))
|
||||
|
||||
|
||||
(defn map-did-mount
|
||||
|
|
Loading…
Reference in a new issue