highcharts-rails 5.0.12 → 5.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.markdown +59 -0
  3. data/app/assets/javascripts/highcharts.js +6250 -788
  4. data/app/assets/javascripts/highcharts/highcharts-3d.js +210 -25
  5. data/app/assets/javascripts/highcharts/highcharts-more.js +908 -22
  6. data/app/assets/javascripts/highcharts/modules/accessibility.js +272 -64
  7. data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
  8. data/app/assets/javascripts/highcharts/modules/boost.js +89 -66
  9. data/app/assets/javascripts/highcharts/modules/broken-axis.js +65 -4
  10. data/app/assets/javascripts/highcharts/modules/data.js +1 -1
  11. data/app/assets/javascripts/highcharts/modules/drilldown.js +234 -17
  12. data/app/assets/javascripts/highcharts/modules/exporting.js +508 -69
  13. data/app/assets/javascripts/highcharts/modules/funnel.js +129 -8
  14. data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
  15. data/app/assets/javascripts/highcharts/modules/heatmap.js +361 -44
  16. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +64 -1
  17. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +44 -44
  18. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +26 -3
  19. data/app/assets/javascripts/highcharts/modules/series-label.js +19 -1
  20. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +14 -5
  21. data/app/assets/javascripts/highcharts/modules/stock.js +1122 -86
  22. data/app/assets/javascripts/highcharts/modules/treemap.js +265 -43
  23. data/app/assets/javascripts/highcharts/modules/xrange-series.js +1 -1
  24. data/lib/highcharts/version.rb +1 -1
  25. metadata +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.12 (2017-05-24)
2
+ * @license Highcharts JS v5.0.13 (2017-07-27)
3
3
  *
4
4
  * (c) 2009-2017 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.12 (2017-05-24)
2
+ * @license Highcharts JS v5.0.13 (2017-07-27)
3
3
  * Boost module
4
4
  *
5
5
  * (c) 2010-2017 Highsoft AS
@@ -19,7 +19,7 @@
19
19
  /**
20
20
  * License: www.highcharts.com/license
21
21
  * Author: Christer Vasseng, Torstein Honsi
22
- *
22
+ *
23
23
  * This is an experimental Highcharts module that draws long data series on a canvas
24
24
  * in order to increase performance of the initial load time and tooltip responsiveness.
25
25
  *
@@ -41,6 +41,7 @@
41
41
  * - Area lines are not drawn
42
42
  * - Lines are not drawn on scatter charts
43
43
  * - Zones and negativeColor don't work
44
+ * - Dash styles are not rendered on lines.
44
45
  * - Columns are always one pixel wide. Don't set the threshold too low.
45
46
  * - Disable animations
46
47
  * - Marker shapes are not supported: markers will always be circles
@@ -49,7 +50,7 @@
49
50
  * - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
50
51
  * - Set enableMouseTracking to false on the series to improve total rendering time.
51
52
  * - The default threshold is set based on one series. If you have multiple, dense series, the combined
52
- * number of points drawn gets higher, and you may want to set the threshold lower in order to
53
+ * number of points drawn gets higher, and you may want to set the threshold lower in order to
53
54
  * use optimizations.
54
55
  * - If drawing large scatter charts, it's beneficial to set the marker radius to a value
55
56
  * less than 1. This is to add additional spacing to make the chart more readable.
@@ -62,11 +63,11 @@
62
63
  * Settings
63
64
  * There are two ways of setting the boost threshold:
64
65
  * - Per. series: boost based on number of points in individual series
65
- * - Per. chart: boost based on the number of series
66
+ * - Per. chart: boost based on the number of series
66
67
  *
67
68
  * To set the series boost threshold, set seriesBoostThreshold on the chart object.
68
69
  * To set the series-specific threshold, set boostThreshold on the series object.
69
- *
70
+ *
70
71
  * In addition, the following can be set in the boost object:
71
72
  * {
72
73
  * //Wether or not to use alpha blending
@@ -93,10 +94,10 @@
93
94
  *
94
95
  * Setting to e.g. 20 will cause the whole chart to enter boost mode
95
96
  * if there are 20 or more series active. When the chart is in boost mode,
96
- * every series in it will be rendered to a common canvas. This offers
97
+ * every series in it will be rendered to a common canvas. This offers
97
98
  * a significant speed improvment in charts with a very high
98
99
  * amount of series.
99
- *
100
+ *
100
101
  * Note: only available when including the boost module.
101
102
  *
102
103
  * @default null
@@ -359,7 +360,7 @@
359
360
  ////////////////////////////////////////////////////////////////////////////////
360
361
  // START OF WEBGL ABSTRACTIONS
361
362
 
362
- /*
363
+ /*
363
364
  * A static shader mimicing axis translation functions found in parts/Axis
364
365
  * @param gl {WebGLContext} - the context in which the shader is active
365
366
  */
