diff --git a/build.boot b/build.boot index d285ffd..4630da2 100644 --- a/build.boot +++ b/build.boot @@ -13,7 +13,8 @@ [com.rpl/specter "1.1.0"] [reagent "0.8.0-alpha2"] [ring "1.6.3"] - [bidi "2.1.3"]]) + [bidi "2.1.3"] + [cljs-ajax "0.7.3"]]) (task-options! pom {:project 'attendance diff --git a/src/clj/attendance/handler.clj b/src/clj/attendance/handler.clj index 42ca089..1ae4a41 100644 --- a/src/clj/attendance/handler.clj +++ b/src/clj/attendance/handler.clj @@ -1,5 +1,5 @@ (ns attendance.handler - (:require [attendance.data :refer [mock-roster]] + (:require [attendance.data :refer [mock-roster mock-extra]] [bidi.ring :refer [make-handler]] [clojure.java.io :as io] [ring.util.response :as res])) @@ -9,13 +9,19 @@ :headers {"Content-Type" "text/html"} :body (-> "public/index.html" io/resource slurp)}) -(defn mock-handler [req] +(defn mock-roster-handler [req] {:status 200 - :headers {"Content-Type" "text/csv"} + :headers {"Content-Type" "text/plain"} :body mock-roster}) +(defn mock-extra-handler [req] + {:status 200 + :headers {"Content-Type" "text/plain"} + :body mock-extra}) + (def routes ["/" {"index.html" index-handler - "mock/" mock-handler}]) + "mock/" {"roster/" mock-roster-handler + "extra/" mock-extra-handler}}]) (def handler (make-handler routes)) diff --git a/src/cljs/attendance/state.cljs b/src/cljs/attendance/state.cljs index ecd501e..fd32879 100644 --- a/src/cljs/attendance/state.cljs +++ b/src/cljs/attendance/state.cljs @@ -1,7 +1,8 @@ (ns attendance.state (:require [attendance.parse :refer [roster extra]] [reagent.core :refer [atom]] - [clojure.string :as string])) + [clojure.string :as string] + [ajax.core :refer [GET]])) ;; RAtom @@ -137,6 +138,20 @@ #(refresh-extra! (.-result reader)))) (.readAsText reader file))) -;(defn mock-data! -; (refresh-roster! parsed-roster) -; (refresh-extra! parsed-extra)) +(defn mock-handler [res] + (refresh-roster! (str res))) + +(defn mock-extra-handler [res] + (refresh-extra! (str res))) + +(defn mock-error-handler [{:keys [status status-text]}] + (.log (js/console (str "OH NO: " status " " status-text)))) + +(defn mock-data! + "Grab the mock data and load it into the app-state" + [] + (GET "/mock/roster/" {:handler mock-handler + :error-handler mock-error-handler}) + (GET "/mock/extra/" {:handler mock-extra-handler + :error-handler mock-error-handler})) + diff --git a/src/cljs/attendance/ui.cljs b/src/cljs/attendance/ui.cljs index bc6e9f0..fe0944f 100644 --- a/src/cljs/attendance/ui.cljs +++ b/src/cljs/attendance/ui.cljs @@ -25,14 +25,14 @@ "Buttons for managing the roster file" [] [:div.file-console - ;[button "console" "Load Mock Data" (s/mock-data!)] [:br] [:br] + [button "console" "Load Mock Data" #(s/mock-data!)] [:br] [:br] "Roster: " [file-upload "data" ".csv"] [:br] "Extra Hours: " [file-upload "extra" ".csv"] [:br] [:br] [button "console" "Check Report" #(-> (aggregate-report) js/alert)] " " [:a.export {:href (str "data:application/octet-stream;charset=utf8;base64," - (-> (aggregate-report) js/btoa))} + (-> (aggregate-report) js/btoa)/)} [button "console" "Download Report" #()]]]) (defn kid