highcharts-rails 5.0.5 → 5.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 95ab880ad7d56585567f26fae9f38887e342f414
4
- data.tar.gz: bee88fcee2bdb7a4d9590c9c2eeebaa34733b8bd
3
+ metadata.gz: d5cdeffa8d95f333a687263dfcf02665e9de7eb6
4
+ data.tar.gz: 4e1dc3bed55b4ca55e4397f58d789e1259bf3dee
5
5
  SHA512:
6
- metadata.gz: bbcb7a42695ea87def28b41ba5dd197f42bd76e22a9d15d5810f1e423a5ae31cecce315d8316fdf8c69b1ec97a746f4261886919491b2fd706ea89777db600fe
7
- data.tar.gz: 9de87e7e096b9c7a54adf61cbac48ef3d3afb5d234503ca0cb3a56c5ac0a61092b8448b9b89135cbba61e2f67e4fbb2acc2a991bda0657c613e5cbc6fea1ac2a
6
+ metadata.gz: bdbdf6c8ebf4f3f5c9869d2092ed2106b6134a19927b5c603236a171d559d1affe3497b047af6f3671a628636e32d3f00e2991eb8d9b03dcdbc885c0871cbae7
7
+ data.tar.gz: eb1275d9eba5ec4e50416f92575aa4ae092c1ab055bfcc06fea46c4c38cc453fe2703a3efb6f531489477981df1822eb8cacd44da6f2bfb00972d65e1d9a024c
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,31 @@
1
+ # 5.0.6 / 2017-01-25
2
+
3
+ * Updated Highcharts to 5.0.6 (2016-12-07)
4
+ * Added a common hook, Highcharts.error, for user defined error handling.
5
+ * Bug fixes
6
+ * Fixed #4175, missed ticks when xAxis.reversed was used
7
+ * Fixed #4507, 3D scatter points were not rendered if z-value was not set.
8
+ * Fixed #5950, broken axis module caused errors when rendering funnel series.
9
+ * Fixed #6003, regression with pie chart selection border width.
10
+ * Fixed #6016, zones weren't applied for point elements in styled mode.
11
+ * Fixed #6018, 3D column not rendered in styled mode.
12
+ * Fixed #6020, stacked waterfall didn't render any points.
13
+ * Fixed #6021, chart.alignTicks on logarithmic axis should not be applied.
14
+ * Fixed #6045, multiple charts exporting demos failed with other width/height settings.
15
+ * Fixed #6054, regression which disabled selecting bubble points.
16
+ * Fixed #6055, halo sometimes animated to another point when hiding.
17
+ * Fixed #6062, minPointLength was applied for null points in a waterfall series.
18
+ * Fixed #6065, text outline was off with multiline text.
19
+ * Fixed #6067, bubble halo stayed forever per series.
20
+ * Fixed #6068, JS error on destroying chart from its own callback.
21
+ * Fixed #6077, legend title disappeared after legend update.
22
+ * Fixed #6080, stray data labels for empty points in column and bar series.
23
+ * Fixed #6094, a regression causing allowPointSelect not to work with 3D pies.
24
+ * Fixed JS errors on path animations in pies. Related to #6051.
25
+ * Fixed border issue on hovered points in map and heatmap. Related to #6064.
26
+ * Fixed issue with split tooltip anchors and panes.
27
+
28
+
1
29
  # 5.0.5 / 2017-01-25
2
30
 
3
31
  * Updated Highcharts to 5.0.5 (2016-11-29)
data/Rakefile CHANGED
@@ -95,6 +95,5 @@ task :dist, :version do |_, args|
95
95
  system "git commit -m '#{message}'"
96
96
 
97
97
  # Tag, build and release
98
- load 'lib/highcharts/version.rb' # Re-load this so Bundler gets the right version
99
- Rake::Task["release"].invoke
98
+ system "rake release"
100
99
  end
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -36,7 +36,7 @@
36
36
 
