highcharts-rails 5.0.9 → 5.0.10

Sign up to get free protection for your applications and to get access to all the features.
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;