highcharts-rails 4.1.6 → 4.1.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 +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
|
|