highcharts-rails 5.0.12 → 5.0.13
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 +59 -0
- data/app/assets/javascripts/highcharts.js +6250 -788
- data/app/assets/javascripts/highcharts/highcharts-3d.js +210 -25
- data/app/assets/javascripts/highcharts/highcharts-more.js +908 -22
- data/app/assets/javascripts/highcharts/modules/accessibility.js +272 -64
- data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
- data/app/assets/javascripts/highcharts/modules/boost.js +89 -66
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +65 -4
- data/app/assets/javascripts/highcharts/modules/data.js +1 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +234 -17
- data/app/assets/javascripts/highcharts/modules/exporting.js +508 -69
- data/app/assets/javascripts/highcharts/modules/funnel.js +129 -8
- data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
- data/app/assets/javascripts/highcharts/modules/heatmap.js +361 -44
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +64 -1
- data/app/assets/javascripts/highcharts/modules/offline-exporting.js +44 -44
- data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +26 -3
- data/app/assets/javascripts/highcharts/modules/series-label.js +19 -1
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +14 -5
- data/app/assets/javascripts/highcharts/modules/stock.js +1122 -86
- data/app/assets/javascripts/highcharts/modules/treemap.js +265 -43
- data/app/assets/javascripts/highcharts/modules/xrange-series.js +1 -1
- data/lib/highcharts/version.rb +1 -1
- metadata +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v5.0.
|
2
|
+
* @license Highcharts JS v5.0.13 (2017-07-27)
|
3
3
|
*
|
4
4
|
* 3D features for Highcharts JS
|
5
5
|
*
|
@@ -410,8 +410,11 @@
|
|
410
410
|
this.side.attr({
|
411
411
|
fill: color(fill).brighten(-0.1).get()
|
412
412
|
});
|
413
|
-
|
414
413
|
this.color = fill;
|
414
|
+
|
415
|
+
// for animation getter (#6776)
|
416
|
+
result.fill = fill;
|
417
|
+
|
415
418
|
return this;
|
416
419
|
};
|
417
420
|
|
@@ -429,7 +432,7 @@
|
|
429
432
|
return this;
|
430
433
|
};
|
431
434
|
|
432
|
-
result.attr = function(args, val) {
|
435
|
+
result.attr = function(args, val, complete, continueAnimation) {
|
433
436
|
|
434
437
|
// Resolve setting attributes by string name
|
435
438
|
if (typeof args === 'string' && typeof val !== 'undefined') {
|
@@ -451,7 +454,10 @@
|
|
451
454
|
d: paths[2]
|
452
455
|
});
|
453
456
|
} else {
|
454
|
-
|
457
|
+
// getter returns value
|
458
|
+
return SVGElement.prototype.attr.call(
|
459
|
+
this, args, undefined, complete, continueAnimation
|
460
|
+
);
|
455
461
|
}
|
456
462
|
|
457
463
|
return this;
|
@@ -703,11 +709,23 @@
|
|
703
709
|
// relates to neighbour elements as well
|
704
710
|
each(['out', 'inn', 'side1', 'side2'], function(face) {
|
705
711
|
wrapper[face]
|
706
|
-
.
|
712
|
+
.attr({
|
713
|
+
'class': className + ' highcharts-3d-side'
|
714
|
+
})
|
707
715
|
.add(parent);
|
708
716
|
});
|
709
717
|
};
|
710
718
|
|
719
|
+
// Cascade to faces
|
720
|
+
each(['addClass', 'removeClass'], function(fn) {
|
721
|
+
wrapper[fn] = function() {
|
722
|
+
var args = arguments;
|
723
|
+
each(['top', 'out', 'inn', 'side1', 'side2'], function(face) {
|
724
|
+
wrapper[face][fn].apply(wrapper[face], args);
|
725
|
+
});
|
726
|
+
};
|
727
|
+
});
|
728
|
+
|
711
729
|
/**
|
712
730
|
* Compute the transformed paths and set them to the composite shapes
|
713
731
|
*/
|
@@ -1183,29 +1201,168 @@
|
|
1183
1201
|
});
|
1184
1202
|
|
1185
1203
|
var defaultOptions = H.getOptions();
|
1186
|
-
|
1204
|
+
|
1205
|
+
/**
|
1206
|
+
* Options to render charts in 3 dimensions.
|
1207
|
+
* This feature requires highcharts-3d.js, found in the download package,
|
1208
|
+
* or online at code.highcharts.com/highcharts-3d.js.
|
1209
|
+
* @optionparent
|
1210
|
+
*/
|
1211
|
+
var extendedOptions = {
|
1212
|
+
|
1213
|
+
/**
|
1214
|
+
* Options regarding the chart area and plot area as well as general
|
1215
|
+
* chart options.
|
1216
|
+
*
|
1217
|
+
* @product highcharts highstock highmaps
|
1218
|
+
*/
|
1187
1219
|
chart: {
|
1220
|
+
|
1221
|
+
/**
|
1222
|
+
* Options to render charts in 3 dimensions. This feature requires
|
1223
|
+
* `highcharts-3d.js`, found in the download package or online at
|
1224
|
+
* [code.highcharts.com/highcharts-3d.js](http://code.highcharts.com/highcharts-
|
1225
|
+
* 3d.js).
|
1226
|
+
*
|
1227
|
+
* @since 4.0
|
1228
|
+
* @product highcharts
|
1229
|
+
*/
|
1188
1230
|
options3d: {
|
1231
|
+
|
1232
|
+
/**
|
1233
|
+
* Wether to render the chart using the 3D functionality.
|
1234
|
+
*
|
1235
|
+
* @type {Boolean}
|
1236
|
+
* @default false
|
1237
|
+
* @since 4.0
|
1238
|
+
* @product highcharts
|
1239
|
+
*/
|
1189
1240
|
enabled: false,
|
1241
|
+
|
1242
|
+
/**
|
1243
|
+
* One of the two rotation angles for the chart.
|
1244
|
+
*
|
1245
|
+
* @type {Number}
|
1246
|
+
* @default 0
|
1247
|
+
* @since 4.0
|
1248
|
+
* @product highcharts
|
1249
|
+
*/
|
1190
1250
|
alpha: 0,
|
1251
|
+
|
1252
|
+
/**
|
1253
|
+
* One of the two rotation angles for the chart.
|
1254
|
+
*
|
1255
|
+
* @type {Number}
|
1256
|
+
* @default 0
|
1257
|
+
* @since 4.0
|
1258
|
+
* @product highcharts
|
1259
|
+
*/
|
1191
1260
|
beta: 0,
|
1261
|
+
|
1262
|
+
/**
|
1263
|
+
* The total depth of the chart.
|
1264
|
+
*
|
1265
|
+
* @type {Number}
|
1266
|
+
* @default 100
|
1267
|
+
* @since 4.0
|
1268
|
+
* @product highcharts
|
1269
|
+
*/
|
1192
1270
|
depth: 100,
|
1271
|
+
|
1272
|
+
/**
|
1273
|
+
* Whether the 3d box should automatically adjust to the chart plot
|
1274
|
+
* area.
|
1275
|
+
*
|
1276
|
+
* @type {Boolean}
|
1277
|
+
* @default true
|
1278
|
+
* @since 4.2.4
|
1279
|
+
* @product highcharts
|
1280
|
+
*/
|
1193
1281
|
fitToPlot: true,
|
1282
|
+
|
1283
|
+
/**
|
1284
|
+
* Defines the distance the viewer is standing in front of the chart,
|
1285
|
+
* this setting is important to calculate the perspective effect
|
1286
|
+
* in column and scatter charts. It is not used for 3D pie charts.
|
1287
|
+
*
|
1288
|
+
* @type {Number}
|
1289
|
+
* @default 100
|
1290
|
+
* @since 4.0
|
1291
|
+
* @product highcharts
|
1292
|
+
*/
|
1194
1293
|
viewDistance: 25,
|
1294
|
+
|
1295
|
+
/**
|
1296
|
+
* Set it to `"auto"` to automatically move the labels to the best
|
1297
|
+
* edge.
|
1298
|
+
*
|
1299
|
+
* @validvalue [null, "auto"]
|
1300
|
+
* @type {String}
|
1301
|
+
* @default null
|
1302
|
+
* @since 5.0.12
|
1303
|
+
* @product highcharts
|
1304
|
+
*/
|
1195
1305
|
axisLabelPosition: 'default',
|
1306
|
+
|
1307
|
+
/**
|
1308
|
+
* Provides the option to draw a frame around the charts by defining
|
1309
|
+
* a bottom, front and back panel.
|
1310
|
+
*
|
1311
|
+
* @since 4.0
|
1312
|
+
* @product highcharts
|
1313
|
+
*/
|
1196
1314
|
frame: {
|
1315
|
+
|
1316
|
+
/**
|
1317
|
+
*/
|
1197
1318
|
visible: 'default',
|
1319
|
+
|
1320
|
+
/**
|
1321
|
+
*/
|
1198
1322
|
size: 1,
|
1323
|
+
|
1324
|
+
/**
|
1325
|
+
* The bottom of the frame around a 3D chart.
|
1326
|
+
*
|
1327
|
+
* @since 4.0
|
1328
|
+
* @product highcharts
|
1329
|
+
*/
|
1199
1330
|
bottom: {},
|
1331
|
+
|
1332
|
+
/**
|
1333
|
+
* The top of the frame around a 3D chart.
|
1334
|
+
*
|
1335
|
+
* @type {Object}
|
1336
|
+
* @since 5.0.12
|
1337
|
+
* @product highcharts
|
1338
|
+
*/
|
1200
1339
|
top: {},
|
1340
|
+
|
1341
|
+
/**
|
1342
|
+
*/
|
1201
1343
|
left: {},
|
1344
|
+
|
1345
|
+
/**
|
1346
|
+
*/
|
1202
1347
|
right: {},
|
1348
|
+
|
1349
|
+
/**
|
1350
|
+
* Defines the back panel of the frame around 3D charts.
|
1351
|
+
*
|
1352
|
+
* @since 4.0
|
1353
|
+
* @product highcharts
|
1354
|
+
*/
|
1203
1355
|
back: {},
|
1356
|
+
|
1357
|
+
/**
|
1358
|
+
*/
|
1204
1359
|
front: {}
|
1205
1360
|
}
|
1206
1361
|
}
|
1207
1362
|
}
|
1208
|
-
}
|
1363
|
+
};
|
1364
|
+
|
1365
|
+
merge(true, defaultOptions, extendedOptions);
|
1209
1366
|
|
1210
1367
|
|
1211
1368
|
|
@@ -2928,18 +3085,16 @@
|
|
2928
3085
|
chart = series.chart,
|
2929
3086
|
seriesOptions = series.options,
|
2930
3087
|
depth = seriesOptions.depth || 25,
|
3088
|
+
stack = seriesOptions.stacking ?
|
3089
|
+
(seriesOptions.stack || 0) :
|
3090
|
+
series.index, // #4743
|
3091
|
+
z = stack * (depth + (seriesOptions.groupZPadding || 1)),
|
2931
3092
|
borderCrisp = series.borderWidth % 2 ? 0.5 : 0;
|
2932
3093
|
|
2933
|
-
if (
|
2934
|
-
(chart.inverted && !series.yAxis.reversed) ||
|
2935
|
-
(!chart.inverted && series.yAxis.reversed)
|
2936
|
-
) {
|
3094
|
+
if (chart.inverted && !series.yAxis.reversed) {
|
2937
3095
|
borderCrisp *= -1;
|
2938
3096
|
}
|
2939
3097
|
|
2940
|
-
var stack = seriesOptions.stacking ? (seriesOptions.stack || 0) : series.index; // #4743
|
2941
|
-
var z = stack * (depth + (seriesOptions.groupZPadding || 1));
|
2942
|
-
|
2943
3098
|
if (seriesOptions.grouping !== false) {
|
2944
3099
|
z = 0;
|
2945
3100
|
}
|
@@ -2955,26 +3110,37 @@
|
|
2955
3110
|
['x', 'width'],
|
2956
3111
|
['y', 'height']
|
2957
3112
|
],
|
2958
|
-
borderlessBase; //
|
3113
|
+
borderlessBase; // Crisped rects can have +/- 0.5 pixels offset.
|
2959
3114
|
|
2960
|
-
// #3131 We need to check if column
|
3115
|
+
// #3131 We need to check if column is inside plotArea.
|
2961
3116
|
each(dimensions, function(d) {
|
2962
3117
|
borderlessBase = shapeArgs[d[0]] - borderCrisp;
|
3118
|
+
if (borderlessBase < 0) {
|
3119
|
+
// If borderLessBase is smaller than 0, it is needed to set
|
3120
|
+
// its value to 0 or 0.5 depending on borderWidth
|
3121
|
+
// borderWidth may be even or odd.
|
3122
|
+
shapeArgs[d[1]] += shapeArgs[d[0]] + borderCrisp;
|
3123
|
+
shapeArgs[d[0]] = -borderCrisp;
|
3124
|
+
borderlessBase = 0;
|
3125
|
+
}
|
3126
|
+
if (
|
3127
|
+
borderlessBase + shapeArgs[d[1]] > series[d[0] + 'Axis'].len &&
|
3128
|
+
shapeArgs[d[1]] !== 0 // Do not change height/width of column if 0.
|
3129
|
+
// #6708
|
3130
|
+
) {
|
3131
|
+
shapeArgs[d[1]] = series[d[0] + 'Axis'].len - shapeArgs[d[0]];
|
3132
|
+
}
|
2963
3133
|
if (
|
2964
|
-
|
2965
|
-
|
3134
|
+
(shapeArgs[d[1]] !== 0) && // Do not remove columns with zero height/width.
|
3135
|
+
(
|
3136
|
+
shapeArgs[d[0]] >= series[d[0] + 'Axis'].len ||
|
3137
|
+
shapeArgs[d[0]] + shapeArgs[d[1]] <= borderCrisp
|
3138
|
+
)
|
2966
3139
|
) {
|
2967
3140
|
for (var key in shapeArgs) { // Set args to 0 if column is outside the chart.
|
2968
3141
|
shapeArgs[key] = 0;
|
2969
3142
|
}
|
2970
3143
|
}
|
2971
|
-
if (borderlessBase < 0) {
|
2972
|
-
shapeArgs[d[1]] += shapeArgs[d[0]];
|
2973
|
-
shapeArgs[d[0]] = 0;
|
2974
|
-
}
|
2975
|
-
if (borderlessBase + shapeArgs[d[1]] > series[d[0] + 'Axis'].len) {
|
2976
|
-
shapeArgs[d[1]] = series[d[0] + 'Axis'].len - shapeArgs[d[0]];
|
2977
|
-
}
|
2978
3144
|
});
|
2979
3145
|
|
2980
3146
|
point.shapeType = 'cuboid';
|
@@ -3157,6 +3323,25 @@
|
|
3157
3323
|
proceed.apply(this, [].slice.call(arguments, 1));
|
3158
3324
|
});
|
3159
3325
|
|
3326
|
+
// Added stackLabels position calculation for 3D charts.
|
3327
|
+
wrap(H.StackItem.prototype, 'getStackBox', function(proceed, chart) { // #3946
|
3328
|
+
var stackBox = proceed.apply(this, [].slice.call(arguments, 1));
|
3329
|
+
|
3330
|
+
// Only do this for 3D chart.
|
3331
|
+
if (chart.is3d()) {
|
3332
|
+
var pos = ({
|
3333
|
+
x: stackBox.x,
|
3334
|
+
y: stackBox.y,
|
3335
|
+
z: 0
|
3336
|
+
});
|
3337
|
+
pos = H.perspective([pos], chart, true)[0];
|
3338
|
+
stackBox.x = pos.x;
|
3339
|
+
stackBox.y = pos.y;
|
3340
|
+
}
|
3341
|
+
|
3342
|
+
return stackBox;
|
3343
|
+
});
|
3344
|
+
|
3160
3345
|
/***
|
3161
3346
|
EXTENSION FOR 3D CYLINDRICAL COLUMNS
|
3162
3347
|
Not supported
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v5.0.
|
2
|
+
* @license Highcharts JS v5.0.13 (2017-07-27)
|
3
3
|
*
|
4
4
|
* (c) 2009-2016 Torstein Honsi
|
5
5
|
*
|
@@ -143,40 +143,156 @@
|
|
143
143
|
|
144
144
|
/**
|
145
145
|
* The default options object
|
146
|
+
* @optionparent pane
|
146
147
|
*/
|
147
148
|
defaultOptions: {
|
148
149
|
// background: {conditional},
|
150
|
+
|
151
|
+
/**
|
152
|
+
* The center of a polar chart or angular gauge, given as an array
|
153
|
+
* of [x, y] positions. Positions can be given as integers that transform
|
154
|
+
* to pixels, or as percentages of the plot area size.
|
155
|
+
*
|
156
|
+
* @type {Array<String|Number>}
|
157
|
+
* @sample {highcharts} highcharts/demo/gauge-vu-meter/ Two gauges with different center
|
158
|
+
* @default ["50%", "50%"]
|
159
|
+
* @since 2.3.0
|
160
|
+
* @product highcharts
|
161
|
+
*/
|
149
162
|
center: ['50%', '50%'],
|
163
|
+
|
164
|
+
/**
|
165
|
+
* The size of the pane, either as a number defining pixels, or a
|
166
|
+
* percentage defining a percentage of the plot are.
|
167
|
+
*
|
168
|
+
* @type {Number|String}
|
169
|
+
* @sample {highcharts} highcharts/demo/gauge-vu-meter/ Smaller size
|
170
|
+
* @default 85%
|
171
|
+
* @product highcharts
|
172
|
+
*/
|
150
173
|
size: '85%',
|
174
|
+
|
175
|
+
/**
|
176
|
+
* The start angle of the polar X axis or gauge axis, given in degrees
|
177
|
+
* where 0 is north. Defaults to 0.
|
178
|
+
*
|
179
|
+
* @type {Number}
|
180
|
+
* @sample {highcharts} highcharts/demo/gauge-vu-meter/ VU-meter with custom start and end angle
|
181
|
+
* @since 2.3.0
|
182
|
+
* @product highcharts
|
183
|
+
*/
|
151
184
|
startAngle: 0
|
152
185
|
//endAngle: startAngle + 360
|
153
186
|
},
|
154
187
|
|
155
188
|
/**
|
156
189
|
* The default background options
|
190
|
+
* @optionparent pane.background
|
157
191
|
*/
|
158
192
|
defaultBackgroundOptions: {
|
159
193
|
//className: 'highcharts-pane',
|
194
|
+
|
195
|
+
/**
|
196
|
+
* Tha shape of the pane background. When `solid`, the background
|
197
|
+
* is circular. When `arc`, the background extends only from the min
|
198
|
+
* to the max of the value axis.
|
199
|
+
*
|
200
|
+
* @validvalue ["solid", "arc"]
|
201
|
+
* @type {String}
|
202
|
+
* @default solid
|
203
|
+
* @since 2.3.0
|
204
|
+
* @product highcharts
|
205
|
+
*/
|
160
206
|
shape: 'circle',
|
161
207
|
|
208
|
+
|
209
|
+
/**
|
210
|
+
* The pixel border width of the pane background.
|
211
|
+
*
|
212
|
+
* @type {Number}
|
213
|
+
* @default 1
|
214
|
+
* @since 2.3.0
|
215
|
+
* @product highcharts
|
216
|
+
*/
|
162
217
|
borderWidth: 1,
|
218
|
+
|
219
|
+
/**
|
220
|
+
* The pane background border color.
|
221
|
+
*
|
222
|
+
* @type {Color}
|
223
|
+
* @default #cccccc
|
224
|
+
* @since 2.3.0
|
225
|
+
* @product highcharts
|
226
|
+
*/
|
163
227
|
borderColor: '#cccccc',
|
228
|
+
|
229
|
+
/**
|
230
|
+
* The background color or gradient for the pane.
|
231
|
+
*
|
232
|
+
* @type {Color}
|
233
|
+
* @since 2.3.0
|
234
|
+
* @product highcharts
|
235
|
+
*/
|
164
236
|
backgroundColor: {
|
237
|
+
|
238
|
+
/**
|
239
|
+
*/
|
240
|
+
|
241
|
+
/**
|
242
|
+
*/
|
243
|
+
|
244
|
+
/**
|
245
|
+
*/
|
246
|
+
|
247
|
+
/**
|
248
|
+
*/
|
249
|
+
|
250
|
+
/**
|
251
|
+
*/
|
165
252
|
linearGradient: {
|
166
253
|
x1: 0,
|
167
254
|
y1: 0,
|
168
255
|
x2: 0,
|
169
256
|
y2: 1
|
170
257
|
},
|
258
|
+
|
259
|
+
/**
|
260
|
+
*/
|
171
261
|
stops: [
|
172
262
|
[0, '#ffffff'],
|
173
263
|
[1, '#e6e6e6']
|
174
264
|
]
|
175
265
|
},
|
176
266
|
|
267
|
+
|
268
|
+
/**
|
269
|
+
*/
|
177
270
|
from: -Number.MAX_VALUE, // corrected to axis min
|
271
|
+
|
272
|
+
/**
|
273
|
+
* The inner radius of the pane background. Can be either numeric
|
274
|
+
* (pixels) or a percentage string.
|
275
|
+
*
|
276
|
+
* @type {Number|String}
|
277
|
+
* @default 0
|
278
|
+
* @since 2.3.0
|
279
|
+
* @product highcharts
|
280
|
+
*/
|
178
281
|
innerRadius: 0,
|
282
|
+
|
283
|
+
/**
|
284
|
+
*/
|
179
285
|
to: Number.MAX_VALUE, // corrected to axis max
|
286
|
+
|
287
|
+
/**
|
288
|
+
* The outer radius of the circular pane background. Can be either
|
289
|
+
* numeric (pixels) or a percentage string.
|
290
|
+
*
|
291
|
+
* @type {Number|String}
|
292
|
+
* @default 105%
|
293
|
+
* @since 2.3.0
|
294
|
+
* @product highcharts
|
295
|
+
*/
|
180
296
|
outerRadius: '105%'
|
181
297
|
},
|
182
298
|
|
@@ -804,36 +920,129 @@
|
|
804
920
|
var each = H.each,
|
805
921
|
noop = H.noop,
|
806
922
|
pick = H.pick,
|
923
|
+
defined = H.defined,
|
807
924
|
Series = H.Series,
|
808
925
|
seriesType = H.seriesType,
|
809
|
-
seriesTypes = H.seriesTypes
|
810
|
-
|
811
|
-
|
926
|
+
seriesTypes = H.seriesTypes,
|
927
|
+
seriesProto = Series.prototype,
|
928
|
+
pointProto = H.Point.prototype;
|
929
|
+
|
930
|
+
// The arearangeseries series type
|
931
|
+
|
932
|
+
|
933
|
+
/**
|
934
|
+
* @extends plotOptions.area
|
935
|
+
* @optionparent plotOptions.arearange
|
812
936
|
*/
|
813
937
|
seriesType('arearange', 'area', {
|
814
938
|
|
939
|
+
|
940
|
+
/**
|
941
|
+
* Pixel width of the arearange graph line.
|
942
|
+
*
|
943
|
+
* @type {Number}
|
944
|
+
* @default 1
|
945
|
+
* @since 2.3.0
|
946
|
+
* @product highcharts highstock
|
947
|
+
*/
|
815
948
|
lineWidth: 1,
|
816
949
|
|
817
|
-
|
950
|
+
|
951
|
+
/**
|
952
|
+
*/
|
818
953
|
threshold: null,
|
954
|
+
|
955
|
+
/**
|
956
|
+
*/
|
819
957
|
tooltip: {
|
820
958
|
|
959
|
+
|
960
|
+
/**
|
961
|
+
*/
|
821
962
|
pointFormat: '<span style="color:{series.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>' // eslint-disable-line no-dupe-keys
|
822
963
|
|
823
964
|
},
|
965
|
+
|
966
|
+
/**
|
967
|
+
* Whether the whole area or just the line should respond to mouseover
|
968
|
+
* tooltips and other mouse or touch events.
|
969
|
+
*
|
970
|
+
* @type {Boolean}
|
971
|
+
* @default true
|
972
|
+
* @since 2.3.0
|
973
|
+
* @product highcharts highstock
|
974
|
+
*/
|
824
975
|
trackByArea: true,
|
976
|
+
|
977
|
+
/**
|
978
|
+
* Extended data labels for range series types. Range series data labels
|
979
|
+
* have no `x` and `y` options. Instead, they have `xLow`, `xHigh`,
|
980
|
+
* `yLow` and `yHigh` options to allow the higher and lower data label
|
981
|
+
* sets individually.
|
982
|
+
*
|
983
|
+
* @type {Object}
|
984
|
+
* @extends plotOptions.series.dataLabels
|
985
|
+
* @excluding x,y
|
986
|
+
* @since 2.3.0
|
987
|
+
* @product highcharts highstock
|
988
|
+
*/
|
825
989
|
dataLabels: {
|
990
|
+
|
991
|
+
/**
|
992
|
+
*/
|
826
993
|
align: null,
|
994
|
+
|
995
|
+
/**
|
996
|
+
*/
|
827
997
|
verticalAlign: null,
|
998
|
+
|
999
|
+
/**
|
1000
|
+
* X offset of the lower data labels relative to the point value.
|
1001
|
+
*
|
1002
|
+
* @type {Number}
|
1003
|
+
* @sample {highcharts} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1004
|
+
* @sample {highstock} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1005
|
+
* @default 0
|
1006
|
+
* @since 2.3.0
|
1007
|
+
* @product highcharts highstock
|
1008
|
+
*/
|
828
1009
|
xLow: 0,
|
1010
|
+
|
1011
|
+
/**
|
1012
|
+
* X offset of the higher data labels relative to the point value.
|
1013
|
+
*
|
1014
|
+
* @type {Number}
|
1015
|
+
* @sample {highcharts} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1016
|
+
* @sample {highstock} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1017
|
+
* @default 0
|
1018
|
+
* @since 2.3.0
|
1019
|
+
* @product highcharts highstock
|
1020
|
+
*/
|
829
1021
|
xHigh: 0,
|
1022
|
+
|
1023
|
+
/**
|
1024
|
+
* Y offset of the lower data labels relative to the point value.
|
1025
|
+
*
|
1026
|
+
* @type {Number}
|
1027
|
+
* @sample {highcharts} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1028
|
+
* @sample {highstock} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1029
|
+
* @default 16
|
1030
|
+
* @since 2.3.0
|
1031
|
+
* @product highcharts highstock
|
1032
|
+
*/
|
830
1033
|
yLow: 0,
|
1034
|
+
|
1035
|
+
/**
|
1036
|
+
* Y offset of the higher data labels relative to the point value.
|
1037
|
+
*
|
1038
|
+
* @type {Number}
|
1039
|
+
* @sample {highcharts} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1040
|
+
* @sample {highstock} highcharts/plotoptions/arearange-datalabels/ Data labels on range series
|
1041
|
+
* @default -6
|
1042
|
+
* @since 2.3.0
|
1043
|
+
* @product highcharts highstock
|
1044
|
+
*/
|
831
1045
|
yHigh: 0
|
832
|
-
},
|
833
|
-
states: {
|
834
|
-
hover: {
|
835
|
-
halo: false
|
836
|
-
}
|
837
1046
|
}
|
838
1047
|
|
839
1048
|
// Prototype members
|
@@ -857,6 +1066,7 @@
|
|
857
1066
|
xy = this.xAxis.postTranslate(point.rectPlotX, this.yAxis.len - point.plotHigh);
|
858
1067
|
point.plotHighX = xy.x - chart.plotLeft;
|
859
1068
|
point.plotHigh = xy.y - chart.plotTop;
|
1069
|
+
point.plotLowX = point.plotX;
|
860
1070
|
},
|
861
1071
|
|
862
1072
|
/**
|
@@ -878,6 +1088,7 @@
|
|
878
1088
|
|
879
1089
|
if (high === null || low === null) {
|
880
1090
|
point.isNull = true;
|
1091
|
+
point.plotY = null;
|
881
1092
|
} else {
|
882
1093
|
point.plotLow = plotY;
|
883
1094
|
point.plotHigh = yAxis.translate(
|
@@ -897,6 +1108,10 @@
|
|
897
1108
|
if (this.chart.polar) {
|
898
1109
|
each(this.points, function(point) {
|
899
1110
|
series.highToXY(point);
|
1111
|
+
point.tooltipPos = [
|
1112
|
+
(point.plotHighX + point.plotLowX) / 2,
|
1113
|
+
(point.plotHigh + point.plotLow) / 2
|
1114
|
+
];
|
900
1115
|
});
|
901
1116
|
}
|
902
1117
|
},
|
@@ -1015,7 +1230,6 @@
|
|
1015
1230
|
length = data.length,
|
1016
1231
|
i,
|
1017
1232
|
originalDataLabels = [],
|
1018
|
-
seriesProto = Series.prototype,
|
1019
1233
|
dataLabelOptions = this.options.dataLabels,
|
1020
1234
|
align = dataLabelOptions.align,
|
1021
1235
|
verticalAlign = dataLabelOptions.verticalAlign,
|
@@ -1109,11 +1323,123 @@
|
|
1109
1323
|
seriesTypes.column.prototype.alignDataLabel.apply(this, arguments);
|
1110
1324
|
},
|
1111
1325
|
|
1112
|
-
|
1326
|
+
drawPoints: function() {
|
1327
|
+
var series = this,
|
1328
|
+
pointLength = series.points.length,
|
1329
|
+
point,
|
1330
|
+
i;
|
1331
|
+
|
1332
|
+
// Draw bottom points
|
1333
|
+
seriesProto.drawPoints.apply(series, arguments);
|
1334
|
+
|
1335
|
+
i = 0;
|
1336
|
+
while (i < pointLength) {
|
1337
|
+
point = series.points[i];
|
1338
|
+
point.lowerGraphic = point.graphic;
|
1339
|
+
point.graphic = point.upperGraphic;
|
1340
|
+
point._plotY = point.plotY;
|
1341
|
+
point._plotX = point.plotX;
|
1342
|
+
point.plotY = point.plotHigh;
|
1343
|
+
if (defined(point.plotHighX)) {
|
1344
|
+
point.plotX = point.plotHighX;
|
1345
|
+
}
|
1346
|
+
i++;
|
1347
|
+
}
|
1348
|
+
|
1349
|
+
// Draw top points
|
1350
|
+
seriesProto.drawPoints.apply(series, arguments);
|
1351
|
+
|
1352
|
+
i = 0;
|
1353
|
+
while (i < pointLength) {
|
1354
|
+
point = series.points[i];
|
1355
|
+
point.upperGraphic = point.graphic;
|
1356
|
+
point.graphic = point.lowerGraphic;
|
1357
|
+
point.plotY = point._plotY;
|
1358
|
+
point.plotX = point._plotX;
|
1359
|
+
i++;
|
1360
|
+
}
|
1361
|
+
},
|
1362
|
+
|
1363
|
+
setStackedPoints: noop
|
1364
|
+
}, {
|
1365
|
+
setState: function() {
|
1366
|
+
var prevState = this.state,
|
1367
|
+
series = this.series,
|
1368
|
+
isPolar = series.chart.polar;
|
1113
1369
|
|
1114
|
-
getSymbol: noop,
|
1115
1370
|
|
1116
|
-
|
1371
|
+
if (!defined(this.plotHigh)) {
|
1372
|
+
// Boost doesn't calculate plotHigh
|
1373
|
+
this.plotHigh = series.yAxis.toPixels(this.high, true);
|
1374
|
+
}
|
1375
|
+
|
1376
|
+
if (!defined(this.plotLow)) {
|
1377
|
+
// Boost doesn't calculate plotLow
|
1378
|
+
this.plotLow = this.plotY = series.yAxis.toPixels(this.low, true);
|
1379
|
+
}
|
1380
|
+
|
1381
|
+
// Bottom state:
|
1382
|
+
pointProto.setState.apply(this, arguments);
|
1383
|
+
|
1384
|
+
// Change state also for the top marker
|
1385
|
+
this.graphic = this.upperGraphic;
|
1386
|
+
this.plotY = this.plotHigh;
|
1387
|
+
|
1388
|
+
if (isPolar) {
|
1389
|
+
this.plotX = this.plotHighX;
|
1390
|
+
}
|
1391
|
+
|
1392
|
+
this.state = prevState;
|
1393
|
+
|
1394
|
+
if (series.stateMarkerGraphic) {
|
1395
|
+
series.lowerStateMarkerGraphic = series.stateMarkerGraphic;
|
1396
|
+
series.stateMarkerGraphic = series.upperStateMarkerGraphic;
|
1397
|
+
}
|
1398
|
+
|
1399
|
+
pointProto.setState.apply(this, arguments);
|
1400
|
+
|
1401
|
+
// Now restore defaults
|
1402
|
+
this.plotY = this.plotLow;
|
1403
|
+
this.graphic = this.lowerGraphic;
|
1404
|
+
|
1405
|
+
if (isPolar) {
|
1406
|
+
this.plotX = this.plotLowX;
|
1407
|
+
}
|
1408
|
+
|
1409
|
+
if (series.stateMarkerGraphic) {
|
1410
|
+
series.upperStateMarkerGraphic = series.stateMarkerGraphic;
|
1411
|
+
series.stateMarkerGraphic = series.lowerStateMarkerGraphic;
|
1412
|
+
}
|
1413
|
+
},
|
1414
|
+
haloPath: function() {
|
1415
|
+
var isPolar = this.series.chart.polar,
|
1416
|
+
path = [];
|
1417
|
+
|
1418
|
+
// Bottom halo
|
1419
|
+
this.plotY = this.plotLow;
|
1420
|
+
if (isPolar) {
|
1421
|
+
this.plotX = this.plotLowX;
|
1422
|
+
}
|
1423
|
+
|
1424
|
+
path = pointProto.haloPath.apply(this, arguments);
|
1425
|
+
|
1426
|
+
// Top halo
|
1427
|
+
this.plotY = this.plotHigh;
|
1428
|
+
if (isPolar) {
|
1429
|
+
this.plotX = this.plotHighX;
|
1430
|
+
}
|
1431
|
+
path = path.concat(
|
1432
|
+
pointProto.haloPath.apply(this, arguments)
|
1433
|
+
);
|
1434
|
+
|
1435
|
+
return path;
|
1436
|
+
},
|
1437
|
+
destroy: function() {
|
1438
|
+
if (this.upperGraphic) {
|
1439
|
+
this.upperGraphic = this.upperGraphic.destroy();
|
1440
|
+
}
|
1441
|
+
return pointProto.destroy.apply(this, arguments);
|
1442
|
+
}
|
1117
1443
|
});
|
1118
1444
|
|
1119
1445
|
}(Highcharts));
|
@@ -1150,16 +1476,47 @@
|
|
1150
1476
|
seriesTypes = H.seriesTypes;
|
1151
1477
|
|
1152
1478
|
var colProto = seriesTypes.column.prototype;
|
1479
|
+
/**
|
1480
|
+
* @extends {plotOptions.arearange}
|
1481
|
+
* @optionparent plotOptions.columrange
|
1482
|
+
*/
|
1483
|
+
var columnRangeOptions = {
|
1484
|
+
|
1485
|
+
/**
|
1486
|
+
*/
|
1487
|
+
lineWidth: 1,
|
1488
|
+
|
1489
|
+
/**
|
1490
|
+
*/
|
1491
|
+
pointRange: null,
|
1492
|
+
|
1493
|
+
/**
|
1494
|
+
*/
|
1495
|
+
marker: null,
|
1496
|
+
|
1497
|
+
/**
|
1498
|
+
*/
|
1499
|
+
states: {
|
1500
|
+
|
1501
|
+
/**
|
1502
|
+
*/
|
1503
|
+
hover: {
|
1153
1504
|
|
1505
|
+
/**
|
1506
|
+
*/
|
1507
|
+
halo: false
|
1508
|
+
}
|
1509
|
+
}
|
1510
|
+
};
|
1154
1511
|
/**
|
1155
1512
|
* The ColumnRangeSeries class
|
1156
1513
|
*/
|
1157
|
-
seriesType('columnrange', 'arearange', merge(
|
1158
|
-
|
1159
|
-
|
1514
|
+
seriesType('columnrange', 'arearange', merge(
|
1515
|
+
defaultPlotOptions.column,
|
1516
|
+
defaultPlotOptions.arearange,
|
1517
|
+
columnRangeOptions
|
1160
1518
|
|
1161
|
-
|
1162
|
-
}), {
|
1519
|
+
), {
|
1163
1520
|
/**
|
1164
1521
|
* Translate data points from raw values x and y to plotX and plotY
|
1165
1522
|
*/
|
@@ -1171,8 +1528,17 @@
|
|
1171
1528
|
start,
|
1172
1529
|
chart = series.chart,
|
1173
1530
|
isRadial = series.xAxis.isRadial,
|
1531
|
+
safeDistance = Math.max(chart.chartWidth, chart.chartHeight) + 999,
|
1174
1532
|
plotHigh;
|
1175
1533
|
|
1534
|
+
// Don't draw too far outside plot area (#6835)
|
1535
|
+
function safeBounds(pixelPos) {
|
1536
|
+
return Math.min(Math.max(-safeDistance,
|
1537
|
+
pixelPos
|
1538
|
+
), safeDistance);
|
1539
|
+
}
|
1540
|
+
|
1541
|
+
|
1176
1542
|
colProto.translate.apply(series);
|
1177
1543
|
|
1178
1544
|
// Set plotLow and plotHigh
|
@@ -1183,8 +1549,10 @@
|
|
1183
1549
|
height,
|
1184
1550
|
y;
|
1185
1551
|
|
1186
|
-
point.plotHigh = plotHigh =
|
1187
|
-
|
1552
|
+
point.plotHigh = plotHigh = safeBounds(
|
1553
|
+
yAxis.translate(point.high, 0, 1, 0, 1)
|
1554
|
+
);
|
1555
|
+
point.plotLow = safeBounds(point.plotY);
|
1188
1556
|
|
1189
1557
|
// adjust shape
|
1190
1558
|
y = plotHigh;
|
@@ -1210,6 +1578,7 @@
|
|
1210
1578
|
d: series.polarArc(y + height, y, start, start + point.pointWidth)
|
1211
1579
|
};
|
1212
1580
|
} else {
|
1581
|
+
|
1213
1582
|
shapeArgs.height = height;
|
1214
1583
|
shapeArgs.y = y;
|
1215
1584
|
|
@@ -1230,6 +1599,7 @@
|
|
1230
1599
|
directTouch: true,
|
1231
1600
|
trackerGroups: ['group', 'dataLabelsGroup'],
|
1232
1601
|
drawGraph: noop,
|
1602
|
+
getSymbol: noop,
|
1233
1603
|
crispCol: colProto.crispCol,
|
1234
1604
|
drawPoints: colProto.drawPoints,
|
1235
1605
|
drawTracker: colProto.drawTracker,
|
@@ -1241,6 +1611,8 @@
|
|
1241
1611
|
return colProto.polarArc.apply(this, arguments);
|
1242
1612
|
},
|
1243
1613
|
pointAttribs: colProto.pointAttribs
|
1614
|
+
}, {
|
1615
|
+
setState: colProto.pointClass.prototype.setState
|
1244
1616
|
});
|
1245
1617
|
|
1246
1618
|
}(Highcharts));
|
@@ -1259,24 +1631,120 @@
|
|
1259
1631
|
Series = H.Series,
|
1260
1632
|
seriesType = H.seriesType,
|
1261
1633
|
TrackerMixin = H.TrackerMixin;
|
1262
|
-
|
1634
|
+
|
1635
|
+
|
1636
|
+
/**
|
1263
1637
|
* The GaugeSeries class
|
1638
|
+
* @extends {plotOptions.line}
|
1639
|
+
* @optionparent plotOptions.gauge
|
1264
1640
|
*/
|
1265
1641
|
seriesType('gauge', 'line', {
|
1642
|
+
|
1643
|
+
/**
|
1644
|
+
* Data labels for the gauge. For gauges, the data labels are enabled
|
1645
|
+
* by default and shown in a bordered box below the point.
|
1646
|
+
*
|
1647
|
+
* @type {Object}
|
1648
|
+
* @extends plotOptions.series.dataLabels
|
1649
|
+
* @since 2.3.0
|
1650
|
+
* @product highcharts
|
1651
|
+
*/
|
1266
1652
|
dataLabels: {
|
1653
|
+
|
1654
|
+
/**
|
1655
|
+
* Enable or disable the data labels.
|
1656
|
+
*
|
1657
|
+
* @type {Boolean}
|
1658
|
+
* @since 2.3.0
|
1659
|
+
* @product highcharts highmaps
|
1660
|
+
*/
|
1267
1661
|
enabled: true,
|
1662
|
+
|
1663
|
+
/**
|
1664
|
+
*/
|
1268
1665
|
defer: false,
|
1666
|
+
|
1667
|
+
/**
|
1668
|
+
* The y position offset of the label relative to the center of the
|
1669
|
+
* gauge.
|
1670
|
+
*
|
1671
|
+
* @type {Number}
|
1672
|
+
* @default 15
|
1673
|
+
* @since 2.3.0
|
1674
|
+
* @product highcharts highmaps
|
1675
|
+
*/
|
1269
1676
|
y: 15,
|
1677
|
+
|
1678
|
+
/**
|
1679
|
+
* The border radius in pixels for the gauge's data label.
|
1680
|
+
*
|
1681
|
+
* @type {Number}
|
1682
|
+
* @default 3
|
1683
|
+
* @since 2.3.0
|
1684
|
+
* @product highcharts highmaps
|
1685
|
+
*/
|
1270
1686
|
borderRadius: 3,
|
1687
|
+
|
1688
|
+
/**
|
1689
|
+
*/
|
1271
1690
|
crop: false,
|
1691
|
+
|
1692
|
+
/**
|
1693
|
+
* The vertical alignment of the data label.
|
1694
|
+
*
|
1695
|
+
* @type {String}
|
1696
|
+
* @default top
|
1697
|
+
* @product highcharts highmaps
|
1698
|
+
*/
|
1272
1699
|
verticalAlign: 'top',
|
1700
|
+
|
1701
|
+
/**
|
1702
|
+
* The Z index of the data labels. A value of 2 display them behind
|
1703
|
+
* the dial.
|
1704
|
+
*
|
1705
|
+
* @type {Number}
|
1706
|
+
* @default 2
|
1707
|
+
* @since 2.1.5
|
1708
|
+
* @product highcharts highmaps
|
1709
|
+
*/
|
1273
1710
|
zIndex: 2,
|
1274
1711
|
|
1275
1712
|
// Presentational
|
1713
|
+
|
1714
|
+
/**
|
1715
|
+
* The border width in pixels for the gauge data label.
|
1716
|
+
*
|
1717
|
+
* @type {Number}
|
1718
|
+
* @default 1
|
1719
|
+
* @since 2.3.0
|
1720
|
+
* @product highcharts highmaps
|
1721
|
+
*/
|
1276
1722
|
borderWidth: 1,
|
1723
|
+
|
1724
|
+
/**
|
1725
|
+
* The border color for the data label.
|
1726
|
+
*
|
1727
|
+
* @type {Color}
|
1728
|
+
* @default #cccccc
|
1729
|
+
* @since 2.3.0
|
1730
|
+
* @product highcharts highmaps
|
1731
|
+
*/
|
1277
1732
|
borderColor: '#cccccc'
|
1278
1733
|
|
1279
1734
|
},
|
1735
|
+
|
1736
|
+
/**
|
1737
|
+
* Options for the dial or arrow pointer of the gauge.
|
1738
|
+
*
|
1739
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
1740
|
+
* style/style-by-css), the dial is styled with the `.highcharts-gauge-
|
1741
|
+
* series .highcharts-dial` rule.
|
1742
|
+
*
|
1743
|
+
* @type {Object}
|
1744
|
+
* @sample {highcharts} highcharts/css/gauge/ Styled mode
|
1745
|
+
* @since 2.3.0
|
1746
|
+
* @product highcharts
|
1747
|
+
*/
|
1280
1748
|
dial: {
|
1281
1749
|
// radius: '80%',
|
1282
1750
|
// baseWidth: 3,
|
@@ -1290,6 +1758,19 @@
|
|
1290
1758
|
|
1291
1759
|
|
1292
1760
|
},
|
1761
|
+
|
1762
|
+
/**
|
1763
|
+
* Options for the pivot or the center point of the gauge.
|
1764
|
+
*
|
1765
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
1766
|
+
* style/style-by-css), the pivot is styled with the `.highcharts-gauge-
|
1767
|
+
* series .highcharts-pivot` rule.
|
1768
|
+
*
|
1769
|
+
* @type {Object}
|
1770
|
+
* @sample {highcharts} highcharts/css/gauge/ Styled mode
|
1771
|
+
* @since 2.3.0
|
1772
|
+
* @product highcharts
|
1773
|
+
*/
|
1293
1774
|
pivot: {
|
1294
1775
|
//radius: 5,
|
1295
1776
|
|
@@ -1298,9 +1779,24 @@
|
|
1298
1779
|
//backgroundColor: '#000000'
|
1299
1780
|
|
1300
1781
|
},
|
1782
|
+
|
1783
|
+
/**
|
1784
|
+
*/
|
1301
1785
|
tooltip: {
|
1786
|
+
|
1787
|
+
/**
|
1788
|
+
*/
|
1302
1789
|
headerFormat: ''
|
1303
1790
|
},
|
1791
|
+
|
1792
|
+
/**
|
1793
|
+
* Whether to display this particular series or series type in the
|
1794
|
+
* legend. Defaults to false for gauge series.
|
1795
|
+
*
|
1796
|
+
* @type {Boolean}
|
1797
|
+
* @since 2.3.0
|
1798
|
+
* @product highcharts
|
1799
|
+
*/
|
1304
1800
|
showInLegend: false
|
1305
1801
|
|
1306
1802
|
// Prototype members
|
@@ -1526,10 +2022,24 @@
|
|
1526
2022
|
* @constructor seriesTypes.boxplot
|
1527
2023
|
* @augments seriesTypes.column
|
1528
2024
|
*/
|
2025
|
+
|
2026
|
+
/**
|
2027
|
+
* @extends {plotOptions.column}
|
2028
|
+
* @optionparent plotOptions.boxplot
|
2029
|
+
*/
|
1529
2030
|
seriesType('boxplot', 'column', {
|
2031
|
+
|
2032
|
+
/**
|
2033
|
+
*/
|
1530
2034
|
threshold: null,
|
2035
|
+
|
2036
|
+
/**
|
2037
|
+
*/
|
1531
2038
|
tooltip: {
|
1532
2039
|
|
2040
|
+
|
2041
|
+
/**
|
2042
|
+
*/
|
1533
2043
|
pointFormat: '<span style="color:{point.color}">\u25CF</span> <b> {series.name}</b><br/>' + // eslint-disable-line no-dupe-keys
|
1534
2044
|
'Maximum: {point.high}<br/>' +
|
1535
2045
|
'Upper quartile: {point.q3}<br/>' +
|
@@ -1538,14 +2048,77 @@
|
|
1538
2048
|
'Minimum: {point.low}<br/>'
|
1539
2049
|
|
1540
2050
|
},
|
2051
|
+
|
2052
|
+
/**
|
2053
|
+
* The length of the whiskers, the horizontal lines marking low and
|
2054
|
+
* high values. It can be a numerical pixel value, or a percentage
|
2055
|
+
* value of the box width. Set `0` to disable whiskers.
|
2056
|
+
*
|
2057
|
+
* @type {Number|String}
|
2058
|
+
* @sample {highcharts} highcharts/plotoptions/box-plot-styling/ True by default
|
2059
|
+
* @default 50%
|
2060
|
+
* @since 3.0
|
2061
|
+
* @product highcharts
|
2062
|
+
*/
|
1541
2063
|
whiskerLength: '50%',
|
1542
2064
|
|
2065
|
+
|
2066
|
+
/**
|
2067
|
+
* The fill color of the box.
|
2068
|
+
*
|
2069
|
+
* @type {Color}
|
2070
|
+
* @see In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2071
|
+
* style/style-by-css), the fill color can be set with the `.highcharts-
|
2072
|
+
* boxplot-box` class.
|
2073
|
+
* @sample {highcharts} highcharts/plotoptions/box-plot-styling/ Box plot styling
|
2074
|
+
* @default #ffffff
|
2075
|
+
* @since 3.0
|
2076
|
+
* @product highcharts
|
2077
|
+
*/
|
1543
2078
|
fillColor: '#ffffff',
|
2079
|
+
|
2080
|
+
/**
|
2081
|
+
* The width of the line surrounding the box. If any of [stemWidth](#plotOptions.
|
2082
|
+
* boxplot.stemWidth), [medianWidth](#plotOptions.boxplot.medianWidth)
|
2083
|
+
* or [whiskerWidth](#plotOptions.boxplot.whiskerWidth) are `null`,
|
2084
|
+
* the lineWidth also applies to these lines.
|
2085
|
+
*
|
2086
|
+
* @type {Number}
|
2087
|
+
* @sample {highcharts} highcharts/plotoptions/box-plot-styling/ Box plot styling
|
2088
|
+
* @sample {highcharts} highcharts/plotoptions/error-bar-styling/ Error bar styling
|
2089
|
+
* @default 1
|
2090
|
+
* @since 3.0
|
2091
|
+
* @product highcharts
|
2092
|
+
*/
|
1544
2093
|
lineWidth: 1,
|
1545
2094
|
//medianColor: null,
|
2095
|
+
|
2096
|
+
/**
|
2097
|
+
* The pixel width of the median line. If `null`, the [lineWidth](#plotOptions.
|
2098
|
+
* boxplot.lineWidth) is used.
|
2099
|
+
*
|
2100
|
+
* @type {Number}
|
2101
|
+
* @see In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2102
|
+
* style/style-by-css), the median stroke width can be set with the
|
2103
|
+
* `.highcharts-boxplot-median` class ([view live demo](http://jsfiddle.
|
2104
|
+
* net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/boxplot/)).
|
2105
|
+
* @sample {highcharts} highcharts/plotoptions/box-plot-styling/ Box plot styling
|
2106
|
+
* @default 2
|
2107
|
+
* @since 3.0
|
2108
|
+
* @product highcharts
|
2109
|
+
*/
|
1546
2110
|
medianWidth: 2,
|
2111
|
+
|
2112
|
+
/**
|
2113
|
+
*/
|
1547
2114
|
states: {
|
2115
|
+
|
2116
|
+
/**
|
2117
|
+
*/
|
1548
2118
|
hover: {
|
2119
|
+
|
2120
|
+
/**
|
2121
|
+
*/
|
1549
2122
|
brightness: -0.3
|
1550
2123
|
}
|
1551
2124
|
},
|
@@ -1554,6 +2127,22 @@
|
|
1554
2127
|
//stemWidth: null,
|
1555
2128
|
|
1556
2129
|
//whiskerColor: null,
|
2130
|
+
|
2131
|
+
/**
|
2132
|
+
* The line width of the whiskers, the horizontal lines marking low
|
2133
|
+
* and high values. When `null`, the general [lineWidth](#plotOptions.
|
2134
|
+
* boxplot.lineWidth) applies.
|
2135
|
+
*
|
2136
|
+
* @type {Number}
|
2137
|
+
* @see In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2138
|
+
* style/style-by-css), the whisker stroke width can be set with the
|
2139
|
+
* `.highcharts-boxplot-whisker` class ([view live demo](http://jsfiddle.
|
2140
|
+
* net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/boxplot/)).
|
2141
|
+
* @sample {highcharts} highcharts/plotoptions/box-plot-styling/ Box plot styling
|
2142
|
+
* @default 2
|
2143
|
+
* @since 3.0
|
2144
|
+
* @product highcharts
|
2145
|
+
*/
|
1557
2146
|
whiskerWidth: 2
|
1558
2147
|
|
1559
2148
|
|
@@ -1828,15 +2417,63 @@
|
|
1828
2417
|
/* ****************************************************************************
|
1829
2418
|
* Start error bar series code *
|
1830
2419
|
*****************************************************************************/
|
2420
|
+
|
2421
|
+
/**
|
2422
|
+
* @extends {plotOptions.boxplot}
|
2423
|
+
* @optionparent plotOptions.errorbar
|
2424
|
+
*/
|
1831
2425
|
seriesType('errorbar', 'boxplot', {
|
1832
2426
|
|
2427
|
+
|
2428
|
+
/**
|
2429
|
+
* The main color of the bars. This can be overridden by [stemColor](#plotOptions.
|
2430
|
+
* errorbar.stemColor) and [whiskerColor](#plotOptions.errorbar.whiskerColor)
|
2431
|
+
* individually.
|
2432
|
+
*
|
2433
|
+
* @type {Color}
|
2434
|
+
* @sample {highcharts} highcharts/plotoptions/error-bar-styling/ Error bar styling
|
2435
|
+
* @default #000000
|
2436
|
+
* @since 3.0
|
2437
|
+
* @product highcharts
|
2438
|
+
*/
|
1833
2439
|
color: '#000000',
|
1834
2440
|
|
2441
|
+
|
2442
|
+
/**
|
2443
|
+
*/
|
1835
2444
|
grouping: false,
|
2445
|
+
|
2446
|
+
/**
|
2447
|
+
* The parent series of the error bar. The default value links it to
|
2448
|
+
* the previous series. Otherwise, use the id of the parent series.
|
2449
|
+
*
|
2450
|
+
* @type {String}
|
2451
|
+
* @default :previous
|
2452
|
+
* @since 3.0
|
2453
|
+
* @product highcharts
|
2454
|
+
*/
|
1836
2455
|
linkedTo: ':previous',
|
2456
|
+
|
2457
|
+
/**
|
2458
|
+
*/
|
1837
2459
|
tooltip: {
|
2460
|
+
|
2461
|
+
/**
|
2462
|
+
*/
|
1838
2463
|
pointFormat: '<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'
|
1839
2464
|
},
|
2465
|
+
|
2466
|
+
/**
|
2467
|
+
* The line width of the whiskers, the horizontal lines marking low
|
2468
|
+
* and high values. When `null`, the general [lineWidth](#plotOptions.
|
2469
|
+
* errorbar.lineWidth) applies.
|
2470
|
+
*
|
2471
|
+
* @type {Number}
|
2472
|
+
* @sample {highcharts} highcharts/plotoptions/error-bar-styling/ Error bar styling
|
2473
|
+
* @default null
|
2474
|
+
* @since 3.0
|
2475
|
+
* @product highcharts
|
2476
|
+
*/
|
1840
2477
|
whiskerWidth: null
|
1841
2478
|
|
1842
2479
|
// Prototype members
|
@@ -1889,17 +2526,97 @@
|
|
1889
2526
|
/* ****************************************************************************
|
1890
2527
|
* Start Waterfall series code *
|
1891
2528
|
*****************************************************************************/
|
2529
|
+
/**
|
2530
|
+
* @extends {plotOptions.column}
|
2531
|
+
* @optionparent plotOptions.waterfall
|
2532
|
+
*/
|
1892
2533
|
seriesType('waterfall', 'column', {
|
2534
|
+
|
2535
|
+
/**
|
2536
|
+
*/
|
1893
2537
|
dataLabels: {
|
2538
|
+
|
2539
|
+
/**
|
2540
|
+
*/
|
1894
2541
|
inside: true
|
1895
2542
|
},
|
1896
2543
|
|
2544
|
+
|
2545
|
+
/**
|
2546
|
+
* The width of the line connecting waterfall columns.
|
2547
|
+
*
|
2548
|
+
* @type {Number}
|
2549
|
+
* @default 1
|
2550
|
+
* @product highcharts
|
2551
|
+
*/
|
1897
2552
|
lineWidth: 1,
|
2553
|
+
|
2554
|
+
/**
|
2555
|
+
* The color of the line that connects columns in a waterfall series.
|
2556
|
+
*
|
2557
|
+
*
|
2558
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2559
|
+
* style/style-by-css), the stroke can be set with the `.highcharts-
|
2560
|
+
* graph` class.
|
2561
|
+
*
|
2562
|
+
* @type {Color}
|
2563
|
+
* @default #333333
|
2564
|
+
* @since 3.0
|
2565
|
+
* @product highcharts
|
2566
|
+
*/
|
1898
2567
|
lineColor: '#333333',
|
2568
|
+
|
2569
|
+
/**
|
2570
|
+
* A name for the dash style to use for the line connecting the columns
|
2571
|
+
* of the waterfall series. Possible values:
|
2572
|
+
*
|
2573
|
+
* * Solid
|
2574
|
+
* * ShortDash
|
2575
|
+
* * ShortDot
|
2576
|
+
* * ShortDashDot
|
2577
|
+
* * ShortDashDotDot
|
2578
|
+
* * Dot
|
2579
|
+
* * Dash
|
2580
|
+
* * LongDash
|
2581
|
+
* * DashDot
|
2582
|
+
* * LongDashDot
|
2583
|
+
* * LongDashDotDot
|
2584
|
+
*
|
2585
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2586
|
+
* style/style-by-css), the stroke dash-array can be set with the `.
|
2587
|
+
* highcharts-graph` class.
|
2588
|
+
*
|
2589
|
+
* @type {String}
|
2590
|
+
* @default Dot
|
2591
|
+
* @since 3.0
|
2592
|
+
* @product highcharts
|
2593
|
+
*/
|
1899
2594
|
dashStyle: 'dot',
|
2595
|
+
|
2596
|
+
/**
|
2597
|
+
* The color of the border of each waterfall column.
|
2598
|
+
*
|
2599
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
2600
|
+
* style/style-by-css), the border stroke can be set with the `.highcharts-
|
2601
|
+
* point` class.
|
2602
|
+
*
|
2603
|
+
* @type {Color}
|
2604
|
+
* @default #333333
|
2605
|
+
* @since 3.0
|
2606
|
+
* @product highcharts
|
2607
|
+
*/
|
1900
2608
|
borderColor: '#333333',
|
2609
|
+
|
2610
|
+
/**
|
2611
|
+
*/
|
1901
2612
|
states: {
|
2613
|
+
|
2614
|
+
/**
|
2615
|
+
*/
|
1902
2616
|
hover: {
|
2617
|
+
|
2618
|
+
/**
|
2619
|
+
*/
|
1903
2620
|
lineWidthPlus: 0 // #3126
|
1904
2621
|
}
|
1905
2622
|
}
|
@@ -2242,6 +2959,11 @@
|
|
2242
2959
|
/**
|
2243
2960
|
* The polygon series prototype
|
2244
2961
|
*/
|
2962
|
+
|
2963
|
+
/**
|
2964
|
+
* @extends {plotOptions.scatter}
|
2965
|
+
* @optionsparent plotOptions.polygon
|
2966
|
+
*/
|
2245
2967
|
seriesType('polygon', 'scatter', {
|
2246
2968
|
marker: {
|
2247
2969
|
enabled: false,
|
@@ -2311,47 +3033,198 @@
|
|
2311
3033
|
* Start Bubble series code *
|
2312
3034
|
*****************************************************************************/
|
2313
3035
|
|
3036
|
+
|
3037
|
+
/**
|
3038
|
+
* @extends plotOptions.scatter
|
3039
|
+
* @optionparent plotOptions.bubble
|
3040
|
+
*/
|
2314
3041
|
seriesType('bubble', 'scatter', {
|
3042
|
+
|
3043
|
+
/**
|
3044
|
+
*/
|
2315
3045
|
dataLabels: {
|
3046
|
+
|
3047
|
+
/**
|
3048
|
+
*/
|
2316
3049
|
formatter: function() { // #2945
|
2317
3050
|
return this.point.z;
|
2318
3051
|
},
|
3052
|
+
|
3053
|
+
/**
|
3054
|
+
*/
|
2319
3055
|
inside: true,
|
3056
|
+
|
3057
|
+
/**
|
3058
|
+
*/
|
2320
3059
|
verticalAlign: 'middle'
|
2321
3060
|
},
|
2322
3061
|
// displayNegative: true,
|
3062
|
+
|
3063
|
+
/**
|
3064
|
+
* Options for the point markers of line-like series. Properties like
|
3065
|
+
* `fillColor`, `lineColor` and `lineWidth` define the visual appearance
|
3066
|
+
* of the markers. Other series types, like column series, don't have
|
3067
|
+
* markers, but have visual options on the series level instead.
|
3068
|
+
*
|
3069
|
+
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
|
3070
|
+
* style/style-by-css), the markers can be styled with the `.highcharts-
|
3071
|
+
* point`, `.highcharts-point-hover` and `.highcharts-point-select`
|
3072
|
+
* class names.
|
3073
|
+
*
|
3074
|
+
* @type {Object}
|
3075
|
+
* @extends plotOptions.series.marker
|
3076
|
+
* @excluding radius
|
3077
|
+
* @product highcharts
|
3078
|
+
*/
|
2323
3079
|
marker: {
|
2324
3080
|
|
2325
3081
|
// fillOpacity: 0.5,
|
3082
|
+
|
3083
|
+
/**
|
3084
|
+
*/
|
2326
3085
|
lineColor: null, // inherit from series.color
|
3086
|
+
|
3087
|
+
/**
|
3088
|
+
*/
|
2327
3089
|
lineWidth: 1,
|
2328
3090
|
|
2329
3091
|
// Avoid offset in Point.setState
|
3092
|
+
|
3093
|
+
/**
|
3094
|
+
*/
|
2330
3095
|
radius: null,
|
3096
|
+
|
3097
|
+
/**
|
3098
|
+
*/
|
2331
3099
|
states: {
|
3100
|
+
|
3101
|
+
/**
|
3102
|
+
*/
|
2332
3103
|
hover: {
|
3104
|
+
|
3105
|
+
/**
|
3106
|
+
*/
|
2333
3107
|
radiusPlus: 0
|
2334
3108
|
}
|
2335
3109
|
},
|
3110
|
+
|
3111
|
+
/**
|
3112
|
+
* A predefined shape or symbol for the marker. Possible values are
|
3113
|
+
* "circle", "square", "diamond", "triangle" and "triangle-down".
|
3114
|
+
*
|
3115
|
+
* Additionally, the URL to a graphic can be given on the form `url(graphic.
|
3116
|
+
* png)`. Note that for the image to be applied to exported charts,
|
3117
|
+
* its URL needs to be accessible by the export server.
|
3118
|
+
*
|
3119
|
+
* Custom callbacks for symbol path generation can also be added to
|
3120
|
+
* `Highcharts.SVGRenderer.prototype.symbols`. The callback is then
|
3121
|
+
* used by its method name, as shown in the demo.
|
3122
|
+
*
|
3123
|
+
* @validvalue ["circle", "square", "diamond", "triangle", "triangle-down"]
|
3124
|
+
* @type {String}
|
3125
|
+
* @sample {highcharts} highcharts/plotoptions/bubble-symbol/ Bubble chart with various symbols
|
3126
|
+
* @sample {highcharts} highcharts/plotoptions/series-marker-symbol/ General chart with predefined, graphic and custom markers
|
3127
|
+
* @default circle
|
3128
|
+
* @since 5.0.11
|
3129
|
+
* @product highcharts
|
3130
|
+
*/
|
2336
3131
|
symbol: 'circle'
|
2337
3132
|
},
|
3133
|
+
|
3134
|
+
/**
|
3135
|
+
* Minimum bubble size. Bubbles will automatically size between the
|
3136
|
+
* `minSize` and `maxSize` to reflect the `z` value of each bubble.
|
3137
|
+
* Can be either pixels (when no unit is given), or a percentage of
|
3138
|
+
* the smallest one of the plot width and height.
|
3139
|
+
*
|
3140
|
+
* @type {String}
|
3141
|
+
* @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
|
3142
|
+
* @default 8
|
3143
|
+
* @since 3.0
|
3144
|
+
* @product highcharts
|
3145
|
+
*/
|
2338
3146
|
minSize: 8,
|
3147
|
+
|
3148
|
+
/**
|
3149
|
+
* Maximum bubble size. Bubbles will automatically size between the
|
3150
|
+
* `minSize` and `maxSize` to reflect the `z` value of each bubble.
|
3151
|
+
* Can be either pixels (when no unit is given), or a percentage of
|
3152
|
+
* the smallest one of the plot width and height.
|
3153
|
+
*
|
3154
|
+
* @type {String}
|
3155
|
+
* @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
|
3156
|
+
* @default 20%
|
3157
|
+
* @since 3.0
|
3158
|
+
* @product highcharts
|
3159
|
+
*/
|
2339
3160
|
maxSize: '20%',
|
2340
3161
|
// negativeColor: null,
|
2341
3162
|
// sizeBy: 'area'
|
3163
|
+
|
3164
|
+
/**
|
3165
|
+
* When this is true, the series will not cause the Y axis to cross
|
3166
|
+
* the zero plane (or [threshold](#plotOptions.series.threshold) option)
|
3167
|
+
* unless the data actually crosses the plane.
|
3168
|
+
*
|
3169
|
+
* For example, if `softThreshold` is `false`, a series of 0, 1, 2,
|
3170
|
+
* 3 will make the Y axis show negative values according to the `minPadding`
|
3171
|
+
* option. If `softThreshold` is `true`, the Y axis starts at 0.
|
3172
|
+
*
|
3173
|
+
* @type {Boolean}
|
3174
|
+
* @default false
|
3175
|
+
* @since 4.1.9
|
3176
|
+
* @product highcharts
|
3177
|
+
*/
|
2342
3178
|
softThreshold: false,
|
3179
|
+
|
3180
|
+
/**
|
3181
|
+
*/
|
2343
3182
|
states: {
|
3183
|
+
|
3184
|
+
/**
|
3185
|
+
*/
|
2344
3186
|
hover: {
|
3187
|
+
|
3188
|
+
/**
|
3189
|
+
*/
|
2345
3190
|
halo: {
|
3191
|
+
|
3192
|
+
/**
|
3193
|
+
*/
|
2346
3194
|
size: 5
|
2347
3195
|
}
|
2348
3196
|
}
|
2349
3197
|
},
|
3198
|
+
|
3199
|
+
/**
|
3200
|
+
*/
|
2350
3201
|
tooltip: {
|
3202
|
+
|
3203
|
+
/**
|
3204
|
+
*/
|
2351
3205
|
pointFormat: '({point.x}, {point.y}), Size: {point.z}'
|
2352
3206
|
},
|
3207
|
+
|
3208
|
+
/**
|
3209
|
+
*/
|
2353
3210
|
turboThreshold: 0,
|
3211
|
+
|
3212
|
+
/**
|
3213
|
+
* When [displayNegative](#plotOptions.bubble.displayNegative) is `false`,
|
3214
|
+
* bubbles with lower Z values are skipped. When `displayNegative`
|
3215
|
+
* is `true` and a [negativeColor](#plotOptions.bubble.negativeColor)
|
3216
|
+
* is given, points with lower Z is colored.
|
3217
|
+
*
|
3218
|
+
* @type {Number}
|
3219
|
+
* @sample {highcharts} highcharts/plotoptions/bubble-negative/ Negative bubbles
|
3220
|
+
* @default 0
|
3221
|
+
* @since 3.0
|
3222
|
+
* @product highcharts
|
3223
|
+
*/
|
2354
3224
|
zThreshold: 0,
|
3225
|
+
|
3226
|
+
/**
|
3227
|
+
*/
|
2355
3228
|
zoneAxis: 'z'
|
2356
3229
|
|
2357
3230
|
// Prototype members
|
@@ -2896,6 +3769,19 @@
|
|
2896
3769
|
break;
|
2897
3770
|
}
|
2898
3771
|
}
|
3772
|
+
|
3773
|
+
|
3774
|
+
/**
|
3775
|
+
* Polar charts only. Whether to connect the ends of a line series plot
|
3776
|
+
* across the extremes.
|
3777
|
+
*
|
3778
|
+
* @type {Boolean}
|
3779
|
+
* @sample {highcharts} highcharts/plotoptions/line-connectends-false/
|
3780
|
+
* Do not connect
|
3781
|
+
* @since 2.3.0
|
3782
|
+
* @product highcharts
|
3783
|
+
* @apioption plotOptions.series.connectEnds
|
3784
|
+
*/
|
2899
3785
|
if (this.options.connectEnds !== false && firstValid !== undefined) {
|
2900
3786
|
this.connectEnds = true; // re-used in splines
|
2901
3787
|
points.splice(points.length, 0, points[firstValid]);
|