highcharts-rails 4.2.6 → 4.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +46 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/highcharts.js +252 -171
- data/app/assets/javascripts/highcharts/highcharts-3d.js +2 -1
- data/app/assets/javascripts/highcharts/highcharts-more.js +81 -50
- data/app/assets/javascripts/highcharts/modules/boost.js +4 -0
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +1 -1
- data/app/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
- data/app/assets/javascripts/highcharts/modules/data.js +4 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +50 -51
- data/app/assets/javascripts/highcharts/modules/exporting.js +6 -5
- data/app/assets/javascripts/highcharts/modules/heatmap.js +24 -16
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +1 -1
- data/app/assets/javascripts/highcharts/modules/offline-exporting.js +1 -2
- data/app/assets/javascripts/highcharts/modules/series-label.js +519 -0
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
- data/app/assets/javascripts/highcharts/modules/treemap.js +6 -4
- data/lib/highcharts/version.rb +1 -1
- metadata +2 -1
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v4.2.
|
5
|
+
* @license Highcharts JS v4.2.7 (2016-09-21)
|
6
6
|
*
|
7
7
|
* 3D features for Highcharts JS
|
8
8
|
*
|
@@ -503,6 +503,7 @@
|
|
503
503
|
}));
|
504
504
|
};
|
505
505
|
}
|
506
|
+
animation = anim; // Only when duration (#5572)
|
506
507
|
}
|
507
508
|
return proceed.call(this, params, animation, complete);
|
508
509
|
});
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v4.2.
|
5
|
+
* @license Highcharts JS v4.2.7 (2016-09-21)
|
6
6
|
*
|
7
7
|
* (c) 2009-2016 Torstein Honsi
|
8
8
|
*
|
@@ -241,21 +241,30 @@ var arrayMin = Highcharts.arrayMin,
|
|
241
241
|
* method.
|
242
242
|
*/
|
243
243
|
getLinePath: function (lineWidth, radius) {
|
244
|
-
var center = this.center
|
245
|
-
|
244
|
+
var center = this.center,
|
245
|
+
end,
|
246
|
+
chart = this.chart,
|
247
|
+
r = pick(radius, center[2] / 2 - this.offset),
|
248
|
+
path;
|
246
249
|
|
247
|
-
|
248
|
-
this.
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
250
|
+
if (this.isCircular || radius !== undefined) {
|
251
|
+
path = this.chart.renderer.symbols.arc(
|
252
|
+
this.left + center[0],
|
253
|
+
this.top + center[1],
|
254
|
+
r,
|
255
|
+
r,
|
256
|
+
{
|
257
|
+
start: this.startAngleRad,
|
258
|
+
end: this.endAngleRad,
|
259
|
+
open: true,
|
260
|
+
innerR: 0
|
261
|
+
}
|
262
|
+
);
|
263
|
+
} else {
|
264
|
+
end = this.postTranslate(this.angleRad, r);
|
265
|
+
path = ['M', center[0] + chart.plotLeft, center[1] + chart.plotTop, 'L', end.x, end.y];
|
266
|
+
}
|
267
|
+
return path;
|
259
268
|
},
|
260
269
|
|
261
270
|
/**
|
@@ -294,6 +303,11 @@ var arrayMin = Highcharts.arrayMin,
|
|
294
303
|
* tickPositions are computed, so that ticks will extend passed the real max.
|
295
304
|
*/
|
296
305
|
beforeSetTickPositions: function () {
|
306
|
+
// If autoConnect is true, polygonal grid lines are connected, and one closestPointRange
|
307
|
+
// is added to the X axis to prevent the last point from overlapping the first.
|
308
|
+
this.autoConnect = this.isCircular && pick(this.userMax, this.options.max) === undefined &&
|
309
|
+
this.endAngleRad - this.startAngleRad === 2 * Math.PI;
|
310
|
+
|
297
311
|
if (this.autoConnect) {
|
298
312
|
this.max += (this.categories && 1) || this.pointRange || this.closestPointRange || 0; // #1197, #2260
|
299
313
|
}
|
@@ -330,7 +344,7 @@ var arrayMin = Highcharts.arrayMin,
|
|
330
344
|
*/
|
331
345
|
getPosition: function (value, length) {
|
332
346
|
return this.postTranslate(
|
333
|
-
this.isCircular ? this.translate(value) :
|
347
|
+
this.isCircular ? this.translate(value) : this.angleRad, // #2848
|
334
348
|
pick(this.isCircular ? length : this.translate(value), this.center[2] / 2) - this.offset
|
335
349
|
);
|
336
350
|
},
|
@@ -505,8 +519,6 @@ var arrayMin = Highcharts.arrayMin,
|
|
505
519
|
isX = userOptions.isX,
|
506
520
|
isHidden = angular && isX,
|
507
521
|
isCircular,
|
508
|
-
startAngleRad,
|
509
|
-
endAngleRad,
|
510
522
|
options,
|
511
523
|
chartOptions = chart.options,
|
512
524
|
paneIndex = userOptions.pane || 0,
|
@@ -555,16 +567,13 @@ var arrayMin = Highcharts.arrayMin,
|
|
555
567
|
// Start and end angle options are
|
556
568
|
// given in degrees relative to top, while internal computations are
|
557
569
|
// in radians relative to right (like SVG).
|
558
|
-
this.
|
559
|
-
this.
|
570
|
+
this.angleRad = (options.angle || 0) * Math.PI / 180; // Y axis in polar charts
|
571
|
+
this.startAngleRad = (paneOptions.startAngle - 90) * Math.PI / 180; // Gauges
|
572
|
+
this.endAngleRad = (pick(paneOptions.endAngle, paneOptions.startAngle + 360) - 90) * Math.PI / 180; // Gauges
|
560
573
|
this.offset = options.offset || 0;
|
561
574
|
|
562
575
|
this.isCircular = isCircular;
|
563
576
|
|
564
|
-
// Automatically connect grid lines?
|
565
|
-
if (isCircular && userOptions.max === UNDEFINED && endAngleRad - startAngleRad === 2 * Math.PI) {
|
566
|
-
this.autoConnect = true;
|
567
|
-
}
|
568
577
|
}
|
569
578
|
|
570
579
|
});
|
@@ -603,7 +612,7 @@ var arrayMin = Highcharts.arrayMin,
|
|
603
612
|
align = labelOptions.align,
|
604
613
|
angle = ((axis.translate(this.pos) + axis.startAngleRad + Math.PI / 2) / Math.PI * 180) % 360;
|
605
614
|
|
606
|
-
if (axis.isRadial) {
|
615
|
+
if (axis.isRadial) { // Both X and Y axes in a polar chart
|
607
616
|
ret = axis.getPosition(this.pos, (axis.center[2] / 2) + pick(labelOptions.distance, -25));
|
608
617
|
|
609
618
|
// Automatically rotated
|
@@ -619,7 +628,7 @@ var arrayMin = Highcharts.arrayMin,
|
|
619
628
|
|
620
629
|
// Automatic alignment
|
621
630
|
if (align === null) {
|
622
|
-
if (axis.isCircular) {
|
631
|
+
if (axis.isCircular) { // Y axis
|
623
632
|
if (this.label.getBBox().width > axis.len * axis.tickInterval / (axis.max - axis.min)) { // #3506
|
624
633
|
centerSlot = 0;
|
625
634
|
}
|
@@ -669,7 +678,8 @@ var arrayMin = Highcharts.arrayMin,
|
|
669
678
|
ret = proceed.call(this, x, y, tickLength, tickWidth, horiz, renderer);
|
670
679
|
}
|
671
680
|
return ret;
|
672
|
-
})
|
681
|
+
});
|
682
|
+
/*
|
673
683
|
* The AreaRangeSeries class
|
674
684
|
*
|
675
685
|
*/
|
@@ -762,13 +772,12 @@ var arrayMin = Highcharts.arrayMin,
|
|
762
772
|
* Extend the line series' getSegmentPath method by applying the segment
|
763
773
|
* path to both lower and higher values of the range
|
764
774
|
*/
|
765
|
-
getGraphPath: function () {
|
775
|
+
getGraphPath: function (points) {
|
766
776
|
|
767
|
-
var
|
768
|
-
highPoints = [],
|
777
|
+
var highPoints = [],
|
769
778
|
highAreaPoints = [],
|
770
|
-
i
|
771
|
-
getGraphPath =
|
779
|
+
i,
|
780
|
+
getGraphPath = seriesTypes.area.prototype.getGraphPath,
|
772
781
|
point,
|
773
782
|
pointShim,
|
774
783
|
linePath,
|
@@ -778,6 +787,9 @@ var arrayMin = Highcharts.arrayMin,
|
|
778
787
|
higherPath,
|
779
788
|
higherAreaPath;
|
780
789
|
|
790
|
+
points = points || this.points;
|
791
|
+
i = points.length;
|
792
|
+
|
781
793
|
// Create the top line and the top part of the area fill. The area fill compensates for
|
782
794
|
// null points by drawing down to the lower graph, moving across the null gap and
|
783
795
|
// starting again at the lower graph.
|
@@ -785,23 +797,29 @@ var arrayMin = Highcharts.arrayMin,
|
|
785
797
|
while (i--) {
|
786
798
|
point = points[i];
|
787
799
|
|
788
|
-
if (!point.isNull && (!points[i + 1] || points[i + 1].isNull)) {
|
800
|
+
if (!point.isNull && !options.connectEnds && (!points[i + 1] || points[i + 1].isNull)) {
|
789
801
|
highAreaPoints.push({
|
790
802
|
plotX: point.plotX,
|
791
|
-
plotY: point.
|
803
|
+
plotY: point.plotY,
|
804
|
+
doCurve: false // #5186, gaps in areasplinerange fill
|
792
805
|
});
|
793
806
|
}
|
807
|
+
|
794
808
|
pointShim = {
|
795
|
-
|
809
|
+
polarPlotY: point.polarPlotY,
|
810
|
+
rectPlotX: point.rectPlotX,
|
811
|
+
yBottom: point.yBottom,
|
812
|
+
plotX: pick(point.plotHighX, point.plotX), // plotHighX is for polar charts
|
796
813
|
plotY: point.plotHigh,
|
797
814
|
isNull: point.isNull
|
798
815
|
};
|
799
816
|
highAreaPoints.push(pointShim);
|
800
817
|
highPoints.push(pointShim);
|
801
|
-
if (!point.isNull && (!points[i - 1] || points[i - 1].isNull)) {
|
818
|
+
if (!point.isNull && !options.connectEnds && (!points[i - 1] || points[i - 1].isNull)) {
|
802
819
|
highAreaPoints.push({
|
803
820
|
plotX: point.plotX,
|
804
|
-
plotY: point.
|
821
|
+
plotY: point.plotY,
|
822
|
+
doCurve: false // #5186, gaps in areasplinerange fill
|
805
823
|
});
|
806
824
|
}
|
807
825
|
}
|
@@ -1602,7 +1620,14 @@ var arrayMin = Highcharts.arrayMin,
|
|
1602
1620
|
},
|
1603
1621
|
pointValKey: 'high', // defines the top of the tracker
|
1604
1622
|
doQuartiles: false,
|
1605
|
-
drawDataLabels: seriesTypes.arearange ?
|
1623
|
+
drawDataLabels: seriesTypes.arearange ? function () {
|
1624
|
+
var valKey = this.pointValKey;
|
1625
|
+
seriesTypes.arearange.prototype.drawDataLabels.call(this);
|
1626
|
+
// Arearange drawDataLabels does not reset point.y to high, but to low after drawing. #4133
|
1627
|
+
each(this.data, function (point) {
|
1628
|
+
point.y = point[valKey];
|
1629
|
+
});
|
1630
|
+
} : noop,
|
1606
1631
|
|
1607
1632
|
/**
|
1608
1633
|
* Get the width and X offset, either on top of the linked series column
|
@@ -1646,6 +1671,15 @@ var arrayMin = Highcharts.arrayMin,
|
|
1646
1671
|
|
1647
1672
|
pointValKey: 'y',
|
1648
1673
|
|
1674
|
+
/**
|
1675
|
+
* Pass the null test in ColumnSeries.translate.
|
1676
|
+
*/
|
1677
|
+
pointClass: extendClass(Point, {
|
1678
|
+
isValid: function () {
|
1679
|
+
return isNumber(this.y, true) || this.isSum || this.isIntermediateSum;
|
1680
|
+
}
|
1681
|
+
}),
|
1682
|
+
|
1649
1683
|
/**
|
1650
1684
|
* Translate data points from raw values
|
1651
1685
|
*/
|
@@ -1697,27 +1731,25 @@ var arrayMin = Highcharts.arrayMin,
|
|
1697
1731
|
}
|
1698
1732
|
// up points
|
1699
1733
|
y = mathMax(previousY, previousY + point.y) + range[0];
|
1700
|
-
shapeArgs.y = yAxis.
|
1734
|
+
shapeArgs.y = yAxis.toPixels(y, true);
|
1701
1735
|
|
1702
1736
|
|
1703
1737
|
// sum points
|
1704
1738
|
if (point.isSum) {
|
1705
|
-
shapeArgs.y = yAxis.
|
1706
|
-
shapeArgs.height = Math.min(yAxis.
|
1739
|
+
shapeArgs.y = yAxis.toPixels(range[1], true);
|
1740
|
+
shapeArgs.height = Math.min(yAxis.toPixels(range[0], true), yAxis.len) - shapeArgs.y + series.minPointLengthOffset; // #4256
|
1707
1741
|
|
1708
1742
|
} else if (point.isIntermediateSum) {
|
1709
|
-
shapeArgs.y = yAxis.
|
1710
|
-
shapeArgs.height = Math.min(yAxis.
|
1743
|
+
shapeArgs.y = yAxis.toPixels(range[1], true);
|
1744
|
+
shapeArgs.height = Math.min(yAxis.toPixels(previousIntermediate, true), yAxis.len) - shapeArgs.y + series.minPointLengthOffset;
|
1711
1745
|
previousIntermediate = range[1];
|
1712
1746
|
|
1713
1747
|
// If it's not the sum point, update previous stack end position and get
|
1714
1748
|
// shape height (#3886)
|
1715
1749
|
} else {
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
yAxis.translate(previousY, 0, 1) - yAxis.translate(previousY - yValue, 0, 1);
|
1720
|
-
}
|
1750
|
+
shapeArgs.height = yValue > 0 ?
|
1751
|
+
yAxis.toPixels(previousY, true) - shapeArgs.y :
|
1752
|
+
yAxis.toPixels(previousY, true) - yAxis.toPixels(previousY - yValue, true);
|
1721
1753
|
previousY += yValue;
|
1722
1754
|
}
|
1723
1755
|
// #3952 Negative sum or intermediate sum not rendered correctly
|
@@ -1919,11 +1951,10 @@ var arrayMin = Highcharts.arrayMin,
|
|
1919
1951
|
|
1920
1952
|
// Close all segments
|
1921
1953
|
while (i--) {
|
1922
|
-
if (i === graphPath.length ||
|
1954
|
+
if ((i === graphPath.length || graphPath[i] === 'M') && i > 0) {
|
1923
1955
|
graphPath.splice(i, 0, 'z');
|
1924
1956
|
}
|
1925
1957
|
}
|
1926
|
-
|
1927
1958
|
this.areaPath = graphPath;
|
1928
1959
|
return graphPath;
|
1929
1960
|
},
|
@@ -2908,7 +2908,7 @@ if (CanvasRenderingContext2D) {
|
|
2908
2908
|
});
|
2909
2909
|
}
|
2910
2910
|
}/**
|
2911
|
-
* @license Highcharts JS v4.2.
|
2911
|
+
* @license Highcharts JS v4.2.7 (2016-09-21)
|
2912
2912
|
* CanVGRenderer Extension module
|
2913
2913
|
*
|
2914
2914
|
* (c) 2011-2016 Torstein Honsi, Erik Olsson
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v4.2.
|
2
|
+
* @license Highcharts JS v4.2.7 (2016-09-21)
|
3
3
|
* Data module
|
4
4
|
*
|
5
5
|
* (c) 2012-2016 Torstein Honsi
|
@@ -766,6 +766,9 @@
|
|
766
766
|
chartOptions.xAxis = {
|
767
767
|
type: type
|
768
768
|
};
|
769
|
+
if (type === 'category') {
|
770
|
+
chartOptions.xAxis.nameToX = false;
|
771
|
+
}
|
769
772
|
}
|
770
773
|
|
771
774
|
if (options.complete) {
|
@@ -84,7 +84,6 @@
|
|
84
84
|
},
|
85
85
|
activeDataLabelStyle: {
|
86
86
|
cursor: 'pointer',
|
87
|
-
color: '#0d233a',
|
88
87
|
fontWeight: 'bold',
|
89
88
|
textDecoration: 'underline'
|
90
89
|
},
|
@@ -179,7 +178,7 @@
|
|
179
178
|
levelSeries: levelSeries,
|
180
179
|
shapeArgs: point.shapeArgs,
|
181
180
|
bBox: point.graphic ? point.graphic.getBBox() : {}, // no graphic in line series with markers disabled
|
182
|
-
color: color,
|
181
|
+
color: point.isNull ? new Highcharts.Color(color).setOpacity(0).get() : color,
|
183
182
|
lowerSeriesOptions: ddOptions,
|
184
183
|
pointOptions: oldSeries.options.data[pointIndex],
|
185
184
|
pointIndex: pointIndex,
|
@@ -514,15 +513,17 @@
|
|
514
513
|
|
515
514
|
if (!init) {
|
516
515
|
each(this.points, function (point, i) {
|
517
|
-
point.graphic
|
518
|
-
.
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
516
|
+
if (point.graphic) {
|
517
|
+
point.graphic
|
518
|
+
.attr(H.merge(animateFrom, {
|
519
|
+
start: start + i * startAngle,
|
520
|
+
end: start + (i + 1) * startAngle,
|
521
|
+
fill: level.color
|
522
|
+
}))[animationOptions ? 'animate' : 'attr'](
|
523
|
+
extend(point.shapeArgs, { fill: point.color }),
|
524
|
+
animationOptions
|
525
|
+
);
|
526
|
+
}
|
526
527
|
});
|
527
528
|
this.animate = null;
|
528
529
|
}
|
@@ -555,7 +556,7 @@
|
|
555
556
|
seriesOptions: seriesOptions,
|
556
557
|
category: category,
|
557
558
|
originalEvent: originalEvent,
|
558
|
-
points: category !== undefined && this.series.xAxis.
|
559
|
+
points: category !== undefined && this.series.xAxis.getDDPoints(category).slice(0)
|
559
560
|
}, function (e) {
|
560
561
|
var chart = e.point.series && e.point.series.chart,
|
561
562
|
seriesOptions = e.seriesOptions;
|
@@ -577,7 +578,7 @@
|
|
577
578
|
H.Axis.prototype.drilldownCategory = function (x, e) {
|
578
579
|
var key,
|
579
580
|
point,
|
580
|
-
ddPointsX = this.
|
581
|
+
ddPointsX = this.getDDPoints(x);
|
581
582
|
for (key in ddPointsX) {
|
582
583
|
point = ddPointsX[key];
|
583
584
|
if (point && point.series && point.series.visible && point.doDrilldown) { // #3197
|
@@ -588,20 +589,23 @@
|
|
588
589
|
};
|
589
590
|
|
590
591
|
/**
|
591
|
-
*
|
592
|
-
*/
|
593
|
-
H.Axis.prototype.getDDPoints = function (x
|
594
|
-
var
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
592
|
+
* Return drillable points for this specific X value
|
593
|
+
*/
|
594
|
+
H.Axis.prototype.getDDPoints = function (x) {
|
595
|
+
var ret = [];
|
596
|
+
each(this.series, function (series) {
|
597
|
+
var i,
|
598
|
+
xData = series.xData,
|
599
|
+
points = series.points;
|
600
|
+
|
601
|
+
for (i = 0; i < xData.length; i++) {
|
602
|
+
if (xData[i] === x && series.options.data[i].drilldown) {
|
603
|
+
ret.push(points ? points[i] : true);
|
604
|
+
break;
|
605
|
+
}
|
606
|
+
}
|
607
|
+
});
|
608
|
+
return ret;
|
605
609
|
};
|
606
610
|
|
607
611
|
|
@@ -612,23 +616,26 @@
|
|
612
616
|
var pos = this.pos,
|
613
617
|
label = this.label,
|
614
618
|
axis = this.axis,
|
615
|
-
|
619
|
+
isDrillable = axis.coll === 'xAxis' && axis.getDDPoints,
|
620
|
+
ddPointsX = isDrillable && axis.getDDPoints(pos);
|
616
621
|
|
617
|
-
if (
|
618
|
-
if (
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
622
|
+
if (isDrillable) {
|
623
|
+
if (label && ddPointsX.length) {
|
624
|
+
if (!label.basicStyles) {
|
625
|
+
label.basicStyles = H.merge(label.styles);
|
626
|
+
}
|
627
|
+
label
|
628
|
+
.addClass('highcharts-drilldown-axis-label')
|
629
|
+
.css(axis.chart.options.drilldown.activeAxisLabelStyle)
|
630
|
+
.on('click', function (e) {
|
631
|
+
axis.drilldownCategory(pos, e);
|
632
|
+
});
|
627
633
|
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
634
|
+
} else if (label && label.basicStyles) {
|
635
|
+
label.styles = {}; // reset for full overwrite of styles
|
636
|
+
label.css(label.basicStyles);
|
637
|
+
label.on('click', null); // #3806
|
638
|
+
}
|
632
639
|
}
|
633
640
|
};
|
634
641
|
|
@@ -648,8 +655,7 @@
|
|
648
655
|
wrap(H.Point.prototype, 'init', function (proceed, series, options, x) {
|
649
656
|
var point = proceed.call(this, series, options, x),
|
650
657
|
xAxis = series.xAxis,
|
651
|
-
tick = xAxis && xAxis.ticks[x]
|
652
|
-
ddPointsX = xAxis && xAxis.getDDPoints(x, series.options._levelNumber);
|
658
|
+
tick = xAxis && xAxis.ticks[x];
|
653
659
|
|
654
660
|
if (point.drilldown) {
|
655
661
|
|
@@ -670,13 +676,6 @@
|
|
670
676
|
}
|
671
677
|
});*/
|
672
678
|
|
673
|
-
|
674
|
-
// Register drilldown points on this X value
|
675
|
-
if (ddPointsX) {
|
676
|
-
ddPointsX.push(point);
|
677
|
-
ddPointsX.levelNumber = series.options._levelNumber;
|
678
|
-
}
|
679
|
-
|
680
679
|
}
|
681
680
|
|
682
681
|
// Add or remove click handler and style on the tick label
|