highcharts-rails 6.0.2 → 6.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CCBYNC-LICENSE +103 -0
  3. data/CHANGELOG.markdown +31 -0
  4. data/Highsoft-LICENSE +1 -0
  5. data/{LICENSE → MIT-LICENSE} +0 -0
  6. data/README.markdown +6 -6
  7. data/app/assets/javascripts/highcharts.js +1635 -498
  8. data/app/assets/javascripts/highcharts/highcharts-3d.js +1 -1
  9. data/app/assets/javascripts/highcharts/highcharts-more.js +2 -2
  10. data/app/assets/javascripts/highcharts/modules/accessibility.js +1072 -824
  11. data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
  12. data/app/assets/javascripts/highcharts/modules/boost-canvas.js +3 -13
  13. data/app/assets/javascripts/highcharts/modules/boost.js +29 -13
  14. data/app/assets/javascripts/highcharts/modules/broken-axis.js +1 -1
  15. data/app/assets/javascripts/highcharts/modules/bullet.js +1 -1
  16. data/app/assets/javascripts/highcharts/modules/data.js +6 -6
  17. data/app/assets/javascripts/highcharts/modules/drag-panes.js +1 -1
  18. data/app/assets/javascripts/highcharts/modules/drilldown.js +1 -1
  19. data/app/assets/javascripts/highcharts/modules/export-data.js +10 -12
  20. data/app/assets/javascripts/highcharts/modules/exporting.js +1 -1
  21. data/app/assets/javascripts/highcharts/modules/funnel.js +1 -1
  22. data/app/assets/javascripts/highcharts/modules/gantt.js +26 -78
  23. data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
  24. data/app/assets/javascripts/highcharts/modules/heatmap.js +1 -1
  25. data/app/assets/javascripts/highcharts/modules/histogram-bellcurve.js +1 -1
  26. data/app/assets/javascripts/highcharts/modules/item-series.js +1 -1
  27. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +6 -15
  28. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +2 -2
  29. data/app/assets/javascripts/highcharts/modules/oldie.js +2 -2
  30. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +41 -47
  31. data/app/assets/javascripts/highcharts/modules/parallel-coordinates.js +10 -6
  32. data/app/assets/javascripts/highcharts/modules/pareto.js +9 -1
  33. data/app/assets/javascripts/highcharts/modules/sankey.js +1 -1
  34. data/app/assets/javascripts/highcharts/modules/series-label.js +1 -1
  35. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
  36. data/app/assets/javascripts/highcharts/modules/static-scale.js +2 -6
  37. data/app/assets/javascripts/highcharts/modules/stock.js +96 -30
  38. data/app/assets/javascripts/highcharts/modules/streamgraph.js +1 -1
  39. data/app/assets/javascripts/highcharts/modules/sunburst.js +82 -50
  40. data/app/assets/javascripts/highcharts/modules/tilemap.js +1 -1
  41. data/app/assets/javascripts/highcharts/modules/treemap.js +10 -2
  42. data/app/assets/javascripts/highcharts/modules/variable-pie.js +1 -1
  43. data/app/assets/javascripts/highcharts/modules/variwide.js +1 -1
  44. data/app/assets/javascripts/highcharts/modules/vector.js +1 -1
  45. data/app/assets/javascripts/highcharts/modules/windbarb.js +1 -1
  46. data/app/assets/javascripts/highcharts/modules/wordcloud.js +7 -3
  47. data/app/assets/javascripts/highcharts/modules/xrange.js +24 -76
  48. data/app/assets/javascripts/highcharts/themes/avocado.js +1 -1
  49. data/app/assets/javascripts/highcharts/themes/dark-blue.js +1 -1
  50. data/app/assets/javascripts/highcharts/themes/dark-green.js +1 -1
  51. data/app/assets/javascripts/highcharts/themes/dark-unica.js +1 -1
  52. data/app/assets/javascripts/highcharts/themes/gray.js +1 -1
  53. data/app/assets/javascripts/highcharts/themes/grid-light.js +1 -1
  54. data/app/assets/javascripts/highcharts/themes/grid.js +1 -1
  55. data/app/assets/javascripts/highcharts/themes/sand-signika.js +1 -1
  56. data/app/assets/javascripts/highcharts/themes/skies.js +1 -1
  57. data/app/assets/javascripts/highcharts/themes/sunset.js +1 -1
  58. data/highcharts-rails.gemspec +1 -0
  59. data/lib/highcharts/version.rb +1 -1
  60. metadata +9 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Streamgraph module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * (c) 2016 Highsoft AS
