Trying to get the GDPR consent form working (fail)

This commit is contained in:
Simon Brooke 2018-07-02 19:12:20 +01:00
parent c7b6484597
commit f70d8ee2ff
5 changed files with 32 additions and 17 deletions

View file

@ -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))

View file

@ -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)

View file

@ -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?]

View file

@ -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"))))

View file

@ -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")]))