From 2e827e131385353d9314e4271d888ec82379ada2 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 5 Apr 2018 10:55:07 -0700 Subject: [PATCH] starting to break out into separate folders. --- .gitignore | 1 + project.clj | 3 +- src/cljs/auto_ap/events.cljs | 33 --------------- src/cljs/auto_ap/events/admin/companies.cljs | 40 +++++++++++++++++++ .../auto_ap/views/pages/admin/companies.cljs | 26 +++++------- src/cljs/auto_ap/views/utils.cljs | 7 +++- 6 files changed, 60 insertions(+), 50 deletions(-) create mode 100644 src/cljs/auto_ap/events/admin/companies.cljs diff --git a/.gitignore b/.gitignore index 63237ad4..452e1f9e 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ pom.xml.asc *.log examples/ data/ +\#*\# diff --git a/project.clj b/project.clj index 227edc36..8911e51c 100644 --- a/project.clj +++ b/project.clj @@ -51,7 +51,8 @@ :plugins [[lein-figwheel "0.5.13"] [lein-pdo "0.1.1"]] - :jvm-opts ["-Dconfig=config/dev.edn"]}} + :jvm-opts ["-Dconfig=config/dev.edn"]} + :uberjar {:prep-tasks [["cljsbuild" "once" "min"] "compile"]}} :cljsbuild {:builds diff --git a/src/cljs/auto_ap/events.cljs b/src/cljs/auto_ap/events.cljs index 7b2b61f4..0944e874 100644 --- a/src/cljs/auto_ap/events.cljs +++ b/src/cljs/auto_ap/events.cljs @@ -45,39 +45,6 @@ {} companies)))) -(re-frame/reg-event-db - ::edit-company - (fn [db [_ company-id]] - (assoc-in db [:admin-companies :editing] - (get (:companies db) company-id)))) - -(re-frame/reg-event-fx - ::save-editing-company - (fn [{:keys [db]} _] - (let [edited-company (get-in db [:admin-companies :editing])] - {:db (assoc-in db [:admin-companies :editing :saving?] true) - :http {:method :put - :token (:user db) - :body (pr-str (select-keys edited-company [:name :email :data])) - :headers {"Content-Type" "application/edn"} - :uri (str "/api/companies/" (:id edited-company)) - :on-success [::finish-saving-company]}}))) - -(re-frame/reg-event-db - ::finish-saving-company - (fn [db [_ company]] - (-> db - - (assoc-in [:admin-companies :editing] nil) - (assoc-in [:companies (:id company)] company)))) - -(re-frame/reg-event-db - ::change-editing-company - (fn [db [_ path value]] - (assoc-in db (concat [:admin-companies :editing] path) - value))) - - (re-frame/reg-event-db ::swap-company (fn [db [_ company]] diff --git a/src/cljs/auto_ap/events/admin/companies.cljs b/src/cljs/auto_ap/events/admin/companies.cljs new file mode 100644 index 00000000..857ca191 --- /dev/null +++ b/src/cljs/auto_ap/events/admin/companies.cljs @@ -0,0 +1,40 @@ +(ns auto-ap.events.admin.companies + (:require [re-frame.core :as re-frame] + [auto-ap.db :as db] + [auto-ap.routes :as routes] + [auto-ap.effects :as effects] + [bidi.bidi :as bidi])) + +(re-frame/reg-event-db + ::edit + (fn [db [_ company-id]] + (assoc-in db [:admin-companies :editing] + (get (:companies db) company-id)))) + +(re-frame/reg-event-fx + ::save + (fn [{:keys [db]} _] + (let [edited-company (get-in db [:admin-companies :editing])] + {:db (assoc-in db [:admin-companies :editing :saving?] true) + :http {:method :put + :token (:user db) + :body (pr-str (select-keys edited-company [:name :email :data])) + :headers {"Content-Type" "application/edn"} + :uri (str "/api/companies/" (:id edited-company)) + :on-success [::save-complete]}}))) + +(re-frame/reg-event-db + ::save-complete + (fn [db [_ company]] + (-> db + + (assoc-in [:admin-companies :editing] nil) + (assoc-in [:companies (:id company)] company)))) + +(re-frame/reg-event-db + ::change + (fn [db [_ path value]] + (assoc-in db (concat [:admin-companies :editing] path) + value))) + + diff --git a/src/cljs/auto_ap/views/pages/admin/companies.cljs b/src/cljs/auto_ap/views/pages/admin/companies.cljs index 6e1c1e83..fbc1d594 100644 --- a/src/cljs/auto_ap/views/pages/admin/companies.cljs +++ b/src/cljs/auto_ap/views/pages/admin/companies.cljs @@ -3,8 +3,8 @@ (:require [re-frame.core :as re-frame] [reagent.core :as reagent] [auto-ap.subs :as subs] - [auto-ap.events :as events] - [auto-ap.views.utils :refer [login-url]] + [auto-ap.events.admin.companies :as events] + [auto-ap.views.utils :refer [login-url dispatch-value-change]] [cljs.reader :as edn] [auto-ap.routes :as routes] [bidi.bidi :as bidi])) @@ -19,7 +19,7 @@ [:th "Email"]]] [:tbody (for [{:keys [id name email data] :as c} @companies] ^{:key (str name "-" id )} - [:tr {:on-click (fn [] (re-frame/dispatch [::events/edit-company id])) + [:tr {:on-click (fn [] (re-frame/dispatch [::events/edit id])) :style {"cursor" "pointer"}} [:td name] [:td email]])]])) @@ -41,30 +41,26 @@ (when editing-company [:div.modal.is-active - [:div.modal-background {:on-click (fn [] (re-frame/dispatch [::events/edit-company nil]))}] + [:div.modal-background {:on-click (fn [] (re-frame/dispatch [::events/edit nil]))}] [:div.modal-card [:header.modal-card-head [:p.modal-card-title (str "Edit " (:name editing-company))] - [:button.delete {:on-click (fn [] (re-frame/dispatch [::events/edit-company nil]))}]] + [:button.delete {:on-click (fn [] (re-frame/dispatch [::events/edit nil]))}]] [:section.modal-card-body [:div.field [:label.label "Name"] [:div.control - [:input#company-name.input {:type "text" :value (:name editing-company) - :on-change (fn [e] - (re-frame/dispatch [::events/change-editing-company [:name] - (.. e -target -value)]))}]]] + [:input.input {:type "text" :value (:name editing-company) + :on-change (dispatch-value-change [::events/change [:name]])}]]] [:div.field [:label.label "Email"] [:div.control - [:input#email.input {:type "email" - :value (:email editing-company) - :on-change (fn [e] - (re-frame/dispatch [::events/change-editing-company [:email] - (.. e -target -value)]))}]]] + [:input.input {:type "email" + :value (:email editing-company) + :on-change (dispatch-value-change [::events/change [:email]])}]]] [:div.field [:div.control [:label.radio @@ -79,7 +75,7 @@ (when (:saving? editing-company) [:div.is-overlay {:style {"background-color" "rgba(150,150,150, 0.5)"}}])] [:footer.modal-card-foot - [:a.button.is-primary {:on-click (fn [] (re-frame/dispatch [::events/save-editing-company]))} + [:a.button.is-primary {:on-click (fn [] (re-frame/dispatch [::events/save]))} [:span "Save"] (when (:saving? editing-company) [:span.icon diff --git a/src/cljs/auto_ap/views/utils.cljs b/src/cljs/auto_ap/views/utils.cljs index fcf9885b..c0b828ce 100644 --- a/src/cljs/auto_ap/views/utils.cljs +++ b/src/cljs/auto_ap/views/utils.cljs @@ -1,4 +1,5 @@ -(ns auto-ap.views.utils) +(ns auto-ap.views.utils + (:require [re-frame.core :as re-frame])) (defn active-when= [active-page candidate] (when (= active-page candidate) " active")) @@ -7,3 +8,7 @@ (let [client-id "264081895820-0nndcfo3pbtqf30sro82vgq5r27h8736.apps.googleusercontent.com" redirect-uri (js/encodeURI (str (.-origin (.-location js/window)) "/api/oauth"))] (str "https://accounts.google.com/o/oauth2/auth?access_type=online&client_id=" client-id "&redirect_uri=" redirect-uri "&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile"))) + +(defn dispatch-value-change [event] + (fn [e] + (re-frame/dispatch (conj event (.. e -target -value)))))