5
5
  * Authors: Jon Arild Nygard
@@ -128,6 +128,9 @@
128
128
  }
129
129
  });
130
130
  }
131
+ if (graphic) {
132
+ graphic.addClass(point.getClassName(), true);
133
+ }
131
134
  };
132
135
  return draw;
133
136
  }());
@@ -209,6 +212,7 @@
209
212
  point,
210
213
  level,
211
214
  colorByPoint,
215
+ colorIndexByPoint,
212
216
  color,
213
217
  colorIndex;
214
218
 
@@ -236,9 +240,14 @@
236
240
  !!series.options.colorByPoint
237
241
  )
238
242
  );
243
+
239
244
  if (getColorByPoint) {
240
- colorByPoint = colors[(point.index % colors.length)];
245
+ colorIndexByPoint = point.index %
246
+ (colors ? colors.length : series.chart.options.chart.colorCount);
247
+ colorByPoint = colors && colors[colorIndexByPoint];
241
248
  }
249
+
250
+
242
251
  // Select either point color, level color or inherited color.
243
252
  color = pick(
244
253
  point && point.options.color,
@@ -247,9 +256,11 @@
247
256
  parentColor && variation(parentColor),
248
257
  series.color
249
258
  );
259
+
250
260
  colorIndex = pick(
251
261
  point && point.options.colorIndex,
252
262
  level && level.colorIndex,
263
+ colorIndexByPoint,
253
264
  parentColorIndex,
254
265
  options.colorIndex
255
266
  );
@@ -1896,51 +1907,6 @@
1896
1907
  };
1897
1908
  };
1898
1909
 
1899
- var setShapeArgs = function setShapeArgs(parent, parentValues) {
1900
- var childrenValues = [],
1901
- // Collect all children which should be included
1902
- children = grep(parent.children, function(n) {
1903
- return n.visible;
1904
- });
1905
- childrenValues = layoutAlgorithm(parentValues, children);
1906
- each(children, function(child, index) {
1907
- var values = childrenValues[index],
1908
- angle = values.start + ((values.end - values.start) / 2),
1909
- radius = values.innerR + ((values.r - values.innerR) / 2),
1910
- isCircle = (
1911
- values.innerR === 0 &&
1912
- (values.end - values.start) > 6.28
1913
- ),
1914
- center = (
1915
- isCircle ? {
1916
- x: values.x,
1917
- y: values.y
1918
- } :
1919
- getEndPoint(values.x, values.y, angle, radius)
1920
- ),
1921
- val = (
1922
- child.val ?
1923
- (
1924
- child.childrenTotal > child.val ?
1925
- child.childrenTotal :
1926
- child.val
1927
- ) :
1928
- child.childrenTotal
1929
- );
1930
- child.shapeArgs = merge(values, {
1931
- plotX: center.x,
1932
- plotY: center.y
1933
- });
1934
- child.values = merge(values, {
1935
- val: val
1936
- });
1937
- // If node has children, then call method recursively
1938
- if (child.children.length) {
1939
- setShapeArgs(child, child.values);
1940
- }
1941
- });
1942
- };
1943
-
1944
1910
  var getDrillId = function getDrillId(point, idRoot, mapIdToNode) {
1945
1911
  var drillId,
1946
1912
  node = point.node,
@@ -2185,7 +2151,6 @@
2185
2151
  level = levelMap[node.levelDynamic],
2186
2152
  shapeExisting = point.shapeExisting || {},
2187
2153
  shape = node.shapeArgs || {},
2188
- attrStyle = series.pointAttribs(point, point.selected && 'select'),
2189
2154
  animationInfo,
2190
2155
  onComplete,
2191
2156
  visible = !!(node.visible && node.shapeArgs);
@@ -2231,7 +2196,13 @@
2231
2196
  }