37
37
  var Highcharts = win.Highcharts ? win.Highcharts.error(16, true) : {
38
38
  product: 'Highcharts',
39
- version: '5.0.5',
39
+ version: '5.0.6',
40
40
  deg2rad: Math.PI * 2 / 360,
41
41
  doc: doc,
42
42
  hasBidiBug: hasBidiBug,
@@ -87,14 +87,16 @@
87
87
  *
88
88
  * @function #error
89
89
  * @memberOf Highcharts
90
- * @param {Number} code - The error code. See [errors.xml]{@link
90
+ * @param {Number|String} code - The error code. See [errors.xml]{@link
91
91
  * https://github.com/highcharts/highcharts/blob/master/errors/errors.xml}
92
- * for available codes.
92
+ * for available codes. If it is a string, the error message is printed
93
+ * directly in the console.
93
94
  * @param {Boolean} [stop=false] - Whether to throw an error or just log a
94
95
  * warning in the console.
95
96
  */
96
97
  H.error = function(code, stop) {
97
- var msg = 'Highcharts error #' + code + ': www.highcharts.com/errors/' +
98
+ var msg = H.isNumber(code) ?
99
+ 'Highcharts error #' + code + ': www.highcharts.com/errors/' + code :
98
100
  code;
99
101
  if (stop) {
100
102
  throw new Error(msg);
@@ -431,11 +433,11 @@
431
433
  }
432
434
  }
433
435
 
434
- if (start.length) {
436
+ if (start.length && H.isNumber(shift)) {
435
437
 
436
438
  // The common target length for the start and end array, where both
437
439
  // arrays are padded in opposite ends
438
- fullLength = end.length + (shift || 0) * positionFactor * numParams;
440
+ fullLength = end.length + shift * positionFactor * numParams;
439
441
 
440
442
  if (!reverse) {
441
443
  prepend(end, start);
@@ -1497,6 +1499,22 @@
1497
1499
  return [].filter.call(arr, callback);
1498
1500
  };
1499
1501
 
1502
+ /**
1503
+ * Return the value of the first element in the array that satisfies the
1504
+ * provided testing function.
1505
+ *
1506
+ * @function #find
1507
+ * @memberOf Highcharts
1508
+ * @param {Array} arr - The array to test.
1509
+ * @param {Function} callback - The callback function. The function receives the
1510
+ * item as the first argument. Return `true` if this item satisfies the
1511
+ * condition.
1512
+ * @returns {Mixed} - The value of the element.
1513
+ */
1514
+ H.find = function(arr, callback) {
1515
+ return [].find.call(arr, callback);
1516
+ };
1517
+
1500
1518
  /**
1501
1519
  * Map an array by a callback.
1502
1520
  *
@@ -2051,6 +2069,19 @@
2051
2069
  };
2052
2070
  }
2053
2071
 
2072
+ if (!Array.prototype.find) {
2073
+ H.find = function(arr, fn) {
2074
+ var i,
2075
+ length = arr.length;
2076
+
2077
+ for (i = 0; i < length; i++) {
2078
+ if (fn(arr[i], i)) {
2079
+ return arr[i];
2080
+ }
2081
+ }
2082
+ };
2083
+ }
2084
+
2054
2085
  //--- End compatibility section ---
2055
2086
 
2056
2087
  }(Highcharts));
@@ -2338,8 +2369,10 @@
2338
2369
  * @returns {SVGElement} Returns the SVGElement for chaining.
2339
2370
  */
2340
2371
  animate: function(params, options, complete) {
2341
- var animOptions = pick(options, this.renderer.globalAnimation, true);
2342
- if (animOptions) {
2372
+ var animOptions = H.animObject(
2373
+ pick(options, this.renderer.globalAnimation, true)
2374
+ );
2375
+ if (animOptions.duration !== 0) {
2343
2376
  if (complete) { // allows using a callback with the global animation without overwriting it
2344
2377
  animOptions.complete = complete;
2345
2378
  }
@@ -2534,7 +2567,8 @@
2534
2567
  hasContrast = textOutline.indexOf('contrast') !== -1,
2535
2568
  styles = {},
2536
2569
  color,
2537
- strokeWidth;
2570
+ strokeWidth,
2571
+ firstRealChild;
2538
2572
 
2539
2573
  // When the text shadow is set to contrast, use dark stroke for light
2540
2574
  // text and vice versa.
@@ -2579,6 +2613,7 @@
2579
2613
  });
2580
2614
 
2581
2615
  // For each of the tspans, create a stroked copy behind it.
2616
+ firstRealChild = elem.firstChild;
2582
2617
  each(tspans, function(tspan, y) {
2583
2618
  var clone;
2584
2619
 
@@ -2601,7 +2636,7 @@
2601
2636
  'stroke-width': strokeWidth,
2602
2637
  'stroke-linejoin': 'round'
2603
2638
  });
2604
- elem.insertBefore(clone, elem.firstChild);
2639
+ elem.insertBefore(clone, firstRealChild);
2605
2640
  });
2606
2641
  }
2607
2642
  },
@@ -3961,7 +3996,7 @@
3961
3996
 
3962
3997
  // Add description
3963
3998
  desc = this.createElement('desc').add();
3964
- desc.element.appendChild(doc.createTextNode('Created with Highcharts 5.0.5'));
3999
+ desc.element.appendChild(doc.createTextNode('Created with Highcharts 5.0.6'));
3965
4000
 
3966
4001
 
3967
4002
  renderer.defs = this.createElement('defs').add();
@@ -7222,7 +7257,7 @@
7222
7257
  useUTC: true,
7223
7258
  //timezoneOffset: 0,
7224
7259
 
7225
- VMLRadialGradientURL: 'http://code.highcharts.com/5.0.5/gfx/vml-radial-gradient.png'
7260
+ VMLRadialGradientURL: 'http://code.highcharts.com/5.0.6/gfx/vml-radial-gradient.png'
7226
7261
 
7227
7262
  },
7228
7263
  chart: {
@@ -8291,7 +8326,6 @@
8291
8326
  deg2rad = H.deg2rad,
8292
8327
  destroyObjectProperties = H.destroyObjectProperties,
8293
8328
  each = H.each,
8294
- error = H.error,
8295
8329
  extend = H.extend,
8296
8330
  fireEvent = H.fireEvent,
8297
8331
  format = H.format,
@@ -8896,8 +8930,8 @@
8896
8930
  return this.translate(value, false, !this.horiz, null, true) + (paneCoordinates ? 0 : this.pos);
8897
8931
  },
8898
8932
 
8899
- /*
8900
- * Utility method to translate a pixel position in to an axis value
8933
+ /**
8934
+ * Utility method to translate a pixel position in to an axis value.
8901
8935
  * @param {Number} pixel The pixel value coordinate
8902
8936
  * @param {Boolean} paneCoordiantes Whether the input pixel is relative to the chart or just the
8903
8937
  * axis/pane itself.
@@ -9351,7 +9385,7 @@
9351
9385
  axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
9352
9386
  axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
9353
9387
  if (options.type !== axis.linkedParent.options.type) {
9354
- error(11, 1); // Can't link axes of different type
9388
+ H.error(11, 1); // Can't link axes of different type
9355
9389
  }
9356
9390
 
9357
9391
  // Initial min and max from the extreme data values
@@ -9375,7 +9409,7 @@
9375
9409
 
9376
9410
  if (isLog) {
9377
9411
  if (!secondPass && Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978
9378
- error(10, 1); // Can't plot negative values on log axis
9412
+ H.error(10, 1); // Can't plot negative values on log axis
9379
9413
  }
9380
9414
  // The correctFloat cures #934, float errors on full tens. But it
9381
9415
  // was too aggressive for #4360 because of conversion back to lin,
@@ -9633,7 +9667,15 @@
9633
9667
  hasOther,
9634
9668
  options = this.options;
9635
9669
 
9636
- if (this.chart.options.chart.alignTicks !== false && options.alignTicks !== false) {
9670
+ if (
9671
+ // Only if alignTicks is true
9672
+ this.chart.options.chart.alignTicks !== false &&
9673
+ options.alignTicks !== false &&
9674
+
9675
+ // Don't try to align ticks on a log axis, they are not evenly
9676
+ // spaced (#6021)
9677
+ !this.isLog
9678
+ ) {
9637
9679
  each(this.chart[this.coll], function(axis) {
9638
9680
  var otherOptions = axis.options,
9639
9681
  horiz = axis.horiz,
@@ -10205,6 +10247,55 @@
10205
10247
  return this.hasVisibleSeries || (defined(this.min) && defined(this.max) && !!this.tickPositions);
10206
10248
  },
10207
10249
 
10250
+ /**
10251
+ * Adds the title defined in axis.options.title.
10252
+ * @param {Boolean} display - whether or not to display the title
10253
+ */
10254
+ addTitle: function(display) {
10255
+ var axis = this,
10256
+ renderer = axis.chart.renderer,
10257
+ horiz = axis.horiz,
10258
+ opposite = axis.opposite,
10259
+ options = axis.options,
10260
+ axisTitleOptions = options.title,
10261
+ textAlign;
10262
+
10263
+ if (!axis.axisTitle) {
10264
+ textAlign = axisTitleOptions.textAlign;
10265
+ if (!textAlign) {
10266
+ textAlign = (horiz ? {
10267
+ low: 'left',
10268
+ middle: 'center',
10269
+ high: 'right'
10270
+ } : {
10271
+ low: opposite ? 'right' : 'left',
10272
+ middle: 'center',
10273
+ high: opposite ? 'left' : 'right'
10274
+ })[axisTitleOptions.align];
10275
+ }
10276
+ axis.axisTitle = renderer.text(
10277
+ axisTitleOptions.text,
10278
+ 0,
10279
+ 0,
10280
+ axisTitleOptions.useHTML
10281
+ )
10282
+ .attr({
10283
+ zIndex: 7,
10284
+ rotation: axisTitleOptions.rotation || 0,
10285
+ align: textAlign
10286
+ })
10287
+ .addClass('highcharts-axis-title')
10288
+
10289
+ .css(axisTitleOptions.style)
10290
+
10291
+ .add(axis.axisGroup);
10292
+ axis.axisTitle.isNew = true;
10293
+ }
10294
+
10295
+ // hide or show the title depending on whether showEmpty is set
10296
+ axis.axisTitle[display ? 'show' : 'hide'](true);
10297
+ },
10298
+
10208
10299
  /**
10209
10300
  * Render the tick labels to a preliminary position to get their sizes
10210
10301
  */
@@ -10227,14 +10318,12 @@
10227
10318
  labelOptions = options.labels,
10228
10319
  labelOffset = 0, // reset
10229
10320
  labelOffsetPadded,
10230
- opposite = axis.opposite,
10231
10321
  axisOffset = chart.axisOffset,
10232
10322
  clipOffset = chart.clipOffset,
10233
10323
  clip,
10234
10324
  directionFactor = [-1, 1, 1, -1][side],
10235
10325
  n,
10236
10326
  className = options.className,
10237
- textAlign,
10238
10327
  axisParent = axis.axisParent, // Used in color axis
10239
10328
  lineHeightCorrection,
10240
10329
  tickSize = this.tickSize('tick');
@@ -10311,46 +10400,13 @@
10311
10400
  }
