From 2dde68256ca02f34d8f24a471309c1fbee5bba32 Mon Sep 17 00:00:00 2001 From: Saskia Lindner Date: Wed, 2 Aug 2017 16:37:29 +0200 Subject: [PATCH] Parse input for duration filter correctly --- src/day8/re_frame/trace.cljs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/day8/re_frame/trace.cljs b/src/day8/re_frame/trace.cljs index f9c1089..25f91c0 100644 --- a/src/day8/re_frame/trace.cljs +++ b/src/day8/re_frame/trace.cljs @@ -142,7 +142,7 @@ (str/includes? (str/lower-case (str (:operation trace) " " (:op-type trace))) (:query query))) (fn [trace] - (< (js/parseInt (:query query)) (:duration trace))))) + (< (:query query) (:duration trace))))) (defn render-traces [showing-traces] (doall @@ -175,17 +175,23 @@ (defn render-trace-panel [] (let [filter-input (r/atom "") filter-items (r/atom []) - filter-type (r/atom :contains)] + filter-type (r/atom :contains) + input-error (r/atom false)] (fn [] (let [showing-traces (if (= @filter-items []) @traces (filter (apply every-pred (map query->fn @filter-items)) @traces)) save-query (fn [_] - (swap! filter-items conj {:id (random-uuid) - :query (if (= @filter-type :contains) - (str/lower-case @filter-input) - (js/parseInt @filter-input)) - :filter-type @filter-type}))] + (if (and (= @filter-type :slower-than) + (js/isNaN (js/parseFloat @filter-input))) + (reset! input-error true) + (do + (reset! input-error false) + (swap! filter-items conj {:id (random-uuid) + :query (if (= @filter-type :contains) + (str/lower-case @filter-input) + (js/parseFloat @filter-input)) + :filter-type @filter-type}))))] [:div [:div.filter-control {:style {:margin-bottom 20}} [:div.filter-control-input @@ -200,6 +206,9 @@ [:button.button.icon-button {:on-click save-query :style {:margin 0}} [components/icon-add]] + (if @input-error + [:div.input-error {:style {:color "red" :margin-top 5}} + "Please enter a valid number."]) [:br]] [:ul.filter-items (map (fn [item]