highcharts 6.1.4 → 6.2.0

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 (695) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +17 -0
  3. package/css/highcharts.scss +14 -0
  4. package/css/themes/dark-unica.css +17 -0
  5. package/css/themes/grid-light.css +17 -0
  6. package/css/themes/sand-signika.css +17 -0
  7. package/es-modules/indicators/momentum.src.js +1 -1
  8. package/es-modules/indicators/pivot-points.src.js +6 -1
  9. package/es-modules/masters/highcharts-gantt.src.js +11 -0
  10. package/es-modules/masters/modules/annotations.src.js +1 -1
  11. package/es-modules/masters/modules/arrow-symbols.src.js +12 -0
  12. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  13. package/es-modules/masters/modules/current-date-indicator.src.js +12 -0
  14. package/es-modules/masters/modules/data.src.js +1 -1
  15. package/es-modules/masters/modules/draggable-points.src.js +9 -0
  16. package/es-modules/masters/modules/export-data.src.js +1 -1
  17. package/es-modules/masters/modules/exporting.src.js +1 -1
  18. package/es-modules/masters/modules/funnel.src.js +1 -1
  19. package/es-modules/masters/modules/gantt.src.js +2 -1
  20. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  21. package/es-modules/masters/modules/heatmap.src.js +1 -1
  22. package/es-modules/masters/modules/item-series.src.js +1 -1
  23. package/es-modules/masters/modules/map.src.js +1 -1
  24. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  25. package/es-modules/masters/modules/pathfinder.src.js +12 -0
  26. package/es-modules/masters/modules/sankey.src.js +1 -1
  27. package/es-modules/masters/modules/series-label.src.js +1 -1
  28. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  29. package/es-modules/masters/modules/stock.src.js +1 -1
  30. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  31. package/es-modules/masters/modules/treegrid.src.js +12 -0
  32. package/es-modules/masters/modules/variwide.src.js +1 -1
  33. package/es-modules/masters/modules/vector.src.js +1 -1
  34. package/es-modules/masters/modules/windbarb.src.js +1 -1
  35. package/es-modules/masters/modules/xrange.src.js +1 -1
  36. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  37. package/es-modules/masters/themes/dark-green.src.js +1 -1
  38. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  39. package/es-modules/masters/themes/gray.src.js +1 -1
  40. package/es-modules/masters/themes/grid-light.src.js +1 -1
  41. package/es-modules/masters/themes/grid.src.js +1 -1
  42. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  43. package/es-modules/masters/themes/skies.src.js +1 -1
  44. package/es-modules/mixins/centered-series.js +1 -1
  45. package/es-modules/mixins/on-series.js +1 -1
  46. package/es-modules/modules/boost.src.js +22 -14
  47. package/es-modules/modules/broken-axis.src.js +169 -134
  48. package/es-modules/modules/data.src.js +2 -2
  49. package/es-modules/modules/draggable-points.src.js +2257 -0
  50. package/es-modules/modules/drilldown.src.js +1 -0
  51. package/es-modules/modules/export-data.src.js +1 -1
  52. package/es-modules/modules/exporting.src.js +1 -1
  53. package/es-modules/modules/funnel.src.js +1 -1
  54. package/es-modules/modules/item-series.src.js +1 -1
  55. package/es-modules/modules/no-data-to-display.src.js +5 -5
  56. package/es-modules/modules/oldie.src.js +1 -1
  57. package/es-modules/modules/overlapping-datalabels.src.js +38 -22
  58. package/es-modules/modules/parallel-coordinates.src.js +3 -2
  59. package/es-modules/modules/sankey.src.js +1 -1
  60. package/es-modules/modules/series-label.src.js +2 -2
  61. package/es-modules/modules/solid-gauge.src.js +1 -1
  62. package/es-modules/modules/static-scale.src.js +67 -28
  63. package/es-modules/modules/streamgraph.src.js +1 -1
  64. package/es-modules/modules/tilemap.src.js +231 -134
  65. package/es-modules/modules/variwide.src.js +1 -1
  66. package/es-modules/modules/vector.src.js +92 -22
  67. package/es-modules/modules/windbarb.src.js +1 -1
  68. package/es-modules/modules/xrange.src.js +257 -77
  69. package/es-modules/parts/AreaSeries.js +77 -77
  70. package/es-modules/parts/AreaSplineSeries.js +64 -27
  71. package/es-modules/parts/Axis.js +160 -67
  72. package/es-modules/parts/BarSeries.js +68 -51
  73. package/es-modules/parts/CandlestickSeries.js +1 -1
  74. package/es-modules/parts/Chart.js +31 -55
  75. package/es-modules/parts/Color.js +29 -18
  76. package/es-modules/parts/ColumnSeries.js +264 -142
  77. package/es-modules/parts/DataGrouping.js +9 -6
  78. package/es-modules/parts/DataLabels.js +261 -210
  79. package/es-modules/parts/DateTimeAxis.js +26 -7
  80. package/es-modules/parts/Dynamics.js +5 -2
  81. package/es-modules/parts/FlagsSeries.js +1 -1
  82. package/es-modules/parts/Globals.js +1 -1
  83. package/es-modules/parts/Html.js +64 -12
  84. package/es-modules/parts/Interaction.js +187 -63
  85. package/es-modules/parts/Legend.js +7 -3
  86. package/es-modules/parts/LogarithmicAxis.js +35 -4
  87. package/es-modules/parts/MSPointer.js +1 -1
  88. package/es-modules/parts/Navigator.js +27 -5
  89. package/es-modules/parts/OHLCSeries.js +1 -1
  90. package/es-modules/parts/Options.js +15 -13
  91. package/es-modules/parts/OrdinalAxis.js +1 -1
  92. package/es-modules/parts/PieSeries.js +256 -140
  93. package/es-modules/parts/PlotBandSeries.experimental.js +1 -1
  94. package/es-modules/parts/PlotLineOrBand.js +7 -40
  95. package/es-modules/parts/Point.js +28 -4
  96. package/es-modules/parts/Pointer.js +8 -6
  97. package/es-modules/parts/RangeSelector.js +1 -1
  98. package/es-modules/parts/Responsive.js +82 -36
  99. package/es-modules/parts/ScatterSeries.js +57 -25
  100. package/es-modules/parts/ScrollablePlotArea.js +17 -7
  101. package/es-modules/parts/Scrollbar.js +9 -2
  102. package/es-modules/parts/Series.js +22 -9
  103. package/es-modules/parts/SplineSeries.js +51 -29
  104. package/es-modules/parts/Stacking.js +100 -6
  105. package/es-modules/parts/StockChart.js +9 -3
  106. package/es-modules/parts/SvgRenderer.js +15 -10
  107. package/es-modules/parts/Tick.js +150 -30
  108. package/es-modules/parts/Time.js +23 -5
  109. package/es-modules/parts/Tooltip.js +2 -2
  110. package/es-modules/parts/TouchPointer.js +1 -1
  111. package/es-modules/parts/Utilities.js +16 -1
  112. package/es-modules/parts-3d/Axis.js +1 -1
  113. package/es-modules/parts-3d/Chart.js +1 -1
  114. package/es-modules/parts-3d/Column.js +1 -1
  115. package/es-modules/parts-3d/Math.js +1 -1
  116. package/es-modules/parts-3d/Pie.js +1 -1
  117. package/es-modules/parts-3d/SVGRenderer.js +1 -1
  118. package/es-modules/parts-3d/Scatter.js +1 -1
  119. package/es-modules/parts-3d/Series.js +1 -1
  120. package/es-modules/parts-3d/VMLRenderer.js +1 -1
  121. package/es-modules/parts-gantt/ArrowSymbols.js +110 -0
  122. package/es-modules/parts-gantt/CurrentDateIndicator.js +92 -0
  123. package/es-modules/parts-gantt/GanttChart.js +111 -0
  124. package/es-modules/parts-gantt/GanttSeries.js +376 -0
  125. package/es-modules/parts-gantt/GridAxis.js +965 -0
  126. package/es-modules/parts-gantt/Pathfinder.js +1247 -0
  127. package/es-modules/parts-gantt/PathfinderAlgorithms.js +746 -0
  128. package/es-modules/parts-gantt/Tree.js +146 -0
  129. package/es-modules/parts-gantt/TreeGrid.js +917 -0
  130. package/es-modules/parts-map/ColorAxis.js +1 -1
  131. package/es-modules/parts-map/ColorSeriesMixin.js +1 -1
  132. package/es-modules/parts-map/GeoJSON.js +1 -1
  133. package/es-modules/parts-map/HeatmapSeries.js +124 -53
  134. package/es-modules/parts-map/Map.js +1 -1
  135. package/es-modules/parts-map/MapAxis.js +1 -1
  136. package/es-modules/parts-map/MapBubbleSeries.js +1 -1
  137. package/es-modules/parts-map/MapLineSeries.js +1 -1
  138. package/es-modules/parts-map/MapNavigation.js +1 -1
  139. package/es-modules/parts-map/MapPointSeries.js +1 -1
  140. package/es-modules/parts-map/MapPointer.js +1 -1
  141. package/es-modules/parts-map/MapSeries.js +2 -2
  142. package/es-modules/parts-more/AreaRangeSeries.js +80 -38
  143. package/es-modules/parts-more/AreaSplineRangeSeries.js +1 -1
  144. package/es-modules/parts-more/BoxPlotSeries.js +1 -1
  145. package/es-modules/parts-more/BubbleSeries.js +1 -1
  146. package/es-modules/parts-more/ColumnRangeSeries.js +1 -1
  147. package/es-modules/parts-more/ErrorBarSeries.js +1 -1
  148. package/es-modules/parts-more/GaugeSeries.js +1 -1
  149. package/es-modules/parts-more/Pane.js +2 -1
  150. package/es-modules/parts-more/Polar.js +1 -1
  151. package/es-modules/parts-more/PolygonSeries.js +1 -1
  152. package/es-modules/parts-more/RadialAxis.js +5 -4
  153. package/es-modules/parts-more/WaterfallSeries.js +1 -1
  154. package/es-modules/supplemental.docs.js +0 -1955
  155. package/es-modules/themes/dark-blue.js +1 -1
  156. package/es-modules/themes/dark-green.js +1 -1
  157. package/es-modules/themes/dark-unica.js +1 -1
  158. package/es-modules/themes/gray.js +1 -1
  159. package/es-modules/themes/grid-light.js +1 -1
  160. package/es-modules/themes/grid.js +1 -1
  161. package/es-modules/themes/sand-signika.js +1 -1
  162. package/es-modules/themes/skies.js +1 -1
  163. package/highcharts-3d.js +1 -1
  164. package/highcharts-3d.src.js +10 -10
  165. package/highcharts-gantt.js +503 -0
  166. package/highcharts-gantt.js.map +1 -0
  167. package/highcharts-gantt.src.js +49289 -0
  168. package/highcharts-more.js +65 -64
  169. package/highcharts-more.js.map +1 -1
  170. package/highcharts-more.src.js +97 -53
  171. package/highcharts.js +415 -410
  172. package/highcharts.js.map +1 -1
  173. package/highcharts.src.js +2170 -1128
  174. package/highmaps.js +443 -438
  175. package/highmaps.js.map +1 -1
  176. package/highmaps.src.js +1647 -849
  177. package/highstock.js +553 -548
  178. package/highstock.js.map +1 -1
  179. package/highstock.src.js +2398 -1283
  180. package/indicators/accumulation-distribution.js +1 -1
  181. package/indicators/accumulation-distribution.src.js +1 -1
  182. package/indicators/atr.js +1 -1
  183. package/indicators/atr.src.js +1 -1
  184. package/indicators/bollinger-bands.js +1 -1
  185. package/indicators/bollinger-bands.src.js +1 -1
  186. package/indicators/cci.js +1 -1
  187. package/indicators/cci.src.js +1 -1
  188. package/indicators/cmf.js +1 -1
  189. package/indicators/cmf.src.js +1 -1
  190. package/indicators/ema.js +1 -1
  191. package/indicators/ema.src.js +1 -1
  192. package/indicators/ichimoku-kinko-hyo.js +1 -1
  193. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  194. package/indicators/indicators.js +1 -1
  195. package/indicators/indicators.src.js +1 -1
  196. package/indicators/macd.js +1 -1
  197. package/indicators/macd.src.js +1 -1
  198. package/indicators/mfi.js +1 -1
  199. package/indicators/mfi.src.js +1 -1
  200. package/indicators/momentum.js +1 -1
  201. package/indicators/momentum.src.js +2 -2
  202. package/indicators/pivot-points.js +4 -4
  203. package/indicators/pivot-points.js.map +1 -1
  204. package/indicators/pivot-points.src.js +7 -2
  205. package/indicators/price-envelopes.js +1 -1
  206. package/indicators/price-envelopes.src.js +1 -1
  207. package/indicators/psar.js +1 -1
  208. package/indicators/psar.src.js +1 -1
  209. package/indicators/roc.js +1 -1
  210. package/indicators/roc.src.js +1 -1
  211. package/indicators/rsi.js +1 -1
  212. package/indicators/rsi.src.js +1 -1
  213. package/indicators/stochastic.js +1 -1
  214. package/indicators/stochastic.src.js +1 -1
  215. package/indicators/volume-by-price.js +1 -1
  216. package/indicators/volume-by-price.src.js +1 -1
  217. package/indicators/vwap.js +1 -1
  218. package/indicators/vwap.src.js +1 -1
  219. package/indicators/wma.js +1 -1
  220. package/indicators/wma.src.js +1 -1
  221. package/indicators/zigzag.js +1 -1
  222. package/indicators/zigzag.src.js +1 -1
  223. package/js/es-modules/indicators/momentum.src.js +1 -1
  224. package/js/es-modules/indicators/pivot-points.src.js +6 -1
  225. package/js/es-modules/masters/highcharts-gantt.src.js +11 -0
  226. package/js/es-modules/masters/modules/annotations.src.js +1 -1
  227. package/js/es-modules/masters/modules/arrow-symbols.src.js +12 -0
  228. package/js/es-modules/masters/modules/broken-axis.src.js +1 -1
  229. package/js/es-modules/masters/modules/current-date-indicator.src.js +12 -0
  230. package/js/es-modules/masters/modules/data.src.js +1 -1
  231. package/js/es-modules/masters/modules/draggable-points.src.js +9 -0
  232. package/js/es-modules/masters/modules/export-data.src.js +1 -1
  233. package/js/es-modules/masters/modules/exporting.src.js +1 -1
  234. package/js/es-modules/masters/modules/funnel.src.js +1 -1
  235. package/js/es-modules/masters/modules/gantt.src.js +2 -1
  236. package/js/es-modules/masters/modules/grid-axis.src.js +1 -1
  237. package/js/es-modules/masters/modules/heatmap.src.js +1 -1
  238. package/js/es-modules/masters/modules/item-series.src.js +1 -1
  239. package/js/es-modules/masters/modules/map.src.js +1 -1
  240. package/js/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  241. package/js/es-modules/masters/modules/pathfinder.src.js +12 -0
  242. package/js/es-modules/masters/modules/sankey.src.js +1 -1
  243. package/js/es-modules/masters/modules/series-label.src.js +1 -1
  244. package/js/es-modules/masters/modules/solid-gauge.src.js +1 -1
  245. package/js/es-modules/masters/modules/stock.src.js +1 -1
  246. package/js/es-modules/masters/modules/streamgraph.src.js +1 -1
  247. package/js/es-modules/masters/modules/treegrid.src.js +12 -0
  248. package/js/es-modules/masters/modules/variwide.src.js +1 -1
  249. package/js/es-modules/masters/modules/vector.src.js +1 -1
  250. package/js/es-modules/masters/modules/windbarb.src.js +1 -1
  251. package/js/es-modules/masters/modules/xrange.src.js +1 -1
  252. package/js/es-modules/masters/themes/dark-blue.src.js +1 -1
  253. package/js/es-modules/masters/themes/dark-green.src.js +1 -1
  254. package/js/es-modules/masters/themes/dark-unica.src.js +1 -1
  255. package/js/es-modules/masters/themes/gray.src.js +1 -1
  256. package/js/es-modules/masters/themes/grid-light.src.js +1 -1
  257. package/js/es-modules/masters/themes/grid.src.js +1 -1
  258. package/js/es-modules/masters/themes/sand-signika.src.js +1 -1
  259. package/js/es-modules/masters/themes/skies.src.js +1 -1
  260. package/js/es-modules/mixins/centered-series.js +1 -1
  261. package/js/es-modules/mixins/on-series.js +1 -1
  262. package/js/es-modules/modules/boost.src.js +22 -14
  263. package/js/es-modules/modules/broken-axis.src.js +169 -134
  264. package/js/es-modules/modules/data.src.js +2 -2
  265. package/js/es-modules/modules/draggable-points.src.js +2257 -0
  266. package/js/es-modules/modules/drilldown.src.js +1 -0
  267. package/js/es-modules/modules/export-data.src.js +1 -1
  268. package/js/es-modules/modules/exporting.src.js +1 -1
  269. package/js/es-modules/modules/funnel.src.js +1 -1
  270. package/js/es-modules/modules/item-series.src.js +1 -1
  271. package/js/es-modules/modules/no-data-to-display.src.js +5 -5
  272. package/js/es-modules/modules/oldie.src.js +1 -1
  273. package/js/es-modules/modules/overlapping-datalabels.src.js +38 -22
  274. package/js/es-modules/modules/parallel-coordinates.src.js +3 -2
  275. package/js/es-modules/modules/sankey.src.js +1 -1
  276. package/js/es-modules/modules/series-label.src.js +2 -2
  277. package/js/es-modules/modules/solid-gauge.src.js +1 -1
  278. package/js/es-modules/modules/static-scale.src.js +67 -28
  279. package/js/es-modules/modules/streamgraph.src.js +1 -1
  280. package/js/es-modules/modules/tilemap.src.js +231 -134
  281. package/js/es-modules/modules/variwide.src.js +1 -1
  282. package/js/es-modules/modules/vector.src.js +92 -22
  283. package/js/es-modules/modules/windbarb.src.js +1 -1
  284. package/js/es-modules/modules/xrange.src.js +255 -68
  285. package/js/es-modules/parts/AreaSeries.js +77 -77
  286. package/js/es-modules/parts/AreaSplineSeries.js +64 -27
  287. package/js/es-modules/parts/Axis.js +160 -67
  288. package/js/es-modules/parts/BarSeries.js +68 -51
  289. package/js/es-modules/parts/CandlestickSeries.js +1 -1
  290. package/js/es-modules/parts/Chart.js +31 -55
  291. package/js/es-modules/parts/Color.js +29 -18
  292. package/js/es-modules/parts/ColumnSeries.js +231 -123
  293. package/js/es-modules/parts/DataGrouping.js +9 -6
  294. package/js/es-modules/parts/DataLabels.js +230 -182
  295. package/js/es-modules/parts/DateTimeAxis.js +26 -7
  296. package/js/es-modules/parts/Dynamics.js +5 -2
  297. package/js/es-modules/parts/FlagsSeries.js +1 -1
  298. package/js/es-modules/parts/Globals.js +1 -1
  299. package/js/es-modules/parts/Html.js +64 -12
  300. package/js/es-modules/parts/Interaction.js +178 -61
  301. package/js/es-modules/parts/Legend.js +7 -3
  302. package/js/es-modules/parts/LogarithmicAxis.js +35 -4
  303. package/js/es-modules/parts/MSPointer.js +1 -1
  304. package/js/es-modules/parts/Navigator.js +27 -5
  305. package/js/es-modules/parts/OHLCSeries.js +1 -1
  306. package/js/es-modules/parts/Options.js +13 -12
  307. package/js/es-modules/parts/OrdinalAxis.js +1 -1
  308. package/js/es-modules/parts/PieSeries.js +245 -132
  309. package/js/es-modules/parts/PlotBandSeries.experimental.js +1 -1
  310. package/js/es-modules/parts/PlotLineOrBand.js +7 -40
  311. package/js/es-modules/parts/Point.js +28 -4
  312. package/js/es-modules/parts/Pointer.js +8 -6
  313. package/js/es-modules/parts/RangeSelector.js +1 -1
  314. package/js/es-modules/parts/Responsive.js +82 -36
  315. package/js/es-modules/parts/ScatterSeries.js +56 -25
  316. package/js/es-modules/parts/ScrollablePlotArea.js +17 -7
  317. package/js/es-modules/parts/Scrollbar.js +9 -2
  318. package/js/es-modules/parts/Series.js +22 -9
  319. package/js/es-modules/parts/SplineSeries.js +51 -29
  320. package/js/es-modules/parts/Stacking.js +100 -6
  321. package/js/es-modules/parts/StockChart.js +9 -3
  322. package/js/es-modules/parts/SvgRenderer.js +15 -10
  323. package/js/es-modules/parts/Tick.js +150 -30
  324. package/js/es-modules/parts/Time.js +23 -5
  325. package/js/es-modules/parts/Tooltip.js +2 -2
  326. package/js/es-modules/parts/TouchPointer.js +1 -1
  327. package/js/es-modules/parts/Utilities.js +16 -1
  328. package/js/es-modules/parts-3d/Axis.js +1 -1
  329. package/js/es-modules/parts-3d/Chart.js +1 -1
  330. package/js/es-modules/parts-3d/Column.js +1 -1
  331. package/js/es-modules/parts-3d/Math.js +1 -1
  332. package/js/es-modules/parts-3d/Pie.js +1 -1
  333. package/js/es-modules/parts-3d/SVGRenderer.js +1 -1
  334. package/js/es-modules/parts-3d/Scatter.js +1 -1
  335. package/js/es-modules/parts-3d/Series.js +1 -1
  336. package/js/es-modules/parts-3d/VMLRenderer.js +1 -1
  337. package/js/es-modules/parts-gantt/ArrowSymbols.js +110 -0
  338. package/js/es-modules/parts-gantt/CurrentDateIndicator.js +92 -0
  339. package/js/es-modules/parts-gantt/GanttChart.js +111 -0
  340. package/js/es-modules/parts-gantt/GanttSeries.js +371 -0
  341. package/js/es-modules/parts-gantt/GridAxis.js +962 -0
  342. package/js/es-modules/parts-gantt/Pathfinder.js +1225 -0
  343. package/js/es-modules/parts-gantt/PathfinderAlgorithms.js +746 -0
  344. package/js/es-modules/parts-gantt/Tree.js +146 -0
  345. package/js/es-modules/parts-gantt/TreeGrid.js +891 -0
  346. package/js/es-modules/parts-map/ColorAxis.js +1 -1
  347. package/js/es-modules/parts-map/ColorSeriesMixin.js +1 -1
  348. package/js/es-modules/parts-map/GeoJSON.js +1 -1
  349. package/js/es-modules/parts-map/HeatmapSeries.js +122 -52
  350. package/js/es-modules/parts-map/Map.js +1 -1
  351. package/js/es-modules/parts-map/MapAxis.js +1 -1
  352. package/js/es-modules/parts-map/MapBubbleSeries.js +1 -1
  353. package/js/es-modules/parts-map/MapLineSeries.js +1 -1
  354. package/js/es-modules/parts-map/MapNavigation.js +1 -1
  355. package/js/es-modules/parts-map/MapPointSeries.js +1 -1
  356. package/js/es-modules/parts-map/MapPointer.js +1 -1
  357. package/js/es-modules/parts-map/MapSeries.js +2 -2
  358. package/js/es-modules/parts-more/AreaRangeSeries.js +80 -38
  359. package/js/es-modules/parts-more/AreaSplineRangeSeries.js +1 -1
  360. package/js/es-modules/parts-more/BoxPlotSeries.js +1 -1
  361. package/js/es-modules/parts-more/BubbleSeries.js +1 -1
  362. package/js/es-modules/parts-more/ColumnRangeSeries.js +1 -1
  363. package/js/es-modules/parts-more/ErrorBarSeries.js +1 -1
  364. package/js/es-modules/parts-more/GaugeSeries.js +1 -1
  365. package/js/es-modules/parts-more/Pane.js +2 -1
  366. package/js/es-modules/parts-more/Polar.js +1 -1
  367. package/js/es-modules/parts-more/PolygonSeries.js +1 -1
  368. package/js/es-modules/parts-more/RadialAxis.js +5 -4
  369. package/js/es-modules/parts-more/WaterfallSeries.js +1 -1
  370. package/js/es-modules/supplemental.docs.js +0 -1955
  371. package/js/es-modules/themes/dark-blue.js +1 -1
  372. package/js/es-modules/themes/dark-green.js +1 -1
  373. package/js/es-modules/themes/dark-unica.js +1 -1
  374. package/js/es-modules/themes/gray.js +1 -1
  375. package/js/es-modules/themes/grid-light.js +1 -1
  376. package/js/es-modules/themes/grid.js +1 -1
  377. package/js/es-modules/themes/sand-signika.js +1 -1
  378. package/js/es-modules/themes/skies.js +1 -1
  379. package/js/highcharts-3d.js +1 -1
  380. package/js/highcharts-3d.src.js +10 -10
  381. package/js/highcharts-gantt.js +480 -0
  382. package/js/highcharts-gantt.js.map +1 -0
  383. package/js/highcharts-gantt.src.js +47011 -0
  384. package/js/highcharts-more.js +62 -61
  385. package/js/highcharts-more.js.map +1 -1
  386. package/js/highcharts-more.src.js +97 -53
  387. package/js/highcharts.js +394 -390
  388. package/js/highcharts.js.map +1 -1
  389. package/js/highcharts.src.js +2083 -1070
  390. package/js/highmaps.js +420 -416
  391. package/js/highmaps.js.map +1 -1
  392. package/js/highmaps.src.js +1569 -798
  393. package/js/highstock.js +526 -520
  394. package/js/highstock.js.map +1 -1
  395. package/js/highstock.src.js +2311 -1225
  396. package/js/indicators/accumulation-distribution.js +1 -1
  397. package/js/indicators/accumulation-distribution.src.js +1 -1
  398. package/js/indicators/atr.js +1 -1
  399. package/js/indicators/atr.src.js +1 -1
  400. package/js/indicators/bollinger-bands.js +1 -1
  401. package/js/indicators/bollinger-bands.src.js +1 -1
  402. package/js/indicators/cci.js +1 -1
  403. package/js/indicators/cci.src.js +1 -1
  404. package/js/indicators/cmf.js +1 -1
  405. package/js/indicators/cmf.src.js +1 -1
  406. package/js/indicators/ema.js +1 -1
  407. package/js/indicators/ema.src.js +1 -1
  408. package/js/indicators/ichimoku-kinko-hyo.js +1 -1
  409. package/js/indicators/ichimoku-kinko-hyo.src.js +1 -1
  410. package/js/indicators/indicators.js +1 -1
  411. package/js/indicators/indicators.src.js +1 -1
  412. package/js/indicators/macd.js +1 -1
  413. package/js/indicators/macd.src.js +1 -1
  414. package/js/indicators/mfi.js +1 -1
  415. package/js/indicators/mfi.src.js +1 -1
  416. package/js/indicators/momentum.js +1 -1
  417. package/js/indicators/momentum.src.js +2 -2
  418. package/js/indicators/pivot-points.js +4 -4
  419. package/js/indicators/pivot-points.js.map +1 -1
  420. package/js/indicators/pivot-points.src.js +7 -2
  421. package/js/indicators/price-envelopes.js +1 -1
  422. package/js/indicators/price-envelopes.src.js +1 -1
  423. package/js/indicators/psar.js +1 -1
  424. package/js/indicators/psar.src.js +1 -1
  425. package/js/indicators/roc.js +1 -1
  426. package/js/indicators/roc.src.js +1 -1
  427. package/js/indicators/rsi.js +1 -1
  428. package/js/indicators/rsi.src.js +1 -1
  429. package/js/indicators/stochastic.js +1 -1
  430. package/js/indicators/stochastic.src.js +1 -1
  431. package/js/indicators/volume-by-price.js +1 -1
  432. package/js/indicators/volume-by-price.src.js +1 -1
  433. package/js/indicators/vwap.js +1 -1
  434. package/js/indicators/vwap.src.js +1 -1
  435. package/js/indicators/wma.js +1 -1
  436. package/js/indicators/wma.src.js +1 -1
  437. package/js/indicators/zigzag.js +1 -1
  438. package/js/indicators/zigzag.src.js +1 -1
  439. package/js/modules/accessibility.js +1 -1
  440. package/js/modules/accessibility.src.js +1 -1
  441. package/js/modules/annotations.js +2 -2
  442. package/js/modules/annotations.src.js +2 -2
  443. package/js/modules/arrow-symbols.js +13 -0
  444. package/js/modules/arrow-symbols.js.map +1 -0
  445. package/js/modules/arrow-symbols.src.js +138 -0
  446. package/js/modules/boost-canvas.js +1 -1
  447. package/js/modules/boost-canvas.src.js +1 -1
  448. package/js/modules/boost.js +43 -43
  449. package/js/modules/boost.js.map +1 -1
  450. package/js/modules/boost.src.js +23 -15
  451. package/js/modules/broken-axis.js +11 -10
  452. package/js/modules/broken-axis.js.map +1 -1
  453. package/js/modules/broken-axis.src.js +171 -136
  454. package/js/modules/bullet.js +1 -1
  455. package/js/modules/bullet.src.js +1 -1
  456. package/js/modules/current-date-indicator.js +13 -0
  457. package/js/modules/current-date-indicator.js.map +1 -0
  458. package/js/modules/current-date-indicator.src.js +120 -0
  459. package/js/modules/data.js +2 -2
  460. package/js/modules/data.src.js +4 -4
  461. package/js/modules/drag-panes.js +1 -1
  462. package/js/modules/drag-panes.src.js +1 -1
  463. package/js/modules/draggable-points.js +38 -0
  464. package/js/modules/draggable-points.js.map +1 -0
  465. package/js/modules/draggable-points.src.js +2281 -0
  466. package/js/modules/drilldown.js +1 -1
  467. package/js/modules/drilldown.js.map +1 -1
  468. package/js/modules/drilldown.src.js +2 -1
  469. package/js/modules/export-data.js +2 -2
  470. package/js/modules/export-data.src.js +3 -3
  471. package/js/modules/exporting.js +2 -2
  472. package/js/modules/exporting.src.js +3 -3
  473. package/js/modules/funnel.js +2 -2
  474. package/js/modules/funnel.src.js +3 -3
  475. package/js/modules/gantt.js +80 -18
  476. package/js/modules/gantt.js.map +1 -1
  477. package/js/modules/gantt.src.js +5490 -372
  478. package/js/modules/grid-axis.js +15 -11
  479. package/js/modules/grid-axis.js.map +1 -1
  480. package/js/modules/grid-axis.src.js +731 -293
  481. package/js/modules/heatmap.js +2 -2
  482. package/js/modules/heatmap.js.map +1 -1
  483. package/js/modules/heatmap.src.js +126 -56
  484. package/js/modules/histogram-bellcurve.js +1 -1
  485. package/js/modules/histogram-bellcurve.src.js +1 -1
  486. package/js/modules/item-series.js +2 -2
  487. package/js/modules/item-series.src.js +3 -3
  488. package/js/modules/map.js +2 -2
  489. package/js/modules/map.js.map +1 -1
  490. package/js/modules/map.src.js +137 -67
  491. package/js/modules/no-data-to-display.js +1 -1
  492. package/js/modules/no-data-to-display.src.js +6 -6
  493. package/js/modules/offline-exporting.js +2 -2
  494. package/js/modules/offline-exporting.src.js +2 -2
  495. package/js/modules/oldie.js +2 -2
  496. package/js/modules/oldie.src.js +3 -3
  497. package/js/modules/overlapping-datalabels.js +2 -2
  498. package/js/modules/overlapping-datalabels.src.js +2 -2
  499. package/js/modules/parallel-coordinates.js +9 -9
  500. package/js/modules/parallel-coordinates.js.map +1 -1
  501. package/js/modules/parallel-coordinates.src.js +4 -3
  502. package/js/modules/pareto.js +1 -1
  503. package/js/modules/pareto.src.js +1 -1
  504. package/js/modules/pathfinder.js +34 -0
  505. package/js/modules/pathfinder.js.map +1 -0
  506. package/js/modules/pathfinder.src.js +2106 -0
  507. package/js/modules/pattern-fill.js +1 -1
  508. package/js/modules/pattern-fill.src.js +1 -1
  509. package/js/modules/sankey.js +2 -2
  510. package/js/modules/sankey.src.js +3 -3
  511. package/js/modules/series-label.js +2 -2
  512. package/js/modules/series-label.src.js +4 -4
  513. package/js/modules/solid-gauge.js +2 -2
  514. package/js/modules/solid-gauge.src.js +3 -3
  515. package/js/modules/static-scale.js +3 -3
  516. package/js/modules/static-scale.js.map +1 -1
  517. package/js/modules/static-scale.src.js +65 -26
  518. package/js/modules/stock.js +135 -134
  519. package/js/modules/stock.js.map +1 -1
  520. package/js/modules/stock.src.js +230 -157
  521. package/js/modules/streamgraph.js +2 -2
  522. package/js/modules/streamgraph.src.js +3 -3
  523. package/js/modules/sunburst.js +1 -1
  524. package/js/modules/sunburst.src.js +1 -1
  525. package/js/modules/tilemap.js +1 -1
  526. package/js/modules/tilemap.js.map +1 -1
  527. package/js/modules/tilemap.src.js +355 -188
  528. package/js/modules/treegrid.js +51 -0
  529. package/js/modules/treegrid.js.map +1 -0
  530. package/js/modules/treegrid.src.js +2759 -0
  531. package/js/modules/treemap.js +1 -1
  532. package/js/modules/treemap.src.js +1 -1
  533. package/js/modules/variable-pie.js +1 -1
  534. package/js/modules/variable-pie.src.js +1 -1
  535. package/js/modules/variwide.js +2 -2
  536. package/js/modules/variwide.src.js +3 -3
  537. package/js/modules/vector.js +2 -2
  538. package/js/modules/vector.js.map +1 -1
  539. package/js/modules/vector.src.js +94 -24
  540. package/js/modules/windbarb.js +2 -2
  541. package/js/modules/windbarb.src.js +4 -4
  542. package/js/modules/wordcloud.js +1 -1
  543. package/js/modules/wordcloud.src.js +1 -1
  544. package/js/modules/xrange.js +11 -10
  545. package/js/modules/xrange.js.map +1 -1
  546. package/js/modules/xrange.src.js +257 -70
  547. package/js/themes/avocado.js +1 -1
  548. package/js/themes/avocado.src.js +1 -1
  549. package/js/themes/dark-blue.js +2 -2
  550. package/js/themes/dark-blue.src.js +3 -3
  551. package/js/themes/dark-green.js +2 -2
  552. package/js/themes/dark-green.src.js +3 -3
  553. package/js/themes/dark-unica.js +2 -2
  554. package/js/themes/dark-unica.src.js +3 -3
  555. package/js/themes/gray.js +2 -2
  556. package/js/themes/gray.src.js +3 -3
  557. package/js/themes/grid-light.js +2 -2
  558. package/js/themes/grid-light.src.js +3 -3
  559. package/js/themes/grid.js +2 -2
  560. package/js/themes/grid.src.js +3 -3
  561. package/js/themes/sand-signika.js +2 -2
  562. package/js/themes/sand-signika.src.js +3 -3
  563. package/js/themes/skies.js +2 -2
  564. package/js/themes/skies.src.js +3 -3
  565. package/js/themes/sunset.js +1 -1
  566. package/js/themes/sunset.src.js +1 -1
  567. package/modules/accessibility.js +1 -1
  568. package/modules/accessibility.src.js +1 -1
  569. package/modules/annotations.js +2 -2
  570. package/modules/annotations.src.js +2 -2
  571. package/modules/arrow-symbols.js +13 -0
  572. package/modules/arrow-symbols.js.map +1 -0
  573. package/modules/arrow-symbols.src.js +138 -0
  574. package/modules/boost-canvas.js +1 -1
  575. package/modules/boost-canvas.src.js +1 -1
  576. package/modules/boost.js +36 -36
  577. package/modules/boost.js.map +1 -1
  578. package/modules/boost.src.js +23 -15
  579. package/modules/broken-axis.js +11 -10
  580. package/modules/broken-axis.js.map +1 -1
  581. package/modules/broken-axis.src.js +171 -136
  582. package/modules/bullet.js +1 -1
  583. package/modules/bullet.src.js +1 -1
  584. package/modules/current-date-indicator.js +13 -0
  585. package/modules/current-date-indicator.js.map +1 -0
  586. package/modules/current-date-indicator.src.js +120 -0
  587. package/modules/data.js +2 -2
  588. package/modules/data.src.js +4 -4
  589. package/modules/drag-panes.js +1 -1
  590. package/modules/drag-panes.src.js +1 -1
  591. package/modules/draggable-points.js +38 -0
  592. package/modules/draggable-points.js.map +1 -0
  593. package/modules/draggable-points.src.js +2281 -0
  594. package/modules/drilldown.js +1 -1
  595. package/modules/drilldown.js.map +1 -1
  596. package/modules/drilldown.src.js +2 -1
  597. package/modules/export-data.js +2 -2
  598. package/modules/export-data.src.js +3 -3
  599. package/modules/exporting.js +2 -2
  600. package/modules/exporting.src.js +3 -3
  601. package/modules/funnel.js +2 -2
  602. package/modules/funnel.src.js +3 -3
  603. package/modules/gantt.js +83 -19
  604. package/modules/gantt.js.map +1 -1
  605. package/modules/gantt.src.js +5553 -379
  606. package/modules/grid-axis.js +16 -11
  607. package/modules/grid-axis.js.map +1 -1
  608. package/modules/grid-axis.src.js +732 -293
  609. package/modules/heatmap.js +2 -2
  610. package/modules/heatmap.js.map +1 -1
  611. package/modules/heatmap.src.js +128 -57
  612. package/modules/histogram-bellcurve.js +1 -1
  613. package/modules/histogram-bellcurve.src.js +1 -1
  614. package/modules/item-series.js +2 -2
  615. package/modules/item-series.src.js +3 -3
  616. package/modules/map.js +2 -2
  617. package/modules/map.js.map +1 -1
  618. package/modules/map.src.js +139 -68
  619. package/modules/no-data-to-display.js +1 -1
  620. package/modules/no-data-to-display.src.js +6 -6
  621. package/modules/offline-exporting.js +2 -2
  622. package/modules/offline-exporting.src.js +2 -2
  623. package/modules/oldie.js +2 -2
  624. package/modules/oldie.src.js +3 -3
  625. package/modules/overlapping-datalabels.js +2 -2
  626. package/modules/overlapping-datalabels.src.js +2 -2
  627. package/modules/parallel-coordinates.js +8 -8
  628. package/modules/parallel-coordinates.js.map +1 -1
  629. package/modules/parallel-coordinates.src.js +4 -3
  630. package/modules/pareto.js +1 -1
  631. package/modules/pareto.src.js +1 -1
  632. package/modules/pathfinder.js +35 -0
  633. package/modules/pathfinder.js.map +1 -0
  634. package/modules/pathfinder.src.js +2128 -0
  635. package/modules/pattern-fill.js +1 -1
  636. package/modules/pattern-fill.src.js +1 -1
  637. package/modules/sankey.js +2 -2
  638. package/modules/sankey.src.js +3 -3
  639. package/modules/series-label.js +2 -2
  640. package/modules/series-label.src.js +4 -4
  641. package/modules/solid-gauge.js +2 -2
  642. package/modules/solid-gauge.src.js +3 -3
  643. package/modules/static-scale.js +3 -3
  644. package/modules/static-scale.js.map +1 -1
  645. package/modules/static-scale.src.js +65 -26
  646. package/modules/stock.js +142 -142
  647. package/modules/stock.js.map +1 -1
  648. package/modules/stock.src.js +230 -157
  649. package/modules/streamgraph.js +2 -2
  650. package/modules/streamgraph.src.js +3 -3
  651. package/modules/sunburst.js +1 -1
  652. package/modules/sunburst.src.js +1 -1
  653. package/modules/tilemap.js +1 -1
  654. package/modules/tilemap.js.map +1 -1
  655. package/modules/tilemap.src.js +357 -189
  656. package/modules/treegrid.js +52 -0
  657. package/modules/treegrid.js.map +1 -0
  658. package/modules/treegrid.src.js +2797 -0
  659. package/modules/treemap.js +1 -1
  660. package/modules/treemap.src.js +1 -1
  661. package/modules/variable-pie.js +1 -1
  662. package/modules/variable-pie.src.js +1 -1
  663. package/modules/variwide.js +2 -2
  664. package/modules/variwide.src.js +3 -3
  665. package/modules/vector.js +2 -2
  666. package/modules/vector.js.map +1 -1
  667. package/modules/vector.src.js +94 -24
  668. package/modules/windbarb.js +2 -2
  669. package/modules/windbarb.src.js +4 -4
  670. package/modules/wordcloud.js +1 -1
  671. package/modules/wordcloud.src.js +1 -1
  672. package/modules/xrange.js +12 -11
  673. package/modules/xrange.js.map +1 -1
  674. package/modules/xrange.src.js +259 -79
  675. package/package.json +1 -1
  676. package/themes/avocado.js +1 -1
  677. package/themes/avocado.src.js +1 -1
  678. package/themes/dark-blue.js +2 -2
  679. package/themes/dark-blue.src.js +3 -3
  680. package/themes/dark-green.js +2 -2
  681. package/themes/dark-green.src.js +3 -3
  682. package/themes/dark-unica.js +2 -2
  683. package/themes/dark-unica.src.js +3 -3
  684. package/themes/gray.js +2 -2
  685. package/themes/gray.src.js +3 -3
  686. package/themes/grid-light.js +2 -2
  687. package/themes/grid-light.src.js +3 -3
  688. package/themes/grid.js +2 -2
  689. package/themes/grid.src.js +3 -3
  690. package/themes/sand-signika.js +2 -2
  691. package/themes/sand-signika.src.js +3 -3
  692. package/themes/skies.js +2 -2
  693. package/themes/skies.src.js +3 -3
  694. package/themes/sunset.js +1 -1
  695. package/themes/sunset.src.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * (c) 2010-2017 Torstein Honsi
