diff --git a/resources/templates/base.html b/resources/templates/base.html
index c14f6de..3f9928e 100644
--- a/resources/templates/base.html
+++ b/resources/templates/base.html
@@ -5,6 +5,7 @@
+
{% style "/css/yyy-common.css" %}
{% style "/css/yyy-site.css" %}
{% style "/css/spinner.css" %}
diff --git a/src/cljs/youyesyet/canvasser_app/core.cljs b/src/cljs/youyesyet/canvasser_app/core.cljs
index 81b4e36..89493ac 100644
--- a/src/cljs/youyesyet/canvasser_app/core.cljs
+++ b/src/cljs/youyesyet/canvasser_app/core.cljs
@@ -118,61 +118,57 @@
;; Routes
(secretary/set-config! :prefix "#")
-(defn log-and-dispatch [arg]
- (js/console.log (str "Dispatching " arg))
- (rf/dispatch arg))
-
(secretary/defroute "/" []
- (log-and-dispatch [:set-active-page :map]))
+ (ui/log-and-dispatch [:set-active-page :map]))
(secretary/defroute "/about" []
- (log-and-dispatch [:set-active-page :about]))
+ (ui/log-and-dispatch [:set-active-page :about]))
(secretary/defroute "/dwelling" []
- (log-and-dispatch [:set-active-page :dwelling]))
+ (ui/log-and-dispatch [:set-active-page :dwelling]))
(secretary/defroute "/dwelling/:dwelling" {dwelling-id :dwelling}
- (log-and-dispatch [:set-dwelling dwelling-id])
- (log-and-dispatch [:set-active-page :dwelling]))
+ (ui/log-and-dispatch [:set-dwelling dwelling-id])
+ (ui/log-and-dispatch [:set-active-page :dwelling]))
(secretary/defroute "/building/:address" {address-id :address}
- (log-and-dispatch [:set-address address-id]))
+ (ui/log-and-dispatch [:set-address address-id]))
(secretary/defroute "/elector" []
- (log-and-dispatch [:set-active-page :elector]))
+ (ui/log-and-dispatch [:set-active-page :elector]))
(secretary/defroute "/elector/:elector" {elector-id :elector}
- (log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :elector}]))
+ (ui/log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :elector}]))
(secretary/defroute "/elector/:elector/:consent" {elector-id :elector consent :consent}
- (log-and-dispatch [:set-consent-and-page {:elector-id elector-id :consent (and true consent) :page :elector}]))
+ (ui/log-and-dispatch [:set-active-page {:page :elector}]))
(secretary/defroute "/elector" []
- (log-and-dispatch [:set-active-page :elector]))
+ (ui/log-and-dispatch [:set-active-page :elector]))
(secretary/defroute "/followup" []
- (log-and-dispatch [:set-active-page :followup]))
+ (ui/log-and-dispatch [:set-active-page :followup]))
(secretary/defroute "/gdpr" []
- (log-and-dispatch [:set-active-page :gdpr]))
+ (ui/log-and-dispatch [:set-active-page :gdpr]))
(secretary/defroute "/gdpr/:elector" {elector-id :elector}
- (log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :gdpr}]))
+ (ui/log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :gdpr}]))
(secretary/defroute "/issues" []
- (log-and-dispatch [:set-active-page :issues]))
+ (ui/log-and-dispatch [:set-active-page :issues]))
(secretary/defroute "/issues/:elector" {elector-id :elector}
- (log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :issues}]))
+ (ui/log-and-dispatch [:set-elector-and-page {:elector-id elector-id :page :issues}]))
(secretary/defroute "/issue/:issue" {issue :issue}
- (log-and-dispatch [:set-and-go-to-issue issue]))
+ (ui/log-and-dispatch [:set-and-go-to-issue issue]))
(secretary/defroute "/map" []
- (log-and-dispatch [:set-active-page :map]))
+ (ui/log-and-dispatch [:set-active-page :map]))
(secretary/defroute "/set-intention/:elector/:intention" {elector-id :elector intention :intention}
- (log-and-dispatch [:set-intention {:elector-id elector-id :intention intention}]))
+ (ui/log-and-dispatch [:set-intention {:elector-id elector-id :intention intention}]))
;; -------------------------
;; History
diff --git a/src/cljs/youyesyet/canvasser_app/handlers.cljs b/src/cljs/youyesyet/canvasser_app/handlers.cljs
index 833305f..3ab4419 100644
--- a/src/cljs/youyesyet/canvasser_app/handlers.cljs
+++ b/src/cljs/youyesyet/canvasser_app/handlers.cljs
@@ -209,8 +209,10 @@
[{db :db} [_ response]]
(js/console.log (str "Updating locality data: " (count response) " addresses " ))
(refresh-map-pins)
- {:dispatch-later [{:ms 60000 :dispatch [:fetch-locality]}
- {:ms 1000 :dispatch [:get-current-location]}]
+ {
+;; :dispatch-later [{:ms 60000 :dispatch [:fetch-locality]}
+;; ;; {:ms 1000 :dispatch [:get-current-location]}
+;; ]
:db (assoc
(remove-from-feedback db :fetch-locality)
:addresses (js->clj response))}))
@@ -380,15 +382,28 @@
:page :building))))))
+(reg-event-db
+ :update-elector
+ (fn [db [_ args]]
+ (if (:signature (:elector db))
+ (do
+ (js/console.log "Updating elector signature")
+ (add-to-feedback
+ (add-to-outqueue
+ db
+ {:elector (:elector db)
+ :action :update-elector-signature})
+ :send-request))
+ (assoc db :error "Please supply a telephone number to call"))))
+
+
(reg-event-db
:set-consent-and-page
(fn [db [_ args]]
(let [page (:page args)
- consent (:consent args)
- elector-id (coerce-to-number (:elector-id args))
- elector (get-elector elector-id db)]
- (js/console.log (str "Setting page to " page ", consent to " consent " for " (:name elector)))
- (assoc (clear-messages db) :elector (assoc elector :consent true) :page page))))
+ elector (:elector args)]
+ (dispatch [:update-elector {:elector elector}])
+ (assoc (clear-messages db) :elector elector :page page))))
(reg-event-db
diff --git a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs
index 12ab66f..cd37ead 100644
--- a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs
+++ b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs
@@ -28,6 +28,11 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defn log-and-dispatch [arg]
+ (js/console.log (str "Dispatching " arg))
+ (rf/dispatch arg))
+
+
(defn back-link
"Generate a back link to the preceding page, or, if `target` is specified,
to a particular page."
@@ -40,8 +45,9 @@
(defn big-link
[text & {:keys [target handler]}]
+ (js/console.log (str "Big link with target '" target "'; handler '" handler "'"))
[:div.big-link-container {:key (gensym "big-link")}
- [:a.big-link (merge
+ [:a.big-link (merge {:href target :on-click handler}
(if target {:href target}{})
(if handler {:on-click handler}{}))
text]])
diff --git a/src/cljs/youyesyet/canvasser_app/views/building.cljs b/src/cljs/youyesyet/canvasser_app/views/building.cljs
index d2cac79..3cc7446 100644
--- a/src/cljs/youyesyet/canvasser_app/views/building.cljs
+++ b/src/cljs/youyesyet/canvasser_app/views/building.cljs
@@ -41,7 +41,7 @@
[:div
[:h1 (str "Flats at " (:address address))]
[:div.container {:id "main-container"}
- (ui/back-link)
+ (ui/back-link "#map")
[:div {:id "dwelling-list"}
(map
(fn
diff --git a/src/cljs/youyesyet/canvasser_app/views/dwelling.cljs b/src/cljs/youyesyet/canvasser_app/views/dwelling.cljs
index 73f28b3..88d5bee 100644
--- a/src/cljs/youyesyet/canvasser_app/views/dwelling.cljs
+++ b/src/cljs/youyesyet/canvasser_app/views/dwelling.cljs
@@ -80,11 +80,16 @@
(defn panel
"Generate the electors panel."
[]
+ (js/console.log "dwelling.panel")
(let [dwelling @(subscribe [:dwelling])
address @(subscribe [:address])
sub-address (:sub-address dwelling)
electors (sort-by :id (:electors dwelling))
- options @(subscribe [:options])]
+ options @(subscribe [:options])
+ back (if
+ (> (count (:dwellings address)) 1)
+ "#building"
+ "#map")]
(if address
[:div
[:h1 (if sub-address
@@ -95,7 +100,7 @@
[:tbody
(genders-row electors)
(names-row electors)]]
- (ui/back-link)]]
+ (ui/back-link back)]]
(ui/error-panel "No address selected"))))
diff --git a/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs b/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs
index 65e1e5a..9da0ad3 100644
--- a/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs
+++ b/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs
@@ -30,6 +30,11 @@
;; OK, the idea here is a GDPR consent form to be signed by the elector
+(def sig-pad
+ ;; something the signature pad will be bound to
+ (atom nil))
+
+
(defn gdpr-render
[]
(let [elector @(subscribe [:elector])]
@@ -51,21 +56,32 @@
[:canvas {:id "signature-pad"}]]]]]]
(ui/back-link "#dwelling")
(ui/big-link "I consent"
- :target (str "#elector/" (:id elector) "/true")
- :handler #(fn [] (dispatch [:set-consent-and-page {:elector-id (:id elector) :page :elector}])))
- ;; TODO: need to save the signature
+ ;; :target (str "#elector/" (:id elector) "/true/")
+ :handler #(fn
+ []
+ (ui/log-and-dispatch
+ [:set-consent-and-page
+ {:elector-id (:id elector)
+ :page :elector
+ :elector (merge
+ elector
+ :signature
+ (.toDataURL
+ sig-pad
+ "image/svg+xml")
+ )}])))
(ui/big-link "I DO NOT consent"
- :target (str "#elector/" (:id elector) "/true"))]))
- ;; :handler #(fn [] (dispatch [:set-elector-and-page {:elector-id (:id elector) :page :elector}])))]))
+ :target (str "#elector/" (:id elector) "/false"))]))
(defn gdpr-did-mount
[]
- (js/SignaturePad. (.getElementById js/document "signature-pad")))
+ (reset! sig-pad (js/SignaturePad. (.getElementById js/document "signature-pad"))))
(defn panel
"A reagent class for the GDPR consent form"
[]
+ (js/console.log "gdpr.panel")
(reagent/create-class {:reagent-render gdpr-render
:component-did-mount gdpr-did-mount}))