10312
10401
 
10313
10402
  if (axisTitleOptions && axisTitleOptions.text && axisTitleOptions.enabled !== false) {
10314
- if (!axis.axisTitle) {
10315
- textAlign = axisTitleOptions.textAlign;
10316
- if (!textAlign) {
10317
- textAlign = (horiz ? {
10318
- low: 'left',
10319
- middle: 'center',
10320
- high: 'right'
10321
- } : {
10322
- low: opposite ? 'right' : 'left',
10323
- middle: 'center',
10324
- high: opposite ? 'left' : 'right'
10325
- })[axisTitleOptions.align];
10326
- }
10327
- axis.axisTitle = renderer.text(
10328
- axisTitleOptions.text,
10329
- 0,
10330
- 0,
10331
- axisTitleOptions.useHTML
10332
- )
10333
- .attr({
10334
- zIndex: 7,
10335
- rotation: axisTitleOptions.rotation || 0,
10336
- align: textAlign
10337
- })
10338
- .addClass('highcharts-axis-title')
10339
-
10340
- .css(axisTitleOptions.style)
10341
-
10342
- .add(axis.axisGroup);
10343
- axis.axisTitle.isNew = true;
10344
- }
10403
+ axis.addTitle(showAxis);
10345
10404
 
10346
10405
  if (showAxis) {
10347
10406
  titleOffset = axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];
10348
10407
  titleOffsetOption = axisTitleOptions.offset;
10349
10408
  titleMargin = defined(titleOffsetOption) ? 0 : pick(axisTitleOptions.margin, horiz ? 5 : 10);
10350
10409
  }
10351
-
10352
- // hide or show the title depending on whether showEmpty is set
10353
- axis.axisTitle[showAxis ? 'show' : 'hide'](true);
10354
10410
  }
10355
10411
 
10356
10412
  // Render the axis line
@@ -11830,7 +11886,8 @@
11830
11886
  // Distribute and put in place
11831
11887
  H.distribute(boxes, chart.plotHeight + headerHeight);
