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.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.markdown +59 -0
  3. data/app/assets/javascripts/highcharts.js +6250 -788
  4. data/app/assets/javascripts/highcharts/highcharts-3d.js +210 -25
  5. data/app/assets/javascripts/highcharts/highcharts-more.js +908 -22
  6. data/app/assets/javascripts/highcharts/modules/accessibility.js +272 -64
  7. data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
  8. data/app/assets/javascripts/highcharts/modules/boost.js +89 -66
  9. data/app/assets/javascripts/highcharts/modules/broken-axis.js +65 -4
  10. data/app/assets/javascripts/highcharts/modules/data.js +1 -1
  11. data/app/assets/javascripts/highcharts/modules/drilldown.js +234 -17
  12. data/app/assets/javascripts/highcharts/modules/exporting.js +508 -69
  13. data/app/assets/javascripts/highcharts/modules/funnel.js +129 -8
  14. data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
  15. data/app/assets/javascripts/highcharts/modules/heatmap.js +361 -44
  16. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +64 -1
  17. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +44 -44
  18. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +26 -3
  19. data/app/assets/javascripts/highcharts/modules/series-label.js +19 -1
  20. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +14 -5
  21. data/app/assets/javascripts/highcharts/modules/stock.js +1122 -86
  22. data/app/assets/javascripts/highcharts/modules/treemap.js +265 -43
  23. data/app/assets/javascripts/highcharts/modules/xrange-series.js +1 -1
  24. data/lib/highcharts/version.rb +1 -1
  25. metadata +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.12 (2017-05-24)
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
- return H.SVGElement.prototype.attr.call(this, args); // getter returns value
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
- .addClass(className + ' highcharts-3d-side')
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
- merge(true, defaultOptions, {
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; // crisped rects can have +/- 0.5 pixels offset
3113
+ borderlessBase; // Crisped rects can have +/- 0.5 pixels offset.
2959
3114
 
2960
- // #3131 We need to check if column shape arguments are inside plotArea.
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
- borderlessBase + shapeArgs[d[1]] < 0 || // End column position is smaller than axis start.
2965
- borderlessBase > series[d[0] + 'Axis'].len // Start column position is bigger than axis end.
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.12 (2017-05-24)
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
- * The arearangeseries series type
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
- marker: null,
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
- setStackedPoints: noop,
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
- drawPoints: noop
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(defaultPlotOptions.column, defaultPlotOptions.arearange, {
1158
- lineWidth: 1,
1159
- pointRange: null
1514
+ seriesType('columnrange', 'arearange', merge(
1515
+ defaultPlotOptions.column,
1516
+ defaultPlotOptions.arearange,
1517
+ columnRangeOptions
1160
1518
 
1161
- // Prototype members
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 = yAxis.translate(point.high, 0, 1, 0, 1);
1187
- point.plotLow = point.plotY;
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]);