From 7621040c8f212322c340f66a1e5ee9eb38aded07 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sun, 26 Mar 2017 12:03:25 +0100 Subject: [PATCH] Now with the right pin image; pin click still not working. --- src/cljs/youyesyet/handlers.cljs | 8 ++++++++ src/cljs/youyesyet/views/map.cljs | 30 ++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/cljs/youyesyet/handlers.cljs b/src/cljs/youyesyet/handlers.cljs index 0e0794d..b7dbc03 100644 --- a/src/cljs/youyesyet/handlers.cljs +++ b/src/cljs/youyesyet/handlers.cljs @@ -39,6 +39,14 @@ (assoc db :page page))) +(reg-event-db + :set-address + (fn [db [_ address-id]] + (let [id (read-string address-id) + address (first (remove nil? (map #(if (= id (:id %)) %) (:addresses db))))] + (assoc (assoc db :address address) :page :electors)))) + + (reg-event-db :set-elector-and-page (fn [db [_ args]] diff --git a/src/cljs/youyesyet/views/map.cljs b/src/cljs/youyesyet/views/map.cljs index 4fb2b7f..2a2c4bf 100644 --- a/src/cljs/youyesyet/views/map.cljs +++ b/src/cljs/youyesyet/views/map.cljs @@ -1,5 +1,5 @@ (ns youyesyet.views.map - (:require [re-frame.core :refer [reg-sub subscribe]] + (:require [re-frame.core :refer [reg-sub subscribe dispatch]] [reagent.core :as reagent])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -55,17 +55,26 @@ (defn pin-image "select the name of a suitable pin image for this address" [address] - "yes-pin") + (let [intentions (set (remove nil? (map #(:intention %) (:electors address))))] + (case (count intentions) + 0 "unknown-pin" + 1 (str (name (first intentions)) "-pin") + "mixed-pin"))) + + +(defn click-handler + [id] + (dispatch [:set-address id])) (defn add-map-pin - "Add a map-pin with this pin-image at this latitude and longitude - in this map view" - [latitude longitude pin-image view] - (js/console.log (str "Adding pin " pin-image " at " latitude "," longitude)) - (let [pin (.icon js/L + "Add a map-pin at this address in this map view" + [address view] + (let [lat (:latitude address) + lon (:longitude address) + pin (.icon js/L (clj->js - {:iconUrl (str "img/map-pins/" pin-image ".png") + {:iconUrl (str "img/map-pins/" (pin-image address) ".png") :shadowUrl "img/map-pins/shadow_pin.png" :iconSize [32 42] :shadowSize [57 24] @@ -73,8 +82,9 @@ :shadowAnchor [16 23]})) marker (.marker js/L (.latLng js/L 55.82 -4.25) - (clj->js {:icon pin})) + (clj->js {:icon pin :title (:address address)})) ] + (.on marker "click" #(fn [] (click-handler (:id address)))) (.addTo marker view))) @@ -96,7 +106,7 @@ (let [view (.setView (.map js/L "map" (clj->js {:zoomControl false})) #js [55.82 -4.25] 13) addresses @(subscribe [:addresses])] (js/console.log (str "Adding " (count addresses) " pins")) - (doall (map #(add-map-pin (:latitude %) (:longitude %) (pin-image %) view) addresses)) + (doall (map #(add-map-pin % view) addresses)) (.addTo (.tileLayer js/L osm-url (clj->js {:attribution osm-attrib :maxZoom 18}))