highcharts-rails 5.0.12 → 5.0.13
Sign up to get free protection for your applications and to get access to all the features.
- 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]);
|