                     "width" (.rangeBand x-scale)
                     "height" #(- (y-neg-scale (aget % "queued_time_millis")) y-zero)})
         (.select "title")
-        (.text #(gstring/format "Queue time %.1fm" (aget % "queued_time_millis"))))
+        (.text #(let [[duration-str] (datetime/millis-to-float-duration (aget % "queued_time_millis"))]
+                  (gstring/format "Queue time %s" duration-str))))
 
     ;; bars exit
     (-> bars-join

       (filter build-graphable)
       reverse
       (map add-queued-time)
       (map add-minute-measures)
       (take (:max-bars plot-info))))

(defn project-insights-bar [builds owner]

        y-neg-scale (-> (js/d3.scale.linear)
                        (.domain #js[0 y-neg-max])
                        (.range #js[y-zero (:height plot-info)]))
        y-pos-tick-values `(~@(map datetime/nice-floor-duration
                                   [y-pos-max (* y-pos-max 0.5)])
                            0)
        y-neg-tick-values [(datetime/nice-floor-duration y-neg-max)]
        y-pos-axis (-> (js/d3.svg.axis)
                       (.scale y-pos-scale)
                       (.orient "left")
                       (.tickValues (clj->js y-pos-tick-values))
                       (.tickFormat #(first (datetime/millis-to-float-duration % {:decimals 0}))))
        y-neg-axis (-> (js/d3.svg.axis)
                       (.scale y-neg-scale)
                       (.orient "left")
                       (.tickValues (clj->js y-neg-tick-values))
                       (.tickFormat #(first (datetime/millis-to-float-duration % {:decimals 0}))))
        scale-filler (map (partial str "xx-") (range (- (:max-bars plot-info) (count builds))))
        x-scale (-> (js/d3.scale.ordinal)
                    (.domain (clj->js
