highcharts-rails 5.0.9 → 5.0.10

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 +48 -0
  3. data/app/assets/javascripts/highcharts.js +547 -270
  4. data/app/assets/javascripts/highcharts/highcharts-3d.js +13 -11
  5. data/app/assets/javascripts/highcharts/highcharts-more.js +373 -181
  6. data/app/assets/javascripts/highcharts/modules/accessibility.js +3 -3
  7. data/app/assets/javascripts/highcharts/modules/annotations.js +3 -3
  8. data/app/assets/javascripts/highcharts/modules/boost.js +11 -5
  9. data/app/assets/javascripts/highcharts/modules/broken-axis.js +3 -3
  10. data/app/assets/javascripts/highcharts/modules/data.js +3 -3
  11. data/app/assets/javascripts/highcharts/modules/drilldown.js +1 -1
  12. data/app/assets/javascripts/highcharts/modules/exporting.js +70 -28
  13. data/app/assets/javascripts/highcharts/modules/funnel.js +3 -3
  14. data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
  15. data/app/assets/javascripts/highcharts/modules/heatmap.js +5 -5
  16. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +3 -3
  17. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +2 -2
  18. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +43 -20
  19. data/app/assets/javascripts/highcharts/modules/series-label.js +3 -3
  20. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +3 -3
  21. data/app/assets/javascripts/highcharts/modules/stock.js +83 -42
  22. data/app/assets/javascripts/highcharts/modules/treemap.js +1 -1
  23. data/app/assets/javascripts/highcharts/modules/xrange-series.js +3 -3
  24. data/lib/highcharts/version.rb +1 -1
  25. metadata +1 -1
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Accessibility module
4
4
  *
5
- * (c) 2010-2016 Highsoft AS
5
+ * (c) 2010-2017 Highsoft AS
6
6
  * Author: Oystein Moseng
7
7
  *
8
8
  * License: www.highcharts.com/license
@@ -19,7 +19,7 @@
19
19
  /**
20
20
  * Accessibility module
21
21
  *
22
- * (c) 2010-2016 Highsoft AS
22
+ * (c) 2010-2017 Highsoft AS
23
23
  * Author: Oystein Moseng
24
24
  *
25
25
  * License: www.highcharts.com/license
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  *
4
- * (c) 2009-2016 Torstein Honsi
4
+ * (c) 2009-2017 Torstein Honsi
5
5
  *
6
6
  * License: www.highcharts.com/license
7
7
  */