11832
11888
  each(boxes, function(box) {
11833
- var point = box.point;
11889
+ var point = box.point,
11890
+ series = point.series;
11834
11891
 
11835
11892
  // Put the label in place
11836
11893
  box.tt.attr({
@@ -11839,9 +11896,10 @@
11839
11896
  box.x :
11840
11897
  point.plotX + chart.plotLeft + pick(options.distance, 16)),
11841
11898
  y: box.pos + chart.plotTop,
11842
- anchorX: point.plotX + chart.plotLeft,
11899
+ anchorX: point.isHeader ?
11900
+ point.plotX + chart.plotLeft : point.plotX + series.xAxis.pos,
11843
11901
  anchorY: point.isHeader ?
11844
- box.pos + chart.plotTop - 15 : point.plotY + chart.plotTop
11902
+ box.pos + chart.plotTop - 15 : point.plotY + series.yAxis.pos
11845
11903
  });
11846
11904
  });
11847
11905
  },
@@ -13343,27 +13401,19 @@
13343
13401
  * Destroys the legend.
13344
13402
  */
13345
13403
  destroy: function() {
13346
- var legend = this,
13347
- legendGroup = legend.group,
13348
- box = legend.box;
13349
-
13350
- if (box) {
13351
- legend.box = box.destroy();
13404
+ function destroyItems(key) {
13405
+ if (this[key]) {
13406
+ this[key] = this[key].destroy();
13407
+ }
13352
13408
  }
13353
13409
 
13354
13410
  // Destroy items
13355
13411
  each(this.getAllItems(), function(item) {
13356
- each(['legendItem', 'legendGroup'], function(key) {
13357
- if (item[key]) {
13358
- item[key] = item[key].destroy();
13359
- }
13360
- });
13412
+ each(['legendItem', 'legendGroup'], destroyItems, item);
13361
13413
  });
13362
13414
 
13363
- if (legendGroup) {
13364
- legend.group = legendGroup.destroy();
13365
- }
13366
- legend.display = null; // Reset in .render on update.
13415
+ each(['box', 'title', 'group'], destroyItems, this);
13416
+ this.display = null; // Reset in .render on update.
13367
13417
  },
13368
13418
 
13369
13419
  /**
@@ -14107,8 +14157,8 @@
14107
14157
  css = H.css,
14108
14158
  defined = H.defined,
14109
14159
  each = H.each,
14110
- error = H.error,
14111
14160
  extend = H.extend,
14161
+ find = H.find,
14112
14162
  fireEvent = H.fireEvent,
14113
14163
  getStyle = H.getStyle,
14114
14164
  grep = H.grep,
@@ -14267,7 +14317,7 @@
14267
14317
 
14268
14318
  // No such series type
14269
14319
  if (!Constr) {
14270
- error(17, true);
14320
+ H.error(17, true);
14271
14321
  }
14272
14322
 
14273
14323
  series = new Constr();
@@ -14452,38 +14502,28 @@
14452
14502
  * @param id {String} The id as given in the configuration options
14453
14503
  */
14454
14504
  get: function(id) {
14455
- var chart = this,
14456
- axes = chart.axes,
14457
- series = chart.series;
14458
14505
 
14459
- var i,
14460
- j,
14461
- points;
14506
+ var ret,
14507
+ series = this.series,
14508
+ i;
14462
14509
 
14463
- // search axes
14464
- for (i = 0; i < axes.length; i++) {
14465
- if (axes[i].options.id === id) {
14466
- return axes[i];
14467
- }
14510
+ function itemById(item) {
14511
+ return item.id === id || item.options.id === id;
14468
14512
  }
14469
14513
 
14470
- // search series
14471
- for (i = 0; i < series.length; i++) {
14472
- if (series[i].options.id === id) {
14473
- return series[i];
14474
- }
14475
- }
14514
+ ret =
14515
+ // Search axes
14516
+ find(this.axes, itemById) ||
14476
14517
 
14477
- // search points
14478
- for (i = 0; i < series.length; i++) {
14479
- points = series[i].points || [];
14480
- for (j = 0; j < points.length; j++) {
14481
- if (points[j].id === id) {
14482
- return points[j];
14483
- }
14484
- }
14518
+ // Search series
14519
+ find(this.series, itemById);
14520
+
14521
+ // Search points
14522
+ for (i = 0; !ret && i < series.length; i++) {
14523
+ ret = find(series[i].points || [], itemById);
14485
14524
  }
14486
- return null;
14525
+
14526
+ return ret;
14487
14527
  },
14488
14528
 
14489
14529
  /**
@@ -14765,7 +14805,7 @@
14765
14805
 
14766
14806
  // Display an error if the renderTo is wrong
14767
14807
  if (!renderTo) {
14768
- error(13, true);
14808
+ H.error(13, true);
14769
14809
  }
14770
14810
 
14771
14811
  // If the container already holds a chart, destroy it. The check for hasRendered is there
@@ -15653,8 +15693,8 @@
15653
15693
 
15654
15694
  fireEvent(this, 'load');
15655
15695
 
15656
- // Set up auto resize
15657
- if (this.options.chart.reflow !== false) {
15696
+ // Set up auto resize, check for not destroyed (#6068)
15697
+ if (defined(this.index) && this.options.chart.reflow !== false) {
15658
15698
  this.initReflow();
15659
15699
  }
15660
15700
 
@@ -15853,7 +15893,8 @@
15853
15893
  (this.negative ? ' highcharts-negative' : '') +
15854
15894
  (this.isNull ? ' highcharts-null-point' : '') +
15855
15895
  (this.colorIndex !== undefined ? ' highcharts-color-' + this.colorIndex : '') +
15856
- (this.options.className ? ' ' + this.options.className : '');
15896
+ (this.options.className ? ' ' + this.options.className : '') +
15897
+ (this.zone && this.zone.className ? ' ' + this.zone.className : '');
15857
15898
  },
15858
15899
 
15859
15900
  /**
@@ -16030,7 +16071,6 @@
16030
16071
  defined = H.defined,
16031
16072
  each = H.each,
16032
16073
  erase = H.erase,
16033
- error = H.error,
16034
16074
  extend = H.extend,
16035
16075
  fireEvent = H.fireEvent,
16036
16076
  grep = H.grep,
@@ -16043,7 +16083,6 @@
16043
16083
  Point = H.Point, // @todo add as a requirement
16044
16084
  removeEvent = H.removeEvent,
16045
16085
  splat = H.splat,
16046
- stableSort = H.stableSort,
16047
16086
  SVGElement = H.SVGElement,
16048
16087
  syncTimeout = H.syncTimeout,
16049
16088
  win = H.win;
@@ -16197,9 +16236,7 @@
16197
16236
  events,
16198
16237
  chartSeries = chart.series,
16199
16238
  lastSeries,
16200
- sortByIndex = function(a, b) {
16201
- return pick(a.options.index, a._i) - pick(b.options.index, b._i);
16202
- };
16239
+ i;
16203
16240
 
16204
16241
  series.chart = chart;
16205
16242
  series.options = options = series.setOptions(options); // merge with plotOptions
@@ -16249,19 +16286,49 @@
16249
16286
  lastSeries = chartSeries[chartSeries.length - 1];
16250
16287
  }
16251
16288
  series._i = pick(lastSeries && lastSeries._i, -1) + 1;
16252
- chartSeries.push(series);
16253
16289
 
16254
- // Sort series according to index option (#248, #1123, #2456)
16255
- stableSort(chartSeries, sortByIndex);
16256
- if (this.yAxis) {
16257
- stableSort(this.yAxis.series, sortByIndex);
16290
+ // Insert the series and update the `index` property of all series
16291
+ // above this. Unless the `index` option is set, the new series is
16292
+ // inserted last. #248, #1123, #2456
16293
+ for (i = this.insert(chartSeries); i < chartSeries.length; i++) {
16294
+ chartSeries[i].index = i;
16295
+ chartSeries[i].name = chartSeries[i].name ||
16296
+ 'Series ' + (chartSeries[i].index + 1);
16258
16297
  }
16298
+ },
16259
16299
 
16260
- each(chartSeries, function(series, i) {
16261
- series.index = i;
16262
- series.name = series.name || 'Series ' + (i + 1);
16263
- });
16300
+ /**
16301
+ * Insert the series in a collection with other series, either the chart
16302
+ * series or yAxis series, in the correct order according to the index
16303
+ * option.
16304
+ * @param {Array} collection A collection of series.
16305
+ * @returns {Number} The index of the series in the collection.
16306
+ */
16307
+ insert: function(collection) {
16308
+ var indexOption = this.options.index,
16309
+ i;
16264
16310
 
16311
+ // Insert by index option
16312
+ if (isNumber(indexOption)) {
16313
+ i = collection.length;
16314
+ while (i--) {
16315
+ // Loop down until the interted element has higher index
16316
+ if (indexOption >=
16317
+ pick(collection[i].options.index, collection[i]._i)) {
16318
+ collection.splice(i + 1, 0, this);
16319
+ break;
16320
+ }
16321
+ }
16322
+ if (i === -1) {
16323
+ collection.unshift(this);
16324
+ }
16325
+ i = i + 1;
16326
+
16327
+ // Or just push it to the end
16328
+ } else {
16329
+ collection.push(this);
16330
+ }
16331
+ return pick(i, collection.length - 1);
16265
16332
  },
16266
16333
 
16267
16334
  /**
@@ -16290,7 +16357,7 @@
16290
16357
  (seriesOptions[AXIS] === undefined && axisOptions.index === 0)) {
16291
16358
 
16292
16359
  // register this series in the axis.series lookup
16293
- axis.series.push(series);
16360
+ series.insert(axis.series);
16294
16361
 
16295
16362
  // set this series.xAxis or series.yAxis reference
16296
16363
  series[AXIS] = axis;
@@ -16302,7 +16369,7 @@
16302
16369
 
16303
16370
  // The series needs an X and an Y axis
16304
16371
  if (!series[AXIS] && series.optionalAxis !== AXIS) {
16305
- error(18, true);
16372
+ H.error(18, true);
16306
16373
  }
16307
16374
 
16308
16375
  });
@@ -16566,7 +16633,7 @@
16566
16633
  }
16567
16634
  }
16568
16635
  } else {
16569
- error(12); // Highcharts expects configs to be numbers or arrays in turbo mode
16636
+ H.error(12); // Highcharts expects configs to be numbers or arrays in turbo mode
16570
16637
  }
16571
16638
  } else {
16572
16639
  for (i = 0; i < dataLength; i++) {
@@ -16582,7 +16649,7 @@
16582
16649
 
16583
16650
  // Forgetting to cast strings to numbers is a common caveat when handling CSV or JSON
16584
16651
  if (isString(yData[0])) {
16585
- error(14, true);
16652
+ H.error(14, true);
16586
16653
  }
16587
16654
 
16588
16655
  series.data = [];
@@ -16621,7 +16688,7 @@
16621
16688
 
16622
16689
  /**
16623
16690
  * Process the data by cropping away unused data points if the series is longer
16624
- * than the crop threshold. This saves computing time for lage series.
16691
+ * than the crop threshold. This saves computing time for large series.
16625
16692
  */
16626
16693
  processData: function(force) {
16627
16694
  var series = this,
@@ -16689,7 +16756,7 @@
16689
16756
  // Unsorted data is not supported by the line tooltip, as well as data grouping and
16690
16757
  // navigation in Stock charts (#725) and width calculation of columns (#1900)
16691
16758
  } else if (distance < 0 && series.requireSorting) {
16692
- error(15);
16759
+ H.error(15);
16693
16760
  }
16694
16761
  }
16695
16762
 
@@ -16982,6 +17049,8 @@
16982
17049
  lastPlotX = plotX;
16983
17050
  }
16984
17051
 
17052
+ // Find point zone
17053
+ point.zone = this.zones.length && point.getZone();
16985
17054
  }