2232
2197
  point.draw({
2233
2198
  animate: animationInfo.to,
2234
- attr: extend(animationInfo.from, attrStyle),
2199
+ attr: extend(
2200
+ animationInfo.from,
2201
+ series.pointAttribs && series.pointAttribs(
2202
+ point,
2203
+ point.selected && 'select'
2204
+ )
2205
+ ),
2235
2206
  onComplete: onComplete,
2236
2207
  group: group,
2237
2208
  renderer: renderer,
@@ -2255,7 +2226,68 @@
2255
2226
  Series.prototype.drawDataLabels.call(series);
2256
2227
  }
2257
2228
  },
2229
+
2258
2230
  pointAttribs: seriesTypes.column.prototype.pointAttribs,
2231
+
2232
+
2233
+ /*
2234
+ * Set the shape arguments on the nodes. Recursive from root down.
2235
+ */
2236
+ setShapeArgs: function(parent, parentValues) {
2237
+ var childrenValues = [],
2238
+ // Collect all children which should be included
2239
+ children = grep(parent.children, function(n) {
2240
+ return n.visible;
2241
+ });
2242
+ childrenValues = layoutAlgorithm(parentValues, children);
2243
+ each(children, function(child, index) {
2244
+ var values = childrenValues[index],
2245
+ angle = values.start + ((values.end - values.start) / 2),
2246
+ radius = values.innerR + ((values.r - values.innerR) / 2),
2247
+ isCircle = (
2248
+ values.innerR === 0 &&
2249
+ (values.end - values.start) > 6.28
2250
+ ),
2251
+ center = (
2252
+ isCircle ? {
2253
+ x: values.x,
2254
+ y: values.y
2255
+ } :
2256
+ getEndPoint(values.x, values.y, angle, radius)
2257
+ ),
2258
+ val = (
2259
+ child.val ?
2260
+ (
2261
+ child.childrenTotal > child.val ?
2262
+ child.childrenTotal :
2263
+ child.val
2264
+ ) :
2265
+ child.childrenTotal
2266
+ ),
2267
+ innerArcFraction = (values.end - values.start) / (2 * Math.PI),
2268
+ perimeter = 2 * Math.PI * values.innerR;
2269
+
2270
+ // The inner arc length is a convenience for data label filters.
2271
+ if (this.points[child.i]) {
2272
+ this.points[child.i].innerArcLength =
2273
+ innerArcFraction * perimeter;
2274
+ }
2275
+
2276
+ child.shapeArgs = merge(values, {
2277
+ plotX: center.x,
2278
+ plotY: center.y
2279
+ });
2280
+ child.values = merge(values, {
2281
+ val: val
2282
+ });
2283
+ // If node has children, then call method recursively
2284
+ if (child.children.length) {
2285
+ this.setShapeArgs(child, child.values);
2286
+ }
2287
+ }, this);
2288
+ },
2289
+
2290
+
2259
2291
  translate: function translate() {
2260
2292
  var series = this,
2261
2293
  options = series.options,
@@ -2309,7 +2341,7 @@
2309
2341
  x: positions[0],
2310
2342
  y: positions[1]
2311
2343
  };
2312
- setShapeArgs(nodeTop, values);
2344
+ this.setShapeArgs(nodeTop, values);
2313
2345
  },
2314
2346
 
2315
2347
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Tilemap module
4
4
  *