@@ -15,7 +15,7 @@
15
15
  }(function(Highcharts) {
16
16
  (function(H) {
17
17
  /**
18
- * (c) 2009-2016 Torstein Honsi
18
+ * (c) 2009-2017 Torstein Honsi
19
19
  *
20
20
  * License: www.highcharts.com/license
21
21
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Boost module
4
4
  *
5
- * (c) 2010-2016 Highsoft AS
5
+ * (c) 2010-2017 Highsoft AS
6
6
  * Author: Torstein Honsi
7
7
  *
8
8
  * License: www.highcharts.com/license
@@ -1933,9 +1933,7 @@
1933
1933
  if (target instanceof H.Chart) {
1934
1934
  target.markerGroup = target.renderer.g().add(targetGroup);
1935
1935
 
1936
- target.markerGroup.translateX = series.xAxis.pos;
1937
- target.markerGroup.translateY = series.yAxis.pos;
1938
- target.markerGroup.updateTransform();
1936
+ target.markerGroup.translate(series.xAxis.pos, series.yAxis.pos);
1939
1937
  }
1940
1938
  }
1941
1939
 
@@ -2627,6 +2625,14 @@
2627
2625
  // Allocate
2628
2626
  chart.ogl.allocateBuffer(chart);
2629
2627
  }
2628
+
2629
+ //see #6518
2630
+ if (chart.markerGroup) {
2631
+ chart.markerGroup.translate(
2632
+ chart.xAxis[0].pos,
2633
+ chart.yAxis[0].pos
2634
+ );
2635
+ }
2630
2636
  }
2631
2637
 
2632
2638
  addEvent(chart, 'predraw', preRender);
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  *
4
- * (c) 2009-2016 Torstein Honsi
4
+ * (c) 2009-2017 Torstein Honsi
5
5
  *
6
6
  * License: www.highcharts.com/license
7
7
  */
@@ -15,7 +15,7 @@
15
15
  }(function(Highcharts) {
16
16
  (function(H) {
17
17
  /**
18
- * (c) 2009-2016 Torstein Honsi
18
+ * (c) 2009-2017 Torstein Honsi
19
19
  *
20
20
  * License: www.highcharts.com/license
21
21
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Data module
4
4
  *
5
- * (c) 2012-2016 Torstein Honsi
5
+ * (c) 2012-2017 Torstein Honsi
6
6
  *
7
7
  * License: www.highcharts.com/license
8
8
  */
@@ -18,7 +18,7 @@
18
18
  /**
19
19
  * Data module
20
20
  *
21
- * (c) 2012-2016 Torstein Honsi
21
+ * (c) 2012-2017 Torstein Honsi
22
22
  *
23
23
  * License: www.highcharts.com/license
24
24
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Highcharts Drilldown module
4
4
  *
5
5
  * Author: Torstein Honsi
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Exporting module
4
4
  *
5
- * (c) 2010-2016 Torstein Honsi
5
+ * (c) 2010-2017 Torstein Honsi
6
6
  *
7
7
  * License: www.highcharts.com/license
8
8
  */
@@ -18,7 +18,7 @@
18
18
  /**
19
19
  * Exporting module
20
20
  *
21
- * (c) 2010-2016 Torstein Honsi
21
+ * (c) 2010-2017 Torstein Honsi
22
22
  *
23
23
  * License: www.highcharts.com/license
24
24
  */
@@ -159,15 +159,26 @@
159
159
  /*
160
160
  ,{
161
161
 
162
- text: 'View SVG',
162
+ text: 'View SVG Image',
163
163
  onclick: function () {
164
- var svg = this.getSVG()
164
+ var div = doc.createElement('div');
165
+ div.innerHTML = this.getSVGForExport();
166
+
167
+ this.renderTo.parentNode.appendChild(div);
168
+ }
169
+ }, {
170
+
171
+ text: 'View SVG Source',
172
+ onclick: function () {
173
+ var pre = doc.createElement('pre');
174
+ pre.innerHTML = this.getSVGForExport()
165
175
  .replace(/</g, '\n&lt;')
166
176
  .replace(/>/g, '&gt;');
167
177
 
168
- doc.body.innerHTML = '<pre>' + svg + '</pre>';
178
+ this.renderTo.parentNode.appendChild(pre);
169
179
  }
170
- } // */
180
+ }
181
+ // */
171
182
  ]
172
183
  }
173
184
  }
@@ -213,7 +224,7 @@
213
224
  // Move HTML into a foreignObject
214
225
  if (options && options.exporting && options.exporting.allowHTML) {
215
226
  var html = svg.match(/<\/svg>(.*?$)/);
216
- if (html) {
227
+ if (html && html[1]) {
217
228
  html = '<foreignObject x="0" y="0" ' +
218
229
  'width="' + options.chart.width + '" ' +
219
230
  'height="' + options.chart.height + '">' +
@@ -354,7 +365,9 @@
354
365
 
355
366
  // Assign an internal key to ensure a one-to-one mapping (#5924)
356
367
  each(chart.axes, function(axis) {
357
- axis.userOptions.internalKey = H.uniqueKey();
368
+ if (!axis.userOptions.internalKey) { // #6444
369
+ axis.userOptions.internalKey = H.uniqueKey();
370
+ }
358
371
  });
359
372
 
360
373
  // generate the chart copy
@@ -532,8 +545,7 @@
532
545
  menuPadding = Math.max(width, height), // for mouse leave detection
533
546
  innerMenu,
534
547
  hide,
535
- menuStyle,
536
- removeMouseUp;
548
+ menuStyle;
537
549
 
538
550
  // create the menu only the first time
539
551
  if (!menu) {
@@ -572,23 +584,22 @@
572
584
  };
573
585
 
574
586
  // Hide the menu some time after mouse leave (#1357)
575
- addEvent(menu, 'mouseleave', function() {
576
- menu.hideTimer = setTimeout(hide, 500);
577
- });
578
- addEvent(menu, 'mouseenter', function() {
579
- clearTimeout(menu.hideTimer);
580
- });
581
-
582
-
583
- // Hide it on clicking or touching outside the menu (#2258, #2335,
584
- // #2407)
585
- removeMouseUp = addEvent(doc, 'mouseup', function(e) {
586
- if (!chart.pointer.inClass(e.target, className)) {
587
- hide();
588
- }
589
- });
590
- addEvent(chart, 'destroy', removeMouseUp);
587
+ chart.exportEvents.push(
588
+ addEvent(menu, 'mouseleave', function() {
589
+ menu.hideTimer = setTimeout(hide, 500);
590
+ }),
591
+ addEvent(menu, 'mouseenter', function() {
592
+ clearTimeout(menu.hideTimer);
593
+ }),
591
594
 
595
+ // Hide it on clicking or touching outside the menu (#2258, #2335,
596
+ // #2407)
597
+ addEvent(doc, 'mouseup', function(e) {
598
+ if (!chart.pointer.inClass(e.target, className)) {
599
+ hide();
600
+ }
601
+ })
602
+ );
592
603
 
593
604
  // create the items
594
605
  each(items, function(item) {
@@ -778,7 +789,9 @@
778
789
  destroyExport: function(e) {
779
790
  var chart = e ? e.target : this,
780
791
  exportSVGElements = chart.exportSVGElements,
781
- exportDivElements = chart.exportDivElements;
792
+ exportDivElements = chart.exportDivElements,
793
+ exportEvents = chart.exportEvents,
794
+ cacheName;
782
795
 
783
796
  // Destroy the extra buttons added
784
797
  if (exportSVGElements) {
@@ -787,6 +800,12 @@
787
800
  // Destroy and null the svg/vml elements
788
801
  if (elem) { // #1822
789
802
  elem.onclick = elem.ontouchstart = null;
803
+ cacheName = 'cache-' + elem.menuClassName;
804
+
805
+ if (chart[cacheName]) {
806
+ delete chart[cacheName];
807
+ }
808
+
790
809
  chart.exportSVGElements[i] = elem.destroy();
791
810
  }
792
811
  });
@@ -809,6 +828,13 @@
809
828
  });
810
829
  exportDivElements.length = 0;
811
830
  }
831
+
832
+ if (exportEvents) {
833
+ each(exportEvents, function(unbind) {
834
+ unbind();
835
+ });
836
+ exportEvents.length = 0;
837
+ }
812
838
  }
813
839
  });
814
840
 
@@ -840,6 +866,7 @@
840
866
  }
841
867
 
842
868
  if (isDirty && exportingOptions.enabled !== false) {
869
+ this.exportEvents = [];
843
870
 
844
871
  for (n in buttons) {
845
872
  this.addButton(buttons[n]);
@@ -876,6 +903,21 @@
876
903
  }
877
904
  };
878
905
  });
