From f70d8ee2ffe2062a0452c8cf7e2a71b8a1ad6fd1 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Mon, 2 Jul 2018 19:12:20 +0100 Subject: [PATCH] Trying to get the GDPR consent form working (fail) --- src/cljs/youyesyet/canvasser_app/core.cljs | 15 +++++++++++---- src/cljs/youyesyet/canvasser_app/handlers.cljs | 13 ++++++++++++- src/cljs/youyesyet/canvasser_app/ui_utils.cljs | 4 ++-- .../youyesyet/canvasser_app/views/elector.cljs | 8 ++------ src/cljs/youyesyet/canvasser_app/views/gdpr.cljs | 9 +++++---- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/cljs/youyesyet/canvasser_app/core.cljs b/src/cljs/youyesyet/canvasser_app/core.cljs index ee22dc1..15918f1 100644 --- a/src/cljs/youyesyet/canvasser_app/core.cljs +++ b/src/cljs/youyesyet/canvasser_app/core.cljs @@ -10,7 +10,7 @@ [re-frame.core :as rf] [secretary.core :as secretary] [youyesyet.canvasser-app.ajax :refer [load-interceptors!]] - [youyesyet.canvasser-app.handlers] + [youyesyet.canvasser-app.handlers :as h] [youyesyet.canvasser-app.subscriptions] [youyesyet.canvasser-app.ui-utils :as ui] [youyesyet.canvasser-app.views.about :as about] @@ -62,6 +62,9 @@ (defn elector-page [] (elector/panel)) +(defn gdpr-page [] + (gdpr/panel)) + (defn followup-page [] (followup/panel)) @@ -80,6 +83,7 @@ :elector #'elector-page :electors #'electors-page :followup #'followup-page + :gdpr #'gdpr-page :issues #'issues-page :issue #'issue-page :map #'map-page @@ -98,7 +102,7 @@ [:header [ui/navbar]] (if content [content] - [:div.error (str "No content in page " :page)]) + [:div.error (str "No content in page " @(rf/subscribe [:page]))]) [:footer [:div.error {:style [:display (if error "block" "none")]} (str error)] [:div.feedback {:style [:display (if feedback :block :none)]} (str feedback)] @@ -126,7 +130,10 @@ (rf/dispatch [:set-active-page :followup])) (secretary/defroute "/gdpr" [] - (rf/despatch [:set-active-page :gdpr])) + (rf/dispatch [:set-active-page :gdpr])) + +(secretary/defroute "/gdpr/:elector" {elector-id :elector} + (rf/dispatch [:set-elector-and-page {:elector-id elector-id :page :gdpr}])) (secretary/defroute "/issues" [] (rf/dispatch [:set-active-page :issues])) @@ -162,7 +169,7 @@ (defn init! [] (rf/dispatch-sync [:initialize-db]) - (get-current-location) + (h/get-current-location) (load-interceptors!) (hook-browser-navigation!) (mount-components)) diff --git a/src/cljs/youyesyet/canvasser_app/handlers.cljs b/src/cljs/youyesyet/canvasser_app/handlers.cljs index 5d70dc0..46ffd52 100644 --- a/src/cljs/youyesyet/canvasser_app/handlers.cljs +++ b/src/cljs/youyesyet/canvasser_app/handlers.cljs @@ -148,6 +148,17 @@ :page :building))))) +(reg-event-db + :set-consent-and-page + (fn [db [_ args]] + (let [page (:page args) + elector-id (read-string (:elector-id args)) + elector (get-elector elector-id db)] + (js/console.log (str "Setting page to " page ", consent to true for " elector)) + (assoc (clear-messages db) :elector (assoc elector :consent true) :page page)))) + + + (reg-event-db :set-dwelling (fn [db [_ dwelling-id]] @@ -168,7 +179,7 @@ (assoc (assoc (clear-messages db) :issue issue) :page :issue))) - (reg-event-db +(reg-event-db :set-elector-and-page (fn [db [_ args]] (let [page (:page args) diff --git a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs index 63e1846..2f52d1f 100644 --- a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs +++ b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs @@ -38,11 +38,11 @@ [:a {:href target :id "back-link"} "Back"]])) (defn big-link - [text & {:keys [target intention]}] + [text & {:keys [target handler]}] [:div.big-link-container {:key target} [:a.big-link (merge (if target {:href target}{}) - (if intention {:on-click intention})) + (if handler {:on-click handler})) text]]) (defn nav-link [uri title page collapsed?] diff --git a/src/cljs/youyesyet/canvasser_app/views/elector.cljs b/src/cljs/youyesyet/canvasser_app/views/elector.cljs index cdc3e0b..920fb11 100644 --- a/src/cljs/youyesyet/canvasser_app/views/elector.cljs +++ b/src/cljs/youyesyet/canvasser_app/views/elector.cljs @@ -90,15 +90,11 @@ [:div.container {:id "main-container"} [:table [:tbody - ;; genders row (gender-row elector) - ;; names row (name-row elector) - ;; options rows (map - #(option-row elector %) - options) - ;; issues row + #(option-row elector %) + options) (issue-row elector)]] (ui/back-link)]] (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 f4e377c..4bd33e2 100644 --- a/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs +++ b/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs @@ -1,8 +1,8 @@ (ns ^{:doc "Canvasser app electors in household panel." :author "Simon Brooke"} youyesyet.canvasser-app.views.gdpr - (:require [reagent.core :refer [atom]] - [re-frame.core :refer [reg-sub subscribe dispatch]] + (:require [re-frame.core :refer [reg-sub subscribe dispatch]] + [reagent.core :as reagent] [youyesyet.canvasser-app.ui-utils :as ui])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -30,7 +30,6 @@ ;; OK, the idea here is a GDPR consent form to be signed by the elector - (defn gdpr-render [] (let [elector @(subscribe [:elector])] @@ -53,7 +52,9 @@ [:tr [:td [:canvas {:id "signature-pad" :style "width: 100%; min-width 300px; min-height 200px;"}]]]]]] - (ui/big-link "I consent" :target "#elector") ;; TODO: need to save the signature + (ui/big-link "I consent" + :handler (fn [] (dispatch [:set-consent-and-page elector "#/gdpr"]))) + ;; TODO: need to save the signature (ui/big-link "I DO NOT consent" :target "#elector")]))