16986
17055
  series.closestPointRangePx = closestPointRangePx;
16987
17056
  },
@@ -17260,17 +17329,9 @@
17260
17329
  pointMarkerOptions.lineWidth,
17261
17330
  seriesMarkerOptions.lineWidth
17262
17331
  ),
17263
- zoneColor,
17332
+ zoneColor = point && point.zone && point.zone.color,
17264
17333
  fill,
17265
- stroke,
17266
- zone;
17267
-
17268
- if (point && this.zones.length) {
17269
- zone = point.getZone();
17270
- if (zone && zone.color) {
17271
- zoneColor = zone.color;
17272
- }
17273
- }
17334
+ stroke;
17274
17335
 
17275
17336
  color = pointColorOption || zoneColor || pointColor || color;
17276
17337
  fill = pointMarkerOptions.fillColor || seriesMarkerOptions.fillColor || color;
@@ -19012,7 +19073,6 @@
19012
19073
  series.isDirtyData = true;
19013
19074
 
19014
19075
  if (redraw) {
19015
-
19016
19076
  chart.redraw(animation); // Animation is set anyway on redraw, #5665
19017
19077
  }
19018
19078
  },
@@ -20029,6 +20089,8 @@
20029
20089
  fill = (point && point.color) || this.color,
20030
20090
  stroke = point[strokeOption] || options[strokeOption] ||
