Stuck with an on-click handler that isn't happening
This commit is contained in:
parent
028022fd75
commit
7724a2514a
|
@ -5,6 +5,7 @@
|
||||||
<!-- head: if you want entire custom head content, override this block. -->
|
<!-- head: if you want entire custom head content, override this block. -->
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
|
<meta name="referrer" content="same-origin">
|
||||||
{% style "/css/yyy-common.css" %}
|
{% style "/css/yyy-common.css" %}
|
||||||
{% style "/css/yyy-site.css" %}
|
{% style "/css/yyy-site.css" %}
|
||||||
{% style "/css/spinner.css" %}
|
{% style "/css/spinner.css" %}
|
||||||
|
|
|
@ -118,61 +118,57 @@
|
||||||
;; Routes
|
;; Routes
|
||||||
(secretary/set-config! :prefix "#")
|
(secretary/set-config! :prefix "#")
|
||||||
|
|
||||||
(defn log-and-dispatch [arg]
|
|
||||||
(js/console.log (str "Dispatching " arg))
|
|
||||||
(rf/dispatch arg))
|
|
||||||
|
|
||||||
(secretary/defroute "/" []
|
(secretary/defroute "/" []
|
||||||
(log-and-dispatch [:set-active-page :map]))
|
(ui/log-and-dispatch [:set-active-page :map]))
|
||||||
|
|
||||||
(secretary/defroute "/about" []
|
(secretary/defroute "/about" []
|
||||||
(log-and-dispatch [:set-active-page :about]))
|
(ui/log-and-dispatch [:set-active-page :about]))
|
||||||
|
|
||||||
(secretary/defroute "/dwelling" []
|
(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}
|
(secretary/defroute "/dwelling/:dwelling" {dwelling-id :dwelling}
|
||||||
(log-and-dispatch [:set-dwelling dwelling-id])
|
(ui/log-and-dispatch [:set-dwelling dwelling-id])
|
||||||
(log-and-dispatch [:set-active-page :dwelling]))
|
(ui/log-and-dispatch [:set-active-page :dwelling]))
|
||||||
|
|
||||||
(secretary/defroute "/building/:address" {address-id :address}
|
(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" []
|
(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}
|
(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}
|
(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" []
|
(secretary/defroute "/elector" []
|
||||||
(log-and-dispatch [:set-active-page :elector]))
|
(ui/log-and-dispatch [:set-active-page :elector]))
|
||||||
|
|
||||||
(secretary/defroute "/followup" []
|
(secretary/defroute "/followup" []
|
||||||
(log-and-dispatch [:set-active-page :followup]))
|
(ui/log-and-dispatch [:set-active-page :followup]))
|
||||||
|
|
||||||
(secretary/defroute "/gdpr" []
|
(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}
|
(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" []
|
(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}
|
(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}
|
(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" []
|
(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}
|
(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
|
;; History
|
||||||
|
|
|
@ -209,8 +209,10 @@
|
||||||
[{db :db} [_ response]]
|
[{db :db} [_ response]]
|
||||||
(js/console.log (str "Updating locality data: " (count response) " addresses " ))
|
(js/console.log (str "Updating locality data: " (count response) " addresses " ))
|
||||||
(refresh-map-pins)
|
(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
|
:db (assoc
|
||||||
(remove-from-feedback db :fetch-locality)
|
(remove-from-feedback db :fetch-locality)
|
||||||
:addresses (js->clj response))}))
|
:addresses (js->clj response))}))
|
||||||
|
@ -380,15 +382,28 @@
|
||||||
:page :building))))))
|
: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
|
(reg-event-db
|
||||||
:set-consent-and-page
|
:set-consent-and-page
|
||||||
(fn [db [_ args]]
|
(fn [db [_ args]]
|
||||||
(let [page (:page args)
|
(let [page (:page args)
|
||||||
consent (:consent args)
|
elector (:elector args)]
|
||||||
elector-id (coerce-to-number (:elector-id args))
|
(dispatch [:update-elector {:elector elector}])
|
||||||
elector (get-elector elector-id db)]
|
(assoc (clear-messages db) :elector elector :page page))))
|
||||||
(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))))
|
|
||||||
|
|
||||||
|
|
||||||
(reg-event-db
|
(reg-event-db
|
||||||
|
|
|
@ -28,6 +28,11 @@
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
(defn log-and-dispatch [arg]
|
||||||
|
(js/console.log (str "Dispatching " arg))
|
||||||
|
(rf/dispatch arg))
|
||||||
|
|
||||||
|
|
||||||
(defn back-link
|
(defn back-link
|
||||||
"Generate a back link to the preceding page, or, if `target` is specified,
|
"Generate a back link to the preceding page, or, if `target` is specified,
|
||||||
to a particular page."
|
to a particular page."
|
||||||
|
@ -40,8 +45,9 @@
|
||||||
|
|
||||||
(defn big-link
|
(defn big-link
|
||||||
[text & {:keys [target handler]}]
|
[text & {:keys [target handler]}]
|
||||||
|
(js/console.log (str "Big link with target '" target "'; handler '" handler "'"))
|
||||||
[:div.big-link-container {:key (gensym "big-link")}
|
[: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 target {:href target}{})
|
||||||
(if handler {:on-click handler}{}))
|
(if handler {:on-click handler}{}))
|
||||||
text]])
|
text]])
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
[:div
|
[:div
|
||||||
[:h1 (str "Flats at " (:address address))]
|
[:h1 (str "Flats at " (:address address))]
|
||||||
[:div.container {:id "main-container"}
|
[:div.container {:id "main-container"}
|
||||||
(ui/back-link)
|
(ui/back-link "#map")
|
||||||
[:div {:id "dwelling-list"}
|
[:div {:id "dwelling-list"}
|
||||||
(map
|
(map
|
||||||
(fn
|
(fn
|
||||||
|
|
|
@ -80,11 +80,16 @@
|
||||||
(defn panel
|
(defn panel
|
||||||
"Generate the electors panel."
|
"Generate the electors panel."
|
||||||
[]
|
[]
|
||||||
|
(js/console.log "dwelling.panel")
|
||||||
(let [dwelling @(subscribe [:dwelling])
|
(let [dwelling @(subscribe [:dwelling])
|
||||||
address @(subscribe [:address])
|
address @(subscribe [:address])
|
||||||
sub-address (:sub-address dwelling)
|
sub-address (:sub-address dwelling)
|
||||||
electors (sort-by :id (:electors dwelling))
|
electors (sort-by :id (:electors dwelling))
|
||||||
options @(subscribe [:options])]
|
options @(subscribe [:options])
|
||||||
|
back (if
|
||||||
|
(> (count (:dwellings address)) 1)
|
||||||
|
"#building"
|
||||||
|
"#map")]
|
||||||
(if address
|
(if address
|
||||||
[:div
|
[:div
|
||||||
[:h1 (if sub-address
|
[:h1 (if sub-address
|
||||||
|
@ -95,7 +100,7 @@
|
||||||
[:tbody
|
[:tbody
|
||||||
(genders-row electors)
|
(genders-row electors)
|
||||||
(names-row electors)]]
|
(names-row electors)]]
|
||||||
(ui/back-link)]]
|
(ui/back-link back)]]
|
||||||
(ui/error-panel "No address selected"))))
|
(ui/error-panel "No address selected"))))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,11 @@
|
||||||
|
|
||||||
;; OK, the idea here is a GDPR consent form to be signed by the elector
|
;; 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
|
(defn gdpr-render
|
||||||
[]
|
[]
|
||||||
(let [elector @(subscribe [:elector])]
|
(let [elector @(subscribe [:elector])]
|
||||||
|
@ -51,21 +56,32 @@
|
||||||
[:canvas {:id "signature-pad"}]]]]]]
|
[:canvas {:id "signature-pad"}]]]]]]
|
||||||
(ui/back-link "#dwelling")
|
(ui/back-link "#dwelling")
|
||||||
(ui/big-link "I consent"
|
(ui/big-link "I consent"
|
||||||
:target (str "#elector/" (:id elector) "/true")
|
;; :target (str "#elector/" (:id elector) "/true/")
|
||||||
:handler #(fn [] (dispatch [:set-consent-and-page {:elector-id (:id elector) :page :elector}])))
|
:handler #(fn
|
||||||
;; TODO: need to save the signature
|
[]
|
||||||
|
(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"
|
(ui/big-link "I DO NOT consent"
|
||||||
:target (str "#elector/" (:id elector) "/true"))]))
|
:target (str "#elector/" (:id elector) "/false"))]))
|
||||||
;; :handler #(fn [] (dispatch [:set-elector-and-page {:elector-id (:id elector) :page :elector}])))]))
|
|
||||||
|
|
||||||
|
|
||||||
(defn gdpr-did-mount
|
(defn gdpr-did-mount
|
||||||
[]
|
[]
|
||||||
(js/SignaturePad. (.getElementById js/document "signature-pad")))
|
(reset! sig-pad (js/SignaturePad. (.getElementById js/document "signature-pad"))))
|
||||||
|
|
||||||
|
|
||||||
(defn panel
|
(defn panel
|
||||||
"A reagent class for the GDPR consent form"
|
"A reagent class for the GDPR consent form"
|
||||||
[]
|
[]
|
||||||
|
(js/console.log "gdpr.panel")
|
||||||
(reagent/create-class {:reagent-render gdpr-render
|
(reagent/create-class {:reagent-render gdpr-render
|
||||||
:component-did-mount gdpr-did-mount}))
|
:component-did-mount gdpr-did-mount}))
|
||||||
|
|
Loading…
Reference in a new issue