highcharts 7.1.1 → 7.1.2

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 (415) hide show
  1. package/bower.json +1 -1
  2. package/css/annotations/popup.css +3 -3
  3. package/css/annotations/popup.scss +1 -1
  4. package/css/stocktools/gui.css +5 -5
  5. package/css/stocktools/gui.scss +1 -1
  6. package/es-modules/annotations/ControlPoint.js +1 -1
  7. package/es-modules/annotations/MockPoint.js +45 -12
  8. package/es-modules/annotations/annotations.src.js +203 -166
  9. package/es-modules/annotations/controllable/ControllableCircle.js +2 -10
  10. package/es-modules/annotations/controllable/ControllableImage.js +2 -10
  11. package/es-modules/annotations/controllable/ControllableLabel.js +54 -9
  12. package/es-modules/annotations/controllable/ControllableRect.js +2 -10
  13. package/es-modules/annotations/controllable/controllableMixin.js +32 -4
  14. package/es-modules/annotations/controllable/markerMixin.js +1 -0
  15. package/es-modules/annotations/eventEmitterMixin.js +1 -0
  16. package/es-modules/annotations/navigationBindings.js +15 -11
  17. package/es-modules/annotations/popup.js +59 -81
  18. package/es-modules/annotations/types/CrookedLine.js +19 -7
  19. package/es-modules/annotations/types/ElliottWave.js +7 -6
  20. package/es-modules/annotations/types/Fibonacci.js +14 -14
  21. package/es-modules/annotations/types/InfinityLine.js +4 -4
  22. package/es-modules/annotations/types/Measure.js +41 -41
  23. package/es-modules/annotations/types/Pitchfork.js +5 -4
  24. package/es-modules/annotations/types/VerticalLine.js +6 -5
  25. package/es-modules/error-messages.js +6 -1
  26. package/es-modules/indicators/indicators.src.js +5 -3
  27. package/es-modules/mixins/nodes.js +16 -8
  28. package/es-modules/modules/accessibility/AccessibilityComponent.js +4 -4
  29. package/es-modules/modules/accessibility/KeyboardNavigation.js +17 -4
  30. package/es-modules/modules/accessibility/components/RangeSelectorComponent.js +3 -2
  31. package/es-modules/modules/accessibility/components/SeriesComponent.js +110 -2
  32. package/es-modules/modules/accessibility/components/ZoomComponent.js +1 -1
  33. package/es-modules/modules/accessibility/options.js +2 -1
  34. package/es-modules/modules/bellcurve.src.js +27 -29
  35. package/es-modules/modules/boost/boost-init.js +14 -0
  36. package/es-modules/modules/boost/boost-overrides.js +13 -3
  37. package/es-modules/modules/boost/wgl-renderer.js +30 -15
  38. package/es-modules/modules/boost/wgl-shader.js +33 -16
  39. package/es-modules/modules/boost/wgl-vbuffer.js +8 -4
  40. package/es-modules/modules/broken-axis.src.js +1 -1
  41. package/es-modules/modules/bullet.src.js +68 -68
  42. package/es-modules/modules/cylinder.src.js +3 -1
  43. package/es-modules/modules/data.src.js +9 -5
  44. package/es-modules/modules/draggable-points.src.js +1 -1
  45. package/es-modules/modules/drilldown.src.js +1 -1
  46. package/es-modules/modules/export-data.src.js +7 -8
  47. package/es-modules/modules/exporting.src.js +9 -1
  48. package/es-modules/modules/full-screen.src.js +1 -1
  49. package/es-modules/modules/funnel3d.src.js +10 -3
  50. package/es-modules/modules/histogram.src.js +162 -164
  51. package/es-modules/modules/item-series.src.js +10 -10
  52. package/es-modules/modules/networkgraph/layouts.js +16 -12
  53. package/es-modules/modules/networkgraph/networkgraph.src.js +147 -51
  54. package/es-modules/modules/offline-exporting.src.js +15 -2
  55. package/es-modules/modules/oldie-polyfills.src.js +1 -1
  56. package/es-modules/modules/organization.src.js +65 -20
  57. package/es-modules/modules/pareto.src.js +52 -51
  58. package/es-modules/modules/pattern-fill.src.js +1 -1
  59. package/es-modules/modules/price-indicator.src.js +1 -1
  60. package/es-modules/modules/pyramid3d.src.js +1 -1
  61. package/es-modules/modules/sankey.src.js +22 -10
  62. package/es-modules/modules/series-label.src.js +16 -8
  63. package/es-modules/modules/solid-gauge.src.js +128 -79
  64. package/es-modules/modules/static-scale.src.js +8 -1
  65. package/es-modules/modules/stock-tools-gui.js +1 -1
  66. package/es-modules/modules/streamgraph.src.js +11 -11
  67. package/es-modules/modules/sunburst.src.js +23 -2
  68. package/es-modules/modules/tilemap.src.js +58 -57
  69. package/es-modules/modules/timeline.src.js +17 -12
  70. package/es-modules/modules/treemap.src.js +6 -6
  71. package/es-modules/modules/variwide.src.js +39 -39
  72. package/es-modules/modules/vector.src.js +108 -107
  73. package/es-modules/modules/venn.src.js +4 -2
  74. package/es-modules/modules/windbarb.src.js +43 -43
  75. package/es-modules/modules/wordcloud.src.js +1 -0
  76. package/es-modules/modules/xrange.src.js +112 -104
  77. package/es-modules/parts/AreaSeries.js +4 -1
  78. package/es-modules/parts/Axis.js +809 -1870
  79. package/es-modules/parts/Chart.js +254 -743
  80. package/es-modules/parts/Color.js +160 -113
  81. package/es-modules/parts/ColumnSeries.js +9 -3
  82. package/es-modules/parts/DataLabels.js +31 -2
  83. package/es-modules/parts/Dynamics.js +73 -26
  84. package/es-modules/parts/FlagsSeries.js +6 -4
  85. package/es-modules/parts/Globals.js +20 -36
  86. package/es-modules/parts/Html.js +116 -235
  87. package/es-modules/parts/Interaction.js +17 -7
  88. package/es-modules/parts/Legend.js +277 -632
  89. package/es-modules/parts/MSPointer.js +62 -106
  90. package/es-modules/parts/Options.js +128 -367
  91. package/es-modules/parts/OrdinalAxis.js +12 -0
  92. package/es-modules/parts/PieSeries.js +61 -44
  93. package/es-modules/parts/PlotLineOrBand.js +38 -3
  94. package/es-modules/parts/Point.js +117 -227
  95. package/es-modules/parts/Pointer.js +273 -558
  96. package/es-modules/parts/RangeSelector.js +5 -3
  97. package/es-modules/parts/Responsive.js +8 -4
  98. package/es-modules/parts/ScrollablePlotArea.js +215 -81
  99. package/es-modules/parts/Scrollbar.js +38 -23
  100. package/es-modules/parts/Series.js +151 -47
  101. package/es-modules/parts/Stacking.js +8 -3
  102. package/es-modules/parts/StockChart.js +42 -29
  103. package/es-modules/parts/SvgRenderer.js +1080 -2100
  104. package/es-modules/parts/Tick.js +11 -4
  105. package/es-modules/parts/Time.js +179 -363
  106. package/es-modules/parts/Tooltip.js +23 -12
  107. package/es-modules/parts/TouchPointer.js +69 -187
  108. package/es-modules/parts/Utilities.js +593 -846
  109. package/es-modules/parts-3d/Axis.js +2 -2
  110. package/es-modules/parts-3d/Column.js +18 -8
  111. package/es-modules/parts-gantt/GanttSeries.js +17 -21
  112. package/es-modules/parts-gantt/GridAxis.js +183 -101
  113. package/es-modules/parts-gantt/PathfinderAlgorithms.js +2 -2
  114. package/es-modules/parts-gantt/TreeGrid.js +53 -36
  115. package/es-modules/parts-map/ColorAxis.js +35 -14
  116. package/es-modules/parts-map/MapBubbleSeries.js +2 -1
  117. package/es-modules/parts-map/MapSeries.js +29 -18
  118. package/es-modules/parts-more/AreaRangeSeries.js +13 -12
  119. package/es-modules/parts-more/ColumnRangeSeries.js +8 -2
  120. package/es-modules/parts-more/GaugeSeries.js +9 -9
  121. package/es-modules/parts-more/PackedBubbleSeries.js +152 -115
  122. package/es-modules/parts-more/RadialAxis.js +102 -8
  123. package/es-modules/parts-more/WaterfallSeries.js +148 -35
  124. package/highcharts-3d.js +68 -67
  125. package/highcharts-3d.js.map +1 -1
  126. package/highcharts-3d.src.js +21 -11
  127. package/highcharts-gantt.d.ts +5 -3
  128. package/highcharts-gantt.js +618 -610
  129. package/highcharts-gantt.js.map +1 -1
  130. package/highcharts-gantt.src.d.ts +5 -3
  131. package/highcharts-gantt.src.js +5185 -8892
  132. package/highcharts-more.js +144 -140
  133. package/highcharts-more.js.map +1 -1
  134. package/highcharts-more.src.js +449 -194
  135. package/highcharts.d.ts +3943 -5236
  136. package/highcharts.js +454 -449
  137. package/highcharts.js.map +1 -1
  138. package/highcharts.src.d.ts +3943 -5236
  139. package/highcharts.src.js +4767 -8601
  140. package/highmaps.d.ts +5 -3
  141. package/highmaps.js +498 -494
  142. package/highmaps.js.map +1 -1
  143. package/highmaps.src.d.ts +5 -3
  144. package/highmaps.src.js +4547 -8507
  145. package/highstock.d.ts +5 -3
  146. package/highstock.js +597 -590
  147. package/highstock.js.map +1 -1
  148. package/highstock.src.d.ts +5 -3
  149. package/highstock.src.js +4871 -8661
  150. package/indicators/acceleration-bands.js +1 -1
  151. package/indicators/acceleration-bands.src.js +1 -1
  152. package/indicators/accumulation-distribution.js +1 -1
  153. package/indicators/accumulation-distribution.src.js +1 -1
  154. package/indicators/ao.js +1 -1
  155. package/indicators/ao.src.js +1 -1
  156. package/indicators/apo.js +1 -1
  157. package/indicators/apo.src.js +1 -1
  158. package/indicators/aroon-oscillator.js +1 -1
  159. package/indicators/aroon-oscillator.src.js +1 -1
  160. package/indicators/aroon.js +1 -1
  161. package/indicators/aroon.src.js +1 -1
  162. package/indicators/atr.js +1 -1
  163. package/indicators/atr.src.js +1 -1
  164. package/indicators/bollinger-bands.js +1 -1
  165. package/indicators/bollinger-bands.src.js +1 -1
  166. package/indicators/cci.js +1 -1
  167. package/indicators/cci.src.js +1 -1
  168. package/indicators/chaikin.js +1 -1
  169. package/indicators/chaikin.src.js +1 -1
  170. package/indicators/cmf.js +1 -1
  171. package/indicators/cmf.src.js +1 -1
  172. package/indicators/dema.js +1 -1
  173. package/indicators/dema.src.js +1 -1
  174. package/indicators/dpo.js +1 -1
  175. package/indicators/dpo.src.js +1 -1
  176. package/indicators/ema.js +1 -1
  177. package/indicators/ema.src.js +1 -1
  178. package/indicators/ichimoku-kinko-hyo.js +1 -1
  179. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  180. package/indicators/indicators-all.js +105 -105
  181. package/indicators/indicators-all.js.map +1 -1
  182. package/indicators/indicators-all.src.js +6 -4
  183. package/indicators/indicators.js +9 -9
  184. package/indicators/indicators.js.map +1 -1
  185. package/indicators/indicators.src.js +6 -4
  186. package/indicators/keltner-channels.js +1 -1
  187. package/indicators/keltner-channels.src.js +1 -1
  188. package/indicators/macd.js +1 -1
  189. package/indicators/macd.src.js +1 -1
  190. package/indicators/mfi.js +1 -1
  191. package/indicators/mfi.src.js +1 -1
  192. package/indicators/momentum.js +1 -1
  193. package/indicators/momentum.src.js +1 -1
  194. package/indicators/natr.js +1 -1
  195. package/indicators/natr.src.js +1 -1
  196. package/indicators/pivot-points.js +1 -1
  197. package/indicators/pivot-points.src.js +1 -1
  198. package/indicators/ppo.js +1 -1
  199. package/indicators/ppo.src.js +1 -1
  200. package/indicators/price-channel.js +1 -1
  201. package/indicators/price-channel.src.js +1 -1
  202. package/indicators/price-envelopes.js +1 -1
  203. package/indicators/price-envelopes.src.js +1 -1
  204. package/indicators/psar.js +1 -1
  205. package/indicators/psar.src.js +1 -1
  206. package/indicators/regressions.js +1 -1
  207. package/indicators/regressions.src.js +1 -1
  208. package/indicators/roc.js +1 -1
  209. package/indicators/roc.src.js +1 -1
  210. package/indicators/rsi.js +1 -1
  211. package/indicators/rsi.src.js +1 -1
  212. package/indicators/stochastic.js +1 -1
  213. package/indicators/stochastic.src.js +1 -1
  214. package/indicators/supertrend.js +1 -1
  215. package/indicators/supertrend.src.js +1 -1
  216. package/indicators/tema.js +1 -1
  217. package/indicators/tema.src.js +1 -1
  218. package/indicators/trix.js +1 -1
  219. package/indicators/trix.src.js +1 -1
  220. package/indicators/volume-by-price.js +1 -1
  221. package/indicators/volume-by-price.src.js +1 -1
  222. package/indicators/vwap.js +1 -1
  223. package/indicators/vwap.src.js +1 -1
  224. package/indicators/williams-r.js +1 -1
  225. package/indicators/williams-r.src.js +1 -1
  226. package/indicators/wma.js +1 -1
  227. package/indicators/wma.src.js +1 -1
  228. package/indicators/zigzag.js +1 -1
  229. package/indicators/zigzag.src.js +1 -1
  230. package/modules/accessibility.js +92 -89
  231. package/modules/accessibility.js.map +1 -1
  232. package/modules/accessibility.src.js +138 -15
  233. package/modules/annotations-advanced.js +128 -127
  234. package/modules/annotations-advanced.js.map +1 -1
  235. package/modules/annotations-advanced.src.js +514 -396
  236. package/modules/annotations.d.ts +36 -0
  237. package/modules/annotations.js +81 -81
  238. package/modules/annotations.js.map +1 -1
  239. package/modules/annotations.src.d.ts +36 -0
  240. package/modules/annotations.src.js +418 -315
  241. package/modules/arrow-symbols.js +1 -1
  242. package/modules/arrow-symbols.src.js +1 -1
  243. package/modules/boost-canvas.js +1 -1
  244. package/modules/boost-canvas.src.js +1 -1
  245. package/modules/boost.js +63 -63
  246. package/modules/boost.js.map +1 -1
  247. package/modules/boost.src.js +99 -39
  248. package/modules/broken-axis.js +1 -1
  249. package/modules/broken-axis.src.js +2 -2
  250. package/modules/bullet.js +1 -1
  251. package/modules/bullet.src.js +69 -69
  252. package/modules/current-date-indicator.js +1 -1
  253. package/modules/current-date-indicator.src.js +1 -1
  254. package/modules/cylinder.js +1 -1
  255. package/modules/cylinder.js.map +1 -1
  256. package/modules/cylinder.src.js +4 -2
  257. package/modules/data.js +4 -4
  258. package/modules/data.js.map +1 -1
  259. package/modules/data.src.js +10 -6
  260. package/modules/datagrouping.js +1 -1
  261. package/modules/datagrouping.src.js +1 -1
  262. package/modules/debugger.js +4 -4
  263. package/modules/debugger.js.map +1 -1
  264. package/modules/debugger.src.js +7 -2
  265. package/modules/dependency-wheel.js +1 -1
  266. package/modules/dependency-wheel.src.js +1 -1
  267. package/modules/dotplot.js +1 -1
  268. package/modules/dotplot.src.js +1 -1
  269. package/modules/drag-panes.js +1 -1
  270. package/modules/drag-panes.src.js +1 -1
  271. package/modules/draggable-points.js +1 -1
  272. package/modules/draggable-points.src.js +2 -2
  273. package/modules/drilldown.js +1 -1
  274. package/modules/drilldown.src.js +2 -2
  275. package/modules/export-data.js +2 -2
  276. package/modules/export-data.js.map +1 -1
  277. package/modules/export-data.src.js +8 -9
  278. package/modules/exporting.js +25 -25
  279. package/modules/exporting.js.map +1 -1
  280. package/modules/exporting.src.js +11 -3
  281. package/modules/full-screen.js +1 -1
  282. package/modules/full-screen.src.js +2 -2
  283. package/modules/funnel.js +1 -1
  284. package/modules/funnel.src.js +1 -1
  285. package/modules/funnel3d.js +2 -2
  286. package/modules/funnel3d.js.map +1 -1
  287. package/modules/funnel3d.src.js +11 -4
  288. package/modules/gantt.js +166 -164
  289. package/modules/gantt.js.map +1 -1
  290. package/modules/gantt.src.js +422 -295
  291. package/modules/grid-axis.js +18 -16
  292. package/modules/grid-axis.js.map +1 -1
  293. package/modules/grid-axis.src.js +184 -102
  294. package/modules/heatmap.js +22 -22
  295. package/modules/heatmap.js.map +1 -1
  296. package/modules/heatmap.src.js +36 -15
  297. package/modules/histogram-bellcurve.js +1 -1
  298. package/modules/histogram-bellcurve.js.map +1 -1
  299. package/modules/histogram-bellcurve.src.js +186 -183
  300. package/modules/item-series.js +1 -1
  301. package/modules/item-series.src.js +11 -11
  302. package/modules/map-parser.js +1 -1
  303. package/modules/map-parser.src.js +1 -1
  304. package/modules/map.js +83 -83
  305. package/modules/map.js.map +1 -1
  306. package/modules/map.src.js +67 -34
  307. package/modules/networkgraph.js +10 -9
  308. package/modules/networkgraph.js.map +1 -1
  309. package/modules/networkgraph.src.js +180 -72
  310. package/modules/no-data-to-display.js +1 -1
  311. package/modules/no-data-to-display.src.js +1 -1
  312. package/modules/offline-exporting.js +15 -15
  313. package/modules/offline-exporting.js.map +1 -1
  314. package/modules/offline-exporting.src.js +17 -4
  315. package/modules/oldie-polyfills.js +1 -1
  316. package/modules/oldie-polyfills.src.js +2 -2
  317. package/modules/oldie.js +2 -2
  318. package/modules/oldie.src.js +2 -2
  319. package/modules/organization.js +1 -1
  320. package/modules/organization.js.map +1 -1
  321. package/modules/organization.src.js +66 -21
  322. package/modules/overlapping-datalabels.js +1 -1
  323. package/modules/overlapping-datalabels.src.js +1 -1
  324. package/modules/parallel-coordinates.js +1 -1
  325. package/modules/parallel-coordinates.src.js +1 -1
  326. package/modules/pareto.js +1 -1
  327. package/modules/pareto.js.map +1 -1
  328. package/modules/pareto.src.js +53 -52
  329. package/modules/pathfinder.js +3 -3
  330. package/modules/pathfinder.js.map +1 -1
  331. package/modules/pathfinder.src.js +3 -3
  332. package/modules/pattern-fill.js +1 -1
  333. package/modules/pattern-fill.src.js +2 -2
  334. package/modules/price-indicator.js +1 -1
  335. package/modules/price-indicator.src.js +2 -2
  336. package/modules/pyramid3d.js +1 -1
  337. package/modules/pyramid3d.src.js +2 -2
  338. package/modules/sankey.js +14 -14
  339. package/modules/sankey.js.map +1 -1
  340. package/modules/sankey.src.js +39 -19
  341. package/modules/series-label.js +16 -16
  342. package/modules/series-label.js.map +1 -1
  343. package/modules/series-label.src.js +17 -9
  344. package/modules/solid-gauge.js +5 -5
  345. package/modules/solid-gauge.js.map +1 -1
  346. package/modules/solid-gauge.src.js +129 -80
  347. package/modules/sonification.js +1 -1
  348. package/modules/sonification.src.js +1 -1
  349. package/modules/static-scale.js +4 -4
  350. package/modules/static-scale.js.map +1 -1
  351. package/modules/static-scale.src.js +9 -2
  352. package/modules/stock-tools.js +2 -2
  353. package/modules/stock-tools.src.js +3 -3
  354. package/modules/stock.js +146 -145
  355. package/modules/stock.js.map +1 -1
  356. package/modules/stock.src.js +105 -61
  357. package/modules/streamgraph.js +1 -1
  358. package/modules/streamgraph.src.js +12 -12
  359. package/modules/sunburst.js +40 -40
  360. package/modules/sunburst.js.map +1 -1
  361. package/modules/sunburst.src.js +30 -9
  362. package/modules/tilemap.js +1 -1
  363. package/modules/tilemap.js.map +1 -1
  364. package/modules/tilemap.src.js +59 -58
  365. package/modules/timeline.js +12 -11
  366. package/modules/timeline.js.map +1 -1
  367. package/modules/timeline.src.js +18 -13
  368. package/modules/treegrid.js +45 -43
  369. package/modules/treegrid.js.map +1 -1
  370. package/modules/treegrid.src.js +238 -139
  371. package/modules/treemap.js +1 -1
  372. package/modules/treemap.src.js +7 -7
  373. package/modules/variable-pie.js +1 -1
  374. package/modules/variable-pie.src.js +1 -1
  375. package/modules/variwide.js +1 -1
  376. package/modules/variwide.src.js +40 -40
  377. package/modules/vector.js +1 -1
  378. package/modules/vector.js.map +1 -1
  379. package/modules/vector.src.js +109 -108
  380. package/modules/venn.js +23 -23
  381. package/modules/venn.js.map +1 -1
  382. package/modules/venn.src.js +5 -3
  383. package/modules/windbarb.js +1 -1
  384. package/modules/windbarb.src.js +44 -44
  385. package/modules/wordcloud.js +10 -10
  386. package/modules/wordcloud.js.map +1 -1
  387. package/modules/wordcloud.src.js +2 -1
  388. package/modules/xrange.js +12 -12
  389. package/modules/xrange.js.map +1 -1
  390. package/modules/xrange.src.js +113 -105
  391. package/package.json +1 -1
  392. package/themes/avocado.js +21 -37
  393. package/themes/avocado.src.js +1 -1
  394. package/themes/dark-blue.js +1 -1
  395. package/themes/dark-blue.src.js +1 -1
  396. package/themes/dark-green.js +1 -1
  397. package/themes/dark-green.src.js +1 -1
  398. package/themes/dark-unica.js +1 -1
  399. package/themes/dark-unica.src.js +1 -1
  400. package/themes/gray.js +1 -1
  401. package/themes/gray.src.js +1 -1
  402. package/themes/grid-light.js +1 -1
  403. package/themes/grid-light.src.js +1 -1
  404. package/themes/grid.js +1 -1
  405. package/themes/grid.src.js +1 -1
  406. package/themes/sand-signika.js +1 -1
  407. package/themes/sand-signika.src.js +1 -1
  408. package/themes/skies.js +1 -1
  409. package/themes/skies.src.js +1 -1
  410. package/themes/sunset.js +21 -37
  411. package/themes/sunset.src.js +1 -1
  412. package/.DS_Store +0 -0
  413. package/es-modules/.DS_Store +0 -0
  414. package/es-modules/modules/annotations-legacy.src.js +0 -1977
  415. package/js/.DS_Store +0 -0