20031
20091
  this.color || fill, // set to fill when borderColor null
20092
+ strokeWidth = point[strokeWidthOption] ||
20093
+ options[strokeWidthOption] || this[strokeWidthOption] || 0,
20032
20094
  dashstyle = options.dashStyle,
20033
20095
  zone,
20034
20096
  brightness;
@@ -20047,13 +20109,14 @@
20047
20109
  (brightness !== undefined && color(fill).brighten(stateOptions.brightness).get()) ||
20048
20110
  fill;
20049
20111
  stroke = stateOptions[strokeOption] || stroke;
20112
+ strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
20050
20113
  dashstyle = stateOptions.dashStyle || dashstyle;
20051
20114
  }
20052
20115
 
20053
20116
  ret = {
20054
20117
  'fill': fill,
20055
20118
  'stroke': stroke,
20056
- 'stroke-width': point[strokeWidthOption] || options[strokeWidthOption] || this[strokeWidthOption] || 0
20119
+ 'stroke-width': strokeWidth
20057
20120
  };
20058
20121
  if (options.borderRadius) {
20059
20122
  ret.r = options.borderRadius;
@@ -21109,8 +21172,19 @@
21109
21172
  align = options.align,
21110
21173
  rotCorr, // rotation correction
21111
21174
  // Math.round for rounding errors (#2683), alignTo to allow column labels (#2700)
21112
- visible = this.visible && (point.series.forceDL || chart.isInsidePlot(plotX, Math.round(plotY), inverted) ||
21113
- (alignTo && chart.isInsidePlot(plotX, inverted ? alignTo.x + 1 : alignTo.y + alignTo.height - 1, inverted))),
21175
+ visible =
21176
+ this.visible &&
21177
+ (
21178
+ point.series.forceDL ||
21179
+ chart.isInsidePlot(plotX, Math.round(plotY), inverted) ||
21180
+ (
21181
+ alignTo && chart.isInsidePlot(
21182
+ plotX,
21183
+ inverted ? alignTo.x + 1 : alignTo.y + alignTo.height - 1,
21184
+ inverted
21185
+ )
21186
+ )
21187
+ ),
21114
21188
  alignAttr, // the final position;
21115
21189
  justify = pick(options.overflow, 'justify') === 'justify';
21116
21190
 
@@ -22207,31 +22281,32 @@
22207
22281
  each(panning === 'xy' ? [1, 0] : [1], function(isX) { // xy is used in maps
22208
22282
  var axis = chart[isX ? 'xAxis' : 'yAxis'][0],
22209
22283
  horiz = axis.horiz,
22210
- reversed = axis.reversed,
22211
22284
  mousePos = e[horiz ? 'chartX' : 'chartY'],
22212
22285
  mouseDown = horiz ? 'mouseDownX' : 'mouseDownY',
22213
22286
  startPos = chart[mouseDown],
22214
- halfPointRange = (axis.pointRange || 0) / (reversed ? -2 : 2),
22287
+ halfPointRange = (axis.pointRange || 0) / 2,
22215
22288
  extremes = axis.getExtremes(),
22216
- newMin = axis.toValue(startPos - mousePos, true) + halfPointRange,
22217
- newMax = axis.toValue(startPos + axis.len - mousePos, true) - halfPointRange,
22218
- goingLeft = startPos > mousePos, // #3613
22219
- tmp;
22220
-
22221
- // Swap min/max for reversed axes (#5997)
22222
- if (reversed) {
22223
- goingLeft = !goingLeft;
22224
- tmp = newMin;
22225
- newMin = newMax;
22226
- newMax = tmp;
22227
- }
22228
-
22229
- if (axis.series.length &&
22230
- (goingLeft || newMin > Math.min(extremes.dataMin, extremes.min)) &&
22231
- (!goingLeft || newMax < Math.max(extremes.dataMax, extremes.max))) {
22232
- axis.setExtremes(newMin, newMax, false, false, {
22233
- trigger: 'pan'
22234
- });
22289
+ panMin = axis.toValue(startPos - mousePos, true) +
22290
+ halfPointRange,
22291
+ panMax = axis.toValue(startPos + axis.len - mousePos, true) -
22292
+ halfPointRange,
22293
+ flipped = panMax < panMin,
22294
+ newMin = flipped ? panMax : panMin,
22295
+ newMax = flipped ? panMin : panMax,
22296
+ distMin = Math.min(extremes.dataMin, extremes.min) - newMin,
22297
+ distMax = newMax - Math.max(extremes.dataMax, extremes.max);
22298
+
22299
+ // Negative distMin and distMax means that we're still inside the
22300
+ // data range.
22301
+ if (axis.series.length && distMin < 0 && distMax < 0) {
22302
+ axis.setExtremes(
22303
+ newMin,
22304
+ newMax,
22305
+ false,
22306
+ false, {
22307
+ trigger: 'pan'
22308
+ }
22309
+ );
22235
22310
  doRedraw = true;
22236
22311
  }
22237
22312
 
@@ -22506,8 +22581,10 @@
22506
22581
  d: point.haloPath(haloOptions.size)
22507
22582
  });
22508
22583
  halo.attr({
22509
- 'class': 'highcharts-halo highcharts-color-' + pick(point.colorIndex, series.colorIndex)
22584
+ 'class': 'highcharts-halo highcharts-color-' +
22585
+ pick(point.colorIndex, series.colorIndex)
22510
22586
  });
22587
+ halo.point = point; // #6055
22511
22588
 
22512
22589
 
22513
22590
  halo.attr(extend({
@@ -22516,10 +22593,12 @@
22516
22593
  'zIndex': -1 // #4929, IE8 added halo above everything
22517
22594
  }, haloOptions.attributes));
22518
22595
 
22519
- } else if (halo) {
22596
+
22597
+ } else if (halo && halo.point && halo.point.haloPath) {
22598
+ // Animate back to 0 on the current halo point (#6055)
22520
22599
  halo.animate({
22521
- d: point.haloPath(0)
22522
- }); // Hide
22600
+ d: halo.point.haloPath(0)
22601
+ });
22523
22602
  }
