Merge branch 'feature/33' into develop

This commit is contained in:
Simon Brooke 2017-03-30 07:03:06 +01:00
commit 7d4bf2a2c2
5 changed files with 27 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

View file

@ -95,6 +95,9 @@
(secretary/defroute "/electors" [] (secretary/defroute "/electors" []
(rf/dispatch [:set-active-page :electors])) (rf/dispatch [:set-active-page :electors]))
(secretary/defroute "/electors/:address" {address-id :address}
(rf/dispatch [:set-address address-id]))
(secretary/defroute "/followup" [] (secretary/defroute "/followup" []
(rf/dispatch [:set-active-page :followup])) (rf/dispatch [:set-active-page :followup]))

View file

@ -31,18 +31,27 @@
(def default-db (def default-db
{;;; the currently selected address, if any. {;;; the currently selected address, if any.
:address {:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2590944 :address {:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2569057
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no} :electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
{:id 2 :name "Ann Anderson" :gender :female} {:id 2 :name "Ann Anderson" :gender :female}
{:id 3 :name "Alex Anderson" :gender :fluid :intention :yes} {:id 3 :name "Alex Anderson" :gender :fluid :intention :yes}
{:id 4 :name "Andy Anderson" :intention :yes}]} {:id 4 :name "Andy Anderson" :intention :yes}]}
;;; a list of the addresses in the current location at which there ;;; a list of the addresses in the current location at which there
;;; are electors registered. ;;; are electors registered.
:addresses [{:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2590944 :addresses [{:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2570944
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no} :electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
{:id 2 :name "Ann Anderson" :gender :female} {:id 2 :name "Ann Anderson" :gender :female}
{:id 3 :name "Alex Anderson" :gender :fluid :intention :yes} {:id 3 :name "Alex Anderson" :gender :fluid :intention :yes}
{:id 4 :name "Andy Anderson" :intention :yes}]}] {:id 4 :name "Andy Anderson" :intention :yes}]}
{:id 2 :address "15 Imaginary Terrace, IM1 3TE" :latitude 55.8252354 :longitude -4.2572778
:electors [{:id 1 :name "Beryl Brown" :gender :female}
{:id 2 :name "Betty Black" :gender :female}]}
{:id 3 :address "17 Imaginary Terrace, IM1 3TE" :latitude 55.825166 :longitude -4.257026
:electors [{:id 1 :name "Catriona Crathie" :gender :female :intention :yes}
{:id 2 :name "Colin Caruthers" :gender :male :intention :yes}
{:id 3 :name "Calum Crathie" :intention :yes}]}
{:id 4 :address "19 Imaginary Terrace, IM1 3TE" :latitude 55.82506950000001 :longitude -4.2570239
:electors [{:id 1 :name "David Dewar" :gender :male :intention :no}]}]
;;; electors at the currently selected address ;;; electors at the currently selected address
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no} :electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
{:id 2 :name "Ann Anderson" :gender :female} {:id 2 :name "Ann Anderson" :gender :female}

View file

@ -62,10 +62,17 @@
"mixed-pin"))) "mixed-pin")))
(defn click-handler (defn map-pin-click-handler
"On clicking on the pin, navigate to the electors at the address.
This way of doing it adds an antry in the browser location history,
so back links work."
[id] [id]
(js/console.log (str "Click handler for address #" id)) (js/console.log (str "Click handler for address #" id))
(dispatch [:set-address id])) (set! window.location.href (str "#electors/" id)))
;; This way is probably more idiomatic React, but back links don't work:
;; (defn map-pin-click-handler
;; [id]
;; (dispatch [:set-address id]))
(defn add-map-pin (defn add-map-pin
@ -83,9 +90,10 @@
:shadowAnchor [16 23]})) :shadowAnchor [16 23]}))
marker (.marker js/L marker (.marker js/L
(.latLng js/L lat lng) (.latLng js/L lat lng)
(clj->js {:icon pin :title (:address address)})) (clj->js {:icon pin
:title (:address address)}))
] ]
(.on marker "click" #(fn [] (click-handler (:id address)))) (.on marker "click" (fn [_] (map-pin-click-handler (str (:id address)))))
(.addTo marker view))) (.addTo marker view)))