highcharts-rails 4.2.7 → 5.0.0

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.markdown +34 -0
  3. data/Gemfile +4 -0
  4. data/Rakefile +53 -32
  5. data/app/assets/javascripts/highcharts.js +18775 -17176
  6. data/app/assets/javascripts/highcharts/highcharts-3d.js +1849 -1563
  7. data/app/assets/javascripts/highcharts/highcharts-more.js +2162 -1988
  8. data/app/assets/javascripts/highcharts/modules/accessibility.js +1005 -0
  9. data/app/assets/javascripts/highcharts/modules/annotations.js +408 -401
  10. data/app/assets/javascripts/highcharts/modules/boost.js +561 -546
  11. data/app/assets/javascripts/highcharts/modules/broken-axis.js +330 -324
  12. data/app/assets/javascripts/highcharts/modules/data.js +973 -965
  13. data/app/assets/javascripts/highcharts/modules/drilldown.js +783 -723
  14. data/app/assets/javascripts/highcharts/modules/exporting.js +864 -785
  15. data/app/assets/javascripts/highcharts/modules/funnel.js +290 -306
  16. data/app/assets/javascripts/highcharts/modules/heatmap.js +701 -645
  17. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +150 -132
  18. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +414 -355
  19. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +164 -0
  20. data/app/assets/javascripts/highcharts/modules/series-label.js +473 -448
  21. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +279 -271
  22. data/app/assets/javascripts/highcharts/modules/treemap.js +921 -886
  23. data/app/assets/javascripts/highcharts/themes/dark-blue.js +307 -244
  24. data/app/assets/javascripts/highcharts/themes/dark-green.js +303 -244
  25. data/app/assets/javascripts/highcharts/themes/dark-unica.js +231 -201
  26. data/app/assets/javascripts/highcharts/themes/gray.js +314 -245
  27. data/app/assets/javascripts/highcharts/themes/grid-light.js +91 -66
  28. data/app/assets/javascripts/highcharts/themes/grid.js +124 -96
  29. data/app/assets/javascripts/highcharts/themes/sand-signika.js +119 -94
  30. data/app/assets/javascripts/highcharts/themes/skies.js +108 -85
  31. data/lib/highcharts/version.rb +1 -1
  32. metadata +13 -14
  33. data/app/assets/javascripts/highcharts/adapters/standalone-framework.js +0 -1
  34. data/app/assets/javascripts/highcharts/modules/canvas-tools.js +0 -3115
  35. data/app/assets/javascripts/highcharts/modules/map.js +0 -2117
@@ -1,279 +1,287 @@
1
1
  /**
2
- * @license Highcharts JS v4.2.7 (2016-09-21)
2
+ * @license Highcharts JS v5.0.0 (2016-09-29)
3
3
  * Solid angular gauge module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
6
6
  *
7
7
  * License: www.highcharts.com/license
8
8
  */