906
+
907
+ // Uncomment this to see a button directly below the chart, for quick
908
+ // testing of export
909
+ /*
910
+ if (!chart.renderer.forExport) {
911
+ var button = doc.createElement('button');
912
+ button.innerHTML = 'View exported SVG';
913
+ chart.renderTo.parentNode.appendChild(button);
914
+ button.onclick = function () {
915
+ var div = doc.createElement('div');
916
+ div.innerHTML = chart.getSVGForExport();
917
+ chart.renderTo.parentNode.appendChild(div);
918
+ };
919
+ }
920
+ // */
879
921
  });
880
922
 
881
923
  }(Highcharts));
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Highcharts funnel module
4
4
  *
5
- * (c) 2010-2016 Torstein Honsi
5
+ * (c) 2010-2017 Torstein Honsi
6
6
  *
7
7
  * License: www.highcharts.com/license
8
8
  */
@@ -18,7 +18,7 @@
18
18
  /**
19
19
  * Highcharts funnel module
20
20
  *
21
- * (c) 2010-2016 Torstein Honsi
21
+ * (c) 2010-2017 Torstein Honsi
22
22
  *
23
23
  * License: www.highcharts.com/license
24
24
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * GridAxis
4
4
  *
5
5
  * (c) 2016 Lars A. V. Cabrera
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  *
4
- * (c) 2009-2016 Torstein Honsi
4
+ * (c) 2009-2017 Torstein Honsi
5
5
  *
6
6
  * License: www.highcharts.com/license
7
7
  */
