      {:display-name (str "series-tsplot-" (:name series))
       :component-did-update
       (fn [ this ]
-        (tsplot-fetch-and-draw (reagent/dom-node this) (:name series) (dom-width (:dom-node @series-state))))
+        (watch :component-did-update)
+        (tsplot-draw (reagent/dom-node this) (dom-width (:dom-node @series-state)) (:series-data @series-state)))
       
       :component-did-mount
       (fn [ this ]
-        (swap! series-state assoc :dom-node (.-parentNode (reagent/dom-node this)))        
-        (tsplot-fetch-and-draw (reagent/dom-node this) (:name series) (dom-width (.-parentNode (reagent/dom-node this)))))
+        (watch :component-did-mount)
+        (swap! series-state assoc :dom-node (.-parentNode (reagent/dom-node this)))
+        (go
+          (swap! series-state assoc :series-data (<! (<<< fetch-series-data (:name series) @query-window-secs)))))
 
       :reagent-render
       (fn [ ]
         @window-width
+        (watch :reagent-render)
         [:canvas { :width (dom-width (:dom-node @series-state)) :height 180}])})))
 
 (defn series-pane [ series ]

            (fn [ data ]
              (cb data))))

(defn tsplot-fetch-and-draw [ canvas series-name width ]
  (let [ ctx (.getContext canvas "2d")]
    (go
      (tsplot/draw ctx width 180  (<! (<<< fetch-series-data
                                           series-name
                                           @query-window-secs))))))

(defn dom-width [ node ]
  (if node


(defn series-list [ ]
  [:div
   (for [ series (:series @dashboard-state) ]
     ^{ :key (:name series) } [series-pane series])])

(defn end-edit [ text state ]