9
-
10
- (function (factory) {
11
- if (typeof module === 'object' && module.exports) {
12
- module.exports = factory;
13
- } else {
14
- factory(Highcharts);
15
- }
16
- }(function (H) {
17
- 'use strict';
18
-
19
- var defaultPlotOptions = H.getOptions().plotOptions,
20
- pInt = H.pInt,
21
- pick = H.pick,
22
- each = H.each,
23
- isNumber = H.isNumber,
24
- colorAxisMethods,
25
- UNDEFINED;
26
-
27
- // The default options
28
- defaultPlotOptions.solidgauge = H.merge(defaultPlotOptions.gauge, {
29
- colorByPoint: true
30
- });
31
-
32
-
33
- // These methods are defined in the ColorAxis object, and copied here.
34
- // If we implement an AMD system we should make ColorAxis a dependency.
35
- colorAxisMethods = {
36
-
37
-
38
- initDataClasses: function (userOptions) {
39
- var axis = this,
40
- chart = this.chart,
41
- dataClasses,
42
- colorCounter = 0,
43
- options = this.options;
44
- this.dataClasses = dataClasses = [];
45
-
46
- each(userOptions.dataClasses, function (dataClass, i) {
47
- var colors;
48
-
49
- dataClass = H.merge(dataClass);
50
- dataClasses.push(dataClass);
51
- if (!dataClass.color) {
52
- if (options.dataClassColor === 'category') {
53
- colors = chart.options.colors;
54
- dataClass.color = colors[colorCounter++];
55
- // loop back to zero
56
- if (colorCounter === colors.length) {
57
- colorCounter = 0;
58
- }
59
- } else {
60
- dataClass.color = axis.tweenColors(H.Color(options.minColor), H.Color(options.maxColor), i / (userOptions.dataClasses.length - 1));
61
- }
62
- }
63
- });
64
- },
65
-
66
- initStops: function (userOptions) {
67
- this.stops = userOptions.stops || [
68
- [0, this.options.minColor],
69
- [1, this.options.maxColor]
70
- ];
71
- each(this.stops, function (stop) {
72
- stop.color = H.Color(stop[1]);
73
- });
74
- },
75
- /**
76
- * Translate from a value to a color
77
- */
78
- toColor: function (value, point) {
79
- var pos,
80
- stops = this.stops,
81
- from,
82
- to,
83
- color,
84
- dataClasses = this.dataClasses,
85
- dataClass,
86
- i;
87
-
88
- if (dataClasses) {
89
- i = dataClasses.length;
90
- while (i--) {
91
- dataClass = dataClasses[i];
92
- from = dataClass.from;
93
- to = dataClass.to;
94
- if ((from === UNDEFINED || value >= from) && (to === UNDEFINED || value <= to)) {
95
- color = dataClass.color;
96
- if (point) {
97
- point.dataClass = i;
98
- }
99
- break;
100
- }
101
- }
102
-
103
- } else {
104
-
105
- if (this.isLog) {
106
- value = this.val2lin(value);
107
- }
108
- pos = 1 - ((this.max - value) / (this.max - this.min));
109
- i = stops.length;
110
- while (i--) {
111
- if (pos > stops[i][0]) {
112
- break;
113
- }
114
- }
115
- from = stops[i] || stops[i + 1];
116
- to = stops[i + 1] || from;
117
-
118
- // The position within the gradient
119
- pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
120
-
121
- color = this.tweenColors(
122
- from.color,
123
- to.color,
124
- pos
125
- );
126
- }
127
- return color;
128
- },
129
- /*
130
- * Return an intermediate color between two colors, according to pos where 0
131
- * is the from color and 1 is the to color.
132
- */
133
- tweenColors: function (from, to, pos) {
134
- // Check for has alpha, because rgba colors perform worse due to lack of
135
- // support in WebKit.
136
- var hasAlpha,
137
- ret;
138
-
139
- // Unsupported color, return to-color (#3920)
140
- if (!to.rgba.length || !from.rgba.length) {
141
- ret = to.input || 'none';
142
-
143
- // Interpolate
144
- } else {
145
- from = from.rgba;
146
- to = to.rgba;
147
- hasAlpha = (to[3] !== 1 || from[3] !== 1);
148
- ret = (hasAlpha ? 'rgba(' : 'rgb(') +
149
- Math.round(to[0] + (from[0] - to[0]) * (1 - pos)) + ',' +
150
- Math.round(to[1] + (from[1] - to[1]) * (1 - pos)) + ',' +
151
- Math.round(to[2] + (from[2] - to[2]) * (1 - pos)) +
152
- (hasAlpha ? (',' + (to[3] + (from[3] - to[3]) * (1 - pos))) : '') + ')';
153
- }
154
- return ret;
155
- }
156
- };
157
-
158
- /**
159
- * Handle animation of the color attributes directly
160
- */
161
- each(['fill', 'stroke'], function (prop) {
162
- H.Fx.prototype[prop + 'Setter'] = function () {
163
- this.elem.attr(prop, colorAxisMethods.tweenColors(H.Color(this.start), H.Color(this.end), this.pos));
164
- };
165
- });
166
-
167
- // The series prototype
168
- H.seriesTypes.solidgauge = H.extendClass(H.seriesTypes.gauge, {
169
- type: 'solidgauge',
170
- pointAttrToOptions: {}, // #4301, don't inherit line marker's attribs
171
- bindAxes: function () {
172
- var axis;
173
- H.seriesTypes.gauge.prototype.bindAxes.call(this);
174
-
175
- axis = this.yAxis;
176
- H.extend(axis, colorAxisMethods);
177
-
178
- // Prepare data classes
179
- if (axis.options.dataClasses) {
180
- axis.initDataClasses(axis.options);
181
- }
182
- axis.initStops(axis.options);
183
- },
184
-
185
- /**
186
- * Draw the points where each point is one needle
187
- */
188
- drawPoints: function () {
189
- var series = this,
190
- yAxis = series.yAxis,
191
- center = yAxis.center,
192
- options = series.options,
193
- renderer = series.chart.renderer,
194
- overshoot = options.overshoot,
195
- overshootVal = isNumber(overshoot) ? overshoot / 180 * Math.PI : 0;
196
-
197
- H.each(series.points, function (point) {
198
- var graphic = point.graphic,
199
- rotation = yAxis.startAngleRad + yAxis.translate(point.y, null, null, null, true),
200
- radius = (pInt(pick(point.options.radius, options.radius, 100)) * center[2]) / 200,
201
- innerRadius = (pInt(pick(point.options.innerRadius, options.innerRadius, 60)) * center[2]) / 200,
202
- shapeArgs,
203
- d,
204
- toColor = yAxis.toColor(point.y, point),
205
- axisMinAngle = Math.min(yAxis.startAngleRad, yAxis.endAngleRad),
206
- axisMaxAngle = Math.max(yAxis.startAngleRad, yAxis.endAngleRad),
207
- minAngle,
208
- maxAngle,
209
- attribs;
210
-
211
- if (toColor === 'none') { // #3708
212
- toColor = point.color || series.color || 'none';
213
- }
214
- if (toColor !== 'none') {
215
- point.color = toColor;
216
- }
217
-
218
- // Handle overshoot and clipping to axis max/min
219
- rotation = Math.max(axisMinAngle - overshootVal, Math.min(axisMaxAngle + overshootVal, rotation));
220
-
221
- // Handle the wrap option
222
- if (options.wrap === false) {
223
- rotation = Math.max(axisMinAngle, Math.min(axisMaxAngle, rotation));
224
- }
225
-
226
- minAngle = Math.min(rotation, yAxis.startAngleRad);
227
- maxAngle = Math.max(rotation, yAxis.startAngleRad);
228
-
229
- if (maxAngle - minAngle > 2 * Math.PI) {
230
- maxAngle = minAngle + 2 * Math.PI;
231
- }
232
-
233
- point.shapeArgs = shapeArgs = {
234
- x: center[0],
235
- y: center[1],
236
- r: radius,
237
- innerR: innerRadius,
238
- start: minAngle,
239
- end: maxAngle,
240
- fill: toColor
241
- };
242
- point.startR = radius; // For PieSeries.animate
243
-
244
- if (graphic) {
245
- d = shapeArgs.d;
246
- graphic.animate(shapeArgs);
247
- if (d) {
248
- shapeArgs.d = d; // animate alters it
249
- }
250
- } else {
251
- attribs = {
252
- stroke: options.borderColor || 'none',
253
- 'stroke-width': options.borderWidth || 0,
254
- fill: toColor,
255
- 'sweep-flag': 0
256
- };
257
- if (options.linecap !== 'square') {
258
- attribs['stroke-linecap'] = attribs['stroke-linejoin'] = 'round';
259
- }
260
- point.graphic = renderer.arc(shapeArgs)
261
- .attr(attribs)
262
- .add(series.group);
263
- }
264
- });
265
- },
266
-
267
- /**
268
- * Extend the pie slice animation by animating from start angle and up
269
- */
270
- animate: function (init) {
271
-
272
- if (!init) {
273
- this.startAngleRad = this.yAxis.startAngleRad;
274
- H.seriesTypes.pie.prototype.animate.call(this, init);
275
- }
276
- }
277
- });
278
-
9
+ (function(factory) {
10
+ if (typeof module === 'object' && module.exports) {
11
+ module.exports = factory;
12
+ } else {
13
+ factory(Highcharts);
14
+ }
15
+ }(function(Highcharts) {
16
+ (function(H) {
17
+ /**
18
+ * Solid angular gauge module
19
+ *
20
+ * (c) 2010-2016 Torstein Honsi
21
+ *
22
+ * License: www.highcharts.com/license
23
+ */
24
+
25
+ 'use strict';
26
+ var pInt = H.pInt,
27
+ pick = H.pick,
28
+ each = H.each,
29
+ isNumber = H.isNumber,
30
+ colorAxisMethods;
31
+
32
+ // These methods are defined in the ColorAxis object, and copied here.
33
+ // If we implement an AMD system we should make ColorAxis a dependency.
34
+ colorAxisMethods = {
35
+
36
+
37
+ initDataClasses: function(userOptions) {
38
+ var axis = this,
39
+ chart = this.chart,
40
+ dataClasses,
41
+ colorCounter = 0,
42
+ options = this.options;
43
+ this.dataClasses = dataClasses = [];
44
+
45
+ each(userOptions.dataClasses, function(dataClass, i) {
46
+ var colors;
47
+
48
+ dataClass = H.merge(dataClass);
49
+ dataClasses.push(dataClass);
50
+ if (!dataClass.color) {
51
+ if (options.dataClassColor === 'category') {
52
+ colors = chart.options.colors;
53
+ dataClass.color = colors[colorCounter++];
54
+ // loop back to zero
55
+ if (colorCounter === colors.length) {
56
+ colorCounter = 0;
57
+ }
58
+ } else {
59
+ dataClass.color = axis.tweenColors(H.color(options.minColor), H.color(options.maxColor), i / (userOptions.dataClasses.length - 1));
60
+ }
61
+ }
62
+ });
63
+ },
64
+
65
+ initStops: function(userOptions) {
66
+ this.stops = userOptions.stops || [
67
+ [0, this.options.minColor],
68
+ [1, this.options.maxColor]
69
+ ];
70
+ each(this.stops, function(stop) {
71
+ stop.color = H.color(stop[1]);
72
+ });
73
+ },
74
+ /**
75
+ * Translate from a value to a color
76
+ */
77
+ toColor: function(value, point) {
78
+ var pos,
79
+ stops = this.stops,
80
+ from,
81
+ to,
82
+ color,
83
+ dataClasses = this.dataClasses,
84
+ dataClass,
85
+ i;
86
+
87
+ if (dataClasses) {
88
+ i = dataClasses.length;
89
+ while (i--) {
90
+ dataClass = dataClasses[i];
91
+ from = dataClass.from;
92
+ to = dataClass.to;
93
+ if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
94
+ color = dataClass.color;
95
+ if (point) {
96
+ point.dataClass = i;
97
+ }
98
+ break;
99
+ }
100
+ }
101
+
102
+ } else {
103
+
104
+ if (this.isLog) {
105
+ value = this.val2lin(value);
106
+ }
107
+ pos = 1 - ((this.max - value) / (this.max - this.min));
108
+ i = stops.length;
109
+ while (i--) {
110
+ if (pos > stops[i][0]) {
111
+ break;
112
+ }
113
+ }
114
+ from = stops[i] || stops[i + 1];
115
+ to = stops[i + 1] || from;
116
+
117
+ // The position within the gradient
118
+ pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
119
+
120
+ color = this.tweenColors(
121
+ from.color,
122
+ to.color,
123
+ pos
124
+ );
125
+ }
126
+ return color;
127
+ },
128
+ /*
129
+ * Return an intermediate color between two colors, according to pos where 0
130
+ * is the from color and 1 is the to color.
131
+ */
132
+ tweenColors: function(from, to, pos) {
133
+ // Check for has alpha, because rgba colors perform worse due to lack of
134
+ // support in WebKit.
135
+ var hasAlpha,
136
+ ret;
137
+
138
+ // Unsupported color, return to-color (#3920)
139
+ if (!to.rgba.length || !from.rgba.length) {
140
+ ret = to.input || 'none';
141
+
142
+ // Interpolate
143
+ } else {
144
+ from = from.rgba;
145
+ to = to.rgba;
146
+ hasAlpha = (to[3] !== 1 || from[3] !== 1);
147
+ ret = (hasAlpha ? 'rgba(' : 'rgb(') +
148
+ Math.round(to[0] + (from[0] - to[0]) * (1 - pos)) + ',' +
149
+ Math.round(to[1] + (from[1] - to[1]) * (1 - pos)) + ',' +
150
+ Math.round(to[2] + (from[2] - to[2]) * (1 - pos)) +
151
+ (hasAlpha ? (',' + (to[3] + (from[3] - to[3]) * (1 - pos))) : '') + ')';
152
+ }
153
+ return ret;
154
+ }
155
+ };
156
+
157
+ /**
158
+ * Handle animation of the color attributes directly
159
+ */
160
+ each(['fill', 'stroke'], function(prop) {
161
+ H.Fx.prototype[prop + 'Setter'] = function() {
162
+ this.elem.attr(prop, colorAxisMethods.tweenColors(H.color(this.start), H.color(this.end), this.pos));
163
+ };
164
+ });
165
+
166
+ // The solidgauge series type
167
+ H.seriesType('solidgauge', 'gauge', {
168
+ colorByPoint: true
169
+
170
+ }, {
171
+ bindAxes: function() {
172
+ var axis;
173
+ H.seriesTypes.gauge.prototype.bindAxes.call(this);
174
+
175
+ axis = this.yAxis;
176
+ H.extend(axis, colorAxisMethods);
177
+
178
+ // Prepare data classes
179
+ if (axis.options.dataClasses) {
180
+ axis.initDataClasses(axis.options);
181
+ }
182
+ axis.initStops(axis.options);
183
+ },
184
+
185
+ /**
186
+ * Draw the points where each point is one needle
187
+ */
188
+ drawPoints: function() {
189
+ var series = this,
190
+ yAxis = series.yAxis,
191
+ center = yAxis.center,
192
+ options = series.options,
193
+ renderer = series.chart.renderer,
194
+ overshoot = options.overshoot,
195
+ overshootVal = isNumber(overshoot) ? overshoot / 180 * Math.PI : 0;
196
+
197
+ each(series.points, function(point) {
198
+ var graphic = point.graphic,
199
+ rotation = yAxis.startAngleRad + yAxis.translate(point.y, null, null, null, true),
200
+ radius = (pInt(pick(point.options.radius, options.radius, 100)) * center[2]) / 200,
201
+ innerRadius = (pInt(pick(point.options.innerRadius, options.innerRadius, 60)) * center[2]) / 200,
202
+ shapeArgs,
203
+ d,
204
+ toColor = yAxis.toColor(point.y, point),
205
+ axisMinAngle = Math.min(yAxis.startAngleRad, yAxis.endAngleRad),
206
+ axisMaxAngle = Math.max(yAxis.startAngleRad, yAxis.endAngleRad),
207
+ minAngle,
208
+ maxAngle;
209
+
210
+ if (toColor === 'none') { // #3708
211
+ toColor = point.color || series.color || 'none';
212
+ }
213
+ if (toColor !== 'none') {
214
+ point.color = toColor;
215
+ }
216
+
217
+ // Handle overshoot and clipping to axis max/min
218
+ rotation = Math.max(axisMinAngle - overshootVal, Math.min(axisMaxAngle + overshootVal, rotation));
219
+
220
+ // Handle the wrap option
221
+ if (options.wrap === false) {
222
+ rotation = Math.max(axisMinAngle, Math.min(axisMaxAngle, rotation));
223
+ }
224
+
225
+ minAngle = Math.min(rotation, yAxis.startAngleRad);
226
+ maxAngle = Math.max(rotation, yAxis.startAngleRad);
227
+
228
+ if (maxAngle - minAngle > 2 * Math.PI) {
229
+ maxAngle = minAngle + 2 * Math.PI;
230
+ }
231
+
232
+ point.shapeArgs = shapeArgs = {
233
+ x: center[0],
234
+ y: center[1],
235
+ r: radius,
236
+ innerR: innerRadius,
237
+ start: minAngle,
238
+ end: maxAngle,
239
+ fill: toColor
240
+ };
241
+ point.startR = radius; // For PieSeries.animate
242
+
243
+ if (graphic) {
244
+ d = shapeArgs.d;
245
+ graphic.animate(shapeArgs);
246
+ if (d) {
247
+ shapeArgs.d = d; // animate alters it
248
+ }
249
+ } else {
250
+ point.graphic = renderer.arc(shapeArgs)
251
+ .addClass('highcharts-point')
252
+ .attr({
253
+ fill: toColor,
254
+ 'sweep-flag': 0
255
+ })
256
+ .add(series.group);
257
+
258
+
259
+ if (options.linecap !== 'square') {
260
+ point.graphic.attr({
261
+ 'stroke-linecap': 'round',
262
+ 'stroke-linejoin': 'round'
263
+ });
264
+ }
265
+ point.graphic.attr({
266
+ stroke: options.borderColor || 'none',
267
+ 'stroke-width': options.borderWidth || 0
268
+ });
269
+
270
+ }
271
+ });
272
+ },
273
+
274
+ /**
275
+ * Extend the pie slice animation by animating from start angle and up
276
+ */
277
+ animate: function(init) {
278
+
279
+ if (!init) {
280
+ this.startAngleRad = this.yAxis.startAngleRad;
281
+ H.seriesTypes.pie.prototype.animate.call(this, init);
282
+ }
283
+ }
284
+ });
285
+
286
+ }(Highcharts));
279
287
  }));