Woohoo! Not broken, looking good

This commit is contained in:
Simon Brooke 2017-03-26 10:17:41 +01:00
parent 65b69939b3
commit b95fa9919e
7 changed files with 48 additions and 24 deletions

View file

@ -141,7 +141,6 @@ select {
} }
table { table {
border: 2px solid black;
border-collapse: collapse; border-collapse: collapse;
} }
@ -376,6 +375,14 @@ th {
padding-left: 75px; padding-left: 75px;
} }
input, select {
background-color: rgb( 50, 109, 177);
color: white;
font-size: 1.1em;
padding: 0.25em 1em;
border-radius: 0.5em;
}
.hidden { .hidden {
display: none; display: none;
} }

View file

@ -97,7 +97,7 @@
(rf/dispatch [:set-active-page :issues])) (rf/dispatch [:set-active-page :issues]))
(secretary/defroute "/issues/:elector" {elector-id :elector} (secretary/defroute "/issues/:elector" {elector-id :elector}
(rf/dispatch [:set-elector-and-page elector-id :issues])) (rf/dispatch [:set-elector-and-page {:elector-id elector-id :page :issues}]))
(secretary/defroute "/issue/:issue" {issue :issue} (secretary/defroute "/issue/:issue" {issue :issue}
(rf/dispatch [:set-issue issue])) (rf/dispatch [:set-issue issue]))

View file

@ -1,6 +1,8 @@
(ns youyesyet.handlers (ns youyesyet.handlers
(:require [youyesyet.db :as db] (:require [cljs.reader :refer [read-string]]
[re-frame.core :refer [dispatch reg-event-db]])) [re-frame.core :refer [dispatch reg-event-db]]
[youyesyet.db :as db]
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; ;;;;
@ -30,22 +32,32 @@
(fn [_ _] (fn [_ _]
db/default-db)) db/default-db))
(reg-event-db (reg-event-db
:set-active-page :set-active-page
(fn [db [_ page]] (fn [db [_ page]]
(assoc db :page page))) (assoc db :page page)))
(reg-event-db
:set-elector-and-page
(fn [db [_ [elector-id page]]]
(let [elector
(remove nil?
(map
#(if (= elector-id (:id %)) %)
(:electors (:address db))))]
(merge db {:elector elector :page page}))))
(reg-event-db (reg-event-db
:set-issue :set-elector-and-page
(fn [db [_ issue]] (fn [db [_ args]]
(assoc (assoc db :issue issue) :page :issue))) (let [page (:page args)
elector-id (read-string (:elector-id args))
elector
(first
(remove nil?
(map
#(if (= elector-id (:id %)) %)
(:electors (:address db)))))]
(js/console.log (str "Setting page to " page ", elector to " elector))
(assoc (assoc db :elector elector) :page page))))
(reg-event-db
:set-issue
(fn [db [_ issue]]
(js/console.log (str "Setting page to :issue, issue to " issue))
(assoc (assoc db :issue issue) :page :issue)))

View file

@ -50,7 +50,7 @@
[:div [:div
[:h1.error message] [:h1.error message]
[:div.container {:id "main-container"} [:div.container {:id "main-container"}
(ui/back-link)]]) (back-link)]])
(defn navbar [] (defn navbar []

View file

@ -99,7 +99,7 @@
options @(subscribe [:options])] options @(subscribe [:options])]
(if address (if address
[:div [:div
[:h1 (:address address) (count electors) " electors"] [:h1 (:address address)]
[:div.container {:id "main-container"} [:div.container {:id "main-container"}
[:table [:table
[:tbody [:tbody

View file

@ -40,6 +40,7 @@
issues @(subscribe [:issues]) issues @(subscribe [:issues])
elector @(subscribe [:elector]) elector @(subscribe [:elector])
address @(subscribe [:address])] address @(subscribe [:address])]
(js/console.log (str "Issue is " issue "; elector is " elector))
(cond (cond
(nil? address) (nil? address)
(ui/error-panel "No address selected") (ui/error-panel "No address selected")
@ -55,15 +56,18 @@
[:select {:id "elector" :name "elector"} [:select {:id "elector" :name "elector"}
(map (map
#(let [selkey (if (= (:id elector) (:id %)) :selected :not-selected)] #(let [selkey (if (= (:id elector) (:id %)) :selected :not-selected)]
[:option {:value (:id %) selkey "true"} (:name %)]) (:electors address))]] [:option {:value (:id %) :key (:id %) selkey "true"} (:name %)]) (:electors address))]]
[:p.widget [:p.widget
[:label {:for "issue"} "Issue"] [:label {:for "issue"} "Issue"]
[:select {:id "issue" :name "issue"} [:select {:id "issue" :name "issue"}
(map (map
#(let [selkey (if (= (:id issue) (:id %)) :selected :not-selected)] #(let [selkey (if (= issue %) :selected :not-selected)]
[:option {selkey "true"} %]) (keys issues))]] [:option {selkey "true" :key %} %]) (keys issues))]]
[:p.widget [:p.widget
[:label {:for "submit"} " "] [:label {:for "telephone"} "Telephone number"]
[:input {:id "submit" :name "submit" :type "submit" :value "Request Call"}]] [:input {:type "text" :id "telephone" :name "telephone"}]]
[:p.widget
[:label {:for "submit"} "To request a call"]
[:input {:id "submit" :name "submit" :type "submit" :value "Send this!"}]]
] ]
(ui/back-link)]]))) (ui/back-link)]])))

View file

@ -33,7 +33,6 @@
;;; See https://github.com/simon-brooke/youyesyet/blob/master/doc/specification/userspec.md#map-view ;;; See https://github.com/simon-brooke/youyesyet/blob/master/doc/specification/userspec.md#map-view
;;; Cribbed heavily from ;;; Cribbed heavily from
;;; https://github.com/reagent-project/reagent-cookbook/tree/master/recipes/leaflet ;;; https://github.com/reagent-project/reagent-cookbook/tree/master/recipes/leaflet
;;; but using OSM data because we can't afford commercial, so also cribbed from ;;; but using OSM data because we can't afford commercial, so also cribbed from
@ -52,11 +51,13 @@
(def osm-url "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") (def osm-url "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")
(def osm-attrib "Map data &copy; <a href='http://openstreetmap.org'>OpenStreetMap</a> contributors") (def osm-attrib "Map data &copy; <a href='http://openstreetmap.org'>OpenStreetMap</a> contributors")
(defn pin-image (defn pin-image
"select the name of a suitable pin image for this address" "select the name of a suitable pin image for this address"
[address] [address]
"yes-pin") "yes-pin")
(defn add-map-pin (defn add-map-pin
"Add a map-pin with this pin-image at this latitude and longitude "Add a map-pin with this pin-image at this latitude and longitude
in this map view" in this map view"