5
5
  * (c) 2010-2017 Highsoft AS
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * (c) 2014 Highsoft AS
5
5
  * Authors: Jon Arild Nygard / Oystein Moseng
@@ -92,6 +92,7 @@
92
92
  point,
93
93
  level,
94
94
  colorByPoint,
95
+ colorIndexByPoint,
95
96
  color,
96
97
  colorIndex;
97
98
 
@@ -119,9 +120,14 @@
119
120
  !!series.options.colorByPoint
120
121
  )
121
122
  );
123
+
122
124
  if (getColorByPoint) {
123
- colorByPoint = colors[(point.index % colors.length)];
125
+ colorIndexByPoint = point.index %
126
+ (colors ? colors.length : series.chart.options.chart.colorCount);
127
+ colorByPoint = colors && colors[colorIndexByPoint];
124
128
  }
129
+
130
+
125
131
  // Select either point color, level color or inherited color.
126
132
  color = pick(
127
133
  point && point.options.color,
@@ -130,9 +136,11 @@
130
136
  parentColor && variation(parentColor),
131
137
  series.color
132
138
  );
139
+
133
140
  colorIndex = pick(
134
141
  point && point.options.colorIndex,
135
142
  level && level.colorIndex,
143
+ colorIndexByPoint,
136
144
  parentColorIndex,
137
145
  options.colorIndex
138
146
  );
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * Variable Pie module for Highcharts
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Highcharts variwide module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Vector plot series module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Wind barb series module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * (c) 2016 Highsoft AS
5
5
  * Authors: Jon Arild Nygard
@@ -51,6 +51,9 @@
51
51
  }
52
52
  });
53
53
  }
54
+ if (graphic) {
55
+ graphic.addClass(point.getClassName(), true);
56
+ }
54
57
  };
55
58
  return draw;
56
59
  }());
@@ -468,7 +471,8 @@
468
471
  fontFamily: 'Impact, sans-serif'
469
472
  },
470
473
  tooltip: {
471
- followPointer: true
474
+ followPointer: true,
475
+ pointFormat: '<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.weight}</b><br/>'
472
476
  }
473
477
  };
474
478
 