22524
22603
 
22525
22604
  point.state = state;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * 3D features for Highcharts JS
5
5
  *
@@ -589,7 +589,7 @@
589
589
  /**
590
590
  * Override attr to remove shape attributes and use those to set child paths
591
591
  */
592
- wrap(wrapper, 'attr', function(proceed, params, val) {
592
+ wrap(wrapper, 'attr', function(proceed, params) {
593
593
  var ca;
594
594
  if (typeof params === 'object') {
595
595
  ca = suckOutCustom(params);
@@ -598,7 +598,7 @@
598
598
  wrapper.setPaths(wrapper.attribs);
599
599
  }
600
600
  }
601
- return proceed.call(this, params, val);
601
+ return proceed.apply(this, [].slice.call(arguments, 1));
602
602
  });
603
603
 
604
604
  /**
@@ -1004,9 +1004,10 @@
1004
1004
  }
1005
1005
  }
1006
1006
  }
1007
-
1008
1007
  });
1009
1008
 
1009
+
1010
+
1010
1011
  wrap(Chart.prototype, 'setClassName', function(proceed) {
1011
1012
  proceed.apply(this, [].slice.call(arguments, 1));
1012
1013
 
@@ -1957,6 +1958,7 @@
1957
1958
  'use strict';
1958
1959
  var perspective = H.perspective,
1959
1960
  pick = H.pick,
1961
+ Point = H.Point,
1960
1962
  seriesTypes = H.seriesTypes,
1961
1963
  wrap = H.wrap;
1962
1964
 
@@ -2052,6 +2054,16 @@
2052
2054
  return pointOptions;
2053
2055
  });
2054
2056
 
2057
+
2058
+ wrap(Point.prototype, 'applyOptions', function(proceed) {
2059
+ var point = proceed.apply(this, [].slice.call(arguments, 1));
2060
+
2061
+ if (this.series.chart.is3d() && point.z === undefined) {
2062
+ point.z = 0;
2063
+ }
2064
+ return point;
2065
+ });
2066
+
2055
2067
  }(Highcharts));
2056
2068
  (function(H) {
2057
2069
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -1834,6 +1834,7 @@
1834
1834
  // Separate offsets for negative and positive columns:
1835
1835
  positiveOffset = 0,
1836
1836
  negativeOffset = 0,
1837
+ stackIndicator,
1837
1838
  tooltipY;
1838
1839
 
1839
1840
  // run column series translate
@@ -1850,8 +1851,9 @@
1850
1851
 
1851
1852
  // get current stack
1852
1853
  stack = stacking && yAxis.stacks[(series.negStacks && yValue < threshold ? '-' : '') + series.stackKey];
1854
+ stackIndicator = series.getStackIndicator(stackIndicator, point.x);
1853
1855
  range = stack ?
1854
- stack[point.x].points[series.index + ',' + i] : [0, yValue];
1856
+ stack[point.x].points[series.index + ',' + i + ',' + stackIndicator.index] : [0, yValue];
1855
1857
 
1856
1858
  // override point value for sums
1857
1859
  // #3710 Update point does not propagate to sum
@@ -1898,7 +1900,8 @@
1898
1900
  // Before minPointLength, apply negative offset:
1899
1901
  shapeArgs.y -= negativeOffset;
1900
1902
 
1901
- if (shapeArgs.height <= minPointLength) {
1903
+
1904
+ if (shapeArgs.height <= minPointLength && !point.isNull) {
1902
1905
  shapeArgs.height = minPointLength;
1903
1906
  if (point.y < 0) {
1904
1907
  negativeOffset -= minPointLength;
@@ -2222,7 +2225,7 @@
2222
2225
  trackerGroups: ['group', 'dataLabelsGroup'],
2223
2226
  bubblePadding: true,
2224
2227
  zoneAxis: 'z',
2225
- markerAttribs: noop,
2228
+ markerAttribs: null,
2226
2229
 
2227
2230
 
2228
2231
  pointAttribs: function(point, state) {
@@ -2392,7 +2395,7 @@
2392
2395
  haloPath: function(size) {
2393
2396
  return Point.prototype.haloPath.call(
2394
2397
  this,
2395
- this.shapeArgs.r + size
2398
+ size === 0 ? 0 : this.shapeArgs.r + size // #6067
2396
2399
  );
2397
2400
  },
2398
2401
  ttBelow: false
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Accessibility module
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Boost module
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -303,6 +303,10 @@
303
303
  eventName,
304
304
  y;
305
305
 
306
+ if (!axis) {
307
+ return; // #5950
308
+ }
309
+
306
310
  each(keys, function(key) {
307
311
  breaks = axis.breakArray || [];
308
312
  threshold = axis.isXAxis ? axis.min : pick(series.options.threshold, axis.min);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Data module
4
4
  *
5
5
  * (c) 2012-2016 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Highcharts Drilldown module
4
4
  *
5
5
  * Author: Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Exporting module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -352,6 +352,11 @@
352
352
  }
353
353
  });
354
354
 
355
+ // Assign an internal key to ensure a one-to-one mapping (#5924)
356
+ each(chart.axes, function(axis) {
357
+ axis.userOptions.internalKey = H.uniqueKey();
358
+ });
359
+
355
360
  // generate the chart copy
356
361
  chartCopy = new H.Chart(options, chart.callback);
357
362
 
@@ -366,18 +371,19 @@
366
371
  });
367
372
  }
368
373
 
369
- // reflect axis extremes in the export
370
- each(['xAxis', 'yAxis'], function(axisType) {
371
- each(chart[axisType], function(axis, i) {
372
- var axisCopy = chartCopy[axisType][i],
373
- extremes = axis.getExtremes(),
374
- userMin = extremes.userMin,
375
- userMax = extremes.userMax;
376
-
377
- if (axisCopy && (userMin !== undefined || userMax !== undefined)) {
378
- axisCopy.setExtremes(userMin, userMax, true, false);
379
- }
380
- });
374
+ // Reflect axis extremes in the export (#5924)
375
+ each(chart.axes, function(axis) {
376
+ var axisCopy = H.find(chartCopy.axes, function(copy) {
377
+ return copy.options.internalKey ===
378
+ axis.userOptions.internalKey;
379
+ }),
380
+ extremes = axis.getExtremes(),
381
+ userMin = extremes.userMin,
382
+ userMax = extremes.userMax;
383
+
384
+ if (axisCopy && (userMin !== undefined || userMax !== undefined)) {
385
+ axisCopy.setExtremes(userMin, userMax, true, false);
386
+ }
381
387
  });
382
388
 
383
389
  // Get the SVG from the container's innerHTML
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Highcharts funnel module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * GridAxis
4
4
  *
5
5
  * (c) 2016 Lars A. V. Cabrera
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -621,6 +621,14 @@
621
621
  point[key][method]();
622
622
  }
623
623
  });
624
+ },
625
+ setState: function(state) {
626
+ H.Point.prototype.setState.call(this, state);
627
+ if (this.graphic) {
628
+ this.graphic.attr({
629
+ zIndex: state === 'hover' ? 1 : 0
630
+ });
631
+ }
624
632
  }
625
633
  };
626
634
 
@@ -777,7 +785,9 @@
777
785
  seriesTypes.column.prototype.drawPoints.call(this);
778
786
 
779
787
  each(this.points, function(point) {
780
- point.graphic.attr(this.colorAttribs(point, point.state));
788
+
789
+ point.graphic.attr(this.colorAttribs(point));
790
+
781
791
  }, this);
782
792
  },
783
793
  animate: noop,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Plugin for displaying a message when there is no data visible in chart.
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Client side exporting module
4
4
  *
5
5
  * (c) 2015 Torstein Honsi / Oystein Moseng
@@ -200,15 +200,22 @@
200
200
  function downloadPDF() {
201
201
  dummySVGContainer.innerHTML = svg;
202
202
  var textElements = dummySVGContainer.getElementsByTagName('text'),
203
+ titleElements,
203
204
  svgElementStyle = dummySVGContainer.getElementsByTagName('svg')[0].style;
204
205
  // Workaround for the text styling. Making sure it does pick up the root element
205
206
  each(textElements, function(el) {
207
+ // Workaround for the text styling. making sure it does pick up the root element
206
208
  each(['font-family', 'font-size'], function(property) {
207
209
  if (!el.style[property] && svgElementStyle[property]) {
208
210
  el.style[property] = svgElementStyle[property];
209
211
  }
210
212
  });
211
213
  el.style['font-family'] = el.style['font-family'] && el.style['font-family'].split(' ').splice(-1);
214
+ // Workaround for plotband with width, removing title from text nodes
215
+ titleElements = el.getElementsByTagName('title');
216
+ each(titleElements, function(titleElement) {
217
+ el.removeChild(titleElement);
218
+ });
212
219
  });
213
220
  var svgData = svgToPdf(dummySVGContainer.firstChild, 0);
214
221
  Highcharts.downloadURL(svgData, filename);
@@ -440,7 +447,7 @@
440
447
 
441
448
  // Extend the default options to use the local exporter logic
442
449
  merge(true, Highcharts.getOptions().exporting, {
443
- libURL: 'https://code.highcharts.com/5.0.5/lib/',
450
+ libURL: 'https://code.highcharts.com/5.0.6/lib/',
444
451
  buttons: {
445
452
  contextButton: {
446
453
  menuItems: [{
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * Solid angular gauge module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  *
4
4
  * (c) 2014 Highsoft AS
5
5
  * Authors: Jon Arild Nygard / Oystein Moseng
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.5 (2016-11-29)
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
3
  * X-range series
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi, Lars A. V. Cabrera
@@ -1,3 +1,3 @@
1
1
  module Highcharts
2
- VERSION = "5.0.5"
2
+ VERSION = "5.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: highcharts-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.5
4
+ version: 5.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Per Christian B. Viken