2
+ * (c) 2010-2018 Torstein Honsi
3
3
  *
4
4
  * License: www.highcharts.com/license
5
5
  */
@@ -536,11 +536,14 @@ seriesProto.groupData = function (xData, yData, groupPositions, approximation) {
536
536
  // write custom options to `this.dataGroupInfo.options`.
537
537
  if (!defined(series.dataGroupInfo.options)) {
538
538
  // Convert numbers and arrays into objects
539
- series.dataGroupInfo.options = series.pointClass.prototype
540
- .optionsToObject.call(
541
- { series: series },
542
- series.options.data[start]
543
- );
539
+ series.dataGroupInfo.options = merge(
540
+ series.pointClass.prototype
541
+ .optionsToObject.call(
542
+ { series: series },
543
+ series.options.data[start]
544
+ )
545
+ );
546
+
544
547
  // Make sure the raw data (x, y, open, high etc) is not copied
545
548
  // over and overwriting approximated data.
546
549
  each(extendedPointArrayMap, function (key) {
@@ -1,49 +1,15 @@
1
1
  /**
2
- * (c) 2010-2017 Torstein Honsi
2
+ * (c) 2010-2018 Torstein Honsi
3
3
  *
4
4
  * License: www.highcharts.com/license
5
5
  */
6
6
 
7
- /**
8
- * A label box.
9
- *
10
- * @typedef {object} Highcharts.DataLabelBoxObject
11
- *
12
- * @property {number} align
13
- *
14
- * @property {number} pos
15
- *
16
- * @property {number} rank
17
- *
18
- * @property {number} size
19
- *
20
- * @property {number} target
21
- */
22
-
23
- /**
24
- * Alignment offset for a label.
25
- *
26
- * @typedef {object} Highcharts.DataLabelAlignObject
27
- *
28
- * @property {number} x
29
- *
30
- * @property {number} y
31
- */
32
-
33
- /**
34
- * Label position for a pie slice.
35
- *
36
- * @typedef {Array<number|string>} Highcharts.DataLabelPiePosObject
37
- *
38
- * @property {number} x
39
- *
40
- * @property {number} y
41
- */
42
-
43
7
  'use strict';
8
+
44
9
  import H from './Globals.js';
45
10
  import './Utilities.js';
46
11
  import './Series.js';
12
+
47
13
  var addEvent = H.addEvent,
48
14
  arrayMax = H.arrayMax,
49
15
  defined = H.defined,
@@ -58,8 +24,9 @@ var addEvent = H.addEvent,
58
24
  Series = H.Series,
59
25
  seriesTypes = H.seriesTypes,
60
26
  some = H.some,
61
- stableSort = H.stableSort;
62
-
27
+ stableSort = H.stableSort,
28
+ isArray = H.isArray,
29
+ splat = H.splat;
63
30
 
64
31
  /**
65
32
  * General distribution algorithm for distributing labels of differing size
@@ -68,15 +35,14 @@ var addEvent = H.addEvent,
68
35
  * close as possible to their targets, skipping the lowest ranked labels if
69
36
  * necessary.
70
37
  *
38
+ * @private
71
39
  * @function Highcharts.distribute
72
40
  *
73
- * @param {Array<Highcharts.DataLabelBoxObject>} boxes
74
- *
75
- * @param {number} len
41
+ * @param {Array<object>} boxes
76
42
  *
77
- * @param {number} maxDistance
43
+ * @param {number} len
78
44
  *
79
- * @return {void}
45
+ * @param {number} maxDistance
80
46
  */
81
47
  H.distribute = function (boxes, len, maxDistance) {
82
48
 
@@ -222,25 +188,21 @@ H.distribute = function (boxes, len, maxDistance) {
222
188
  /**
223
189
  * Draw the data labels
224
190
  *
191
+ * @private
225
192
  * @function Highcharts.Series#drawDataLabels
226
193
  *
227
- * @return {void}
228
- *
229
- * @todo
230
- * Make events official: Fires the event `afterDrawDataLabels`.
194
+ * @fires Highcharts.Series#event:afterDrawDataLabels
231
195
  */
232
196
  Series.prototype.drawDataLabels = function () {
233
197
  var series = this,
234
198
  chart = series.chart,
235
199
  seriesOptions = series.options,
236
- options = seriesOptions.dataLabels,
200
+ seriesDlOptions = seriesOptions.dataLabels,
237
201
  points = series.points,
238
202
  pointOptions,
239
- generalOptions,
240
203
  hasRendered = series.hasRendered || 0,
241
- str,
242
204
  dataLabelsGroup,
243
- defer = pick(options.defer, !!seriesOptions.animation),
205
+ defer = pick(seriesDlOptions.defer, !!seriesOptions.animation),
244
206
  renderer = chart.renderer;
245
207
 
246
208
  /*
@@ -270,19 +232,59 @@ Series.prototype.drawDataLabels = function () {
270
232
  return true;
271
233
  }
272
234
 
273
- if (options.enabled || series._hasPointLabels) {
274
-
275
- // Process default alignment of data labels for columns
276
- if (series.dlProcessOptions) {
277
- series.dlProcessOptions(options);
235
+ /*
236
+ * Merge two objects that can be arrays. If one of them is an array, the
237
+ * other is merged into each element. If both are arrays, each element is
238
+ * merged by index. If neither are arrays, we use normal merge.
239
+ */
240
+ function mergeArrays(one, two) {
241
+ var res = [],
242
+ i;
243
+ if (isArray(one) && !isArray(two)) {
244
+ res = map(one, function (el) {
245
+ return merge(el, two);
246
+ });
247
+ } else if (isArray(two) && !isArray(one)) {
248
+ res = map(two, function (el) {
249
+ return merge(one, el);
250
+ });
251
+ } else if (!isArray(one) && !isArray(two)) {
252
+ res = merge(one, two);
253
+ } else {
254
+ i = Math.max(one.length, two.length);
255
+ while (i--) {
256
+ res[i] = merge(one[i], two[i]);
257
+ }
278
258
  }
259
+ return res;
260
+ }
261
+
262
+
263
+ // Merge in plotOptions.dataLabels for series
264
+ seriesDlOptions = mergeArrays(
265
+ mergeArrays(
266
+ chart.options.plotOptions &&
267
+ chart.options.plotOptions.series &&
268
+ chart.options.plotOptions.series.dataLabels,
269
+ chart.options.plotOptions &&
270
+ chart.options.plotOptions[series.type] &&
271
+ chart.options.plotOptions[series.type].dataLabels
272
+ ),
273
+ seriesDlOptions
274
+ );
275
+
276
+ if (
277
+ isArray(seriesDlOptions) ||
278
+ seriesDlOptions.enabled ||
279
+ series._hasPointLabels
280
+ ) {
279
281
 
280
282
  // Create a separate group for the data labels to avoid rotation
281
283
  dataLabelsGroup = series.plotGroup(
282
284
  'dataLabelsGroup',
283
285
  'data-labels',
284
286
  defer && !hasRendered ? 'hidden' : 'visible', // #5133
285
- options.zIndex || 6
287
+ seriesDlOptions.zIndex || 6
286
288
  );
287
289
 
288
290
  if (defer) {
@@ -300,149 +302,193 @@ Series.prototype.drawDataLabels = function () {
300
302
  }
301
303
 
302
304
  // Make the labels for each point
303
- generalOptions = options;
304
305
  each(points, function (point) {
305
- var enabled,
306
- dataLabel = point.dataLabel,
307
- labelConfig,
308
- attr,
309
- rotation,
310
- connector = point.connector,
311
- isNew = !dataLabel,
312
- style,
313
- formatString;
314
-
315
- // Determine if each data label is enabled
306
+
307
+ // Merge in series options for the point.
316
308
  // @note dataLabelAttribs (like pointAttribs) would eradicate
317
309
  // the need for dlOptions, and simplify the section below.
318
- pointOptions = point.dlOptions || // dlOptions is used in treemaps
319
- (point.options && point.options.dataLabels);
320
- enabled = pick(
321
- pointOptions && pointOptions.enabled,
322
- generalOptions.enabled
323
- ) && !point.isNull; // #2282, #4641, #7112
324
-
325
- if (enabled) {
326
- enabled = applyFilter(point, pointOptions || options) === true;
327
- }
310
+ pointOptions = splat(
311
+ mergeArrays(
312
+ seriesDlOptions,
313
+ point.dlOptions || // dlOptions is used in treemaps
314
+ (point.options && point.options.dataLabels)
315
+ )
316
+ );
328
317
 
329
- if (enabled) {
330
- // Create individual options structure that can be extended
331
- // without affecting others
332
- options = merge(generalOptions, pointOptions);
333
- labelConfig = point.getLabelConfig();
334
- formatString = (
335
- options[point.formatPrefix + 'Format'] ||
336
- options.format
337
- );
318
+ // Handle each individual data label for this point
319
+ each(pointOptions, function (labelOptions, i) {
320
+ // Options for one datalabel
321
+ var labelEnabled = labelOptions.enabled &&
322
+ !point.isNull && // #2282, #4641, #7112
323
+ applyFilter(point, labelOptions),
324
+ labelConfig,
325
+ formatString,
326
+ labelText,
327
+ style,
328
+ rotation,
329
+ attr,
330
+ dataLabel = point.dataLabels ? point.dataLabels[i] :
331
+ point.dataLabel,
332
+ connector = point.connectors ? point.connectors[i] :
333
+ point.connector,
334
+ isNew = !dataLabel;
335
+
336
+ if (labelEnabled) {
337
+ // Create individual options structure that can be extended
338
+ // without affecting others
339
+ labelConfig = point.getLabelConfig();
340
+ formatString = (
341
+ labelOptions[point.formatPrefix + 'Format'] ||
342
+ labelOptions.format
343
+ );
338
344
 
339
- str = defined(formatString) ?
340
- format(formatString, labelConfig, chart.time) :
341
- (
342
- options[point.formatPrefix + 'Formatter'] ||
343
- options.formatter
344
- ).call(labelConfig, options);
345
-
346
- style = options.style;
347
- rotation = options.rotation;
348
-
349
- // Determine the color
350
- style.color = pick(
351
- options.color,
352
- style.color,
353
- series.color,
354
- '#000000'
355
- );
356
- // Get automated contrast color
357
- if (style.color === 'contrast') {
358
- point.contrastColor =
359
- renderer.getContrast(point.color || series.color);
360
- style.color = options.inside ||
361
- pick(point.labelDistance, options.distance) < 0 ||
362
- !!seriesOptions.stacking ?
363
- point.contrastColor :
364
- '#000000';
365
- }
366
- if (seriesOptions.cursor) {
367
- style.cursor = seriesOptions.cursor;
368
- }
369
-
345
+ labelText = defined(formatString) ?
346
+ format(formatString, labelConfig, chart.time) :
347
+ (
348
+ labelOptions[point.formatPrefix + 'Formatter'] ||
349
+ labelOptions.formatter
350
+ ).call(labelConfig, labelOptions);
370
351
 
371
- attr = {
352
+ style = labelOptions.style;
353
+ rotation = labelOptions.rotation;
372
354
 
373
- fill: options.backgroundColor,
374
- stroke: options.borderColor,
375
- 'stroke-width': options.borderWidth,
355
+ // Determine the color
356
+ style.color = pick(
357
+ labelOptions.color,
358
+ style.color,
359
+ series.color,
360
+ '#000000'
361
+ );
362
+ // Get automated contrast color
363
+ if (style.color === 'contrast') {
364
+ point.contrastColor =
365
+ renderer.getContrast(point.color || series.color);
366
+ style.color = labelOptions.inside ||
367
+ pick(
368
+ labelOptions.distance,
369
+ point.labelDistance
370
+ ) < 0 ||
371
+ !!seriesOptions.stacking ?
372
+ point.contrastColor :
373
+ '#000000';
374
+ }
375
+ if (seriesOptions.cursor) {
376
+ style.cursor = seriesOptions.cursor;
377
+ }
376
378
 
377
- r: options.borderRadius || 0,
378
- rotation: rotation,
379
- padding: options.padding,
380
- zIndex: 1
381
- };
382
379
 
383
- // Remove unused attributes (#947)
384
- H.objectEach(attr, function (val, name) {
385
- if (val === undefined) {
386
- delete attr[name];
387
- }
388
- });
389
- }
390
- // If the point is outside the plot area, destroy it. #678, #820
391
- if (dataLabel && (!enabled || !defined(str))) {
392
- point.dataLabel = dataLabel = dataLabel.destroy();
393
- if (connector) {
394
- point.connector = connector.destroy();
380
+ attr = {
381
+
382
+ fill: labelOptions.backgroundColor,
383
+ stroke: labelOptions.borderColor,
384
+ 'stroke-width': labelOptions.borderWidth,
385
+
386
+ r: labelOptions.borderRadius || 0,
387
+ rotation: rotation,
388
+ padding: labelOptions.padding,
389
+ zIndex: 1
390
+ };
391
+
392
+ // Remove unused attributes (#947)
393
+ H.objectEach(attr, function (val, name) {
394
+ if (val === undefined) {
395
+ delete attr[name];
396
+ }
397
+ });
395
398
  }
396
- // Individual labels are disabled if the are explicitly disabled
397
- // in the point options, or if they fall outside the plot area.
398
- } else if (enabled && defined(str)) {
399
- // create new label
400
- if (!dataLabel) {
401
- dataLabel = point.dataLabel = rotation ?
402
-
403
- renderer
404
- .text( // labels don't rotate
405
- str,
399
+
400
+ // If the point is outside the plot area, destroy it. #678, #820
401
+ if (dataLabel && (!labelEnabled || !defined(labelText))) {
402
+ point.dataLabel = point.dataLabel.destroy();
403
+ if (point.dataLabels) {
404
+ // Remove point.dataLabels if this was the last one
405
+ if (point.dataLabels.length === 1) {
406
+ delete point.dataLabels;
407
+ } else {
408
+ delete point.dataLabels[i];
409
+ }
410
+ }
411
+ if (!i) {
412
+ delete point.dataLabel;
413
+ }
414
+ if (connector) {
415
+ point.connector = point.connector.destroy();
416
+ if (point.connectors) {
417
+ // Remove point.connectors if this was the last one
418
+ if (point.connectors.length === 1) {
419
+ delete point.connectors;
420
+ } else {
421
+ delete point.connectors[i];
422
+ }
423
+ }
424
+ }
425
+
426
+ // Individual labels are disabled if the are explicitly disabled
427
+ // in the point options, or if they fall outside the plot area.
428
+ } else if (labelEnabled && defined(labelText)) {
429
+
430
+ if (!dataLabel) {
431
+ // Create new label element
432
+ point.dataLabels = point.dataLabels || [];
433
+ dataLabel = point.dataLabels[i] = rotation ?
434
+
435
+ // Labels don't rotate, use text element
436
+ renderer.text(labelText, 0, -9999)
437
+ .addClass('highcharts-data-label') :
438
+
439
+ // We can use label
440
+ renderer.label(
441
+ labelText,
406
442
  0,
407
443
  -9999,
408
- options.useHTML
409
- )
410
- .addClass('highcharts-data-label') :
444
+ labelOptions.shape,
445
+ null,
446
+ null,
447
+ labelOptions.useHTML,
448
+ null,
449
+ 'data-label'
450
+ );
451
+
452
+ // Store for backwards compatibility
453
+ if (!i) {
454
+ point.dataLabel = dataLabel;
455
+ }
411
456
 
412
- renderer.label(
413
- str,
414
- 0,
415
- -9999,
416
- options.shape,
417
- null,
418
- null,
419
- options.useHTML,
420
- null,
421
- 'data-label'
457
+ dataLabel.addClass(
458
+ ' highcharts-data-label-color-' + point.colorIndex +
459
+ ' ' + (labelOptions.className || '') +
460
+ ( // #3398
461
+ labelOptions.useHTML ?
462
+ ' highcharts-tracker' :
463
+ ''
464
+ )
422
465
  );
466
+ } else {
467
+ // Use old element and just update text
468
+ attr.text = labelText;
469
+ }
423
470
 
424
- dataLabel.addClass(
425
- ' highcharts-data-label-color-' + point.colorIndex +
426
- ' ' + (options.className || '') +
427
- (options.useHTML ? ' highcharts-tracker' : '') // #3398
471
+ // Store data label options for later access
472
+ dataLabel.options = labelOptions;
473
+
474
+ dataLabel.attr(attr);
475
+
476
+ // Styles must be applied before add in order to read text
477
+ // bounding box
478
+ dataLabel.css(style).shadow(labelOptions.shadow);
479
+
480
+
481
+ if (!dataLabel.added) {
482
+ dataLabel.add(dataLabelsGroup);
483
+ }
484
+
485
+ // Now the data label is created and placed at 0,0, so we
486
+ // need to align it
487
+ series.alignDataLabel(
488
+ point, dataLabel, labelOptions, null, isNew
428
489
  );
429
- } else {
430
- attr.text = str;
431
- }
432
- dataLabel.attr(attr);
433
-
434
- // Styles must be applied before add in order to read text
435
- // bounding box
436
- dataLabel.css(style).shadow(options.shadow);
437
-
438
-
439
- if (!dataLabel.added) {
440
- dataLabel.add(dataLabelsGroup);
441
490
  }
442
- // Now the data label is created and placed at 0,0, so we need
443
- // to align it
444
- series.alignDataLabel(point, dataLabel, options, null, isNew);
445
- }
491
+ });
446
492
  });
447
493
  }
448
494
 
@@ -452,19 +498,18 @@ Series.prototype.drawDataLabels = function () {
452
498
  /**
453
499
  * Align each individual data label.
454
500
  *
501
+ * @private
455
502
  * @function Highcharts.Series#alignDataLabel
456
503
  *
457
- * @param {Highcharts.Point} point
504
+ * @param {Highcharts.Point} point
458
505
  *
459
- * @param {Highcharts.SVGElement} dataLabel
506
+ * @param {Highcharts.SVGElement} dataLabel
460
507
  *
461
- * @param {Highcharts.PlotSeriesDataLabelsOptions} options
508
+ * @param {Highcharts.PlotSeriesDataLabelsOptions} options
462
509
  *
463
- * @param {Highcharts.BBoxObject} alignTo
510
+ * @param {Highcharts.BBoxObject} alignTo
464
511
  *
465
- * @param {boolean} isNew
466
- *
467
- * @return {void}
512
+ * @param {boolean} isNew
468
513
  */
469
514
  Series.prototype.alignDataLabel = function (
470
515
  point,
@@ -613,17 +658,18 @@ Series.prototype.alignDataLabel = function (
613
658
  * If data labels fall partly outside the plot area, align them back in, in a
614
659
  * way that doesn't hide the point.
615
660
  *
661
+ * @private
616
662
  * @function Highcharts.Series#justifyDataLabel
617
663
  *
618
- * @param {Highcharts.SVGElement} dataLabel
664
+ * @param {Highcharts.SVGElement} dataLabel
619
665
  *
620
- * @param {Highcharts.PlotSeriesDataLabelsOptions} options
666
+ * @param {Highcharts.PlotSeriesDataLabelsOptions} options
621
667
  *
622
- * @param {Highcharts.DataLabelAlignObject} alignAttr
668
+ * @param {*} alignAttr
623
669
  *
624
- * @param {Highcharts.BBoxObject} bBox
670
+ * @param {Highcharts.BBoxObject} bBox
625
671
  *
626
- * @param {boolean} isNew
672
+ * @param {boolean} isNew
627
673
  *
628
674
  * @return {boolean}
629
675
  */
@@ -698,9 +744,8 @@ if (seriesTypes.pie) {
698
744
  /**
699
745
  * Override the base drawDataLabels method by pie specific functionality
700
746
  *
747
+ * @private
701
748
  * @function Highcharts.seriesTypes.pie#drawDataLabels
702
- *
703
- * @return {void}
704
749
  */
705
750
  seriesTypes.pie.prototype.drawDataLabels = function () {
706
751
  var series = this,
@@ -790,6 +835,12 @@ if (seriesTypes.pie) {
790
835
 
791
836
  } else {
792
837
  point.dataLabel = point.dataLabel.destroy();
838
+ // Workaround to make pies destroy multiple datalabels
839
+ // correctly. This logic needs rewriting to support multiple
840
+ // datalabels fully.
841
+ if (point.dataLabels && point.dataLabels.length === 1) {
842
+ delete point.dataLabels;
843
+ }
793
844
  }
794
845
  }
795
846
  });
@@ -1035,9 +1086,10 @@ if (seriesTypes.pie) {
1035
1086
  * Extendable method for getting the path of the connector between the data
1036
1087
  * label and the pie slice.
1037
1088
  *
1089
+ * @private
1038
1090
  * @function Highcharts.seriesTypes.pie#connectorPath
1039
1091
  *
1040
- * @param {Highcharts.DataLabelPiePosObject} labelPos
1092
+ * @param {*} labelPos
1041
1093
  *
1042
1094
  * @return {Highcharts.PathObject}
1043
1095
  */
@@ -1069,9 +1121,8 @@ if (seriesTypes.pie) {
1069
1121
  * Perform the final placement of the data labels after we have verified
1070
1122
  * that they fall within the plot area.
1071
1123
  *
1124
+ * @private
1072
1125
  * @function Highcharts.seriesTypes.pie#placeDataLabels
1073
- *
1074
- * @return {void}
1075
1126
  */
1076
1127
  seriesTypes.pie.prototype.placeDataLabels = function () {
1077
1128
  each(this.points, function (point) {
@@ -1115,9 +1166,10 @@ if (seriesTypes.pie) {
1115
1166
  * translation and data label positioning to keep them inside the plot area.
1116
1167
  * Returns true when data labels are ready to draw.
1117
1168
  *
1169
+ * @private
1118
1170
  * @function Highcharts.seriesTypes.pie#verifyDataLabelOverflow
1119
1171
  *
1120
- * @param {boolean} overflow
1172
+ * @param {boolean} overflow
1121
1173
  *
1122
1174
  * @return {boolean}
1123
1175
  */
@@ -1195,19 +1247,18 @@ if (seriesTypes.column) {
1195
1247
  * Override the basic data label alignment by adjusting for the position of
1196
1248
  * the column.
1197
1249
  *
1250
+ * @private
1198
1251
  * @function Highcharts.seriesTypes.column#alignDataLabel
1199
1252
  *
1200
- * @param {Highcharts.Point} point
1201
- *
1202
- * @param {Highcharts.SVGElement} dataLabel
1253
+ * @param {Highcharts.Point} point
1203
1254
  *
1204
- * @param {Highcharts.PlotSeriesDataLabelsOptions} options
1255
+ * @param {Highcharts.SVGElement} dataLabel
1205
1256
  *
1206
- * @param {Highcharts.BBoxObject} alignTo
1257
+ * @param {Highcharts.PlotSeriesDataLabelsOptions} options
1207
1258
  *
1208
- * @param {boolean} isNew
1259
+ * @param {Highcharts.BBoxObject} alignTo
1209
1260
  *
1210
- * @return {void}
1261
+ * @param {boolean} isNew
1211
1262
  */
1212
1263
  seriesTypes.column.prototype.alignDataLabel = function (
1213
1264
  point,
@@ -1286,7 +1337,7 @@ if (seriesTypes.column) {
1286
1337
 
1287
1338
  // If label was justified and we have contrast, set it:
1288
1339
  if (point.isLabelJustified && point.contrastColor) {
1289
- point.dataLabel.css({
1340
+ dataLabel.css({
1290
1341
  color: point.contrastColor
1291
1342
  });
1292
1343
  }