@@ -15,7 +15,7 @@
15
15
  }(function(Highcharts) {
16
16
  (function(H) {
17
17
  /**
18
- * (c) 2010-2016 Torstein Honsi
18
+ * (c) 2010-2017 Torstein Honsi
19
19
  *
20
20
  * License: www.highcharts.com/license
21
21
  */
@@ -597,7 +597,7 @@
597
597
  }(Highcharts));
598
598
  (function(H) {
599
599
  /**
600
- * (c) 2010-2016 Torstein Honsi
600
+ * (c) 2010-2017 Torstein Honsi
601
601
  *
602
602
  * License: www.highcharts.com/license
603
603
  */
@@ -691,7 +691,7 @@
691
691
  }(Highcharts));
692
692
  (function(H) {
693
693
  /**
694
- * (c) 2010-2016 Torstein Honsi
694
+ * (c) 2010-2017 Torstein Honsi
695
695
  *
696
696
  * License: www.highcharts.com/license
697
697
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Plugin for displaying a message when there is no data visible in chart.
4
4
  *
5
- * (c) 2010-2016 Highsoft AS
5
+ * (c) 2010-2017 Highsoft AS
6
6
  * Author: Oystein Moseng
7
7
  *
8
8
  * License: www.highcharts.com/license
@@ -19,7 +19,7 @@
19
19
  /**
20
20
  * Plugin for displaying a message when there is no data visible in chart.
21
21
  *
22
- * (c) 2010-2016 Highsoft AS
22
+ * (c) 2010-2017 Highsoft AS
23
23
  * Author: Oystein Moseng
24
24
  *
25
25
  * License: www.highcharts.com/license
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  * Client side exporting module
4
4
  *
5
5
  * (c) 2015 Torstein Honsi / Oystein Moseng
@@ -500,7 +500,7 @@
500
500
 
501
501
  // Extend the default options to use the local exporter logic
502
502
  merge(true, Highcharts.getOptions().exporting, {
503
- libURL: 'https://code.highcharts.com/5.0.9/lib/',
503
+ libURL: 'https://code.highcharts.com/5.0.10/lib/',
504
504
  buttons: {
505
505
  contextButton: {
506
506
  menuItems: [{
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.9 (2017-03-08)
2
+ * @license Highcharts JS v5.0.10 (2017-03-31)
3
3
  *
4
- * (c) 2009-2016 Torstein Honsi
4
+ * (c) 2009-2017 Torstein Honsi
5
5
  *
6
6
  * License: www.highcharts.com/license
7
7
  */
@@ -15,32 +15,43 @@
15
15
  }(function(Highcharts) {
16
16
  (function(H) {
17
17
  /**
18
- * (c) 2009-2016 Torstein Honsi
18
+ * (c) 2009-2017 Torstein Honsi
19
19
  *
20
20
  * License: www.highcharts.com/license
21
21
  */
22
22
  /**
23
- * Highcharts module to hide overlapping data labels. This module is included in Highcharts.
23
+ * Highcharts module to hide overlapping data labels. This module is included in
24
+ * Highcharts.
24
25
  */
25
26
  var Chart = H.Chart,
26
27
  each = H.each,
27
28
  pick = H.pick,
28
29
  addEvent = H.addEvent;
29
30
 
30
- // Collect potensial overlapping data labels. Stack labels probably don't need to be
31
- // considered because they are usually accompanied by data labels that lie inside the columns.
31
+ // Collect potensial overlapping data labels. Stack labels probably don't need
32
+ // to be considered because they are usually accompanied by data labels that lie
33
+ // inside the columns.
32
34
  Chart.prototype.callbacks.push(function(chart) {
33
35
  function collectAndHide() {
34
36
  var labels = [];
35
37
 
36
38
  each(chart.series || [], function(series) {
37
39
  var dlOptions = series.options.dataLabels,
38
- collections = series.dataLabelCollections || ['dataLabel']; // Range series have two collections
39
- if ((dlOptions.enabled || series._hasPointLabels) && !dlOptions.allowOverlap && series.visible) { // #3866
40
+ // Range series have two collections
41
+ collections = series.dataLabelCollections || ['dataLabel'];
42
+
43
+ if (
44
+ (dlOptions.enabled || series._hasPointLabels) &&
45
+ !dlOptions.allowOverlap &&
46
+ series.visible
47
+ ) { // #3866
40
48
  each(collections, function(coll) {
41
49
  each(series.points, function(point) {
42
50
  if (point[coll]) {
43
- point[coll].labelrank = pick(point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118
51
+ point[coll].labelrank = pick(
52
+ point.labelrank,
53
+ point.shapeArgs && point.shapeArgs.height
54
+ ); // #4118
44
55
  labels.push(point[coll]);
45
56
  }
46
57
  });
@@ -59,8 +70,8 @@
59
70
  });
60
71
 
61
72
  /**
62
- * Hide overlapping labels. Labels are moved and faded in and out on zoom to provide a smooth
63
- * visual imression.
73
+ * Hide overlapping labels. Labels are moved and faded in and out on zoom to
74
+ * provide a smooth visual imression.
64
75
  */
65
76
  Chart.prototype.hideOverlappingLabels = function(labels) {
66
77
 
@@ -94,9 +105,8 @@
94
105
  }
95
106
  }
96
107
 
97
- // Prevent a situation in a gradually rising slope, that each label
98
- // will hide the previous one because the previous one always has
99
- // lower rank.
108
+ // Prevent a situation in a gradually rising slope, that each label will
109
+ // hide the previous one because the previous one always has lower rank.
100
110
  labels.sort(function(a, b) {
101
111
  return (b.labelrank || 0) - (a.labelrank || 0);
102
112
  });
@@ -107,12 +117,19 @@
107
117
 
108
118
  for (j = i + 1; j < len; ++j) {
109
119
  label2 = labels[j];
110
- if (label1 && label2 && label1.placed && label2.placed && label1.newOpacity !== 0 && label2.newOpacity !== 0) {
120
+ if (
121
+ label1 && label2 &&
122
+ label1 !== label2 && // #6465, polar chart with connectEnds
123
+ label1.placed && label2.placed &&
124
+ label1.newOpacity !== 0 && label2.newOpacity !== 0
125
+ ) {
111
126
  pos1 = label1.alignAttr;
112
127
  pos2 = label2.alignAttr;
113
- parent1 = label1.parentGroup; // Different panes have different positions
128
+ // Different panes have different positions
129
+ parent1 = label1.parentGroup;
114
130
  parent2 = label2.parentGroup;
115
- padding = 2 * (label1.box ? 0 : label1.padding); // Substract the padding if no background or border (#4333)
131
+ // Substract the padding if no background or border (#4333)
132
+ padding = 2 * (label1.box ? 0 : label1.padding);
116
133
  isIntersecting = intersectRect(
117
134
  pos1.x + parent1.translateX,
118
135
  pos1.y + parent1.translateY,
@@ -125,7 +142,8 @@
125
142
  );
126
143
 
127
144
  if (isIntersecting) {
128
- (label1.labelrank < label2.labelrank ? label1 : label2).newOpacity = 0;
145
+ (label1.labelrank < label2.labelrank ? label1 : label2)
146
+ .newOpacity = 0;
129
147
  }
130
148
  }
131
149
  }
@@ -141,7 +159,8 @@
141
159
 
142
160
  if (label.oldOpacity !== newOpacity && label.placed) {
143
161
 
144
- // Make sure the label is completely hidden to avoid catching clicks (#4362)
162
+ // Make sure the label is completely hidden to avoid catching
163
+ // clicks (#4362)
145
164
  if (newOpacity) {
146
165
  label.show(true);
147
166
  } else {
@@ -152,7 +171,11 @@
152
171
 
153
172
  // Animate or set the opacity
154
173
  label.alignAttr.opacity = newOpacity;
155
- label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);
174
+ label[label.isOld ? 'animate' : 'attr'](
175
+ label.alignAttr,
176
+ null,
177
+ complete
178
+ );
156
179
 
157
180
  }
158
181
  label.isOld = true;