Only plot a point in range selector if it changes the x-value
authorDan Vanderkam <danvdk@gmail.com>
Tue, 21 Oct 2014 16:28:11 +0000 (12:28 -0400)
committerDan Vanderkam <danvdk@gmail.com>
Tue, 4 Nov 2014 23:45:39 +0000 (18:45 -0500)
plugins/range-selector.js

index 3a70e7d..d8a3c7a 100644 (file)
@@ -594,6 +594,13 @@ rangeSelector.prototype.drawMiniPlot_ = function() {
     var dataPoint = combinedSeriesData.data[i];
     var x = ((dataPoint[0] !== null) ? ((dataPoint[0] - xExtremes[0])*xFact) : NaN);
     var y = ((dataPoint[1] !== null) ? (canvasHeight - (dataPoint[1] - combinedSeriesData.yMin)*yFact) : NaN);
+
+    // Skip points that don't change the x-value. Overly fine-grained points
+    // can cause major slowdowns with the ctx.fill() call below.
+    if (prevX !== null && Math.round(x) == Math.round(prevX)) {
+      continue;
+    }
+
     if (isFinite(x) && isFinite(y)) {
       if(prevX === null) {
         ctx.lineTo(x, canvasHeight);