@@ -530,7 +534,7 @@
530
534
  each(data, function(point) {
531
535
  var relativeWeight = 1 / maxWeight * point.weight,
532
536
  css = extend({
533
- fontSize: series.deriveFontSize(relativeWeight),
537
+ fontSize: series.deriveFontSize(relativeWeight) + 'px',
534
538
  fill: point.color
535
539
  }, options.style),
536
540
  placement = placementStrategy(point, {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * X-range series
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi, Lars A. V. Cabrera
@@ -93,7 +93,8 @@
93
93
  headerFormat: '<span style="font-size: 0.85em">{point.x} - {point.x2}</span><br/>',
94
94
  pointFormat: '<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.yCategory}</b><br/>'
95
95
  },
96
- borderRadius: 3
96
+ borderRadius: 3,
97
+ pointRange: 0
97
98
  /**
98
99
  * A partial fill for each point, typically used to visualize how much of
99
100
  * a task is performed. The partial fill object can be set either on series
@@ -116,7 +117,6 @@
116
117
 
117
118
  }, {
118
119
  type: 'xrange',
119
- forceDL: true,
120
120
  parallelArrays: ['x', 'x2', 'y'],
121
121
  requireSorting: false,
122
122
  animate: seriesTypes.line.prototype.animate,
@@ -178,7 +178,10 @@
178
178
  partialFill,
179
179
  inverted = this.chart.inverted,
180
180
  borderWidth = pick(series.options.borderWidth, 1),
181
- crisper = borderWidth % 2 / 2;
181
+ crisper = borderWidth % 2 / 2,
182
+ dlLeft,
183
+ dlRight,
184
+ dlWidth;
182
185
 
183
186
  if (minPointLength) {
184
187
  widthDifference = minPointLength - length;
@@ -200,6 +203,23 @@
200
203
  r: series.options.borderRadius
201
204
  };
202
205
 
206
+ // Align data labels inside the shape and inside the plot area
207
+ dlLeft = point.shapeArgs.x;
208
+ dlRight = dlLeft + point.shapeArgs.width;
209
+ if (dlLeft < 0 || dlRight > xAxis.len) {
210
+ dlLeft = Math.min(xAxis.len, Math.max(0, dlLeft));
211
+ dlRight = Math.max(0, Math.min(dlRight, xAxis.len));
212
+ dlWidth = dlRight - dlLeft;
213
+ point.dlBox = merge(point.shapeArgs, {
214
+ x: dlLeft,
215
+ width: dlRight - dlLeft,
216
+ centerX: dlWidth ? dlWidth / 2 : null
217
+ });
218
+
219
+ } else {
220
+ point.dlBox = null;
221
+ }
222
+
203
223
  // Tooltip position
204
224
  point.tooltipPos[0] += inverted ? 0 : length / 2;
205
225
  point.tooltipPos[1] -= inverted ? length / 2 : metrics.width / 2;
@@ -239,78 +259,6 @@
239
259
  }, this);
240
260
  },
241
261
 
242
- /**
243
- * Aligns an individual dataLabel.
244
- *
245
- * TODO: Do we need this for inside datalabels? Seems to work.
246
- *
247
- * @param {Object} point the point belonging to the dataLabel
248
- * @param {Object} dataLabel the dataLabel configuration object
249
- * @param {Object} options dataLabel options for the series
250
- * @param {Object} alignTo
251
- * @param {Boolean} isNew Wheter the label is new or already existed
252
- * @return {void}
253
- * /
254
- alignDataLabel: function (point, dataLabel, options, alignTo, isNew) {
255
- var chart = this.chart,
256
- align = options.align,
257
- inverted = chart.inverted,
258
- plotX = pick(point.plotX, -9999),
259
- plotY = pick(point.plotY, -9999),
260
- verticalAlign = options.verticalAlign,
261
- inside = options.inside,
262
- pointBox = point.shapeArgs,
263
- labelBox = dataLabel.getBBox(),
264
- labelTextBox = dataLabel.text.getBBox(),
265
- attr = {},
266
- visible =
267
- this.visible &&
268
- (
269
- labelTextBox.width <= pointBox.width &&
270
- labelTextBox.height <= pointBox.height
271
- ) &&
272
- (
273
- this.forceDL ||
274
- chart.isInsidePlot(plotX, Math.round(plotY), inverted)
275
- );
276
-
277
- if (visible) {
278
- if (align === 'right') {
279
- if (inside) {
280
- attr.x = pointBox.x + pointBox.width - labelBox.width;
281
- } else {
282
- attr.x = pointBox.x - labelBox.width;
283
- }
284
- } else if (align === 'left') {
285
- if (inside) {
286
- attr.x = pointBox.x;
287
- } else {
288
- attr.x = pointBox.x + pointBox.width + labelBox.x;
289
- }
290
- } else { // Center
291
- attr.x = pointBox.x + pointBox.width / 2 - labelBox.width / 2;
292
- }
293
-
294
- if (verticalAlign === 'bottom') {
295
- if (inside) {
296
- attr.y = pointBox.y + pointBox.height - labelBox.height;
297
- } else {
298
- attr.y = pointBox.y - labelBox.height;
299
- }
300
- } else if (verticalAlign === 'top') {
301
- if (inside) {
302
- attr.y = pointBox.y;
303
- } else {
304
- attr.y = pointBox.y + pointBox.height;
305
- }
306
- } else { // Middle
307
- attr.y = pointBox.y + pointBox.height / 2 - labelBox.height / 2;
308
- }
309
-
310
- dataLabel[isNew ? 'attr' : 'animate'](attr);
311
- }
312
- },
313
- */
314
262
  /**
315
263
  * Draws a single point in the series. Needed for partial fill.
316
264
  *