|
99 | 99 | (set! (aget data :success-message) "Event type added."))) |
100 | 100 | (request.catch (partial handle-error data)))) |
101 | 101 |
|
| 102 | +(defn show-csv [data data-url ev] |
| 103 | + (let [request (m.request {:method "GET" |
| 104 | + :url data-url |
| 105 | + :deserialize (fn [d] (.map (.split d "\n") (fn [l] (.split l ",")))) |
| 106 | + :withCredentials true})] |
| 107 | + (set! (aget data :spinner) true) |
| 108 | + (set! (aget data :error) nil) |
| 109 | + (request.then |
| 110 | + (fn [response-data] |
| 111 | + (console.log "CSV:" response-data) |
| 112 | + (set! (aget data :spinner) false) |
| 113 | + (set! (aget data :error) nil) |
| 114 | + (set! (aget data :view-csv) response-data))) |
| 115 | + (request.catch (partial handle-error data)))) |
| 116 | + |
102 | 117 | (defn update-event-name [data ev] |
103 | 118 | (set! (aget data :event-name) (str ev.target.value)) |
104 | 119 | (set! (aget ev :redraw) false)) |
|
144 | 159 | (.map (get data :event-types) |
145 | 160 | (fn [event-type i] |
146 | 161 | (m :div {:class "event"} |
147 | | - [(m :span (m :a {:href (str "data/" event-type ".csv")} (str event-type))) |
| 162 | + [(m :span {:onclick (partial show-csv data (str "data/" event-type ".csv"))} (str event-type)) |
148 | 163 | (m :button {:class (str "color-" (+ (mod i 5) 1)) |
149 | 164 | :onclick (partial log-event data event-type)} (svg-icon "check"))]))))) |
150 | 165 |
|
|
183 | 198 | (if (.-length (get data :event-types)) |
184 | 199 | (component-csv-downloads data))]))])) |
185 | 200 |
|
| 201 | +(defn component-csv-view [data] |
| 202 | + (m :div {:id "csv-view"} |
| 203 | + [(m :button {:class "close-csv" |
| 204 | + :onclick (fn [ev] (set! (aget data :view-csv) nil))} |
| 205 | + "x") |
| 206 | + (.map (.reverse (get data :view-csv)) |
| 207 | + (fn [line] |
| 208 | + (if (== (.indexOf (get line 0) "timestamp") -1) |
| 209 | + (let [desc (or (get line 1) "") |
| 210 | + desc (.substring desc 1 (- (.-length desc) 1))] |
| 211 | + (m :div [(m :span {:class "time"} (get line 0)) |
| 212 | + (m :span {:class "description"} desc)])))))])) |
| 213 | + |
186 | 214 | (defn component-success-message [data] |
187 | 215 | (if (get data :success-message) |
188 | 216 | (do |
|
194 | 222 | (m :div [(m {:view (partial component-burger-menu data)}) |
195 | 223 | (m {:view (partial component-spinner data)}) |
196 | 224 | (if (not (get data :menu-show)) |
197 | | - ( if (> (.-length (get data :event-types)) 0) |
| 225 | + (if (> (.-length (get data :event-types)) 0) |
198 | 226 | [(m {:view (partial component-timestamp data)}) |
199 | 227 | (m {:view (partial component-comment data)}) |
200 | 228 | (m {:view (partial component-events data)})] |
201 | 229 | (m :div {:id "message"} "To get started, add a new event-type in settings."))) |
| 230 | + (if (get data :view-csv) (m {:view (partial component-csv-view data)})) |
202 | 231 | (m {:view (partial component-success-message data)})])) |
203 | 232 |
|
204 | 233 | ; ***** Main ***** ; |
|
0 commit comments