@@ -665,7 +666,7 @@
665
666
 
666
667
  ////////////////////////////////////////////////////////////////////////////
667
668
 
668
- /*
669
+ /*
669
670
  * Enable/disable circle drawing
670
671
  */
671
672
  function setDrawAsCircle(flag) {
@@ -680,7 +681,7 @@
680
681
  gl.uniform1i(isCircleUniform, 0);
681
682
  }
682
683
 
683
- /*
684
+ /*
684
685
  * Set bubble uniforms
685
686
  * @param series {Highcharts.Series} - the series to use
686
687
  */
@@ -737,7 +738,7 @@
737
738
 
738
739
  /*
739
740
  * Set the perspective matrix
740
- * @param m {Matrix4x4} - the matrix
741
+ * @param m {Matrix4x4} - the matrix
741
742
  */
742
743
  function setPMatrix(m) {
743
744
  gl.uniformMatrix4fv(pUniform, false, m);
@@ -790,8 +791,8 @@
790
791
  };
791
792
  }
792
793
 
793
- /*
794
- * Vertex Buffer abstraction
794
+ /*
795
+ * Vertex Buffer abstraction
795
796
  * A vertex buffer is a set of vertices which are passed to the GPU
796
797
  * in a single call.
797
798
  * @param gl {WebGLContext} - the context in which to create the buffer
@@ -813,8 +814,8 @@
813
814
  }
814
815
  }
815
816
 
816
- /*
817
- * Build the buffer
817
+ /*
818
+ * Build the buffer
818
819
  * @param dataIn {Array<float>} - a 0 padded array of indices
819
820
  * @param attrib {String} - the name of the Attribute to bind the buffer to
820
821
  * @param dataComponents {Integer} - the number of components per. indice
@@ -850,7 +851,7 @@
850
851
  return true;
851
852
  }
852
853
 
853
- /*
854
+ /*
854
855
  * Bind the buffer
855
856
  */
856
857
  function bind() {
@@ -865,8 +866,8 @@
865
866
  //gl.enableVertexAttribArray(vertAttribute);
866
867
  }
867
868
 
868
- /*
869
- * Render the buffer
869
+ /*
870
+ * Render the buffer
870
871
  * @param from {Integer} - the start indice
871
872
  * @param to {Integer} - the end indice
872
873
  * @param drawMode {String} - the draw mode
@@ -902,7 +903,7 @@
902
903
  }
903
904
 
904
905
  function push(x, y, a, b) {
905
- if (preAllocated) { // && iterator <= preAllocated.length - 4) {
906
+ if (preAllocated) { // && iterator <= preAllocated.length - 4) {
906
907
  preAllocated[++iterator] = x;
907
908
  preAllocated[++iterator] = y;
908
909
  preAllocated[++iterator] = a;
@@ -918,7 +919,7 @@
918
919
  size *= 4;
919
920
  iterator = -1;
920
921
 
921
- //if (!preAllocated || (preAllocated && preAllocated.length !== size)) {
922
+ //if (!preAllocated || (preAllocated && preAllocated.length !== size)) {
922
923
  preAllocated = new Float32Array(size);
923
924
  //}
924
925
  }
@@ -1053,7 +1054,7 @@
1053
1054
  vbuffer.allocate(s);
1054
1055
  }
1055
1056
 
1056
- /*
1057
+ /*
1057
1058
  * Returns an orthographic perspective matrix
1058
1059
  * @param {number} width - the width of the viewport in pixels
1059
1060
  * @param {number} height - the height of the viewport in pixels
@@ -1086,7 +1087,7 @@
1086
1087
 
1087
1088
  /*
1088
1089
  * Push data for a single series
1089
- * This calculates additional vertices and transforms the data to be
1090
+ * This calculates additional vertices and transforms the data to be
1090
1091
  * aligned correctly in memory
1091
1092
  */
