highcharts-rails 4.1.6 → 4.1.7
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.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +27 -0
- data/app/assets/javascripts/highcharts.js +129 -70
- data/app/assets/javascripts/highcharts/adapters/standalone-framework.js +1 -1
- data/app/assets/javascripts/highcharts/highcharts-3d.js +34 -29
- data/app/assets/javascripts/highcharts/highcharts-more.js +45 -44
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +28 -23
- data/app/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
- data/app/assets/javascripts/highcharts/modules/data.js +1 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +5 -1
- data/app/assets/javascripts/highcharts/modules/exporting.js +3 -2
- data/app/assets/javascripts/highcharts/modules/funnel.js +7 -2
- data/app/assets/javascripts/highcharts/modules/heatmap.js +1 -1
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +14 -2
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +5 -3
- data/app/assets/javascripts/highcharts/modules/treemap.js +154 -112
- data/lib/highcharts/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4a6a629f316d30ec0202c1d30132ca75b330e5c
|
4
|
+
data.tar.gz: b4159b1bce4ad88d4338a7743b8d659747cddf70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ccdfb6d73da784b1e673e9a6ee7de7fa967cb6320a5926ea682f5d3a84dbd84f77cf764ac3c87886bb9a31ed44fd06d2a1b83f5b0b7b5b2a57c7ec41a9ef36c
|
7
|
+
data.tar.gz: 86f0408ebf477bcdbd8b921b51e18e53ebe8abbdba1da92aa1ac2dd425e7f2082c4909929aa3a5214f06392bff582cbebcf46480dd2c299d9e82a929d2a356a5
|
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
# 4.1.7 / 2015-08-31
|
2
|
+
|
3
|
+
* Updated Highcharts to 4.1.7 (2015-06-26)
|
4
|
+
* Added new option, drilldown.allowPointDrilldown, that can be set to false to allow only drilling to categories. Closes #4295.
|
5
|
+
* Added support for useHTML in legend navigation.
|
6
|
+
* Added useHTML option to no-data-to-display module. Closes #4316.
|
7
|
+
* Fixed #2911, JS error when drilldown and allowPointSelect were enabled at the same time.
|
8
|
+
* Fixed #3318, gauge background altered background on polar charts in the same page.
|
9
|
+
* Fixed #3650, updating a point from zero in 3d pies.
|
10
|
+
* Fixed #3709, crash when showing/hiding linked series and setting data at the same time.
|
11
|
+
* Fixed #3941, added option to turn off axis label ellipsis through text-overflow style.
|
12
|
+
* Fixed #4130, errors when running Series.update from the series' own events.
|
13
|
+
* Fixed #4170, halo was still visible after hiding pie slice.
|
14
|
+
* Fixed #4233, columns and areas ascended from botton when threshold was null and all values negative. Closed #4282.
|
15
|
+
* Fixed #4275, when null points were present inside an axis break, connectNulls: false did not have an effect.
|
16
|
+
* Fixed #4280, 3D for inverted charts was disabled.
|
17
|
+
* Fixed #4284, a regression causing columns to disappear after Point.update with an object argument.
|
18
|
+
* Fixed #4291, number suffixes like k and M was applied to non-round tick labels.
|
19
|
+
* Fixed #4301, point update on solid gauge gave wrong animation.
|
20
|
+
* Fixed #4308, graphs were clipped to axis line even when it was offset.
|
21
|
+
* Fixed #4309, JS error in Firefox when rendering chart inside an iframe with display:none.
|
22
|
+
* Fixed #4310, point hovering was unstable when stickyTracking was false and point markers disabled in normal state.
|
23
|
+
* Fixed #4318, ignoreHiddenPoint didn't take effect for funnels.
|
24
|
+
* Fixed #4319, tooltip was broken on canvas heatmap demo.
|
25
|
+
* Fixed bad translation from broken axis pixels to values. Part of #4229.
|
26
|
+
* Fixed issue with Batik powered exporting and IE8. Invalid SVG tag.
|
27
|
+
|
1
28
|
# 4.1.6 / 2015-08-31
|
2
29
|
|
3
30
|
* Updated Highcharts to 4.1.6 (2015-06-12)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v4.1.
|
5
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
6
6
|
*
|
7
7
|
* (c) 2009-2014 Torstein Honsi
|
8
8
|
*
|
@@ -56,7 +56,7 @@ var UNDEFINED,
|
|
56
56
|
charts = [],
|
57
57
|
chartCount = 0,
|
58
58
|
PRODUCT = 'Highcharts',
|
59
|
-
VERSION = '4.1.
|
59
|
+
VERSION = '4.1.7',
|
60
60
|
|
61
61
|
// some constants for frequently used strings
|
62
62
|
DIV = 'div',
|
@@ -1268,8 +1268,8 @@ defaultOptions = {
|
|
1268
1268
|
global: {
|
1269
1269
|
useUTC: true,
|
1270
1270
|
//timezoneOffset: 0,
|
1271
|
-
canvasToolsURL: 'http://code.highcharts.com/4.1.
|
1272
|
-
VMLRadialGradientURL: 'http://code.highcharts.com/4.1.
|
1271
|
+
canvasToolsURL: 'http://code.highcharts.com/4.1.7/modules/canvas-tools.js',
|
1272
|
+
VMLRadialGradientURL: 'http://code.highcharts.com/4.1.7/gfx/vml-radial-gradient.png'
|
1273
1273
|
},
|
1274
1274
|
chart: {
|
1275
1275
|
//animation: true,
|
@@ -2843,7 +2843,11 @@ SVGElement.prototype = {
|
|
2843
2843
|
titleNode = doc.createElementNS(SVG_NS, 'title');
|
2844
2844
|
this.element.appendChild(titleNode);
|
2845
2845
|
}
|
2846
|
-
titleNode.
|
2846
|
+
titleNode.appendChild(
|
2847
|
+
doc.createTextNode(
|
2848
|
+
(String(pick(value), '')).replace(/<[^>]*>/g, '') // #3276, #3895
|
2849
|
+
)
|
2850
|
+
);
|
2847
2851
|
},
|
2848
2852
|
textSetter: function (value) {
|
2849
2853
|
if (value !== this.textStr) {
|
@@ -4035,17 +4039,22 @@ SVGRenderer.prototype = {
|
|
4035
4039
|
* Utility to return the baseline offset and total line height from the font size
|
4036
4040
|
*/
|
4037
4041
|
fontMetrics: function (fontSize, elem) {
|
4042
|
+
var lineHeight,
|
4043
|
+
baseline,
|
4044
|
+
style;
|
4045
|
+
|
4038
4046
|
fontSize = fontSize || this.style.fontSize;
|
4039
4047
|
if (elem && win.getComputedStyle) {
|
4040
4048
|
elem = elem.element || elem; // SVGElement
|
4041
|
-
|
4049
|
+
style = win.getComputedStyle(elem, "");
|
4050
|
+
fontSize = style && style.fontSize; // #4309, the style doesn't exist inside a hidden iframe in Firefox
|
4042
4051
|
}
|
4043
4052
|
fontSize = /px/.test(fontSize) ? pInt(fontSize) : /em/.test(fontSize) ? parseFloat(fontSize) * 12 : 12;
|
4044
4053
|
|
4045
4054
|
// Empirical values found by comparing font size and bounding box height.
|
4046
4055
|
// Applies to the default font family. http://jsfiddle.net/highcharts/7xvn7/
|
4047
|
-
|
4048
|
-
|
4056
|
+
lineHeight = fontSize < 24 ? fontSize + 3 : mathRound(fontSize * 1.2);
|
4057
|
+
baseline = mathRound(lineHeight * 0.8);
|
4049
4058
|
|
4050
4059
|
return {
|
4051
4060
|
h: lineHeight,
|
@@ -4599,13 +4608,16 @@ extend(SVGRenderer.prototype, {
|
|
4599
4608
|
|
4600
4609
|
// Ensure dynamically updating position when any parent is translated
|
4601
4610
|
each(parents.reverse(), function (parentGroup) {
|
4602
|
-
var htmlGroupStyle
|
4611
|
+
var htmlGroupStyle,
|
4612
|
+
cls = attr(parentGroup.element, 'class');
|
4613
|
+
|
4614
|
+
if (cls) {
|
4615
|
+
cls = { className: cls };
|
4616
|
+
} // else null
|
4603
4617
|
|
4604
4618
|
// Create a HTML div and append it to the parent div to emulate
|
4605
4619
|
// the SVG group structure
|
4606
|
-
htmlGroup = parentGroup.div = parentGroup.div || createElement(DIV, {
|
4607
|
-
className: attr(parentGroup.element, 'class')
|
4608
|
-
}, {
|
4620
|
+
htmlGroup = parentGroup.div = parentGroup.div || createElement(DIV, cls, {
|
4609
4621
|
position: ABSOLUTE,
|
4610
4622
|
left: (parentGroup.translateX || 0) + PX,
|
4611
4623
|
top: (parentGroup.translateY || 0) + PX
|
@@ -5892,8 +5904,8 @@ Tick.prototype = {
|
|
5892
5904
|
pxPos = xy.x,
|
5893
5905
|
chartWidth = axis.chart.chartWidth,
|
5894
5906
|
spacing = axis.chart.spacing,
|
5895
|
-
leftBound = pick(axis.labelLeft, spacing[3]),
|
5896
|
-
rightBound = pick(axis.labelRight, chartWidth - spacing[1]),
|
5907
|
+
leftBound = pick(axis.labelLeft, mathMin(axis.pos, spacing[3])),
|
5908
|
+
rightBound = pick(axis.labelRight, mathMax(axis.pos + axis.len, chartWidth - spacing[1])),
|
5897
5909
|
label = this.label,
|
5898
5910
|
rotation = this.rotation,
|
5899
5911
|
factor = { left: 0, center: 0.5, right: 1 }[axis.labelAlign],
|
@@ -5903,7 +5915,8 @@ Tick.prototype = {
|
|
5903
5915
|
goRight = 1,
|
5904
5916
|
leftPos,
|
5905
5917
|
rightPos,
|
5906
|
-
textWidth
|
5918
|
+
textWidth,
|
5919
|
+
css = {};
|
5907
5920
|
|
5908
5921
|
// Check if the label overshoots the chart spacing box. If it does, move it.
|
5909
5922
|
// If it now overshoots the slotWidth, add ellipsis.
|
@@ -5937,10 +5950,11 @@ Tick.prototype = {
|
|
5937
5950
|
}
|
5938
5951
|
|
5939
5952
|
if (textWidth) {
|
5940
|
-
|
5941
|
-
|
5942
|
-
textOverflow
|
5943
|
-
}
|
5953
|
+
css.width = textWidth;
|
5954
|
+
if (!axis.options.labels.style.textOverflow) {
|
5955
|
+
css.textOverflow = 'ellipsis';
|
5956
|
+
}
|
5957
|
+
label.css(css);
|
5944
5958
|
}
|
5945
5959
|
},
|
5946
5960
|
|
@@ -6818,7 +6832,7 @@ Axis.prototype = {
|
|
6818
6832
|
// logic to the numberFormatter and enable it by a parameter.
|
6819
6833
|
while (i-- && ret === UNDEFINED) {
|
6820
6834
|
multi = Math.pow(1000, i + 1);
|
6821
|
-
if (numericSymbolDetector >= multi && numericSymbols[i] !== null) {
|
6835
|
+
if (numericSymbolDetector >= multi && (value * 10) % multi === 0 && numericSymbols[i] !== null) {
|
6822
6836
|
ret = Highcharts.numberFormat(value / multi, -1) + numericSymbols[i];
|
6823
6837
|
}
|
6824
6838
|
}
|
@@ -6826,7 +6840,7 @@ Axis.prototype = {
|
|
6826
6840
|
|
6827
6841
|
if (ret === UNDEFINED) {
|
6828
6842
|
if (mathAbs(value) >= 10000) { // add thousands separators
|
6829
|
-
ret = Highcharts.numberFormat(value,
|
6843
|
+
ret = Highcharts.numberFormat(value, -1);
|
6830
6844
|
|
6831
6845
|
} else { // small numbers
|
6832
6846
|
ret = Highcharts.numberFormat(value, -1, UNDEFINED, ''); // #2466
|
@@ -7841,12 +7855,15 @@ Axis.prototype = {
|
|
7841
7855
|
*/
|
7842
7856
|
getThreshold: function (threshold) {
|
7843
7857
|
var axis = this,
|
7844
|
-
isLog = axis.isLog
|
7845
|
-
|
7846
|
-
var realMin = isLog ? lin2log(axis.min) : axis.min,
|
7858
|
+
isLog = axis.isLog,
|
7859
|
+
realMin = isLog ? lin2log(axis.min) : axis.min,
|
7847
7860
|
realMax = isLog ? lin2log(axis.max) : axis.max;
|
7848
7861
|
|
7849
|
-
|
7862
|
+
// With a threshold of null, make the columns/areas rise from the top or bottom
|
7863
|
+
// depending on the value, assuming an actual threshold of 0 (#4233).
|
7864
|
+
if (threshold === null) {
|
7865
|
+
threshold = realMax < 0 ? realMax : realMin;
|
7866
|
+
} else if (realMin > threshold) {
|
7850
7867
|
threshold = realMin;
|
7851
7868
|
} else if (realMax < threshold) {
|
7852
7869
|
threshold = realMax;
|
@@ -7951,6 +7968,7 @@ Axis.prototype = {
|
|
7951
7968
|
innerWidth = mathMax(1, mathRound(slotWidth - 2 * (labelOptions.padding || 5))),
|
7952
7969
|
attr = {},
|
7953
7970
|
labelMetrics = renderer.fontMetrics(labelOptions.style.fontSize, ticks[0] && ticks[0].label),
|
7971
|
+
textOverflowOption = labelOptions.style.textOverflow,
|
7954
7972
|
css,
|
7955
7973
|
labelLength = 0,
|
7956
7974
|
label,
|
@@ -7984,20 +8002,24 @@ Axis.prototype = {
|
|
7984
8002
|
// Handle word-wrap or ellipsis on vertical axis
|
7985
8003
|
} else if (slotWidth) {
|
7986
8004
|
// For word-wrap or ellipsis
|
7987
|
-
css = { width: innerWidth + PX
|
7988
|
-
|
7989
|
-
|
7990
|
-
|
7991
|
-
|
7992
|
-
|
7993
|
-
|
7994
|
-
|
7995
|
-
|
7996
|
-
|
7997
|
-
|
7998
|
-
|
7999
|
-
|
8000
|
-
|
8005
|
+
css = { width: innerWidth + PX };
|
8006
|
+
|
8007
|
+
if (!textOverflowOption) {
|
8008
|
+
css.textOverflow = 'clip';
|
8009
|
+
|
8010
|
+
// On vertical axis, only allow word wrap if there is room for more lines.
|
8011
|
+
i = tickPositions.length;
|
8012
|
+
while (!horiz && i--) {
|
8013
|
+
pos = tickPositions[i];
|
8014
|
+
label = ticks[pos].label;
|
8015
|
+
if (label) {
|
8016
|
+
// Reset ellipsis in order to get the correct bounding box (#4070)
|
8017
|
+
if (label.styles.textOverflow === 'ellipsis') {
|
8018
|
+
label.css({ textOverflow: 'clip' });
|
8019
|
+
}
|
8020
|
+
if (label.getBBox().height > this.len / tickPositions.length - (labelMetrics.h - labelMetrics.f)) {
|
8021
|
+
label.specCss = { textOverflow: 'ellipsis' };
|
8022
|
+
}
|
8001
8023
|
}
|
8002
8024
|
}
|
8003
8025
|
}
|
@@ -8007,9 +8029,11 @@ Axis.prototype = {
|
|
8007
8029
|
// Add ellipsis if the label length is significantly longer than ideal
|
8008
8030
|
if (attr.rotation) {
|
8009
8031
|
css = {
|
8010
|
-
width: (labelLength > chart.chartHeight * 0.5 ? chart.chartHeight * 0.33 : chart.chartHeight) + PX
|
8011
|
-
textOverflow: 'ellipsis'
|
8032
|
+
width: (labelLength > chart.chartHeight * 0.5 ? chart.chartHeight * 0.33 : chart.chartHeight) + PX
|
8012
8033
|
};
|
8034
|
+
if (!textOverflowOption) {
|
8035
|
+
css.textOverflow = 'ellipsis';
|
8036
|
+
}
|
8013
8037
|
}
|
8014
8038
|
|
8015
8039
|
// Set the explicit or automatic label alignment
|
@@ -8033,6 +8057,13 @@ Axis.prototype = {
|
|
8033
8057
|
this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side === 2);
|
8034
8058
|
},
|
8035
8059
|
|
8060
|
+
/**
|
8061
|
+
* Return true if the axis has associated data
|
8062
|
+
*/
|
8063
|
+
hasData: function () {
|
8064
|
+
return this.hasVisibleSeries || (defined(this.min) && defined(this.max) && !!this.tickPositions);
|
8065
|
+
},
|
8066
|
+
|
8036
8067
|
/**
|
8037
8068
|
* Render the tick labels to a preliminary position to get their sizes
|
8038
8069
|
*/
|
@@ -8057,12 +8088,13 @@ Axis.prototype = {
|
|
8057
8088
|
labelOffsetPadded,
|
8058
8089
|
axisOffset = chart.axisOffset,
|
8059
8090
|
clipOffset = chart.clipOffset,
|
8091
|
+
clip,
|
8060
8092
|
directionFactor = [-1, 1, 1, -1][side],
|
8061
8093
|
n,
|
8062
8094
|
lineHeightCorrection;
|
8063
8095
|
|
8064
8096
|
// For reuse in Axis.render
|
8065
|
-
|
8097
|
+
hasData = axis.hasData();
|
8066
8098
|
axis.showAxis = showAxis = hasData || pick(options.showEmpty, true);
|
8067
8099
|
|
8068
8100
|
// Set/reset staggerLines
|
@@ -8165,7 +8197,13 @@ Axis.prototype = {
|
|
8165
8197
|
axis.axisTitleMargin + titleOffset + directionFactor * axis.offset,
|
8166
8198
|
labelOffsetPadded // #3027
|
8167
8199
|
);
|
8168
|
-
|
8200
|
+
|
8201
|
+
// Decide the clipping needed to keep the graph inside the plot area and axis lines
|
8202
|
+
clip = mathFloor(options.lineWidth / 2) * 2;
|
8203
|
+
if (options.offset) {
|
8204
|
+
clip = mathMax(0, clip - options.offset);
|
8205
|
+
}
|
8206
|
+
clipOffset[invertedSide] = mathMax(clipOffset[invertedSide], clip);
|
8169
8207
|
},
|
8170
8208
|
|
8171
8209
|
/**
|
@@ -8264,7 +8302,6 @@ Axis.prototype = {
|
|
8264
8302
|
linePath,
|
8265
8303
|
hasRendered = chart.hasRendered,
|
8266
8304
|
slideInTicks = hasRendered && defined(axis.oldMin) && !isNaN(axis.oldMin),
|
8267
|
-
hasData = axis.hasData,
|
8268
8305
|
showAxis = axis.showAxis,
|
8269
8306
|
from,
|
8270
8307
|
to;
|
@@ -8283,7 +8320,7 @@ Axis.prototype = {
|
|
8283
8320
|
});
|
8284
8321
|
|
8285
8322
|
// If the series has data draw the ticks. Else only the line and title
|
8286
|
-
if (hasData || isLinked) {
|
8323
|
+
if (axis.hasData() || isLinked) {
|
8287
8324
|
|
8288
8325
|
// minor ticks
|
8289
8326
|
if (axis.minorTickInterval && !axis.categories) {
|
@@ -10966,8 +11003,20 @@ Legend.prototype = {
|
|
10966
11003
|
arrowSize = navOptions.arrowSize || 12,
|
10967
11004
|
nav = this.nav,
|
10968
11005
|
pages = this.pages,
|
11006
|
+
padding = this.padding,
|
10969
11007
|
lastY,
|
10970
|
-
allItems = this.allItems
|
11008
|
+
allItems = this.allItems,
|
11009
|
+
clipToHeight = function (height) {
|
11010
|
+
clipRect.attr({
|
11011
|
+
height: height
|
11012
|
+
});
|
11013
|
+
|
11014
|
+
// useHTML
|
11015
|
+
if (legend.contentGroup.div) {
|
11016
|
+
legend.contentGroup.div.style.clip = 'rect(' + padding + 'px,9999px,' + (padding + height) + 'px,0)';
|
11017
|
+
}
|
11018
|
+
};
|
11019
|
+
|
10971
11020
|
|
10972
11021
|
// Adjust the height
|
10973
11022
|
if (options.layout === 'horizontal') {
|
@@ -10979,9 +11028,9 @@ Legend.prototype = {
|
|
10979
11028
|
|
10980
11029
|
// Reset the legend height and adjust the clipping rectangle
|
10981
11030
|
pages.length = 0;
|
10982
|
-
if (legendHeight > spaceHeight
|
11031
|
+
if (legendHeight > spaceHeight) {
|
10983
11032
|
|
10984
|
-
this.clipHeight = clipHeight = mathMax(spaceHeight - 20 - this.titleHeight -
|
11033
|
+
this.clipHeight = clipHeight = mathMax(spaceHeight - 20 - this.titleHeight - padding, 0);
|
10985
11034
|
this.currentPage = pick(this.currentPage, 1);
|
10986
11035
|
this.fullHeight = legendHeight;
|
10987
11036
|
|
@@ -11007,13 +11056,12 @@ Legend.prototype = {
|
|
11007
11056
|
|
11008
11057
|
// Only apply clipping if needed. Clipping causes blurred legend in PDF export (#1787)
|
11009
11058
|
if (!clipRect) {
|
11010
|
-
clipRect = legend.clipRect = renderer.clipRect(0,
|
11059
|
+
clipRect = legend.clipRect = renderer.clipRect(0, padding, 9999, 0);
|
11011
11060
|
legend.contentGroup.clip(clipRect);
|
11012
11061
|
}
|
11013
|
-
|
11014
|
-
|
11015
|
-
|
11016
|
-
|
11062
|
+
|
11063
|
+
clipToHeight(clipHeight);
|
11064
|
+
|
11017
11065
|
// Add navigation elements
|
11018
11066
|
if (!nav) {
|
11019
11067
|
this.nav = nav = renderer.g().attr({ zIndex: 1 }).add(this.group);
|
@@ -11038,9 +11086,7 @@ Legend.prototype = {
|
|
11038
11086
|
legendHeight = spaceHeight;
|
11039
11087
|
|
11040
11088
|
} else if (nav) {
|
11041
|
-
|
11042
|
-
height: chart.chartHeight
|
11043
|
-
});
|
11089
|
+
clipToHeight(chart.chartHeight);
|
11044
11090
|
nav.hide();
|
11045
11091
|
this.scrollGroup.attr({
|
11046
11092
|
translateY: 1
|
@@ -12911,7 +12957,9 @@ Point.prototype = {
|
|
12911
12957
|
if (eventType === 'click' && seriesOptions.allowPointSelect) {
|
12912
12958
|
defaultFunction = function (event) {
|
12913
12959
|
// Control key is for Windows, meta (= Cmd key) for Mac, Shift for Opera
|
12914
|
-
point.select
|
12960
|
+
if (point.select) { // Could be destroyed by prior event handlers (#2911)
|
12961
|
+
point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);
|
12962
|
+
}
|
12915
12963
|
};
|
12916
12964
|
}
|
12917
12965
|
|
@@ -13299,7 +13347,9 @@ Series.prototype = {
|
|
13299
13347
|
// cheaper, allows animation, and keeps references to points.
|
13300
13348
|
if (updatePoints !== false && dataLength && oldDataLength === dataLength && !series.cropped && !series.hasGroupedData && series.visible) {
|
13301
13349
|
each(data, function (point, i) {
|
13302
|
-
oldData[i].update
|
13350
|
+
if (oldData[i].update) { // Linked, previously hidden series (#3709)
|
13351
|
+
oldData[i].update(point, false, null, false);
|
13352
|
+
}
|
13303
13353
|
});
|
13304
13354
|
|
13305
13355
|
} else {
|
@@ -15260,7 +15310,7 @@ extend(Point.prototype, {
|
|
15260
15310
|
if (options && options.marker && options.marker.symbol) {
|
15261
15311
|
point.graphic = graphic.destroy();
|
15262
15312
|
} else {
|
15263
|
-
graphic.attr(point.pointAttr[point.state || ''])[point.visible ? '
|
15313
|
+
graphic.attr(point.pointAttr[point.state || ''])[point.visible === false ? 'hide' : 'show'](); // #2430
|
15264
15314
|
}
|
15265
15315
|
}
|
15266
15316
|
if (options && options.dataLabels && point.dataLabel) { // #2468
|
@@ -15561,7 +15611,7 @@ extend(Axis.prototype, {
|
|
15561
15611
|
newOptions = chart.options[this.coll][this.options.index] = merge(this.userOptions, newOptions);
|
15562
15612
|
|
15563
15613
|
this.destroy(true);
|
15564
|
-
this._addedPlotLB = UNDEFINED; // #1611, #2887
|
15614
|
+
this._addedPlotLB = this.chart._labelPanes = UNDEFINED; // #1611, #2887, #4314
|
15565
15615
|
|
15566
15616
|
this.init(chart, extend(newOptions, { events: UNDEFINED }));
|
15567
15617
|
|
@@ -16491,6 +16541,11 @@ var PiePoint = extendClass(Point, {
|
|
16491
16541
|
if (point.legendItem) {
|
16492
16542
|
chart.legend.colorizeItem(point, vis);
|
16493
16543
|
}
|
16544
|
+
|
16545
|
+
// #4170, hide halo after hiding point
|
16546
|
+
if (!vis && point.state === 'hover') {
|
16547
|
+
point.setState('');
|
16548
|
+
}
|
16494
16549
|
|
16495
16550
|
// Handle ignore hidden slices
|
16496
16551
|
if (ignoreHiddenPoint) {
|
@@ -17625,7 +17680,7 @@ if (seriesTypes.column) {
|
|
17625
17680
|
|
17626
17681
|
|
17627
17682
|
/**
|
17628
|
-
* Highcharts JS v4.1.
|
17683
|
+
* Highcharts JS v4.1.7 (2015-06-26)
|
17629
17684
|
* Highcharts module to hide overlapping data labels. This module is included by default in Highmaps.
|
17630
17685
|
*
|
17631
17686
|
* (c) 2010-2014 Torstein Honsi
|
@@ -18149,17 +18204,20 @@ extend(Point.prototype, {
|
|
18149
18204
|
hoverPoint.onMouseOut();
|
18150
18205
|
}
|
18151
18206
|
|
18152
|
-
//
|
18153
|
-
point.firePointEvent('mouseOver');
|
18207
|
+
if (point.series) { // It may have been destroyed, #4130
|
18154
18208
|
|
18155
|
-
|
18156
|
-
|
18157
|
-
tooltip.refresh(point, e);
|
18158
|
-
}
|
18209
|
+
// trigger the event
|
18210
|
+
point.firePointEvent('mouseOver');
|
18159
18211
|
|
18160
|
-
|
18161
|
-
|
18162
|
-
|
18212
|
+
// update the tooltip
|
18213
|
+
if (tooltip && (!tooltip.shared || series.noSharedTooltip)) {
|
18214
|
+
tooltip.refresh(point, e);
|
18215
|
+
}
|
18216
|
+
|
18217
|
+
// hover this
|
18218
|
+
point.setState(HOVER_STATE);
|
18219
|
+
chart.hoverPoint = point;
|
18220
|
+
}
|
18163
18221
|
},
|
18164
18222
|
|
18165
18223
|
/**
|
@@ -18296,6 +18354,7 @@ extend(Point.prototype, {
|
|
18296
18354
|
|
18297
18355
|
if (stateMarkerGraphic) {
|
18298
18356
|
stateMarkerGraphic[state && chart.isInsidePlot(plotX, plotY, chart.inverted) ? 'show' : 'hide'](); // #2450
|
18357
|
+
stateMarkerGraphic.element.point = point; // #4310
|
18299
18358
|
}
|
18300
18359
|
}
|
18301
18360
|
|