            [:table
             {:cell-spacing "0" :width "100%"}
             [:thead>tr
+             [:th [:button.text-button
+                   {:style {:cursor "pointer"}
+                    :on-click #(reset! trace-details {:showing (not (:showing @trace-details))})}
+                   (if (:showing @trace-details) "-" "+")]]
              [:th "operations"]
              [:th
                (when (pos? (count @filter-items))

  (let [filter-input     (r/atom "")
        filter-items     (r/atom [])
        filter-type      (r/atom :contains)
        input-error      (r/atom false)]
    (fn []
      (let [showing-traces       (if (= @filter-items [])
                                   @traces

                                     :render "purple"
                                     :re-frame.router/fsm-trigger "#fd701e"
                                     nil)}}
               [:td {:style (merge row-style {:cursor "pointer"})
                     :on-click #(swap! trace-details assoc keyword-id (not (keyword-id @trace-details)))}
                (if (or (keyword-id @trace-details)
                        (:showing @trace-details))
                  "▼"
                  "▶")]
               [:td {:style row-style} (str op-type)]
               [:td {:style row-style} (if (= PersistentVector (type (js->clj operation)))
                                         (second operation)