1092
1093
  function pushSeriesData(series, inst) {
@@ -1112,12 +1113,12 @@
1112
1113
  // yBottom = chart.yAxis[0].getThreshold(threshold),
1113
1114
  // hasThreshold = isNumber(threshold),
1114
1115
  // colorByPoint = series.options.colorByPoint,
1115
- // This is required for color by point, so make sure this is
1116
+ // This is required for color by point, so make sure this is
1116
1117
  // uncommented if enabling that
1117
1118
  // colorIndex = 0,
1118
1119
  // Required for color axis support
1119
- // caxis,
1120
- // connectNulls = options.connectNulls,
1120
+ // caxis,
1121
+ // connectNulls = options.connectNulls,
1121
1122
  // For some reason eslint doesn't pick up that this is actually used
1122
1123
  maxVal, //eslint-disable-line no-unused-vars
1123
1124
  points = series.points || false,
@@ -1210,7 +1211,7 @@
1210
1211
  swidth,
1211
1212
  pointAttr;
1212
1213
 
1213
- if (plotY !== undefined && !isNaN(plotY) && point.y !== null) {
1214
+ if (typeof plotY !== 'undefined' && !isNaN(plotY) && point.y !== null) {
1214
1215
  shapeArgs = point.shapeArgs;
1215
1216
 
1216
1217
 
@@ -1225,10 +1226,10 @@
1225
1226
  color[2] /= 255.0;
1226
1227
 
1227
1228
  // So there are two ways of doing this. Either we can
1228
- // create a rectangle of two triangles, or we can do a
1229
- // point and use point size. Latter is faster, but
1229
+ // create a rectangle of two triangles, or we can do a
1230
+ // point and use point size. Latter is faster, but
1230
1231
  // only supports squares. So we're doing triangles.
1231
- // We could also use one color per. vertice to get
1232
+ // We could also use one color per. vertice to get
1232
1233
  // better color interpolation.
1233
1234
 
1234
1235
  // If there's stroking, we do an additional rect
@@ -1255,6 +1256,18 @@
1255
1256
  // swidth = 0;
1256
1257
  // }
1257
1258
 
1259
+ // Fixes issues with inverted heatmaps (see #6981)
1260
+ // The root cause is that the coordinate system is flipped.
1261
+ // In other words, instead of [0,0] being top-left, it's bottom-right.
1262
+ // This causes a vertical and horizontal flip in the resulting image,
1263
+ // making it rotated 180 degrees.
1264
+ if (series.type === 'heatmap' && chart.inverted) {
1265
+ shapeArgs.x = xAxis.len - shapeArgs.x;
1266
+ shapeArgs.y = yAxis.len - shapeArgs.y;
1267
+ shapeArgs.width = -shapeArgs.width;
1268
+ shapeArgs.height = -shapeArgs.height;
1269
+ }
1270
+
1258
1271
  pushRect(
1259
1272
  shapeArgs.x + swidth,
1260
1273
  shapeArgs.y + swidth,
@@ -1273,7 +1286,7 @@
1273
1286
  // if (H.ColorAxis && a instanceof H.ColorAxis) {
1274
1287
  // caxis = a;
1275
1288
  // }
1276
- // });
1289
+ // });
1277
1290
 
1278
1291
  each(sdata, function(d, i) {
1279
1292
  var x,
@@ -1462,7 +1475,7 @@
1462
1475
  );
1463
1476
 
1464
1477
  // Uncomment this to support color axis.
1465
- // if (caxis) {
1478
+ // if (caxis) {
1466
1479
  // color = H.color(caxis.toColor(y)).rgba;
1467
1480
 
1468
1481
  // inst.colorData.push(color[0] / 255.0);
@@ -1515,7 +1528,7 @@
1515
1528
  }
1516
1529
 
1517
1530
  if (settings.timeSeriesProcessing) {
1518
- console.time('building ' + s.type + ' series'); //eslint-disable-line no-console
1531
+ console.time('building ' + s.type + ' series'); //eslint-disable-line no-console
1519
1532
  }
1520
1533
 
1521
1534
  series.push({
@@ -1547,7 +1560,7 @@
1547
1560
  pushSeriesData(s, series[series.length - 1]);
1548
1561
 
1549
1562
  if (settings.timeSeriesProcessing) {
1550
- console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console
1563
+ console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console
1551
1564
  }
1552
1565
  }
1553
1566
 
@@ -1598,7 +1611,7 @@
1598
1611
  shader.setUniform('yAxisCVSCoord', !axis.horiz);
1599
1612
  }
1600
1613
 
1601
- /*
1614
+ /*
1602
1615
  * Set the translation threshold
1603
1616
  * @param has {boolean} - has threshold flag
1604
1617
  * @param translation {Float} - the threshold
@@ -1608,8 +1621,8 @@
1608
1621
  shader.setUniform('translatedThreshold', translation);
1609
1622
  }
1610
1623
 
1611
- /*
1612
- * Render the data
1624
+ /*
1625
+ * Render the data
1613
1626
  * This renders all pushed series.
1614
1627
  */
1615
1628
  function render(chart) {
@@ -1768,7 +1781,7 @@
1768
1781
  }
1769
1782
  }
1770
1783
 
1771
- /*
1784
+ /*
1772
1785
  * Render the data when ready
1773
1786
  */
1774
1787
  function renderWhenReady(chart) {
@@ -1787,7 +1800,7 @@
1787
1800
  }
1788
1801
  }
1789
1802
 
1790
- /*
1803
+ /*
1791
1804
  * Set the viewport size in pixels
1792
1805
  * Creates an orthographic perspective matrix and applies it.
1793
1806
  * @param w {Integer} - the width of the viewport
@@ -1806,8 +1819,8 @@
1806
1819
  shader.setPMatrix(orthoMatrix(width, height));
1807
1820
  }
1808
1821
 
1809
- /*
1810
- * Init OpenGL
1822
+ /*
1823
+ * Init OpenGL
1811
1824
  * @param canvas {HTMLCanvas} - the canvas to render to
1812
1825
  */
1813
1826
  function init(canvas, noFlush) {
@@ -1826,7 +1839,7 @@
1826
1839
  }
1827
1840
 
1828
1841
  if (settings.timeSetup) {
1829
- console.time('gl setup'); //eslint-disable-line no-console
1842
+ console.time('gl setup'); //eslint-disable-line no-console
1830
1843
  }
1831
1844
 
1832
1845
  for (; i < contexts.length; i++) {
@@ -1850,7 +1863,7 @@
1850
1863
  gl.disable(gl.DEPTH_TEST);
1851
1864
  gl.depthMask(gl.FALSE);
1852
1865
 
1853
- shader = GLShader(gl); //eslint-disable-line new-cap
1866
+ shader = GLShader(gl); //eslint-disable-line new-cap
1854
1867
  vbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
1855
1868
 
1856
1869
  textureIsReady = false;
@@ -1901,8 +1914,8 @@
1901
1914
  return true;
1902
1915
  }
1903
1916
 
1904
- /*
1905
- * Check if we have a valid OGL context
1917
+ /*
1918
+ * Check if we have a valid OGL context
1906
1919
  * @returns {Boolean} - true if the context is valid
1907
1920
  */
1908
1921
  function valid() {
@@ -1921,7 +1934,11 @@
1921
1934
  vbuffer.destroy();
1922
1935
  shader.destroy();
1923
1936
  if (gl) {
1924
- //gl.deleteTexture(circleTextureHandle);
1937
+ if (circleTextureHandle) {
1938
+ gl.deleteTexture(circleTextureHandle);
1939
+ }
1940
+ gl.canvas.width = 1;
1941
+ gl.canvas.height = 1;
1925
1942
  }
1926
1943
  }
1927
1944
 
@@ -1953,7 +1970,7 @@
1953
1970
  // END OF WEBGL ABSTRACTIONS
1954
1971
  ////////////////////////////////////////////////////////////////////////////////
1955
1972
 
1956
- /*
1973
+ /*
1957
1974
  * Create a canvas + context and attach it to the target
1958
1975
  * @param target {Highcharts.Chart|Highcharts.Series} - the canvas target
1959
1976
  * @param chart {Highcharts.Chart} - the chart
@@ -1997,7 +2014,7 @@
1997
2014
 
1998
2015
  target.image.clip(target.boostClipRect);
1999
2016
 
2000
- if (target.inverted) {
2017
+ if (target.inverted || (target.chart && target.chart.inverted)) {
2001
2018
  each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) {
2002
2019
  wrap(false, fn, swapXY);
2003
2020
  });
@@ -2035,6 +2052,10 @@
2035
2052
  target.image.attr({
2036
2053
  href: target.canvas.toDataURL('image/png')
2037
2054
  });
2055
+
2056
+ // Destroy gl context when we're done with it
2057
+ target.ogl.destroy();
2058
+ target.ogl = false;
2038
2059
  }); //eslint-disable-line new-cap
2039
2060
 
2040
2061
  target.ogl.init(target.canvas);
@@ -2052,7 +2073,7 @@
2052
2073
  }
2053
2074
 
2054
2075
  /*
2055
- * Performs the actual render if the renderer is
2076
+ * Performs the actual render if the renderer is
2056
2077
  * attached to the series.
2057
2078
  * @param renderer {OGLRenderer} - the renderer
2058
2079
  * @param series {Highcharts.Series} - the series
@@ -2085,7 +2106,7 @@
2085
2106
  * @param finalFunc {Function} - the callback to call when done
2086
2107
  * @param chunkSize {Number} - the number of iterations per. timeout
2087
2108
  * @param i {Number} - the current index
2088
- * @param noTimeout {Boolean} - set to true to skip timeouts
2109
+ * @param noTimeout {Boolean} - set to true to skip timeouts
2089
2110
  */
2090
2111
  function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {
2091
2112
  i = i || 0;
@@ -2104,7 +2125,7 @@
2104
2125
  if (noTimeout) {
2105
2126
  eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
2106
2127
  } else if (win.requestAnimationFrame) {
2107
- //If available, do requestAnimationFrame - shaves off a few ms
2128
+ //If available, do requestAnimationFrame - shaves off a few ms
2108
2129
  win.requestAnimationFrame(function() {
2109
2130
  eachAsync(arr, fn, finalFunc, chunkSize, i);
2110
2131
  });
@@ -2124,7 +2145,7 @@
2124
2145
  // Following is the parts of the boost that's common between OGL/Legacy
2125
2146
 
2126
2147
  /**
2127
- * Return a full Point object based on the index.
2148
+ * Return a full Point object based on the index.
2128
2149
  * The boost module uses stripped point objects for performance reasons.
2129
2150
  * @param {Number} boostPoint A stripped-down point object
2130
2151
  * @returns {Object} A Point object as per http://api.highcharts.com/highcharts#Point
@@ -2162,8 +2183,8 @@
2162
2183
  });
2163
2184
 
2164
2185
  /**
2165
- * Extend series.destroy to also remove the fake k-d-tree points (#5137).
2166
- * Normally this is handled by Series.destroy that calls Point.destroy,
2186
+ * Extend series.destroy to also remove the fake k-d-tree points (#5137).
2187
+ * Normally this is handled by Series.destroy that calls Point.destroy,
2167
2188
  * but the fake search points are not registered like that.
2168
2189
  */
2169
2190
  wrap(Series.prototype, 'destroy', function(proceed) {
@@ -2189,7 +2210,7 @@
2189
2210
 
2190
2211
  /**
2191
2212
  * Do not compute extremes when min and max are set.
2192
- * If we use this in the core, we can add the hook
2213
+ * If we use this in the core, we can add the hook
2193
2214
  * to hasExtremes to the methods directly.
2194
2215
  */
2195
2216
  wrap(Series.prototype, 'getExtremes', function(proceed) {
@@ -2219,8 +2240,8 @@
2219
2240
  );
2220
2241
 
2221
2242
  /**
2222
- * Override a bunch of methods the same way. If the number of points is
2223
- * below the threshold, run the original method. If not, check for a
2243
+ * Override a bunch of methods the same way. If the number of points is
2244
+ * below the threshold, run the original method. If not, check for a
2224
2245
  * canvas version or do nothing.
2225
2246
  *
2226
2247
  * Note that we're not overriding any of these for heatmaps.
@@ -2273,6 +2294,10 @@
2273
2294
  if (seriesTypes.treemap) {
2274
2295
  wrap(seriesTypes.treemap.prototype, method, branch);
2275
2296
  }
2297
+
2298
+ if (seriesTypes.heatmap) {
2299
+ wrap(seriesTypes.heatmap.prototype, method, branch);
2300
+ }
2276
2301
  }
2277
2302
  });
2278
2303
 
@@ -2320,14 +2345,12 @@
2320
2345
  renderIfNotSeriesBoosting(renderer, this);
2321
2346
  }
2322
2347
 
2323
-
2324
-
2325
2348
  ////////////////////////////////////////////////////////////////////////////////
2326
2349
  // We're wrapped in a closure, so just return if there's no webgl support
2327
2350
 
2328
2351
  if (!hasWebGLSupport()) {
2329
2352
  if (typeof H.initCanvasBoost !== 'undefined') {
2330
- // Fallback to canvas boost
2353
+ // Fallback to canvas boost
2331
2354
  H.initCanvasBoost();
2332
2355
  } else {
2333
2356
  H.error(26);
@@ -2338,7 +2361,7 @@
2338
2361
  // GL-SPECIFIC WRAPPINGS FOLLOWS
2339
2362
 
2340
2363
  /** If the series is a heatmap or treemap, or if the series is not boosting
2341
- * do the default behaviour. Otherwise, process if the series has no
2364
+ * do the default behaviour. Otherwise, process if the series has no
2342
2365
  * extremes.
2343
2366
  */
2344
2367
  wrap(Series.prototype, 'processData', function(proceed) {
@@ -2357,7 +2380,7 @@
2357
2380
  H.extend(Series.prototype, {
2358
2381
  pointRange: 0,
2359
2382
  directTouch: false,
2360
- allowDG: false, // No data grouping, let boost handle large data
2383
+ allowDG: false, // No data grouping, let boost handle large data
2361
2384
  hasExtremes: function(checkX) {
2362
2385
  var options = this.options,
2363
2386
  data = options.data,
@@ -2370,7 +2393,7 @@
2370
2393
  },
2371
2394
 
2372
2395
  /**
2373
- * If implemented in the core, parts of this can probably be
2396
+ * If implemented in the core, parts of this can probably be
2374
2397
  * shared with other similar methods in Highcharts.
2375
2398
  */
2376
2399
  destroyGraphics: function() {
@@ -2436,8 +2459,8 @@
2436
2459
  //Shaves off about 60ms compared to repeated concatination
2437
2460
  index = clientX + ',' + plotY;
2438
2461
 
2439
- // The k-d tree requires series points.
2440
- // Reduce the amount of points, since the time to build the
2462
+ // The k-d tree requires series points.
2463
+ // Reduce the amount of points, since the time to build the
2441
2464
  // tree increases exponentially.
2442
2465
  if (enableMouseTracking && !pointTaken[index]) {
2443
2466
  pointTaken[index] = true;
@@ -2491,7 +2514,7 @@
2491
2514
 
2492
2515
  points = this.points = [];
2493
2516
 
2494
- // Do not start building while drawing
2517
+ // Do not start building while drawing
2495
2518
  series.buildKDTree = noop;
2496
2519
 
2497
2520
  if (renderer) {
@@ -2589,7 +2612,7 @@
2589
2612
 
2590
2613
  function doneProcessing() {
2591
2614
  fireEvent(series, 'renderedCanvas');
2592
- // Pass tests in Pointer.
2615
+ // Pass tests in Pointer.
2593
2616
  // Replace this with a single property, and replace when zooming
2594
2617
  // in below boostThreshold.
2595
2618
  series.directTouch = false;