highcharts-rails 5.0.12 → 5.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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]);