highcharts-rails 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.asc +13 -13
- data/.gitignore +1 -0
- data/CHANGELOG.markdown +7 -1
- data/README.markdown +11 -1
- data/{vendor → app}/assets/images/highcharts/skies.jpg +0 -0
- data/{vendor → app}/assets/images/highcharts/snow.png +0 -0
- data/{vendor → app}/assets/images/highcharts/sun.png +0 -0
- data/{vendor → app}/assets/javascripts/highcharts.js +147 -113
- data/{vendor → app}/assets/javascripts/highcharts/adapters/mootools.js +1 -1
- data/{vendor → app}/assets/javascripts/highcharts/adapters/prototype.js +1 -1
- data/{vendor → app}/assets/javascripts/highcharts/highcharts-more.js +25 -25
- data/{vendor → app}/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
- data/{vendor → app}/assets/javascripts/highcharts/modules/data.js +19 -10
- data/{vendor → app}/assets/javascripts/highcharts/modules/exporting.js +17 -18
- data/{vendor → app}/assets/javascripts/highcharts/modules/funnel.js +0 -0
- data/{vendor → app}/assets/javascripts/highcharts/themes/dark-blue.js +0 -0
- data/{vendor → app}/assets/javascripts/highcharts/themes/dark-green.js +0 -0
- data/{vendor → app}/assets/javascripts/highcharts/themes/gray.js +0 -0
- data/{vendor → app}/assets/javascripts/highcharts/themes/grid.js +0 -0
- data/{vendor → app}/assets/javascripts/highcharts/themes/skies.js +0 -0
- data/lib/highcharts/version.rb +1 -1
- metadata +18 -18
- metadata.gz.asc +13 -13
data.tar.gz.asc
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
Version: GnuPG/MacGPG2 v2.0.19 (Darwin)
|
3
3
|
Comment: GPGTools - http://gpgtools.org
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
=
|
5
|
+
iQIcBAABAgAGBQJRZCX4AAoJEH1ncb0Txu7XWUgQAKSwMYAj6ECNovM5FQnW9Xrs
|
6
|
+
84xcCzwhur/YD5/jOVxl85tTVmboBRdVPp53CmsuquGYUMRrrXRobt6C6/hMp4DP
|
7
|
+
imZ72AL1ZjYjFPCjHXuJzVXsiwGKLE7SdhGo01l3+69rhGwurpA3fZ9d1DaO+YZ6
|
8
|
+
BlwHypnXlQGOPapB7Eh2V/U5UbZi3V1kLTlUaJyUu914p99Jo6MutHobM7aShMOx
|
9
|
+
hdqn+ZqN0ha2ourKFk+wJKWTMKe4jvlp9SDrOLe9JY+AJ9zfCns+QFwFJQaC6+VE
|
10
|
+
DlxQVt33q2nl+W7DdQr23kBM9/Vr9tQzNPE4E17NvGGZBwTZGxPSwPVzoO1ajRVH
|
11
|
+
MwzbcKrqo1AkRDY5th1Hf2WAyruQ62DlbHF/5luJo1ezsuakus74/JWIo36BXKdp
|
12
|
+
R20yR4hnQflxGj9BwOUZ5oroG4+PvIBHEfy9no7R600u5Q/RzCj+C3MCekYTMyKV
|
13
|
+
KurzDyFfanNU1RNVkV2rJAAB2373cCZRiORqi7HNfdjkzzJiuFCTIWNkEo2eLPx4
|
14
|
+
KlCZL5czNj1fgiEZclMGqv7Le5RXR3SuQXzxTw/cpEbvy5Zwm1zUGWankUQb+TEg
|
15
|
+
7hP/wQD5E8zJ/ZYbYjXCnS2K8e59+EOc5DcGpaPT9ELSmaCDlG3AvNnKuFS3g+nj
|
16
|
+
pm1NAKtYl8Y62Yf35hba
|
17
|
+
=qJvF
|
18
18
|
-----END PGP SIGNATURE-----
|
data/.gitignore
CHANGED
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 3.0.1 / 2013-04-09
|
2
|
+
|
3
|
+
* Updated Highcharts to 3.0.1
|
4
|
+
* Moved assets from vendor/assets to app/assets, since the entire point of the
|
5
|
+
gem is to deliver those assets.
|
6
|
+
|
1
7
|
# 3.0.0 / 2013-03-25
|
2
8
|
|
3
9
|
* Updated Highcharts to 3.0.0
|
@@ -38,4 +44,4 @@
|
|
38
44
|
# 2.2.1 / 2012-04-15
|
39
45
|
|
40
46
|
* Updated Highcharts to 2.2.1
|
41
|
-
* Added the skies theme (graphic hardcoded to `/assets/highcharts/skies.jpg`)
|
47
|
+
* Added the skies theme (graphic hardcoded to `/assets/highcharts/skies.jpg`)
|
data/README.markdown
CHANGED
@@ -49,4 +49,14 @@ Other than that, refer to the [Highcharts documentation](http://highcharts.com/d
|
|
49
49
|
|
50
50
|
Highcharts, which makes up the majority of this gem, has [its own, separate licensing](http://highcharts.com/license).
|
51
51
|
|
52
|
-
The gem itself is released under the MIT license
|
52
|
+
The gem itself is released under the MIT license
|
53
|
+
|
54
|
+
## Signing
|
55
|
+
|
56
|
+
Release tags and all released gems (from 3.0.0 onwards) is signed using [rubygems-openpgp](https://www.rubygems-openpgp-ca.org/) using [my personal key](https://eastblue.org/blag/contact/), and the fingerprint is also included below.
|
57
|
+
|
58
|
+
pub 4096R/CCFBB9EF 2013-02-01 [expires: 2017-02-01]
|
59
|
+
Key fingerprint = 6077 34FC 32B6 6041 BF06 43F2 205D 9784 CCFB B9EF
|
60
|
+
uid Per Christian Bechström Viken <perchr@northblue.org>
|
61
|
+
uid [jpeg image of size 6240]
|
62
|
+
sub 4096R/13C6EED7 2013-02-01 [expires: 2017-02-01]
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v3.0.
|
5
|
+
* @license Highcharts JS v3.0.1 (2013-04-09)
|
6
6
|
*
|
7
7
|
* (c) 2009-2013 Torstein Hønsi
|
8
8
|
*
|
@@ -55,7 +55,7 @@ var UNDEFINED,
|
|
55
55
|
noop = function () {},
|
56
56
|
charts = [],
|
57
57
|
PRODUCT = 'Highcharts',
|
58
|
-
VERSION = '3.0.
|
58
|
+
VERSION = '3.0.1',
|
59
59
|
|
60
60
|
// some constants for frequently used strings
|
61
61
|
DIV = 'div',
|
@@ -377,18 +377,6 @@ function extendClass(parent, members) {
|
|
377
377
|
return object;
|
378
378
|
}
|
379
379
|
|
380
|
-
/**
|
381
|
-
* How many decimals are there in a number
|
382
|
-
*/
|
383
|
-
function getDecimals(number) {
|
384
|
-
|
385
|
-
number = (number || 0).toString();
|
386
|
-
|
387
|
-
return number.indexOf('.') > -1 ?
|
388
|
-
number.split('.')[1].length :
|
389
|
-
0;
|
390
|
-
}
|
391
|
-
|
392
380
|
/**
|
393
381
|
* Format a number and return a string based on input settings
|
394
382
|
* @param {Number} number The input number to format
|
@@ -401,7 +389,7 @@ function numberFormat(number, decimals, decPoint, thousandsSep) {
|
|
401
389
|
// http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_number_format/
|
402
390
|
n = number,
|
403
391
|
c = decimals === -1 ?
|
404
|
-
|
392
|
+
((n || 0).toString().split('.')[1] || '').length : // preserve decimals
|
405
393
|
(isNaN(decimals = mathAbs(decimals)) ? 2 : decimals),
|
406
394
|
d = decPoint === undefined ? lang.decimalPoint : decPoint,
|
407
395
|
t = thousandsSep === undefined ? lang.thousandsSep : thousandsSep,
|
@@ -464,7 +452,6 @@ dateFormat = function (format, timestamp, capitalize) {
|
|
464
452
|
langWeekdays = lang.weekdays,
|
465
453
|
|
466
454
|
// List all format keys. Custom formats can be added from the outside.
|
467
|
-
// See http://jsfiddle.net/highcharts/7PB5N/ // docs
|
468
455
|
replacements = extend({
|
469
456
|
|
470
457
|
// Day
|
@@ -519,7 +506,7 @@ function formatSingle(format, val) {
|
|
519
506
|
|
520
507
|
if (floatRegex.test(format)) { // float
|
521
508
|
decimals = format.match(decRegex);
|
522
|
-
decimals = decimals ? decimals[1] :
|
509
|
+
decimals = decimals ? decimals[1] : -1;
|
523
510
|
val = numberFormat(
|
524
511
|
val,
|
525
512
|
decimals,
|
@@ -795,12 +782,14 @@ function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
|
|
795
782
|
|
796
783
|
// else, the interval is fixed and we use simple addition
|
797
784
|
} else {
|
798
|
-
time += interval * count;
|
799
785
|
|
800
786
|
// mark new days if the time is dividable by day
|
801
787
|
if (interval <= timeUnits[HOUR] && time % timeUnits[DAY] === timezoneOffset) {
|
802
788
|
higherRanks[time] = DAY;
|
803
789
|
}
|
790
|
+
|
791
|
+
time += interval * count;
|
792
|
+
|
804
793
|
}
|
805
794
|
|
806
795
|
i++;
|
@@ -1206,7 +1195,7 @@ pathAnim = {
|
|
1206
1195
|
};
|
1207
1196
|
|
1208
1197
|
/**
|
1209
|
-
* Register Highcharts as a plugin in the respective framework
|
1198
|
+
* Register Highcharts as a plugin in the respective framework
|
1210
1199
|
*/
|
1211
1200
|
$.fn.highcharts = function () {
|
1212
1201
|
var constr = 'Chart', // default constructor
|
@@ -1312,7 +1301,7 @@ pathAnim = {
|
|
1312
1301
|
// workaround for jQuery issue with unbinding custom events:
|
1313
1302
|
// http://forum.jQuery.com/topic/javascript-error-when-unbinding-a-custom-event-using-jQuery-1-4-2
|
1314
1303
|
var func = doc.removeEventListener ? 'removeEventListener' : 'detachEvent';
|
1315
|
-
if (doc[func] && !el[func]) {
|
1304
|
+
if (doc[func] && el && !el[func]) {
|
1316
1305
|
el[func] = function () {};
|
1317
1306
|
}
|
1318
1307
|
|
@@ -1482,7 +1471,7 @@ defaultLabelOptions = {
|
|
1482
1471
|
|
1483
1472
|
defaultOptions = {
|
1484
1473
|
colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce', '#492970',
|
1485
|
-
'#f28f43', '#77a1e5', '#c42525', '#a6c96a'],
|
1474
|
+
'#f28f43', '#77a1e5', '#c42525', '#a6c96a'],
|
1486
1475
|
symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],
|
1487
1476
|
lang: {
|
1488
1477
|
loading: 'Loading...',
|
@@ -1498,8 +1487,8 @@ defaultOptions = {
|
|
1498
1487
|
},
|
1499
1488
|
global: {
|
1500
1489
|
useUTC: true,
|
1501
|
-
canvasToolsURL: 'http://code.highcharts.com/3.0.
|
1502
|
-
VMLRadialGradientURL: 'http://code.highcharts.com/3.0.
|
1490
|
+
canvasToolsURL: 'http://code.highcharts.com/3.0.1/modules/canvas-tools.js',
|
1491
|
+
VMLRadialGradientURL: 'http://code.highcharts.com/3.0.1/gfx/vml-radial-gradient.png'
|
1503
1492
|
},
|
1504
1493
|
chart: {
|
1505
1494
|
//animation: true,
|
@@ -1587,7 +1576,7 @@ defaultOptions = {
|
|
1587
1576
|
events: {},
|
1588
1577
|
//legendIndex: 0,
|
1589
1578
|
lineWidth: 2,
|
1590
|
-
//shadow: false,
|
1579
|
+
//shadow: false,
|
1591
1580
|
// stacking: null,
|
1592
1581
|
marker: {
|
1593
1582
|
enabled: true,
|
@@ -1676,7 +1665,7 @@ defaultOptions = {
|
|
1676
1665
|
borderRadius: 5,
|
1677
1666
|
navigation: {
|
1678
1667
|
// animation: true,
|
1679
|
-
activeColor: '#274b6d',
|
1668
|
+
activeColor: '#274b6d',
|
1680
1669
|
// arrowSize: 12
|
1681
1670
|
inactiveColor: '#CCC'
|
1682
1671
|
// style: {} // text styles
|
@@ -1690,7 +1679,7 @@ defaultOptions = {
|
|
1690
1679
|
},*/
|
1691
1680
|
itemStyle: {
|
1692
1681
|
cursor: 'pointer',
|
1693
|
-
color: '#274b6d',
|
1682
|
+
color: '#274b6d',
|
1694
1683
|
fontSize: '12px'
|
1695
1684
|
},
|
1696
1685
|
itemHoverStyle: {
|
@@ -1712,7 +1701,7 @@ defaultOptions = {
|
|
1712
1701
|
// width: undefined,
|
1713
1702
|
x: 0,
|
1714
1703
|
y: 0,
|
1715
|
-
title: {
|
1704
|
+
title: {
|
1716
1705
|
//text: null,
|
1717
1706
|
style: {
|
1718
1707
|
fontWeight: 'bold'
|
@@ -1738,11 +1727,11 @@ defaultOptions = {
|
|
1738
1727
|
|
1739
1728
|
tooltip: {
|
1740
1729
|
enabled: true,
|
1741
|
-
animation: hasSVG,
|
1730
|
+
animation: hasSVG,
|
1742
1731
|
//crosshairs: null,
|
1743
1732
|
backgroundColor: 'rgba(255, 255, 255, .85)',
|
1744
|
-
borderWidth: 1,
|
1745
|
-
borderRadius: 3,
|
1733
|
+
borderWidth: 1,
|
1734
|
+
borderRadius: 3,
|
1746
1735
|
dateTimeLabelFormats: {
|
1747
1736
|
millisecond: '%A, %b %e, %H:%M:%S.%L',
|
1748
1737
|
second: '%A, %b %e, %H:%M:%S',
|
@@ -1763,7 +1752,7 @@ defaultOptions = {
|
|
1763
1752
|
color: '#333333',
|
1764
1753
|
cursor: 'default',
|
1765
1754
|
fontSize: '12px',
|
1766
|
-
padding: '8px',
|
1755
|
+
padding: '8px',
|
1767
1756
|
whiteSpace: 'nowrap'
|
1768
1757
|
}
|
1769
1758
|
//xDateFormat: '%A, %b %e, %Y',
|
@@ -2827,8 +2816,8 @@ SVGElement.prototype = {
|
|
2827
2816
|
width = bBox.width;
|
2828
2817
|
height = bBox.height;
|
2829
2818
|
|
2830
|
-
// Workaround for wrong bounding box in IE9 and IE10 (#1101, #1505)
|
2831
|
-
if (isIE && styles && styles.fontSize === '11px' && height.toPrecision(3) === 22.7) {
|
2819
|
+
// Workaround for wrong bounding box in IE9 and IE10 (#1101, #1505, #1669)
|
2820
|
+
if (isIE && styles && styles.fontSize === '11px' && height.toPrecision(3) === '22.7') {
|
2832
2821
|
bBox.height = height = 14;
|
2833
2822
|
}
|
2834
2823
|
|
@@ -3693,6 +3682,7 @@ SVGRenderer.prototype = {
|
|
3693
3682
|
x: x,
|
3694
3683
|
y: y
|
3695
3684
|
});
|
3685
|
+
obj.isImg = true;
|
3696
3686
|
|
3697
3687
|
if (imageSize) {
|
3698
3688
|
centerImage(obj, imageSize);
|
@@ -4216,10 +4206,12 @@ SVGRenderer.prototype = {
|
|
4216
4206
|
}
|
4217
4207
|
|
4218
4208
|
// apply the box attributes
|
4219
|
-
box.
|
4220
|
-
|
4221
|
-
|
4222
|
-
|
4209
|
+
if (!box.isImg) { // #1630
|
4210
|
+
box.attr(merge({
|
4211
|
+
width: wrapper.width,
|
4212
|
+
height: wrapper.height
|
4213
|
+
}, deferredAttr));
|
4214
|
+
}
|
4223
4215
|
deferredAttr = null;
|
4224
4216
|
}
|
4225
4217
|
}
|
@@ -4608,7 +4600,8 @@ Highcharts.VMLElement = VMLElement = {
|
|
4608
4600
|
|
4609
4601
|
// convert paths
|
4610
4602
|
i = value.length;
|
4611
|
-
var convertedPath = []
|
4603
|
+
var convertedPath = [],
|
4604
|
+
clockwise;
|
4612
4605
|
while (i--) {
|
4613
4606
|
|
4614
4607
|
// Multiply by 10 to allow subpixel precision.
|
@@ -4624,13 +4617,14 @@ Highcharts.VMLElement = VMLElement = {
|
|
4624
4617
|
// When the start X and end X coordinates of an arc are too close,
|
4625
4618
|
// they are rounded to the same value above. In this case, substract 1 from the end X
|
4626
4619
|
// position. #760, #1371.
|
4627
|
-
if (value[i] === 'wa' || value[i] === 'at') {
|
4620
|
+
if (value.isArc && (value[i] === 'wa' || value[i] === 'at')) {
|
4621
|
+
clockwise = value[i] === 'wa' ? 1 : -1; // #1642
|
4628
4622
|
if (convertedPath[i + 5] === convertedPath[i + 7]) {
|
4629
|
-
convertedPath[i + 7] -=
|
4623
|
+
convertedPath[i + 7] -= clockwise;
|
4630
4624
|
}
|
4631
4625
|
// Start and end Y (#1410)
|
4632
4626
|
if (convertedPath[i + 6] === convertedPath[i + 8]) {
|
4633
|
-
convertedPath[i + 8] -=
|
4627
|
+
convertedPath[i + 8] -= clockwise;
|
4634
4628
|
}
|
4635
4629
|
}
|
4636
4630
|
}
|
@@ -4668,7 +4662,7 @@ Highcharts.VMLElement = VMLElement = {
|
|
4668
4662
|
// outside the viewport. So the visibility is actually opposite of
|
4669
4663
|
// the expected value. This applies to the tooltip only.
|
4670
4664
|
if (!docMode8) {
|
4671
|
-
elemStyle[key] = value ?
|
4665
|
+
elemStyle[key] = value ? VISIBLE : HIDDEN;
|
4672
4666
|
}
|
4673
4667
|
key = 'top';
|
4674
4668
|
}
|
@@ -5451,6 +5445,7 @@ var VMLRendererExtension = { // inherit SVGRenderer
|
|
5451
5445
|
'e' // close
|
5452
5446
|
);
|
5453
5447
|
|
5448
|
+
ret.isArc = true;
|
5454
5449
|
return ret;
|
5455
5450
|
|
5456
5451
|
},
|
@@ -5658,7 +5653,7 @@ Tick.prototype = {
|
|
5658
5653
|
!labelOptions.step && !labelOptions.staggerLines &&
|
5659
5654
|
!labelOptions.rotation &&
|
5660
5655
|
chart.plotWidth / tickPositions.length) ||
|
5661
|
-
(!horiz && chart.plotWidth / 2),
|
5656
|
+
(!horiz && (chart.optionsMarginLeft || chart.plotWidth / 2)), // #1580
|
5662
5657
|
isFirst = pos === tickPositions[0],
|
5663
5658
|
isLast = pos === tickPositions[tickPositions.length - 1],
|
5664
5659
|
css,
|
@@ -6257,7 +6252,7 @@ StackItem.prototype = {
|
|
6257
6252
|
// Create new label
|
6258
6253
|
} else {
|
6259
6254
|
this.label =
|
6260
|
-
this.axis.chart.renderer.text(str, 0, 0, options.useHTML) // dummy positions, actual position updated with setOffset method in columnseries
|
6255
|
+
this.axis.chart.renderer.text(str, 0, 0, options.useHTML) // dummy positions, actual position updated with setOffset method in columnseries
|
6261
6256
|
.css(options.style) // apply style
|
6262
6257
|
.attr({
|
6263
6258
|
align: this.textAlign, // fix the text-anchor
|
@@ -6724,7 +6719,7 @@ Axis.prototype = {
|
|
6724
6719
|
i = numericSymbols && numericSymbols.length,
|
6725
6720
|
multi,
|
6726
6721
|
ret,
|
6727
|
-
formatOption = axis.options.labels.format,
|
6722
|
+
formatOption = axis.options.labels.format,
|
6728
6723
|
|
6729
6724
|
// make sure the same symbol is added for all labels on a linear axis
|
6730
6725
|
numericSymbolDetector = axis.isLog ? value : axis.tickInterval;
|
@@ -6895,7 +6890,7 @@ Axis.prototype = {
|
|
6895
6890
|
}
|
6896
6891
|
|
6897
6892
|
// Handle non null values
|
6898
|
-
if (y !== null && y !== UNDEFINED && (!axis.isLog || y > 0)) {
|
6893
|
+
if (y !== null && y !== UNDEFINED && (!axis.isLog || (y.length || y > 0))) {
|
6899
6894
|
|
6900
6895
|
// general hook, used for Highstock compare values feature
|
6901
6896
|
if (hasModifyValue) {
|
@@ -7017,7 +7012,7 @@ Axis.prototype = {
|
|
7017
7012
|
* @param {Boolean} paneCoordinates Whether to return the pixel coordinate relative to the chart
|
7018
7013
|
* or just the axis/pane itself.
|
7019
7014
|
*/
|
7020
|
-
toPixels: function (value, paneCoordinates) {
|
7015
|
+
toPixels: function (value, paneCoordinates) {
|
7021
7016
|
return this.translate(value, false, !this.horiz, null, true) + (paneCoordinates ? 0 : this.pos);
|
7022
7017
|
},
|
7023
7018
|
|
@@ -7027,7 +7022,7 @@ Axis.prototype = {
|
|
7027
7022
|
* @param {Boolean} paneCoordiantes Whether the input pixel is relative to the chart or just the
|
7028
7023
|
* axis/pane itself.
|
7029
7024
|
*/
|
7030
|
-
toValue: function (pixel, paneCoordinates) {
|
7025
|
+
toValue: function (pixel, paneCoordinates) {
|
7031
7026
|
return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, null, true);
|
7032
7027
|
},
|
7033
7028
|
|
@@ -7178,7 +7173,7 @@ Axis.prototype = {
|
|
7178
7173
|
for (j = 0; j < len && !break2; j++) {
|
7179
7174
|
pos = log2lin(lin2log(i) * intermediate[j]);
|
7180
7175
|
|
7181
|
-
if (pos > min && lastPos <= max) {
|
7176
|
+
if (pos > min && (!minor || lastPos <= max)) { // #1670
|
7182
7177
|
positions.push(lastPos);
|
7183
7178
|
}
|
7184
7179
|
|
@@ -7359,6 +7354,7 @@ Axis.prototype = {
|
|
7359
7354
|
minPointOffset = 0,
|
7360
7355
|
pointRangePadding = 0,
|
7361
7356
|
linkedParent = axis.linkedParent,
|
7357
|
+
ordinalCorrection,
|
7362
7358
|
transA = axis.transA;
|
7363
7359
|
|
7364
7360
|
// adjust translation for padding
|
@@ -7403,8 +7399,9 @@ Axis.prototype = {
|
|
7403
7399
|
}
|
7404
7400
|
|
7405
7401
|
// Record minPointOffset and pointRangePadding
|
7406
|
-
axis.
|
7407
|
-
axis.
|
7402
|
+
ordinalCorrection = axis.ordinalSlope ? axis.ordinalSlope / closestPointRange : 1; // #988
|
7403
|
+
axis.minPointOffset = minPointOffset = minPointOffset * ordinalCorrection;
|
7404
|
+
axis.pointRangePadding = pointRangePadding = pointRangePadding * ordinalCorrection;
|
7408
7405
|
|
7409
7406
|
// pointRange means the width reserved for each point, like in a column chart
|
7410
7407
|
axis.pointRange = mathMin(pointRange, range);
|
@@ -7769,11 +7766,13 @@ Axis.prototype = {
|
|
7769
7766
|
zoom: function (newMin, newMax) {
|
7770
7767
|
|
7771
7768
|
// Prevent pinch zooming out of range
|
7772
|
-
if (
|
7773
|
-
newMin
|
7774
|
-
|
7775
|
-
|
7776
|
-
newMax
|
7769
|
+
if (!this.allowZoomOutside) {
|
7770
|
+
if (newMin <= this.dataMin) {
|
7771
|
+
newMin = UNDEFINED;
|
7772
|
+
}
|
7773
|
+
if (newMax >= this.dataMax) {
|
7774
|
+
newMax = UNDEFINED;
|
7775
|
+
}
|
7777
7776
|
}
|
7778
7777
|
|
7779
7778
|
// In full view, displaying the reset zoom button is not required
|
@@ -8108,17 +8107,17 @@ Axis.prototype = {
|
|
8108
8107
|
from,
|
8109
8108
|
to;
|
8110
8109
|
|
8110
|
+
// Mark all elements inActive before we go over and mark the active ones
|
8111
|
+
each([ticks, minorTicks, alternateBands], function (coll) {
|
8112
|
+
var pos;
|
8113
|
+
for (pos in coll) {
|
8114
|
+
coll[pos].isActive = false;
|
8115
|
+
}
|
8116
|
+
});
|
8117
|
+
|
8111
8118
|
// If the series has data draw the ticks. Else only the line and title
|
8112
8119
|
if (hasData || isLinked) {
|
8113
8120
|
|
8114
|
-
// Mark all elements inActive before we go over and mark the active ones
|
8115
|
-
each([ticks, minorTicks, alternateBands], function (coll) {
|
8116
|
-
var pos;
|
8117
|
-
for (pos in coll) {
|
8118
|
-
coll[pos].isActive = false;
|
8119
|
-
}
|
8120
|
-
});
|
8121
|
-
|
8122
8121
|
// minor ticks
|
8123
8122
|
if (axis.minorTickInterval && !axis.categories) {
|
8124
8123
|
each(axis.getMinorTickPositions(), function (pos) {
|
@@ -8519,7 +8518,7 @@ Tooltip.prototype = {
|
|
8519
8518
|
this.hideTimer = setTimeout(function () {
|
8520
8519
|
tooltip.label.fadeOut();
|
8521
8520
|
tooltip.isHidden = true;
|
8522
|
-
}, pick(this.options.hideDelay, 500));
|
8521
|
+
}, pick(this.options.hideDelay, 500));
|
8523
8522
|
|
8524
8523
|
// hide previous hoverPoints and set new
|
8525
8524
|
if (hoverPoints) {
|
@@ -8773,14 +8772,19 @@ Tooltip.prototype = {
|
|
8773
8772
|
var path,
|
8774
8773
|
i = crosshairsOptions.length,
|
8775
8774
|
attribs,
|
8776
|
-
axis
|
8775
|
+
axis,
|
8776
|
+
val;
|
8777
8777
|
|
8778
8778
|
while (i--) {
|
8779
8779
|
axis = point.series[i ? 'yAxis' : 'xAxis'];
|
8780
8780
|
if (crosshairsOptions[i] && axis) {
|
8781
|
+
val = i ? pick(point.stackY, point.y) : point.x; // #814
|
8782
|
+
if (axis.isLog) { // #1671
|
8783
|
+
val = log2lin(val);
|
8784
|
+
}
|
8781
8785
|
|
8782
8786
|
path = axis.getPlotLinePath(
|
8783
|
-
|
8787
|
+
val,
|
8784
8788
|
1
|
8785
8789
|
);
|
8786
8790
|
|
@@ -9175,21 +9179,24 @@ Pointer.prototype = {
|
|
9175
9179
|
var self = this,
|
9176
9180
|
chart = self.chart,
|
9177
9181
|
pinchDown = self.pinchDown,
|
9182
|
+
followTouchMove = chart.tooltip.options.followTouchMove,
|
9178
9183
|
touches = e.touches,
|
9184
|
+
touchesLength = touches.length,
|
9179
9185
|
lastValidTouch = self.lastValidTouch,
|
9180
9186
|
zoomHor = self.zoomHor || self.pinchHor,
|
9181
9187
|
zoomVert = self.zoomVert || self.pinchVert,
|
9188
|
+
hasZoom = zoomHor || zoomVert,
|
9182
9189
|
selectionMarker = self.selectionMarker,
|
9183
9190
|
transform = {},
|
9184
9191
|
clip = {};
|
9185
9192
|
|
9186
9193
|
// On touch devices, only proceed to trigger click if a handler is defined
|
9187
|
-
if (e.type === 'touchstart') {
|
9194
|
+
if (e.type === 'touchstart' && followTouchMove) {
|
9188
9195
|
if (self.inClass(e.target, PREFIX + 'tracker')) {
|
9189
|
-
if (!chart.runTrackerClick) {
|
9196
|
+
if (!chart.runTrackerClick || touchesLength > 1) {
|
9190
9197
|
e.preventDefault();
|
9191
9198
|
}
|
9192
|
-
} else if (!chart.runChartClick) {
|
9199
|
+
} else if (!chart.runChartClick || touchesLength > 1) {
|
9193
9200
|
e.preventDefault();
|
9194
9201
|
}
|
9195
9202
|
}
|
@@ -9243,12 +9250,15 @@ Pointer.prototype = {
|
|
9243
9250
|
self.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
|
9244
9251
|
}
|
9245
9252
|
|
9246
|
-
self.hasPinched =
|
9253
|
+
self.hasPinched = hasZoom;
|
9247
9254
|
|
9248
9255
|
// Scale and translate the groups to provide visual feedback during pinching
|
9249
9256
|
self.scaleGroups(transform, clip);
|
9250
9257
|
|
9251
|
-
|
9258
|
+
// Optionally move the tooltip on touchmove
|
9259
|
+
if (!hasZoom && followTouchMove && touchesLength === 1) {
|
9260
|
+
this.runPointActions(self.normalize(e));
|
9261
|
+
}
|
9252
9262
|
}
|
9253
9263
|
},
|
9254
9264
|
|
@@ -9409,7 +9419,7 @@ Pointer.prototype = {
|
|
9409
9419
|
|
9410
9420
|
// Reset all
|
9411
9421
|
if (chart) { // it may be destroyed on mouse up - #877
|
9412
|
-
css(chart.container, { cursor:
|
9422
|
+
css(chart.container, { cursor: chart._cursor });
|
9413
9423
|
chart.cancelClick = this.hasDragged; // #370
|
9414
9424
|
chart.mouseIsDown = this.hasDragged = this.hasPinched = false;
|
9415
9425
|
this.pinchDown = [];
|
@@ -9910,7 +9920,7 @@ Legend.prototype = {
|
|
9910
9920
|
|
9911
9921
|
// Generate the list item text and add it to the group
|
9912
9922
|
item.legendItem = li = renderer.text(
|
9913
|
-
options.labelFormat ? format(options.labelFormat, item) : options.labelFormatter.call(item),
|
9923
|
+
options.labelFormat ? format(options.labelFormat, item) : options.labelFormatter.call(item),
|
9914
9924
|
ltr ? symbolWidth + symbolPadding : -symbolPadding,
|
9915
9925
|
legend.baseline,
|
9916
9926
|
useHTML
|
@@ -10199,7 +10209,7 @@ Legend.prototype = {
|
|
10199
10209
|
}
|
10200
10210
|
|
10201
10211
|
// Reset the legend height and adjust the clipping rectangle
|
10202
|
-
if (legendHeight > spaceHeight && !options.useHTML) {
|
10212
|
+
if (legendHeight > spaceHeight && !options.useHTML) {
|
10203
10213
|
|
10204
10214
|
this.clipHeight = clipHeight = spaceHeight - 20 - this.titleHeight;
|
10205
10215
|
this.pageCount = pageCount = mathCeil(legendHeight / clipHeight);
|
@@ -10478,7 +10488,7 @@ Chart.prototype = {
|
|
10478
10488
|
* @param {Object} options The axis option
|
10479
10489
|
* @param {Boolean} isX Whether it is an X axis or a value axis
|
10480
10490
|
*/
|
10481
|
-
addAxis: function (options, isX, redraw, animation) {
|
10491
|
+
addAxis: function (options, isX, redraw, animation) {
|
10482
10492
|
var key = isX ? 'xAxis' : 'yAxis',
|
10483
10493
|
chartOptions = this.options,
|
10484
10494
|
axis;
|
@@ -10678,10 +10688,6 @@ Chart.prototype = {
|
|
10678
10688
|
chart.loadingDiv = loadingDiv = createElement(DIV, {
|
10679
10689
|
className: PREFIX + 'loading'
|
10680
10690
|
}, extend(loadingOptions.style, {
|
10681
|
-
left: chart.plotLeft + PX,
|
10682
|
-
top: chart.plotTop + PX,
|
10683
|
-
width: chart.plotWidth + PX,
|
10684
|
-
height: chart.plotHeight + PX,
|
10685
10691
|
zIndex: 10,
|
10686
10692
|
display: NONE
|
10687
10693
|
}), chart.container);
|
@@ -10700,7 +10706,14 @@ Chart.prototype = {
|
|
10700
10706
|
|
10701
10707
|
// show it
|
10702
10708
|
if (!chart.loadingShown) {
|
10703
|
-
css(loadingDiv, {
|
10709
|
+
css(loadingDiv, {
|
10710
|
+
opacity: 0,
|
10711
|
+
display: '',
|
10712
|
+
left: chart.plotLeft + PX,
|
10713
|
+
top: chart.plotTop + PX,
|
10714
|
+
width: chart.plotWidth + PX,
|
10715
|
+
height: chart.plotHeight + PX
|
10716
|
+
});
|
10704
10717
|
animate(loadingDiv, {
|
10705
10718
|
opacity: loadingOptions.style.opacity
|
10706
10719
|
}, {
|
@@ -10807,7 +10820,7 @@ Chart.prototype = {
|
|
10807
10820
|
getSelectedPoints: function () {
|
10808
10821
|
var points = [];
|
10809
10822
|
each(this.series, function (serie) {
|
10810
|
-
points = points.concat(grep(serie.points, function (point) {
|
10823
|
+
points = points.concat(grep(serie.points || [], function (point) {
|
10811
10824
|
return point.selected;
|
10812
10825
|
}));
|
10813
10826
|
});
|
@@ -11104,6 +11117,9 @@ Chart.prototype = {
|
|
11104
11117
|
chart.renderToClone || renderTo
|
11105
11118
|
);
|
11106
11119
|
|
11120
|
+
// cache the cursor (#1650)
|
11121
|
+
chart._cursor = container.style.cursor;
|
11122
|
+
|
11107
11123
|
chart.renderer =
|
11108
11124
|
optionsChart.forExport ? // force SVG, used for SVG export
|
11109
11125
|
new SVGRenderer(container, chartWidth, chartHeight, true) :
|
@@ -11852,7 +11868,7 @@ Point.prototype = {
|
|
11852
11868
|
point.pointAttr = {};
|
11853
11869
|
|
11854
11870
|
if (series.options.colorByPoint) {
|
11855
|
-
colors = series.options.colors || series.chart.options.colors;
|
11871
|
+
colors = series.options.colors || series.chart.options.colors;
|
11856
11872
|
point.color = point.color || colors[series.colorCounter++];
|
11857
11873
|
// loop back to zero
|
11858
11874
|
if (series.colorCounter === colors.length) {
|
@@ -12101,7 +12117,7 @@ Point.prototype = {
|
|
12101
12117
|
// Insert options for valueDecimals, valuePrefix, and valueSuffix
|
12102
12118
|
var series = this.series,
|
12103
12119
|
seriesTooltipOptions = series.tooltipOptions,
|
12104
|
-
valueDecimals = seriesTooltipOptions.valueDecimals,
|
12120
|
+
valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''),
|
12105
12121
|
valuePrefix = seriesTooltipOptions.valuePrefix || '',
|
12106
12122
|
valueSuffix = seriesTooltipOptions.valueSuffix || '';
|
12107
12123
|
|
@@ -12111,9 +12127,7 @@ Point.prototype = {
|
|
12111
12127
|
if (valuePrefix || valueSuffix) {
|
12112
12128
|
pointFormat = pointFormat.replace(key + '}', valuePrefix + key + '}' + valueSuffix);
|
12113
12129
|
}
|
12114
|
-
|
12115
|
-
pointFormat = pointFormat.replace(key + '}', key + ':,.' + valueDecimals + 'f}');
|
12116
|
-
}
|
12130
|
+
pointFormat = pointFormat.replace(key + '}', key + ':,.' + valueDecimals + 'f}');
|
12117
12131
|
});
|
12118
12132
|
|
12119
12133
|
return format(pointFormat, {
|
@@ -12452,7 +12466,7 @@ Series.prototype = {
|
|
12452
12466
|
});
|
12453
12467
|
|
12454
12468
|
// Linked series
|
12455
|
-
linkedTo = options.linkedTo;
|
12469
|
+
linkedTo = options.linkedTo;
|
12456
12470
|
series.linkedSeries = [];
|
12457
12471
|
if (isString(linkedTo)) {
|
12458
12472
|
if (linkedTo === ':previous') {
|
@@ -12488,7 +12502,7 @@ Series.prototype = {
|
|
12488
12502
|
// apply if the series xAxis or yAxis option mathches the number of the
|
12489
12503
|
// axis, or if undefined, use the first axis
|
12490
12504
|
if ((seriesOptions[AXIS] === axisOptions.index) ||
|
12491
|
-
(seriesOptions[AXIS] !== UNDEFINED && seriesOptions[AXIS] === axisOptions.id) ||
|
12505
|
+
(seriesOptions[AXIS] !== UNDEFINED && seriesOptions[AXIS] === axisOptions.id) ||
|
12492
12506
|
(seriesOptions[AXIS] === UNDEFINED && axisOptions.index === 0)) {
|
12493
12507
|
|
12494
12508
|
// register this series in the axis.series lookup
|
@@ -13602,7 +13616,7 @@ Series.prototype = {
|
|
13602
13616
|
normalOptions.radius = 0;
|
13603
13617
|
}
|
13604
13618
|
|
13605
|
-
if (point.negative) {
|
13619
|
+
if (point.negative && negativeColor) {
|
13606
13620
|
point.color = point.fillColor = negativeColor;
|
13607
13621
|
}
|
13608
13622
|
|
@@ -13673,7 +13687,7 @@ Series.prototype = {
|
|
13673
13687
|
|
13674
13688
|
},
|
13675
13689
|
/**
|
13676
|
-
* Update the series with a new set of options
|
13690
|
+
* Update the series with a new set of options
|
13677
13691
|
*/
|
13678
13692
|
update: function (newOptions, redraw) {
|
13679
13693
|
var chart = this.chart,
|
@@ -13836,7 +13850,7 @@ Series.prototype = {
|
|
13836
13850
|
|
13837
13851
|
// Get the string
|
13838
13852
|
labelConfig = point.getLabelConfig();
|
13839
|
-
str = options.format ?
|
13853
|
+
str = options.format ?
|
13840
13854
|
format(options.format, labelConfig) :
|
13841
13855
|
options.formatter.call(labelConfig, options);
|
13842
13856
|
|
@@ -14216,7 +14230,9 @@ Series.prototype = {
|
|
14216
14230
|
// Place it on first and subsequent (redraw) calls
|
14217
14231
|
group[isNew ? 'attr' : 'animate']({
|
14218
14232
|
translateX: xAxis ? xAxis.left : chart.plotLeft,
|
14219
|
-
translateY: yAxis ? yAxis.top : chart.plotTop
|
14233
|
+
translateY: yAxis ? yAxis.top : chart.plotTop,
|
14234
|
+
scaleX: 1, // #1623
|
14235
|
+
scaleY: 1
|
14220
14236
|
});
|
14221
14237
|
|
14222
14238
|
return group;
|
@@ -14234,7 +14250,7 @@ Series.prototype = {
|
|
14234
14250
|
animation = options.animation,
|
14235
14251
|
doAnimation = animation && !!series.animate &&
|
14236
14252
|
chart.renderer.isSVG, // this animation doesn't work in IE8 quirks when the group div is hidden,
|
14237
|
-
// and looks bad in other oldIE
|
14253
|
+
// and looks bad in other oldIE
|
14238
14254
|
visibility = series.visible ? VISIBLE : HIDDEN,
|
14239
14255
|
zIndex = options.zIndex,
|
14240
14256
|
hasRendered = series.hasRendered,
|
@@ -14590,7 +14606,11 @@ var AreaSeries = extendClass(Series, {
|
|
14590
14606
|
*/
|
14591
14607
|
getSegments: function () {
|
14592
14608
|
var segments = [],
|
14593
|
-
|
14609
|
+
segment = [],
|
14610
|
+
keys = [],
|
14611
|
+
xAxis = this.xAxis,
|
14612
|
+
yAxis = this.yAxis,
|
14613
|
+
stack = yAxis.stacks[this.stackKey],
|
14594
14614
|
pointMap = {},
|
14595
14615
|
plotX,
|
14596
14616
|
plotY,
|
@@ -14604,19 +14624,26 @@ var AreaSeries = extendClass(Series, {
|
|
14604
14624
|
pointMap[points[i].x] = points[i];
|
14605
14625
|
}
|
14606
14626
|
|
14627
|
+
// Sort the keys (#1651)
|
14607
14628
|
for (x in stack) {
|
14629
|
+
keys.push(+x);
|
14630
|
+
}
|
14631
|
+
keys.sort(function (a, b) {
|
14632
|
+
return a - b;
|
14633
|
+
});
|
14608
14634
|
|
14635
|
+
each(keys, function (x) {
|
14609
14636
|
// The point exists, push it to the segment
|
14610
14637
|
if (pointMap[x]) {
|
14611
|
-
|
14638
|
+
segment.push(pointMap[x]);
|
14612
14639
|
|
14613
14640
|
// There is no point for this X value in this series, so we
|
14614
14641
|
// insert a dummy point in order for the areas to be drawn
|
14615
14642
|
// correctly.
|
14616
14643
|
} else {
|
14617
|
-
plotX =
|
14618
|
-
plotY =
|
14619
|
-
|
14644
|
+
plotX = xAxis.translate(x);
|
14645
|
+
plotY = yAxis.toPixels(stack[x].cum, true);
|
14646
|
+
segment.push({
|
14620
14647
|
y: null,
|
14621
14648
|
plotX: plotX,
|
14622
14649
|
clientX: plotX,
|
@@ -14625,8 +14652,11 @@ var AreaSeries = extendClass(Series, {
|
|
14625
14652
|
onMouseOver: noop
|
14626
14653
|
});
|
14627
14654
|
}
|
14655
|
+
});
|
14656
|
+
|
14657
|
+
if (segment.length) {
|
14658
|
+
segments.push(segment);
|
14628
14659
|
}
|
14629
|
-
segments = [segments];
|
14630
14660
|
|
14631
14661
|
} else {
|
14632
14662
|
Series.prototype.getSegments.call(this);
|
@@ -15212,7 +15242,7 @@ var ColumnSeries = extendClass(Series, {
|
|
15212
15242
|
inverted = chart.inverted,
|
15213
15243
|
dlBox = point.dlBox || point.shapeArgs, // data label box for alignment
|
15214
15244
|
below = point.below || (point.plotY > pick(this.translatedThreshold, chart.plotSizeY)),
|
15215
|
-
inside = pick(options.inside, !!this.options.stacking); // draw it inside the box?
|
15245
|
+
inside = pick(options.inside, !!this.options.stacking); // draw it inside the box?
|
15216
15246
|
|
15217
15247
|
// Align to the column itself, or the top of it
|
15218
15248
|
if (dlBox) { // Area range uses this method but not alignTo
|
@@ -15266,7 +15296,7 @@ var ColumnSeries = extendClass(Series, {
|
|
15266
15296
|
attr = {},
|
15267
15297
|
translatedThreshold;
|
15268
15298
|
|
15269
|
-
if (hasSVG) { // VML is too slow anyway
|
15299
|
+
if (hasSVG) { // VML is too slow anyway
|
15270
15300
|
if (init) {
|
15271
15301
|
attr.scaleY = 0.001;
|
15272
15302
|
translatedThreshold = mathMin(yAxis.pos + yAxis.len, mathMax(yAxis.pos, yAxis.toPixels(options.threshold)));
|
@@ -15331,9 +15361,9 @@ defaultPlotOptions.scatter = merge(defaultSeriesOptions, {
|
|
15331
15361
|
tooltip: {
|
15332
15362
|
headerFormat: '<span style="font-size: 10px; color:{series.color}">{series.name}</span><br/>',
|
15333
15363
|
pointFormat: 'x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>',
|
15334
|
-
followPointer: true
|
15364
|
+
followPointer: true
|
15335
15365
|
},
|
15336
|
-
stickyTracking: false
|
15366
|
+
stickyTracking: false
|
15337
15367
|
});
|
15338
15368
|
|
15339
15369
|
/**
|
@@ -15358,7 +15388,8 @@ seriesTypes.scatter = ScatterSeries;
|
|
15358
15388
|
defaultPlotOptions.pie = merge(defaultSeriesOptions, {
|
15359
15389
|
borderColor: '#FFFFFF',
|
15360
15390
|
borderWidth: 1,
|
15361
|
-
center: [null, null]
|
15391
|
+
center: [null, null],
|
15392
|
+
clip: false,
|
15362
15393
|
colorByPoint: true, // always true for pies
|
15363
15394
|
dataLabels: {
|
15364
15395
|
// align: null,
|
@@ -15373,11 +15404,11 @@ defaultPlotOptions.pie = merge(defaultSeriesOptions, {
|
|
15373
15404
|
// softConnector: true,
|
15374
15405
|
//y: 0
|
15375
15406
|
},
|
15376
|
-
ignoreHiddenPoint: true,
|
15407
|
+
ignoreHiddenPoint: true,
|
15377
15408
|
//innerSize: 0,
|
15378
15409
|
legendType: 'point',
|
15379
15410
|
marker: null, // point options are specified in the base options
|
15380
|
-
size: null
|
15411
|
+
size: null,
|
15381
15412
|
showInLegend: false,
|
15382
15413
|
slicedOffset: 10,
|
15383
15414
|
states: {
|
@@ -15386,9 +15417,9 @@ defaultPlotOptions.pie = merge(defaultSeriesOptions, {
|
|
15386
15417
|
shadow: false
|
15387
15418
|
}
|
15388
15419
|
},
|
15389
|
-
stickyTracking: false,
|
15420
|
+
stickyTracking: false,
|
15390
15421
|
tooltip: {
|
15391
|
-
followPointer: true
|
15422
|
+
followPointer: true
|
15392
15423
|
}
|
15393
15424
|
});
|
15394
15425
|
|
@@ -15573,7 +15604,8 @@ var PieSeries = {
|
|
15573
15604
|
|
15574
15605
|
var options = this.options,
|
15575
15606
|
chart = this.chart,
|
15576
|
-
slicingRoom = 2 * (options.
|
15607
|
+
slicingRoom = 2 * (options.slicedOffset || 0),
|
15608
|
+
handleSlicingRoom,
|
15577
15609
|
plotWidth = chart.plotWidth - 2 * slicingRoom,
|
15578
15610
|
plotHeight = chart.plotHeight - 2 * slicingRoom,
|
15579
15611
|
centerOption = options.center,
|
@@ -15583,6 +15615,7 @@ var PieSeries = {
|
|
15583
15615
|
|
15584
15616
|
return map(positions, function (length, i) {
|
15585
15617
|
isPercent = /%$/.test(length);
|
15618
|
+
handleSlicingRoom = i < 2 || (i === 2 && isPercent);
|
15586
15619
|
return (isPercent ?
|
15587
15620
|
// i == 0: centerX, relative to width
|
15588
15621
|
// i == 1: centerY, relative to height
|
@@ -15590,7 +15623,7 @@ var PieSeries = {
|
|
15590
15623
|
// i == 4: innerSize, relative to smallestSize
|
15591
15624
|
[plotWidth, plotHeight, smallestSize, smallestSize][i] *
|
15592
15625
|
pInt(length) / 100 :
|
15593
|
-
length) + (
|
15626
|
+
length) + (handleSlicingRoom ? slicingRoom : 0);
|
15594
15627
|
});
|
15595
15628
|
},
|
15596
15629
|
|
@@ -15691,6 +15724,7 @@ var PieSeries = {
|
|
15691
15724
|
point.angle = angle;
|
15692
15725
|
|
15693
15726
|
// set the anchor point for data labels
|
15727
|
+
connectorOffset = mathMin(connectorOffset, labelDistance / 2); // #1678
|
15694
15728
|
point.labelPos = [
|
15695
15729
|
positions[0] + radiusX + mathCos(angle) * labelDistance, // first break of connector
|
15696
15730
|
positions[1] + radiusY + mathSin(angle) * labelDistance, // a/a
|
@@ -16099,7 +16133,7 @@ var PieSeries = {
|
|
16099
16133
|
|
16100
16134
|
// Handle horizontal size and center
|
16101
16135
|
if (centerOption[0] !== null) { // Fixed center
|
16102
|
-
newSize = mathMax(center[2] - mathMax(overflow[1], overflow[3]), minSize);
|
16136
|
+
newSize = mathMax(center[2] - mathMax(overflow[1], overflow[3]), minSize);
|
16103
16137
|
|
16104
16138
|
} else { // Auto center
|
16105
16139
|
newSize = mathMax(
|
@@ -16111,7 +16145,7 @@ var PieSeries = {
|
|
16111
16145
|
|
16112
16146
|
// Handle vertical size and center
|
16113
16147
|
if (centerOption[1] !== null) { // Fixed center
|
16114
|
-
newSize = mathMax(mathMin(newSize, center[2] - mathMax(overflow[0], overflow[2])), minSize);
|
16148
|
+
newSize = mathMax(mathMin(newSize, center[2] - mathMax(overflow[0], overflow[2])), minSize);
|
16115
16149
|
|
16116
16150
|
} else { // Auto center
|
16117
16151
|
newSize = mathMax(
|