@@ -238,8 +238,8 @@ wrap(Axis.prototype, 'getPlotBandPath', function (proceed) {
238
238
  from = args[1],
239
239
  to = args[2],
240
240
  path = [],
241
- fromPath = this.getPlotLinePath(from),
242
- toPath = this.getPlotLinePath(to);
241
+ fromPath = this.getPlotLinePath({ value: from }),
242
+ toPath = this.getPlotLinePath({ value: to });
243
243
 
244
244
  if (fromPath && toPath) {
245
245
  for (var i = 0; i < fromPath.length; i += 6) {
@@ -241,14 +241,23 @@ wrap(
241
241
  seriesTypes.column.prototype,
242
242
  'plotGroup',
243
243
  function (proceed, prop, name, visibility, zIndex, parent) {
244
- if (this.chart.is3d() && parent && !this[prop]) {
245
- if (!this.chart.columnGroup) {
246
- this.chart.columnGroup =
247
- this.chart.renderer.g('columnGroup').add(parent);
244
+ if (this.chart.is3d()) {
245
+ if (this[prop]) {
246
+ delete this[prop];
247
+ }
248
+ if (parent) {
249
+ if (!this.chart.columnGroup) {
250
+ this.chart.columnGroup =
251
+ this.chart.renderer.g('columnGroup').add(parent);
252
+ }
253
+ this[prop] = this.chart.columnGroup;
254
+ this.chart.columnGroup.attr(this.getPlotBox());
255
+ this[prop].survive = true;
256
+ if (prop === 'group' || prop === 'markerGroup') {
257
+ arguments[3] = 'visible';
258
+ // For 3D column group and markerGroup should be visible
259
+ }
248
260
  }
249
- this[prop] = this.chart.columnGroup;
250
- this.chart.columnGroup.attr(this.getPlotBox());
251
- this[prop].survive = true;
252
261
  }
253
262
  return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
254
263
  }
@@ -266,7 +275,8 @@ wrap(
266
275
  if (series.chart.is3d()) {
267
276
  series.data.forEach(function (point) {
268
277
  point.visible = point.options.visible = vis =
269
- vis === undefined ? !point.visible : vis;
278
+ vis === undefined ?
279
+ !pick(series.visible, point.visible) : vis;
270
280
  pointVis = vis ? 'visible' : 'hidden';
271
281
  series.options.data[series.data.indexOf(point)] =
272
282
  point.options;
@@ -19,13 +19,11 @@ import 'Pathfinder.js';
19
19
  import '../modules/xrange.src.js';
20
20
 
21
21
  var dateFormat = H.dateFormat,
22
- isObject = H.isObject,
23
22
  isNumber = H.isNumber,
24
23
  merge = H.merge,
25
24
  pick = H.pick,
26
25
  seriesType = H.seriesType,
27
26
  seriesTypes = H.seriesTypes,
28
- stop = H.stop,
29
27
  Series = H.Series,
30
28
  parent = seriesTypes.xrange;
31
29
 
@@ -53,19 +51,7 @@ seriesType('gantt', 'xrange'
53
51
 
54
52
  dataLabels: {
55
53
  /** @ignore-option */
56
- enabled: true,
57
- /** @ignore-option */
58
- formatter: function () {
59
- var point = this,
60
- amount = point.point.partialFill;
61
-
62
- if (isObject(amount)) {
63
- amount = amount.amount;
64
- }
65
- if (isNumber(amount) && amount > 0) {
66
- return (amount * 100) + '%';
67
- }
68
- }
54
+ enabled: true
69
55
  },
70
56
  tooltip: {
71
57
  headerFormat: '<span style="font-size: 10px">{series.name}</span><br/>',
@@ -75,12 +61,10 @@ seriesType('gantt', 'xrange'
75
61
  series = point.series,
76
62
  tooltip = series.chart.tooltip,
77
63
  xAxis = series.xAxis,
78
- options = xAxis.options,
79
- formats = options.dateTimeLabelFormats,
64
+ formats = series.tooltipOptions.dateTimeLabelFormats,
80
65
  startOfWeek = xAxis.options.startOfWeek,
81
66
  ttOptions = series.tooltipOptions,
82
67
  format = ttOptions.xDateFormat,
83
- range = point.end ? point.end - point.start : 0,
84
68
  start,
85
69
  end,
86
70
  milestone = point.options.milestone,
@@ -93,7 +77,7 @@ seriesType('gantt', 'xrange'
93
77
  if (!format) {
94
78
  format = H.splat(
95
79
  tooltip.getDateFormat(
96
- range,
80
+ xAxis.closestPointRange,
97
81
  point.start,
98
82
  startOfWeek,
99
83
  formats
@@ -110,7 +94,7 @@ seriesType('gantt', 'xrange'
110
94
  retVal += 'Start: ' + start + '<br/>';
111
95
  retVal += 'End: ' + end + '<br/>';
112
96
  } else {
113
- retVal += 'Date ' + start + '<br/>';
97
+ retVal += start + '<br/>';
114
98
  }
115
99
 
116
100
  return retVal;
@@ -199,7 +183,6 @@ seriesType('gantt', 'xrange'
199
183
  );
200
184
 
201
185
  if (graphic) {
202
- stop(graphic);
203
186
  graphic[verb]({
204
187
  d: diamondShape
205
188
  });
@@ -267,6 +250,19 @@ seriesType('gantt', 'xrange'
267
250
  retVal = parent.prototype.pointClass.prototype.applyOptions
268
251
  .call(point, retVal, x);
269
252
  return retVal;
253
+ },
254
+ isValid: function () {
255
+ return (
256
+ (
257
+ typeof this.start === 'number' ||
258
+ typeof this.x === 'number'
259
+ ) &&
260
+ (
261
+ typeof this.end === 'number' ||
262
+ typeof this.x2 === 'number' ||
263
+ this.milestone
264
+ )
265
+ );
270
266
  }
271
267
  }));
272
268
 
@@ -24,9 +24,50 @@ var addEvent = H.addEvent,
24
24
  merge = H.merge,
25
25
  pick = H.pick,
26
26
  wrap = H.wrap,
27
+ Chart = H.Chart,
27
28
  Axis = H.Axis,
28
29
  Tick = H.Tick;
29
30
 
31
+ var applyGridOptions = function applyGridOptions(axis) {
32
+ var options = axis.options,
33
+ gridOptions = options && isObject(options.grid) ? options.grid : {},
34
+ // TODO: Consider using cell margins defined in % of font size?
35
+ // 25 is optimal height for default fontSize (11px)
36
+ // 25 / 11 ≈ 2.28
37
+ fontSizeToCellHeightRatio = 25 / 11,
38
+ fontSize = options.labels.style.fontSize,
39
+ fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
40
+
41
+ // Center-align by default
42
+ if (!options.labels) {
43
+ options.labels = {};
44
+ }
45
+ options.labels.align = pick(options.labels.align, 'center');
46
+
47
+ // @todo: Check against tickLabelPlacement between/on etc
48
+
49
+ /* Prevents adding the last tick label if the axis is not a category
50
+ axis.
51
+ Since numeric labels are normally placed at starts and ends of a
52
+ range of value, and this module makes the label point at the value,
53
+ an "extra" label would appear. */
54
+ if (!axis.categories) {
55
+ options.showLastLabel = false;
56
+ }
57
+
58
+ // Make tick marks taller, creating cell walls of a grid. Use cellHeight
59
+ // axis option if set
60
+ if (axis.horiz) {
61
+ options.tickLength = gridOptions.cellHeight ||
62
+ fontMetrics.h * fontSizeToCellHeightRatio;
63
+ }
64
+
65
+ // Prevents rotation of labels when squished, as rotating them would not
66
+ // help.
67
+ axis.labelRotation = 0;
68
+ options.labels.rotation = 0;
69
+ };
70
+
30
71
  /**
31
72
  * Set grid options for the axis labels. Requires Highcharts Gantt.
32
73
  *
@@ -143,6 +184,13 @@ Axis.prototype.isOuterAxis = function () {
143
184
  }
144
185
  }
145
186
  });
187
+
188
+ if (isOuter && isNumber(axis.columnIndex)) {
189
+ var columns = axis.linkedParent && axis.linkedParent.columns ||
190
+ axis.columns;
191
+ isOuter = columns.length === axis.columnIndex;
192
+ }
193
+
146
194
  // There were either no other axes on the same side,
147
195
  // or the other axes were not farther from the chart
148
196
  return isOuter;
@@ -180,6 +228,9 @@ Axis.prototype.getMaxLabelDimensions = function (ticks, tickPositions) {
180
228
 
181
229
  // Find width and height of tick
182
230
  tickHeight = label.getBBox ? label.getBBox().height : 0;
231
+ if (label.textStr && !isNumber(label.textPxLength)) {
232
+ label.textPxLength = label.getBBox().width;
233
+ }
183
234
  tickWidth = isNumber(label.textPxLength) ? label.textPxLength : 0;
184
235
 
185
236
  // Update the result if width and/or height are larger
@@ -695,8 +746,6 @@ addEvent(
695
746
  min = linkedMin || axis.min,
696
747
  max = linkedMax || axis.max,
697
748
  tickInterval = axis.tickInterval,
698
- moreThanMin = firstPos > min,
699
- lessThanMax = lastPos < max,
700
749
  endMoreThanMin = firstPos < min && firstPos + tickInterval > min,
701
750
  startLessThanMax = lastPos > max && lastPos - tickInterval < max;
702
751
 
@@ -705,11 +754,11 @@ addEvent(
705
754
  !categoryAxis &&
706
755
  (axis.horiz || axis.isLinked)
707
756
  ) {
708
- if ((moreThanMin || endMoreThanMin) && !options.startOnTick) {
757
+ if (endMoreThanMin && !options.startOnTick) {
709
758
  tickPositions[0] = min;
710
759
  }
711
760
 
712
- if ((lessThanMax || startLessThanMax) && !options.endOnTick) {
761
+ if (startLessThanMax && !options.endOnTick) {
713
762
  tickPositions[tickPositions.length - 1] = max;
714
763
  }
715
764
  }
@@ -841,119 +890,152 @@ addEvent(
841
890
  }
842
891
  }
843
892
 
893
+ (axis.columns || []).forEach(function (column) {
894
+ column.render();
895
+ });
844
896
  }
845
897
  }
846
898
  );
847
899
 
848
- // Wraps axis init to draw cell walls on vertical axes.
849
- addEvent(Axis, 'init', function (e) {
900
+ // Handle columns and getOffset
901
+ var onGridAxisAfterGetOffset = function onGridAxisAfterGetOffset() {
902
+ (this.columns || []).forEach(function (column) {
903
+ column.getOffset();
904
+ });
905
+ };
906
+
907
+ var onGridAxisAfterInit = function onGridAxisAfterInit() {
850
908
  var axis = this,
851
909
  chart = axis.chart,
852
- userOptions = e.userOptions,
853
- gridOptions = (
854
- (userOptions && isObject(userOptions.grid)) ?
855
- userOptions.grid :
856
- {}
857
- ),
858
- columnOptions,
859
- column,
860
- columnIndex,
861
- i;
862
-
863
- function applyGridOptions() {
864
- var options = axis.options,
865
- // TODO: Consider using cell margins defined in % of font size?
866
- // 25 is optimal height for default fontSize (11px)
867
- // 25 / 11 ≈ 2.28
868
- fontSizeToCellHeightRatio = 25 / 11,
869
- fontSize = options.labels.style.fontSize,
870
- fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
871
-
872
- // Center-align by default
873
- if (!options.labels) {
874
- options.labels = {};
875
- }
876
- options.labels.align = pick(options.labels.align, 'center');
910
+ userOptions = axis.userOptions,
911
+ options = axis.options,
912
+ gridOptions = options && isObject(options.grid) ? options.grid : {};
877
913
 
878
- // @todo: Check against tickLabelPlacement between/on etc
914
+ if (gridOptions.enabled) {
915
+ applyGridOptions(axis);
916
+
917
+ // TODO: wrap the axis instead
918
+ wrap(axis, 'labelFormatter', function (proceed) {
919
+ var axis = this.axis,
920
+ tickPos = axis.tickPositions,
921
+ value = this.value,
922
+ series = (axis.isLinked ? axis.linkedParent : axis)
923
+ .series[0],
924
+ isFirst = value === tickPos[0],
925
+ isLast = value === tickPos[tickPos.length - 1],
926
+ point = series && H.find(series.options.data, function (p) {
927
+ return p[axis.isXAxis ? 'x' : 'y'] === value;
928
+ });
879
929
 
880
- /* Prevents adding the last tick label if the axis is not a category
881
- axis.
882
- Since numeric labels are normally placed at starts and ends of a
883
- range of value, and this module makes the label point at the value,
884
- an "extra" label would appear. */
885
- if (!axis.categories) {
886
- options.showLastLabel = false;
887
- }
930
+ // Make additional properties available for the
931
+ // formatter
932
+ this.isFirst = isFirst;
933
+ this.isLast = isLast;
934
+ this.point = point;
888
935
 
889
- // Make tick marks taller, creating cell walls of a grid. Use cellHeight
890
- // axis option if set
891
- if (axis.horiz) {
892
- options.tickLength = gridOptions.cellHeight ||
893
- fontMetrics.h * fontSizeToCellHeightRatio;
894
- }
895
-
896
- // Prevents rotation of labels when squished, as rotating them would not
897
- // help.
898
- axis.labelRotation = 0;
899
- options.labels.rotation = 0;
936
+ // Call original labelFormatter
937
+ return proceed.call(this);
938
+ });
900
939
  }
901
940
 
902
- if (gridOptions.enabled) {
903
- if (defined(gridOptions.borderColor)) {
904
- userOptions.tickColor =
905
- userOptions.lineColor = gridOptions.borderColor;
906
- }
941
+ if (gridOptions.columns) {
942
+ var columns = axis.columns = [],
943
+ columnIndex = axis.columnIndex = 0;
907
944
 
908
945
  // Handle columns, each column is a grid axis
909
- if (isArray(gridOptions.columns)) {
910
- columnIndex = 0;
911
- i = gridOptions.columns.length;
912
- while (i--) {
913
- columnOptions = merge(
914
- userOptions,
915
- gridOptions.columns[i],
916
- {
917
- // Force to behave like category axis
918
- type: 'category'
919
- }
920
- );
946
+ while (++columnIndex < gridOptions.columns.length) {
947
+ var columnOptions = merge(
948
+ userOptions,
949
+ gridOptions.columns[
950
+ gridOptions.columns.length - columnIndex - 1
951
+ ],
952
+ {
953
+ linkedTo: 0,
954
+ // Force to behave like category axis
955
+ type: 'category'
956
+ }
957
+ );
921
958
 
922
- delete columnOptions.grid.columns; // Prevent recursion
923
-
924
- column = new Axis(axis.chart, columnOptions);
925
- column.isColumn = true;
926
- column.columnIndex = columnIndex;
927
-
928
- wrap(column, 'labelFormatter', function (proceed) {
929
- var axis = this.axis,
930
- tickPos = axis.tickPositions,
931
- value = this.value,
932
- series = axis.series[0],
933
- isFirst = value === tickPos[0],
934
- isLast = value === tickPos[tickPos.length - 1],
935
- point = H.find(series.options.data, function (p) {
936
- return p[axis.isXAxis ? 'x' : 'y'] === value;
937
- });
959
+ delete columnOptions.grid.columns; // Prevent recursion
938
960
 
939
- // Make additional properties available for the formatter
940
- this.isFirst = isFirst;
941
- this.isLast = isLast;
942
- this.point = point;
961
+ var column = new Axis(axis.chart, columnOptions, true);
962
+ column.isColumn = true;
963
+ column.columnIndex = columnIndex;
943
964
 
944
- // Call original labelFormatter
945
- return proceed.call(this);
946
- });
947
-
948
- columnIndex++;
949
- }
950
- // This axis should not be shown, instead the column axes take over
951
- addEvent(this, 'afterInit', function () {
952
- H.erase(chart.axes, this);
953
- H.erase(chart[axis.coll], this);
954
- });
955
- } else {
956
- addEvent(this, 'afterInit', applyGridOptions);
965
+ // Remove column axis from chart axes array, and place it
966
+ // in the columns array.
967
+ H.erase(chart.axes, column);
968
+ H.erase(chart[axis.coll], column);
969
+ columns.push(column);
957
970
  }
958
971
  }
972
+ };
973
+
974
+ var onGridAxisAfterSetChartSize = function onGridAxisAfterSetChartSize() {
975
+ this.axes.forEach(function (axis) {
976
+ (axis.columns || []).forEach(function (column) {
977
+ column.setAxisSize();
978
+ column.setAxisTranslation();
979
+ });
980
+ });
981
+ };
982
+
983
+ // Handle columns and setScale
984
+ var onGridAxisAfterSetScale = function onGridAxisAfterSetScale() {
985
+ (this.columns || []).forEach(function (column) {
986
+ column.setScale();
987
+ });
988
+ };
989
+
990
+ var onGridAxisDestroy = function onGridAxisDestroy(e) {
991
+ (this.columns || []).forEach(function (column) {
992
+ column.destroy(e.keepEvents);
993
+ });
994
+ };
995
+
996
+ // Wraps axis init to draw cell walls on vertical axes.
997
+ var onGridAxisInit = function onGridAxisInit(e) {
998
+ var userOptions = e.userOptions,
999
+ gridOptions = (
1000
+ (userOptions && isObject(userOptions.grid)) ?
1001
+ userOptions.grid :
1002
+ {}
1003
+ );
1004
+
1005
+ if (gridOptions.enabled && defined(gridOptions.borderColor)) {
1006
+ userOptions.tickColor = userOptions.lineColor = gridOptions.borderColor;
1007
+ }
1008
+ };
1009
+
1010
+ var onGridAxisAfterSetOptions = function onGridAxisAfterSetOptions(e) {
1011
+ var axis = this,
1012
+ userOptions = e.userOptions,
1013
+ gridOptions = (
1014
+ (userOptions && isObject(userOptions.grid)) ?
1015
+ userOptions.grid :
1016
+ {}
1017
+ ),
1018
+ columns = gridOptions.columns;
1019
+
1020
+ // Add column options to the parent axis.
1021
+ // Children has their column options set on init in onGridAxisAfterInit.
1022
+ if (gridOptions.enabled && columns) {
1023
+ merge(true, axis.options, columns[columns.length - 1]);
1024
+ }
1025
+ };
1026
+
1027
+
1028
+ var axisEvents = {
1029
+ afterGetOffset: onGridAxisAfterGetOffset,
1030
+ afterInit: onGridAxisAfterInit,
1031
+ afterSetOptions: onGridAxisAfterSetOptions,
1032
+ afterSetScale: onGridAxisAfterSetScale,
1033
+ destroy: onGridAxisDestroy,
1034
+ init: onGridAxisInit
1035
+ };
1036
+
1037
+ // Add event handlers
1038
+ Object.keys(axisEvents).forEach(function (event) {
1039
+ addEvent(Axis, event, axisEvents[event]);
959
1040
  });
1041
+ addEvent(Chart, 'afterSetChartSize', onGridAxisAfterSetChartSize);
@@ -277,8 +277,8 @@ var algorithms = {
277
277
  // If we are going back again, switch direction to get around start
278
278
  // obstacle.
279
279
  if (
280
- waypoint[dir] > start[dir] === // Going towards max from start
281
- waypoint[dir] > endPoint[dir] // Going towards min to end
280
+ waypoint[dir] >= start[dir] === // Going towards max from start
281
+ waypoint[dir] >= endPoint[dir] // Going towards min to end
282
282
  ) {
283
283
  dir = dir === 'y' ? 'x' : 'y';
284
284
  useMax = start[dir] < end[dir];
@@ -485,6 +485,19 @@ var onBeforeRender = function (e) {
485
485
  removeFoundExtremesEvent,
486
486
  uniqueNames = options.uniqueNames,
487
487
  numberOfSeries = 0,
488
+ isDirty,
489
+ data,
490
+ treeGrid;
491
+ // Check whether any of series is rendering for the first time,
492
+ // visibility has changed, or its data is dirty,
493
+ // and only then update. #10570, #10580
494
+ isDirty = axis.series.some(function (series) {
495
+ return !series.hasRendered ||
496
+ series.isDirtyData ||
497
+ series.isDirty;
498
+ });
499
+
500
+ if (isDirty) {
488
501
  // Concatenate data from all series assigned to this axis.
489
502
  data = axis.series.reduce(function (arr, s) {
490
503
  if (s.visible) {
@@ -504,7 +517,7 @@ var onBeforeRender = function (e) {
504
517
  }
505
518
  }
506
519
  return arr;
507
- }, []),
520
+ }, []);
508
521
  // setScale is fired after all the series is initialized,
509
522
  // which is an ideal time to update the axis.categories.
510
523
  treeGrid = getTreeGridFromData(
@@ -513,48 +526,52 @@ var onBeforeRender = function (e) {
513
526
  (uniqueNames === true) ? numberOfSeries : 1
514
527
  );
515
528
 
516
- // Assign values to the axis.
517
- axis.categories = treeGrid.categories;
518
- axis.mapOfPosToGridNode = treeGrid.mapOfPosToGridNode;
519
- axis.hasNames = true;
520
- axis.tree = treeGrid.tree;
521
-
522
- // Update yData now that we have calculated the y values
523
- axis.series.forEach(function (series) {
524
- var data = series.options.data.map(function (d) {
525
- return isObject(d) ? merge(d) : d;
526
- });
529
+ // Assign values to the axis.
530
+ axis.categories = treeGrid.categories;
531
+ axis.mapOfPosToGridNode = treeGrid.mapOfPosToGridNode;
532
+ axis.hasNames = true;
533
+ axis.tree = treeGrid.tree;
527
534
 
528
- // Avoid destroying points when series is not visible
529
- if (series.visible) {
530
- series.setData(data, false);
531
- }
532
- });
533
-
534
- // Calculate the label options for each level in the tree.
535
- axis.mapOptionsToLevel = getLevelOptions({
536
- defaults: labelOptions,
537
- from: 1,
538
- levels: labelOptions.levels,
539
- to: axis.tree.height
540
- });
535
+ // Update yData now that we have calculated the y values
536
+ axis.series.forEach(function (series) {
537
+ var data = series.options.data.map(function (d) {
538
+ return isObject(d) ? merge(d) : d;
539
+ });
541
540
 
542
- // Collapse all the nodes belonging to a point where collapsed
543
- // equals true.
544
- // Can be called from beforeRender, if getBreakFromNode removes
545
- // its dependency on axis.max.
546
- removeFoundExtremesEvent =
547
- H.addEvent(axis, 'foundExtremes', function () {
548
- treeGrid.collapsedNodes.forEach(function (node) {
549
- var breaks = collapse(axis, node);
541
+ // Avoid destroying points when series is not visible
542
+ if (series.visible) {
543
+ series.setData(data, false);
544
+ }
545
+ });
550
546
 
551
- axis.setBreaks(breaks, false);
552
- });
553
- removeFoundExtremesEvent();
547
+ // Calculate the label options for each level in the tree.
548
+ axis.mapOptionsToLevel = getLevelOptions({
549
+ defaults: labelOptions,
550
+ from: 1,
551
+ levels: labelOptions.levels,
552
+ to: axis.tree.height
554
553
  });
554
+
555
+ // Collapse all the nodes belonging to a point where collapsed
556
+ // equals true. Only do this on init.
557
+ // Can be called from beforeRender, if getBreakFromNode removes
558
+ // its dependency on axis.max.
559
+ if (e.type === 'beforeRender') {
560
+ removeFoundExtremesEvent =
561
+ H.addEvent(axis, 'foundExtremes', function () {
562
+ treeGrid.collapsedNodes.forEach(function (node) {
563
+ var breaks = collapse(axis, node);
564
+
565
+ axis.setBreaks(breaks, false);
566
+ });
567
+ removeFoundExtremesEvent();
568
+ });
569
+ }
570
+ }
555
571
  });
556
572
  };
557
573
 
574
+
558
575
  override(GridAxis.prototype, {
559
576
  init: function (proceed, chart, userOptions) {
560
577
  var axis = this,