aw-highstock_rails 7.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +22 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +53 -0
  9. data/Rakefile +10 -0
  10. data/aw-highstock_rails.gemspec +28 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/aw/highstock_rails.rb +9 -0
  14. data/lib/aw/highstock_rails/version.rb +5 -0
  15. data/vendor/assets/javascripts/highstock/css/annotations/popup.css +229 -0
  16. data/vendor/assets/javascripts/highstock/css/annotations/popup.scss +235 -0
  17. data/vendor/assets/javascripts/highstock/css/highcharts.css +890 -0
  18. data/vendor/assets/javascripts/highstock/css/highcharts.scss +788 -0
  19. data/vendor/assets/javascripts/highstock/css/stocktools/gui.css +268 -0
  20. data/vendor/assets/javascripts/highstock/css/stocktools/gui.scss +270 -0
  21. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.css +951 -0
  22. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.scss +122 -0
  23. data/vendor/assets/javascripts/highstock/css/themes/grid-light.css +904 -0
  24. data/vendor/assets/javascripts/highstock/css/themes/grid-light.scss +33 -0
  25. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.css +920 -0
  26. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.scss +74 -0
  27. data/vendor/assets/javascripts/highstock/es-modules/annotations/ControlPoint.js +130 -0
  28. data/vendor/assets/javascripts/highstock/es-modules/annotations/MockPoint.js +415 -0
  29. data/vendor/assets/javascripts/highstock/es-modules/annotations/annotations.src.js +1231 -0
  30. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableCircle.js +92 -0
  31. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableImage.js +101 -0
  32. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableLabel.js +452 -0
  33. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllablePath.js +175 -0
  34. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableRect.js +93 -0
  35. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/controllableMixin.js +411 -0
  36. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/markerMixin.js +214 -0
  37. data/vendor/assets/javascripts/highstock/es-modules/annotations/eventEmitterMixin.js +271 -0
  38. data/vendor/assets/javascripts/highstock/es-modules/annotations/navigationBindings.js +1283 -0
  39. data/vendor/assets/javascripts/highstock/es-modules/annotations/popup.js +1069 -0
  40. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/CrookedLine.js +191 -0
  41. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/ElliottWave.js +76 -0
  42. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Fibonacci.js +247 -0
  43. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/InfinityLine.js +185 -0
  44. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Measure.js +928 -0
  45. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Pitchfork.js +203 -0
  46. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Tunnel.js +242 -0
  47. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/VerticalLine.js +157 -0
  48. data/vendor/assets/javascripts/highstock/es-modules/error-messages.js +128 -0
  49. data/vendor/assets/javascripts/highstock/es-modules/error.js +1 -0
  50. data/vendor/assets/javascripts/highstock/es-modules/indicators/acceleration-bands.src.js +199 -0
  51. data/vendor/assets/javascripts/highstock/es-modules/indicators/accumulation-distribution.src.js +129 -0
  52. data/vendor/assets/javascripts/highstock/es-modules/indicators/ao.src.js +206 -0
  53. data/vendor/assets/javascripts/highstock/es-modules/indicators/apo.src.js +148 -0
  54. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon-oscillator.src.js +128 -0
  55. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon.src.js +173 -0
  56. data/vendor/assets/javascripts/highstock/es-modules/indicators/atr.src.js +151 -0
  57. data/vendor/assets/javascripts/highstock/es-modules/indicators/bollinger-bands.src.js +209 -0
  58. data/vendor/assets/javascripts/highstock/es-modules/indicators/cci.src.js +131 -0
  59. data/vendor/assets/javascripts/highstock/es-modules/indicators/chaikin.src.js +167 -0
  60. data/vendor/assets/javascripts/highstock/es-modules/indicators/cmf.src.js +246 -0
  61. data/vendor/assets/javascripts/highstock/es-modules/indicators/dema.src.js +191 -0
  62. data/vendor/assets/javascripts/highstock/es-modules/indicators/dpo.src.js +138 -0
  63. data/vendor/assets/javascripts/highstock/es-modules/indicators/ema.src.js +166 -0
  64. data/vendor/assets/javascripts/highstock/es-modules/indicators/ichimoku-kinko-hyo.src.js +850 -0
  65. data/vendor/assets/javascripts/highstock/es-modules/indicators/indicators.src.js +425 -0
  66. data/vendor/assets/javascripts/highstock/es-modules/indicators/keltner-channels.src.js +193 -0
  67. data/vendor/assets/javascripts/highstock/es-modules/indicators/macd.src.js +417 -0
  68. data/vendor/assets/javascripts/highstock/es-modules/indicators/mfi.src.js +198 -0
  69. data/vendor/assets/javascripts/highstock/es-modules/indicators/momentum.src.js +119 -0
  70. data/vendor/assets/javascripts/highstock/es-modules/indicators/natr.src.js +74 -0
  71. data/vendor/assets/javascripts/highstock/es-modules/indicators/pivot-points.src.js +360 -0
  72. data/vendor/assets/javascripts/highstock/es-modules/indicators/ppo.src.js +152 -0
  73. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-channel.src.js +149 -0
  74. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-envelopes.src.js +251 -0
  75. data/vendor/assets/javascripts/highstock/es-modules/indicators/psar.src.js +307 -0
  76. data/vendor/assets/javascripts/highstock/es-modules/indicators/regressions.src.js +427 -0
  77. data/vendor/assets/javascripts/highstock/es-modules/indicators/roc.src.js +149 -0
  78. data/vendor/assets/javascripts/highstock/es-modules/indicators/rsi.src.js +163 -0
  79. data/vendor/assets/javascripts/highstock/es-modules/indicators/stochastic.src.js +193 -0
  80. data/vendor/assets/javascripts/highstock/es-modules/indicators/supertrend.src.js +544 -0
  81. data/vendor/assets/javascripts/highstock/es-modules/indicators/tema.src.js +247 -0
  82. data/vendor/assets/javascripts/highstock/es-modules/indicators/trix.src.js +96 -0
  83. data/vendor/assets/javascripts/highstock/es-modules/indicators/volume-by-price.src.js +671 -0
  84. data/vendor/assets/javascripts/highstock/es-modules/indicators/vwap.src.js +189 -0
  85. data/vendor/assets/javascripts/highstock/es-modules/indicators/williams-r.src.js +128 -0
  86. data/vendor/assets/javascripts/highstock/es-modules/indicators/wma.src.js +146 -0
  87. data/vendor/assets/javascripts/highstock/es-modules/indicators/zigzag.src.js +221 -0
  88. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-3d.src.js +17 -0
  89. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-more.src.js +22 -0
  90. data/vendor/assets/javascripts/highstock/es-modules/masters/highstock.src.js +11 -0
  91. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/acceleration-bands.src.js +11 -0
  92. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/accumulation-distribution.src.js +11 -0
  93. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ao.src.js +11 -0
  94. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/apo.src.js +11 -0
  95. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon-oscillator.src.js +11 -0
  96. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon.src.js +11 -0
  97. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/atr.src.js +11 -0
  98. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/bollinger-bands.src.js +11 -0
  99. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cci.src.js +11 -0
  100. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/chaikin.src.js +11 -0
  101. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cmf.src.js +10 -0
  102. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dema.src.js +11 -0
  103. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dpo.src.js +11 -0
  104. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ema.src.js +11 -0
  105. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +11 -0
  106. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators-all.src.js +49 -0
  107. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators.src.js +11 -0
  108. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/keltner-channels.src.js +11 -0
  109. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/macd.src.js +11 -0
  110. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/mfi.src.js +11 -0
  111. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/momentum.src.js +11 -0
  112. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/natr.src.js +11 -0
  113. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/pivot-points.src.js +11 -0
  114. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ppo.src.js +11 -0
  115. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-channel.src.js +11 -0
  116. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-envelopes.src.js +11 -0
  117. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/psar.src.js +11 -0
  118. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/regressions.src.js +11 -0
  119. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/roc.src.js +11 -0
  120. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/rsi.src.js +11 -0
  121. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/stochastic.src.js +11 -0
  122. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/supertrend.src.js +11 -0
  123. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/tema.src.js +11 -0
  124. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/trix.src.js +11 -0
  125. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/volume-by-price.src.js +11 -0
  126. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/vwap.src.js +11 -0
  127. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/williams-r.src.js +11 -0
  128. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/wma.src.js +11 -0
  129. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/zigzag.src.js +11 -0
  130. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/accessibility.src.js +13 -0
  131. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations-advanced.src.js +20 -0
  132. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations.src.js +12 -0
  133. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/arrow-symbols.src.js +10 -0
  134. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost-canvas.src.js +11 -0
  135. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost.src.js +11 -0
  136. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/bullet.src.js +11 -0
  137. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/current-date-indicator.src.js +10 -0
  138. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/cylinder.src.js +10 -0
  139. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/data.src.js +10 -0
  140. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/datagrouping.src.js +12 -0
  141. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/debugger.src.js +13 -0
  142. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/dependency-wheel.src.js +10 -0
  143. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drag-panes.src.js +11 -0
  144. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/draggable-points.src.js +9 -0
  145. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drilldown.src.js +10 -0
  146. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/export-data.src.js +10 -0
  147. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/exporting.src.js +10 -0
  148. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/full-screen.src.js +11 -0
  149. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/funnel.src.js +10 -0
  150. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/grid-axis.src.js +10 -0
  151. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/heatmap.src.js +11 -0
  152. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/histogram-bellcurve.src.js +11 -0
  153. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/item-series.src.js +11 -0
  154. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/networkgraph.src.js +10 -0
  155. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/no-data-to-display.src.js +11 -0
  156. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/offline-exporting.src.js +10 -0
  157. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie-polyfills.src.js +11 -0
  158. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie.src.js +11 -0
  159. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/overlapping-datalabels.src.js +9 -0
  160. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/parallel-coordinates.src.js +11 -0
  161. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pareto.src.js +11 -0
  162. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pathfinder.src.js +10 -0
  163. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pattern-fill.src.js +11 -0
  164. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/price-indicator.src.js +11 -0
  165. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sankey.src.js +10 -0
  166. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/series-label.src.js +9 -0
  167. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/solid-gauge.src.js +10 -0
  168. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sonification.src.js +12 -0
  169. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/static-scale.src.js +10 -0
  170. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock-tools.src.js +12 -0
  171. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock.src.js +19 -0
  172. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/streamgraph.src.js +10 -0
  173. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sunburst.src.js +10 -0
  174. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/tilemap.src.js +10 -0
  175. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/timeline.src.js +11 -0
  176. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treegrid.src.js +10 -0
  177. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treemap.src.js +10 -0
  178. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variable-pie.src.js +11 -0
  179. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variwide.src.js +10 -0
  180. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/vector.src.js +10 -0
  181. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/venn.src.js +10 -0
  182. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/windbarb.src.js +10 -0
  183. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/wordcloud.src.js +10 -0
  184. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/xrange.src.js +10 -0
  185. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.js +9 -0
  186. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.src.js +9 -0
  187. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-blue.src.js +9 -0
  188. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-green.src.js +9 -0
  189. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-unica.src.js +9 -0
  190. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/gray.src.js +9 -0
  191. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid-light.src.js +9 -0
  192. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid.src.js +9 -0
  193. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sand-signika.src.js +9 -0
  194. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/skies.src.js +9 -0
  195. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.js +9 -0
  196. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.src.js +9 -0
  197. data/vendor/assets/javascripts/highstock/es-modules/mixins/ajax.js +123 -0
  198. data/vendor/assets/javascripts/highstock/es-modules/mixins/centered-series.js +116 -0
  199. data/vendor/assets/javascripts/highstock/es-modules/mixins/derived-series.js +150 -0
  200. data/vendor/assets/javascripts/highstock/es-modules/mixins/download-url.js +103 -0
  201. data/vendor/assets/javascripts/highstock/es-modules/mixins/draw-point.js +51 -0
  202. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry-circles.js +300 -0
  203. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry.js +50 -0
  204. data/vendor/assets/javascripts/highstock/es-modules/mixins/indicator-required.js +49 -0
  205. data/vendor/assets/javascripts/highstock/es-modules/mixins/multipe-lines.js +223 -0
  206. data/vendor/assets/javascripts/highstock/es-modules/mixins/navigation.js +59 -0
  207. data/vendor/assets/javascripts/highstock/es-modules/mixins/nodes.js +76 -0
  208. data/vendor/assets/javascripts/highstock/es-modules/mixins/on-series.js +167 -0
  209. data/vendor/assets/javascripts/highstock/es-modules/mixins/polygon.js +293 -0
  210. data/vendor/assets/javascripts/highstock/es-modules/mixins/reduce-array.js +53 -0
  211. data/vendor/assets/javascripts/highstock/es-modules/mixins/tree-series.js +256 -0
  212. data/vendor/assets/javascripts/highstock/es-modules/modules/a11y-i18n.src.js +524 -0
  213. data/vendor/assets/javascripts/highstock/es-modules/modules/annotations-legacy.src.js +1951 -0
  214. data/vendor/assets/javascripts/highstock/es-modules/modules/bellcurve.src.js +173 -0
  215. data/vendor/assets/javascripts/highstock/es-modules/modules/boost-canvas.src.js +732 -0
  216. data/vendor/assets/javascripts/highstock/es-modules/modules/boost.src.js +3730 -0
  217. data/vendor/assets/javascripts/highstock/es-modules/modules/bullet.src.js +361 -0
  218. data/vendor/assets/javascripts/highstock/es-modules/modules/cylinder.src.js +389 -0
  219. data/vendor/assets/javascripts/highstock/es-modules/modules/data.src.js +2417 -0
  220. data/vendor/assets/javascripts/highstock/es-modules/modules/debugger.src.js +109 -0
  221. data/vendor/assets/javascripts/highstock/es-modules/modules/dependency-wheel.src.js +199 -0
  222. data/vendor/assets/javascripts/highstock/es-modules/modules/drag-panes.src.js +624 -0
  223. data/vendor/assets/javascripts/highstock/es-modules/modules/draggable-points.src.js +2625 -0
  224. data/vendor/assets/javascripts/highstock/es-modules/modules/drilldown.src.js +1300 -0
  225. data/vendor/assets/javascripts/highstock/es-modules/modules/export-data.src.js +983 -0
  226. data/vendor/assets/javascripts/highstock/es-modules/modules/exporting.src.js +2149 -0
  227. data/vendor/assets/javascripts/highstock/es-modules/modules/full-screen.src.js +40 -0
  228. data/vendor/assets/javascripts/highstock/es-modules/modules/funnel.src.js +552 -0
  229. data/vendor/assets/javascripts/highstock/es-modules/modules/histogram.src.js +229 -0
  230. data/vendor/assets/javascripts/highstock/es-modules/modules/item-series.src.js +150 -0
  231. data/vendor/assets/javascripts/highstock/es-modules/modules/keyboard-navigation.src.js +1606 -0
  232. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/QuadTree.js +175 -0
  233. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/layouts.js +506 -0
  234. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/networkgraph.src.js +740 -0
  235. data/vendor/assets/javascripts/highstock/es-modules/modules/no-data-to-display.src.js +260 -0
  236. data/vendor/assets/javascripts/highstock/es-modules/modules/offline-exporting.src.js +710 -0
  237. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie-polyfills.src.js +121 -0
  238. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie.src.js +1556 -0
  239. data/vendor/assets/javascripts/highstock/es-modules/modules/overlapping-datalabels.src.js +250 -0
  240. data/vendor/assets/javascripts/highstock/es-modules/modules/parallel-coordinates.src.js +492 -0
  241. data/vendor/assets/javascripts/highstock/es-modules/modules/pareto.src.js +152 -0
  242. data/vendor/assets/javascripts/highstock/es-modules/modules/pattern-fill.src.js +607 -0
  243. data/vendor/assets/javascripts/highstock/es-modules/modules/price-indicator.src.js +149 -0
  244. data/vendor/assets/javascripts/highstock/es-modules/modules/sankey.src.js +809 -0
  245. data/vendor/assets/javascripts/highstock/es-modules/modules/screen-reader.src.js +954 -0
  246. data/vendor/assets/javascripts/highstock/es-modules/modules/series-label.src.js +1042 -0
  247. data/vendor/assets/javascripts/highstock/es-modules/modules/solid-gauge.src.js +486 -0
  248. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Earcon.js +184 -0
  249. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Instrument.js +582 -0
  250. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Timeline.js +702 -0
  251. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/chartSonify.js +1026 -0
  252. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/instrumentDefinitions.js +37 -0
  253. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/musicalFrequencies.js +113 -0
  254. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/pointSonify.js +385 -0
  255. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/sonification.js +107 -0
  256. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/utilities.js +178 -0
  257. data/vendor/assets/javascripts/highstock/es-modules/modules/static-scale.src.js +88 -0
  258. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-bindings.js +1950 -0
  259. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-gui.js +1458 -0
  260. data/vendor/assets/javascripts/highstock/es-modules/modules/streamgraph.src.js +132 -0
  261. data/vendor/assets/javascripts/highstock/es-modules/modules/sunburst.src.js +1041 -0
  262. data/vendor/assets/javascripts/highstock/es-modules/modules/tilemap.src.js +769 -0
  263. data/vendor/assets/javascripts/highstock/es-modules/modules/timeline.src.js +750 -0
  264. data/vendor/assets/javascripts/highstock/es-modules/modules/treemap.src.js +1803 -0
  265. data/vendor/assets/javascripts/highstock/es-modules/modules/variable-pie.src.js +459 -0
  266. data/vendor/assets/javascripts/highstock/es-modules/modules/variwide.src.js +350 -0
  267. data/vendor/assets/javascripts/highstock/es-modules/modules/vector.src.js +354 -0
  268. data/vendor/assets/javascripts/highstock/es-modules/modules/venn.src.js +1192 -0
  269. data/vendor/assets/javascripts/highstock/es-modules/modules/windbarb.src.js +380 -0
  270. data/vendor/assets/javascripts/highstock/es-modules/modules/wordcloud.src.js +1103 -0
  271. data/vendor/assets/javascripts/highstock/es-modules/modules/xrange.src.js +761 -0
  272. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Axis.js +669 -0
  273. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Chart.js +1753 -0
  274. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Column.js +437 -0
  275. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Math.js +206 -0
  276. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Pie.js +207 -0
  277. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/SVGRenderer.js +1002 -0
  278. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Scatter.js +154 -0
  279. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Series.js +73 -0
  280. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/VMLRenderer.js +62 -0
  281. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/ArrowSymbols.js +198 -0
  282. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/CurrentDateIndicator.js +100 -0
  283. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttChart.js +140 -0
  284. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttSeries.js +415 -0
  285. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GridAxis.js +961 -0
  286. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Pathfinder.js +1298 -0
  287. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/PathfinderAlgorithms.js +816 -0
  288. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Tree.js +158 -0
  289. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/TreeGrid.js +1003 -0
  290. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorAxis.js +1103 -0
  291. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorSeriesMixin.js +138 -0
  292. data/vendor/assets/javascripts/highstock/es-modules/parts-map/GeoJSON.js +435 -0
  293. data/vendor/assets/javascripts/highstock/es-modules/parts-map/HeatmapSeries.js +474 -0
  294. data/vendor/assets/javascripts/highstock/es-modules/parts-map/Map.js +477 -0
  295. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapAxis.js +124 -0
  296. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapBubbleSeries.js +274 -0
  297. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapLineSeries.js +143 -0
  298. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapNavigation.js +357 -0
  299. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointSeries.js +187 -0
  300. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointer.js +132 -0
  301. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapSeries.js +1294 -0
  302. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaRangeSeries.js +725 -0
  303. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaSplineRangeSeries.js +98 -0
  304. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BoxPlotSeries.js +617 -0
  305. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleLegend.js +1167 -0
  306. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleSeries.js +661 -0
  307. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnPyramidSeries.js +288 -0
  308. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnRangeSeries.js +278 -0
  309. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ErrorBarSeries.js +172 -0
  310. data/vendor/assets/javascripts/highstock/es-modules/parts-more/GaugeSeries.js +618 -0
  311. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PackedBubbleSeries.js +567 -0
  312. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Pane.js +399 -0
  313. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Polar.js +634 -0
  314. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PolygonSeries.js +151 -0
  315. data/vendor/assets/javascripts/highstock/es-modules/parts-more/RadialAxis.js +685 -0
  316. data/vendor/assets/javascripts/highstock/es-modules/parts-more/WaterfallSeries.js +765 -0
  317. data/vendor/assets/javascripts/highstock/es-modules/parts.js +684 -0
  318. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSeries.js +578 -0
  319. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSplineSeries.js +122 -0
  320. data/vendor/assets/javascripts/highstock/es-modules/parts/Axis.js +6453 -0
  321. data/vendor/assets/javascripts/highstock/es-modules/parts/BarSeries.js +153 -0
  322. data/vendor/assets/javascripts/highstock/es-modules/parts/CandlestickSeries.js +358 -0
  323. data/vendor/assets/javascripts/highstock/es-modules/parts/Chart.js +2307 -0
  324. data/vendor/assets/javascripts/highstock/es-modules/parts/Color.js +301 -0
  325. data/vendor/assets/javascripts/highstock/es-modules/parts/ColumnSeries.js +1125 -0
  326. data/vendor/assets/javascripts/highstock/es-modules/parts/DataGrouping.js +1115 -0
  327. data/vendor/assets/javascripts/highstock/es-modules/parts/DataLabels.js +1431 -0
  328. data/vendor/assets/javascripts/highstock/es-modules/parts/DateTimeAxis.js +134 -0
  329. data/vendor/assets/javascripts/highstock/es-modules/parts/Dynamics.js +1301 -0
  330. data/vendor/assets/javascripts/highstock/es-modules/parts/FlagsSeries.js +739 -0
  331. data/vendor/assets/javascripts/highstock/es-modules/parts/Globals.js +75 -0
  332. data/vendor/assets/javascripts/highstock/es-modules/parts/Html.js +539 -0
  333. data/vendor/assets/javascripts/highstock/es-modules/parts/Interaction.js +1299 -0
  334. data/vendor/assets/javascripts/highstock/es-modules/parts/Legend.js +1411 -0
  335. data/vendor/assets/javascripts/highstock/es-modules/parts/LogarithmicAxis.js +168 -0
  336. data/vendor/assets/javascripts/highstock/es-modules/parts/MSPointer.js +176 -0
  337. data/vendor/assets/javascripts/highstock/es-modules/parts/Navigator.js +2486 -0
  338. data/vendor/assets/javascripts/highstock/es-modules/parts/OHLCSeries.js +412 -0
  339. data/vendor/assets/javascripts/highstock/es-modules/parts/Options.js +3732 -0
  340. data/vendor/assets/javascripts/highstock/es-modules/parts/OrdinalAxis.js +962 -0
  341. data/vendor/assets/javascripts/highstock/es-modules/parts/PieSeries.js +1328 -0
  342. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotBandSeries.experimental.js +74 -0
  343. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotLineOrBand.js +1061 -0
  344. data/vendor/assets/javascripts/highstock/es-modules/parts/Point.js +681 -0
  345. data/vendor/assets/javascripts/highstock/es-modules/parts/Pointer.js +1332 -0
  346. data/vendor/assets/javascripts/highstock/es-modules/parts/RangeSelector.js +2063 -0
  347. data/vendor/assets/javascripts/highstock/es-modules/parts/Responsive.js +295 -0
  348. data/vendor/assets/javascripts/highstock/es-modules/parts/ScatterSeries.js +278 -0
  349. data/vendor/assets/javascripts/highstock/es-modules/parts/ScrollablePlotArea.js +266 -0
  350. data/vendor/assets/javascripts/highstock/es-modules/parts/Scrollbar.js +1134 -0
  351. data/vendor/assets/javascripts/highstock/es-modules/parts/Series.js +5864 -0
  352. data/vendor/assets/javascripts/highstock/es-modules/parts/SplineSeries.js +267 -0
  353. data/vendor/assets/javascripts/highstock/es-modules/parts/Stacking.js +604 -0
  354. data/vendor/assets/javascripts/highstock/es-modules/parts/StockChart.js +951 -0
  355. data/vendor/assets/javascripts/highstock/es-modules/parts/SvgRenderer.js +5109 -0
  356. data/vendor/assets/javascripts/highstock/es-modules/parts/Tick.js +746 -0
  357. data/vendor/assets/javascripts/highstock/es-modules/parts/Time.js +881 -0
  358. data/vendor/assets/javascripts/highstock/es-modules/parts/Tooltip.js +1318 -0
  359. data/vendor/assets/javascripts/highstock/es-modules/parts/TouchPointer.js +404 -0
  360. data/vendor/assets/javascripts/highstock/es-modules/parts/Utilities.js +2751 -0
  361. data/vendor/assets/javascripts/highstock/es-modules/themes/avocado.js +37 -0
  362. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-blue.js +259 -0
  363. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-green.js +261 -0
  364. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-unica.js +220 -0
  365. data/vendor/assets/javascripts/highstock/es-modules/themes/gray.js +267 -0
  366. data/vendor/assets/javascripts/highstock/es-modules/themes/grid-light.js +81 -0
  367. data/vendor/assets/javascripts/highstock/es-modules/themes/grid.js +110 -0
  368. data/vendor/assets/javascripts/highstock/es-modules/themes/sand-signika.js +111 -0
  369. data/vendor/assets/javascripts/highstock/es-modules/themes/skies.js +100 -0
  370. data/vendor/assets/javascripts/highstock/es-modules/themes/sunset.js +36 -0
  371. data/vendor/assets/javascripts/highstock/highcharts-3d.js +85 -0
  372. data/vendor/assets/javascripts/highstock/highcharts-3d.js.map +1 -0
  373. data/vendor/assets/javascripts/highstock/highcharts-more.js +101 -0
  374. data/vendor/assets/javascripts/highstock/highcharts-more.js.map +1 -0
  375. data/vendor/assets/javascripts/highstock/highstock.js +583 -0
  376. data/vendor/assets/javascripts/highstock/highstock.js.map +1 -0
  377. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js +16 -0
  378. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js.map +1 -0
  379. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.src.js +448 -0
  380. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js +12 -0
  381. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js.map +1 -0
  382. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.src.js +156 -0
  383. data/vendor/assets/javascripts/highstock/indicators/ao.js +13 -0
  384. data/vendor/assets/javascripts/highstock/indicators/ao.js.map +1 -0
  385. data/vendor/assets/javascripts/highstock/indicators/ao.src.js +233 -0
  386. data/vendor/assets/javascripts/highstock/indicators/apo.js +13 -0
  387. data/vendor/assets/javascripts/highstock/indicators/apo.js.map +1 -0
  388. data/vendor/assets/javascripts/highstock/indicators/apo.src.js +223 -0
  389. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js +15 -0
  390. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js.map +1 -0
  391. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.src.js +426 -0
  392. data/vendor/assets/javascripts/highstock/indicators/aroon.js +16 -0
  393. data/vendor/assets/javascripts/highstock/indicators/aroon.js.map +1 -0
  394. data/vendor/assets/javascripts/highstock/indicators/aroon.src.js +423 -0
  395. data/vendor/assets/javascripts/highstock/indicators/atr.js +12 -0
  396. data/vendor/assets/javascripts/highstock/indicators/atr.js.map +1 -0
  397. data/vendor/assets/javascripts/highstock/indicators/atr.src.js +178 -0
  398. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js +16 -0
  399. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js.map +1 -0
  400. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.src.js +458 -0
  401. data/vendor/assets/javascripts/highstock/indicators/cci.js +12 -0
  402. data/vendor/assets/javascripts/highstock/indicators/cci.js.map +1 -0
  403. data/vendor/assets/javascripts/highstock/indicators/cci.src.js +158 -0
  404. data/vendor/assets/javascripts/highstock/indicators/chaikin.js +15 -0
  405. data/vendor/assets/javascripts/highstock/indicators/chaikin.js.map +1 -0
  406. data/vendor/assets/javascripts/highstock/indicators/chaikin.src.js +370 -0
  407. data/vendor/assets/javascripts/highstock/indicators/cmf.js +12 -0
  408. data/vendor/assets/javascripts/highstock/indicators/cmf.js.map +1 -0
  409. data/vendor/assets/javascripts/highstock/indicators/cmf.src.js +273 -0
  410. data/vendor/assets/javascripts/highstock/indicators/dema.js +13 -0
  411. data/vendor/assets/javascripts/highstock/indicators/dema.js.map +1 -0
  412. data/vendor/assets/javascripts/highstock/indicators/dema.src.js +266 -0
  413. data/vendor/assets/javascripts/highstock/indicators/dpo.js +12 -0
  414. data/vendor/assets/javascripts/highstock/indicators/dpo.js.map +1 -0
  415. data/vendor/assets/javascripts/highstock/indicators/dpo.src.js +166 -0
  416. data/vendor/assets/javascripts/highstock/indicators/ema.js +12 -0
  417. data/vendor/assets/javascripts/highstock/indicators/ema.js.map +1 -0
  418. data/vendor/assets/javascripts/highstock/indicators/ema.src.js +193 -0
  419. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js +22 -0
  420. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js.map +1 -0
  421. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.src.js +877 -0
  422. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js +117 -0
  423. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js.map +1 -0
  424. data/vendor/assets/javascripts/highstock/indicators/indicators-all.src.js +9389 -0
  425. data/vendor/assets/javascripts/highstock/indicators/indicators.js +17 -0
  426. data/vendor/assets/javascripts/highstock/indicators/indicators.js.map +1 -0
  427. data/vendor/assets/javascripts/highstock/indicators/indicators.src.js +500 -0
  428. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js +16 -0
  429. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js.map +1 -0
  430. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.src.js +442 -0
  431. data/vendor/assets/javascripts/highstock/indicators/macd.js +18 -0
  432. data/vendor/assets/javascripts/highstock/indicators/macd.js.map +1 -0
  433. data/vendor/assets/javascripts/highstock/indicators/macd.src.js +444 -0
  434. data/vendor/assets/javascripts/highstock/indicators/mfi.js +13 -0
  435. data/vendor/assets/javascripts/highstock/indicators/mfi.js.map +1 -0
  436. data/vendor/assets/javascripts/highstock/indicators/mfi.src.js +225 -0
  437. data/vendor/assets/javascripts/highstock/indicators/momentum.js +12 -0
  438. data/vendor/assets/javascripts/highstock/indicators/momentum.js.map +1 -0
  439. data/vendor/assets/javascripts/highstock/indicators/momentum.src.js +146 -0
  440. data/vendor/assets/javascripts/highstock/indicators/natr.js +12 -0
  441. data/vendor/assets/javascripts/highstock/indicators/natr.js.map +1 -0
  442. data/vendor/assets/javascripts/highstock/indicators/natr.src.js +101 -0
  443. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js +16 -0
  444. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js.map +1 -0
  445. data/vendor/assets/javascripts/highstock/indicators/pivot-points.src.js +387 -0
  446. data/vendor/assets/javascripts/highstock/indicators/ppo.js +13 -0
  447. data/vendor/assets/javascripts/highstock/indicators/ppo.js.map +1 -0
  448. data/vendor/assets/javascripts/highstock/indicators/ppo.src.js +227 -0
  449. data/vendor/assets/javascripts/highstock/indicators/price-channel.js +16 -0
  450. data/vendor/assets/javascripts/highstock/indicators/price-channel.js.map +1 -0
  451. data/vendor/assets/javascripts/highstock/indicators/price-channel.src.js +450 -0
  452. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js +15 -0
  453. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js.map +1 -0
  454. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.src.js +278 -0
  455. data/vendor/assets/javascripts/highstock/indicators/psar.js +13 -0
  456. data/vendor/assets/javascripts/highstock/indicators/psar.js.map +1 -0
  457. data/vendor/assets/javascripts/highstock/indicators/psar.src.js +334 -0
  458. data/vendor/assets/javascripts/highstock/indicators/regressions.js +14 -0
  459. data/vendor/assets/javascripts/highstock/indicators/regressions.js.map +1 -0
  460. data/vendor/assets/javascripts/highstock/indicators/regressions.src.js +454 -0
  461. data/vendor/assets/javascripts/highstock/indicators/roc.js +12 -0
  462. data/vendor/assets/javascripts/highstock/indicators/roc.js.map +1 -0
  463. data/vendor/assets/javascripts/highstock/indicators/roc.src.js +176 -0
  464. data/vendor/assets/javascripts/highstock/indicators/rsi.js +12 -0
  465. data/vendor/assets/javascripts/highstock/indicators/rsi.js.map +1 -0
  466. data/vendor/assets/javascripts/highstock/indicators/rsi.src.js +190 -0
  467. data/vendor/assets/javascripts/highstock/indicators/stochastic.js +17 -0
  468. data/vendor/assets/javascripts/highstock/indicators/stochastic.js.map +1 -0
  469. data/vendor/assets/javascripts/highstock/indicators/stochastic.src.js +494 -0
  470. data/vendor/assets/javascripts/highstock/indicators/supertrend.js +17 -0
  471. data/vendor/assets/javascripts/highstock/indicators/supertrend.js.map +1 -0
  472. data/vendor/assets/javascripts/highstock/indicators/supertrend.src.js +571 -0
  473. data/vendor/assets/javascripts/highstock/indicators/tema.js +14 -0
  474. data/vendor/assets/javascripts/highstock/indicators/tema.js.map +1 -0
  475. data/vendor/assets/javascripts/highstock/indicators/tema.src.js +322 -0
  476. data/vendor/assets/javascripts/highstock/indicators/trix.js +12 -0
  477. data/vendor/assets/javascripts/highstock/indicators/trix.js.map +1 -0
  478. data/vendor/assets/javascripts/highstock/indicators/trix.src.js +171 -0
  479. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js +21 -0
  480. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js.map +1 -0
  481. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.src.js +698 -0
  482. data/vendor/assets/javascripts/highstock/indicators/vwap.js +12 -0
  483. data/vendor/assets/javascripts/highstock/indicators/vwap.js.map +1 -0
  484. data/vendor/assets/javascripts/highstock/indicators/vwap.src.js +216 -0
  485. data/vendor/assets/javascripts/highstock/indicators/williams-r.js +13 -0
  486. data/vendor/assets/javascripts/highstock/indicators/williams-r.js.map +1 -0
  487. data/vendor/assets/javascripts/highstock/indicators/williams-r.src.js +207 -0
  488. data/vendor/assets/javascripts/highstock/indicators/wma.js +12 -0
  489. data/vendor/assets/javascripts/highstock/indicators/wma.js.map +1 -0
  490. data/vendor/assets/javascripts/highstock/indicators/wma.src.js +173 -0
  491. data/vendor/assets/javascripts/highstock/indicators/zigzag.js +13 -0
  492. data/vendor/assets/javascripts/highstock/indicators/zigzag.js.map +1 -0
  493. data/vendor/assets/javascripts/highstock/indicators/zigzag.src.js +248 -0
  494. data/vendor/assets/javascripts/highstock/lib/canvg.js +130 -0
  495. data/vendor/assets/javascripts/highstock/lib/canvg.src.js +3073 -0
  496. data/vendor/assets/javascripts/highstock/lib/jspdf.js +283 -0
  497. data/vendor/assets/javascripts/highstock/lib/jspdf.src.js +21627 -0
  498. data/vendor/assets/javascripts/highstock/lib/rgbcolor.js +17 -0
  499. data/vendor/assets/javascripts/highstock/lib/rgbcolor.src.js +299 -0
  500. data/vendor/assets/javascripts/highstock/lib/svg2pdf.js +38 -0
  501. data/vendor/assets/javascripts/highstock/lib/svg2pdf.src.js +4390 -0
  502. data/vendor/assets/javascripts/highstock/modules/accessibility.js +73 -0
  503. data/vendor/assets/javascripts/highstock/modules/accessibility.js.map +1 -0
  504. data/vendor/assets/javascripts/highstock/modules/accessibility.src.js +3103 -0
  505. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js +132 -0
  506. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js.map +1 -0
  507. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.src.js +8230 -0
  508. data/vendor/assets/javascripts/highstock/modules/annotations.js +94 -0
  509. data/vendor/assets/javascripts/highstock/modules/annotations.js.map +1 -0
  510. data/vendor/assets/javascripts/highstock/modules/annotations.src.js +6001 -0
  511. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js +11 -0
  512. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js.map +1 -0
  513. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.src.js +225 -0
  514. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js +23 -0
  515. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js.map +1 -0
  516. data/vendor/assets/javascripts/highstock/modules/boost-canvas.src.js +756 -0
  517. data/vendor/assets/javascripts/highstock/modules/boost.js +65 -0
  518. data/vendor/assets/javascripts/highstock/modules/boost.js.map +1 -0
  519. data/vendor/assets/javascripts/highstock/modules/boost.src.js +3752 -0
  520. data/vendor/assets/javascripts/highstock/modules/bullet.js +14 -0
  521. data/vendor/assets/javascripts/highstock/modules/bullet.js.map +1 -0
  522. data/vendor/assets/javascripts/highstock/modules/bullet.src.js +388 -0
  523. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js +11 -0
  524. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js.map +1 -0
  525. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.src.js +127 -0
  526. data/vendor/assets/javascripts/highstock/modules/cylinder.js +14 -0
  527. data/vendor/assets/javascripts/highstock/modules/cylinder.js.map +1 -0
  528. data/vendor/assets/javascripts/highstock/modules/cylinder.src.js +413 -0
  529. data/vendor/assets/javascripts/highstock/modules/data.js +37 -0
  530. data/vendor/assets/javascripts/highstock/modules/data.js.map +1 -0
  531. data/vendor/assets/javascripts/highstock/modules/data.src.js +2565 -0
  532. data/vendor/assets/javascripts/highstock/modules/datagrouping.js +25 -0
  533. data/vendor/assets/javascripts/highstock/modules/datagrouping.js.map +1 -0
  534. data/vendor/assets/javascripts/highstock/modules/datagrouping.src.js +1140 -0
  535. data/vendor/assets/javascripts/highstock/modules/debugger.js +28 -0
  536. data/vendor/assets/javascripts/highstock/modules/debugger.js.map +1 -0
  537. data/vendor/assets/javascripts/highstock/modules/debugger.src.js +267 -0
  538. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js +15 -0
  539. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js.map +1 -0
  540. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.src.js +301 -0
  541. data/vendor/assets/javascripts/highstock/modules/drag-panes.js +18 -0
  542. data/vendor/assets/javascripts/highstock/modules/drag-panes.js.map +1 -0
  543. data/vendor/assets/javascripts/highstock/modules/drag-panes.src.js +649 -0
  544. data/vendor/assets/javascripts/highstock/modules/draggable-points.js +40 -0
  545. data/vendor/assets/javascripts/highstock/modules/draggable-points.js.map +1 -0
  546. data/vendor/assets/javascripts/highstock/modules/draggable-points.src.js +2650 -0
  547. data/vendor/assets/javascripts/highstock/modules/drilldown.js +29 -0
  548. data/vendor/assets/javascripts/highstock/modules/drilldown.js.map +1 -0
  549. data/vendor/assets/javascripts/highstock/modules/drilldown.src.js +1321 -0
  550. data/vendor/assets/javascripts/highstock/modules/export-data.js +27 -0
  551. data/vendor/assets/javascripts/highstock/modules/export-data.js.map +1 -0
  552. data/vendor/assets/javascripts/highstock/modules/export-data.src.js +1234 -0
  553. data/vendor/assets/javascripts/highstock/modules/exporting.js +35 -0
  554. data/vendor/assets/javascripts/highstock/modules/exporting.js.map +1 -0
  555. data/vendor/assets/javascripts/highstock/modules/exporting.src.js +2233 -0
  556. data/vendor/assets/javascripts/highstock/modules/full-screen.js +11 -0
  557. data/vendor/assets/javascripts/highstock/modules/full-screen.js.map +1 -0
  558. data/vendor/assets/javascripts/highstock/modules/full-screen.src.js +68 -0
  559. data/vendor/assets/javascripts/highstock/modules/funnel.js +14 -0
  560. data/vendor/assets/javascripts/highstock/modules/funnel.js.map +1 -0
  561. data/vendor/assets/javascripts/highstock/modules/funnel.src.js +576 -0
  562. data/vendor/assets/javascripts/highstock/modules/grid-axis.js +23 -0
  563. data/vendor/assets/javascripts/highstock/modules/grid-axis.js.map +1 -0
  564. data/vendor/assets/javascripts/highstock/modules/grid-axis.src.js +988 -0
  565. data/vendor/assets/javascripts/highstock/modules/heatmap.js +28 -0
  566. data/vendor/assets/javascripts/highstock/modules/heatmap.js.map +1 -0
  567. data/vendor/assets/javascripts/highstock/modules/heatmap.src.js +1731 -0
  568. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js +16 -0
  569. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js.map +1 -0
  570. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.src.js +570 -0
  571. data/vendor/assets/javascripts/highstock/modules/item-series.js +13 -0
  572. data/vendor/assets/javascripts/highstock/modules/item-series.js.map +1 -0
  573. data/vendor/assets/javascripts/highstock/modules/item-series.src.js +176 -0
  574. data/vendor/assets/javascripts/highstock/modules/networkgraph.js +31 -0
  575. data/vendor/assets/javascripts/highstock/modules/networkgraph.js.map +1 -0
  576. data/vendor/assets/javascripts/highstock/modules/networkgraph.src.js +1348 -0
  577. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js +13 -0
  578. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js.map +1 -0
  579. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.src.js +285 -0
  580. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js +22 -0
  581. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js.map +1 -0
  582. data/vendor/assets/javascripts/highstock/modules/offline-exporting.src.js +838 -0
  583. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js +13 -0
  584. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js.map +1 -0
  585. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.src.js +150 -0
  586. data/vendor/assets/javascripts/highstock/modules/oldie.js +35 -0
  587. data/vendor/assets/javascripts/highstock/modules/oldie.js.map +1 -0
  588. data/vendor/assets/javascripts/highstock/modules/oldie.src.js +1582 -0
  589. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js +9 -0
  590. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js.map +1 -0
  591. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.src.js +22 -0
  592. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js +18 -0
  593. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js.map +1 -0
  594. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.src.js +517 -0
  595. data/vendor/assets/javascripts/highstock/modules/pareto.js +14 -0
  596. data/vendor/assets/javascripts/highstock/modules/pareto.js.map +1 -0
  597. data/vendor/assets/javascripts/highstock/modules/pareto.src.js +327 -0
  598. data/vendor/assets/javascripts/highstock/modules/pathfinder.js +34 -0
  599. data/vendor/assets/javascripts/highstock/modules/pathfinder.js.map +1 -0
  600. data/vendor/assets/javascripts/highstock/modules/pathfinder.src.js +2336 -0
  601. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js +21 -0
  602. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js.map +1 -0
  603. data/vendor/assets/javascripts/highstock/modules/pattern-fill.src.js +634 -0
  604. data/vendor/assets/javascripts/highstock/modules/price-indicator.js +13 -0
  605. data/vendor/assets/javascripts/highstock/modules/price-indicator.js.map +1 -0
  606. data/vendor/assets/javascripts/highstock/modules/price-indicator.src.js +176 -0
  607. data/vendor/assets/javascripts/highstock/modules/sankey.js +22 -0
  608. data/vendor/assets/javascripts/highstock/modules/sankey.js.map +1 -0
  609. data/vendor/assets/javascripts/highstock/modules/sankey.src.js +911 -0
  610. data/vendor/assets/javascripts/highstock/modules/series-label.js +23 -0
  611. data/vendor/assets/javascripts/highstock/modules/series-label.js.map +1 -0
  612. data/vendor/assets/javascripts/highstock/modules/series-label.src.js +1065 -0
  613. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js +15 -0
  614. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js.map +1 -0
  615. data/vendor/assets/javascripts/highstock/modules/solid-gauge.src.js +510 -0
  616. data/vendor/assets/javascripts/highstock/modules/sonification.js +53 -0
  617. data/vendor/assets/javascripts/highstock/modules/sonification.js.map +1 -0
  618. data/vendor/assets/javascripts/highstock/modules/sonification.src.js +3341 -0
  619. data/vendor/assets/javascripts/highstock/modules/static-scale.js +12 -0
  620. data/vendor/assets/javascripts/highstock/modules/static-scale.js.map +1 -0
  621. data/vendor/assets/javascripts/highstock/modules/static-scale.src.js +114 -0
  622. data/vendor/assets/javascripts/highstock/modules/stock-tools.js +65 -0
  623. data/vendor/assets/javascripts/highstock/modules/stock-tools.js.map +1 -0
  624. data/vendor/assets/javascripts/highstock/modules/stock-tools.src.js +3437 -0
  625. data/vendor/assets/javascripts/highstock/modules/stock.js +151 -0
  626. data/vendor/assets/javascripts/highstock/modules/stock.js.map +1 -0
  627. data/vendor/assets/javascripts/highstock/modules/stock.src.js +10907 -0
  628. data/vendor/assets/javascripts/highstock/modules/streamgraph.js +10 -0
  629. data/vendor/assets/javascripts/highstock/modules/streamgraph.js.map +1 -0
  630. data/vendor/assets/javascripts/highstock/modules/streamgraph.src.js +158 -0
  631. data/vendor/assets/javascripts/highstock/modules/sunburst.js +52 -0
  632. data/vendor/assets/javascripts/highstock/modules/sunburst.js.map +1 -0
  633. data/vendor/assets/javascripts/highstock/modules/sunburst.src.js +3174 -0
  634. data/vendor/assets/javascripts/highstock/modules/tilemap.js +26 -0
  635. data/vendor/assets/javascripts/highstock/modules/tilemap.js.map +1 -0
  636. data/vendor/assets/javascripts/highstock/modules/tilemap.src.js +1402 -0
  637. data/vendor/assets/javascripts/highstock/modules/timeline.js +23 -0
  638. data/vendor/assets/javascripts/highstock/modules/timeline.js.map +1 -0
  639. data/vendor/assets/javascripts/highstock/modules/timeline.src.js +778 -0
  640. data/vendor/assets/javascripts/highstock/modules/treegrid.js +50 -0
  641. data/vendor/assets/javascripts/highstock/modules/treegrid.js.map +1 -0
  642. data/vendor/assets/javascripts/highstock/modules/treegrid.src.js +2917 -0
  643. data/vendor/assets/javascripts/highstock/modules/treemap.js +39 -0
  644. data/vendor/assets/javascripts/highstock/modules/treemap.js.map +1 -0
  645. data/vendor/assets/javascripts/highstock/modules/treemap.src.js +2083 -0
  646. data/vendor/assets/javascripts/highstock/modules/variable-pie.js +16 -0
  647. data/vendor/assets/javascripts/highstock/modules/variable-pie.js.map +1 -0
  648. data/vendor/assets/javascripts/highstock/modules/variable-pie.src.js +485 -0
  649. data/vendor/assets/javascripts/highstock/modules/variwide.js +15 -0
  650. data/vendor/assets/javascripts/highstock/modules/variwide.js.map +1 -0
  651. data/vendor/assets/javascripts/highstock/modules/variwide.src.js +376 -0
  652. data/vendor/assets/javascripts/highstock/modules/vector.js +13 -0
  653. data/vendor/assets/javascripts/highstock/modules/vector.js.map +1 -0
  654. data/vendor/assets/javascripts/highstock/modules/vector.src.js +381 -0
  655. data/vendor/assets/javascripts/highstock/modules/venn.js +30 -0
  656. data/vendor/assets/javascripts/highstock/modules/venn.js.map +1 -0
  657. data/vendor/assets/javascripts/highstock/modules/venn.src.js +1624 -0
  658. data/vendor/assets/javascripts/highstock/modules/windbarb.js +17 -0
  659. data/vendor/assets/javascripts/highstock/modules/windbarb.js.map +1 -0
  660. data/vendor/assets/javascripts/highstock/modules/windbarb.src.js +574 -0
  661. data/vendor/assets/javascripts/highstock/modules/wordcloud.js +25 -0
  662. data/vendor/assets/javascripts/highstock/modules/wordcloud.js.map +1 -0
  663. data/vendor/assets/javascripts/highstock/modules/wordcloud.src.js +1475 -0
  664. data/vendor/assets/javascripts/highstock/modules/xrange.js +20 -0
  665. data/vendor/assets/javascripts/highstock/modules/xrange.js.map +1 -0
  666. data/vendor/assets/javascripts/highstock/modules/xrange.src.js +788 -0
  667. data/vendor/assets/javascripts/highstock/themes/avocado.js +9 -0
  668. data/vendor/assets/javascripts/highstock/themes/avocado.js.map +1 -0
  669. data/vendor/assets/javascripts/highstock/themes/avocado.src.js +63 -0
  670. data/vendor/assets/javascripts/highstock/themes/dark-blue.js +15 -0
  671. data/vendor/assets/javascripts/highstock/themes/dark-blue.js.map +1 -0
  672. data/vendor/assets/javascripts/highstock/themes/dark-blue.src.js +285 -0
  673. data/vendor/assets/javascripts/highstock/themes/dark-green.js +15 -0
  674. data/vendor/assets/javascripts/highstock/themes/dark-green.js.map +1 -0
  675. data/vendor/assets/javascripts/highstock/themes/dark-green.src.js +287 -0
  676. data/vendor/assets/javascripts/highstock/themes/dark-unica.js +14 -0
  677. data/vendor/assets/javascripts/highstock/themes/dark-unica.js.map +1 -0
  678. data/vendor/assets/javascripts/highstock/themes/dark-unica.src.js +246 -0
  679. data/vendor/assets/javascripts/highstock/themes/gray.js +15 -0
  680. data/vendor/assets/javascripts/highstock/themes/gray.js.map +1 -0
  681. data/vendor/assets/javascripts/highstock/themes/gray.src.js +293 -0
  682. data/vendor/assets/javascripts/highstock/themes/grid-light.js +11 -0
  683. data/vendor/assets/javascripts/highstock/themes/grid-light.js.map +1 -0
  684. data/vendor/assets/javascripts/highstock/themes/grid-light.src.js +107 -0
  685. data/vendor/assets/javascripts/highstock/themes/grid.js +11 -0
  686. data/vendor/assets/javascripts/highstock/themes/grid.js.map +1 -0
  687. data/vendor/assets/javascripts/highstock/themes/grid.src.js +136 -0
  688. data/vendor/assets/javascripts/highstock/themes/sand-signika.js +11 -0
  689. data/vendor/assets/javascripts/highstock/themes/sand-signika.js.map +1 -0
  690. data/vendor/assets/javascripts/highstock/themes/sand-signika.src.js +137 -0
  691. data/vendor/assets/javascripts/highstock/themes/skies.js +11 -0
  692. data/vendor/assets/javascripts/highstock/themes/skies.js.map +1 -0
  693. data/vendor/assets/javascripts/highstock/themes/skies.src.js +126 -0
  694. data/vendor/assets/javascripts/highstock/themes/sunset.js +9 -0
  695. data/vendor/assets/javascripts/highstock/themes/sunset.js.map +1 -0
  696. data/vendor/assets/javascripts/highstock/themes/sunset.src.js +62 -0
  697. metadata +781 -0
@@ -0,0 +1,50 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+ Tree Grid
4
+
5
+ (c) 2016-2019 Jon Arild Nygard
6
+
7
+ License: www.highcharts.com/license
8
+ */
9
+ (function(y){"object"===typeof module&&module.exports?(y["default"]=y,module.exports=y):"function"===typeof define&&define.amd?define(function(){return y}):y("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(y){(function(b){var p=b.addEvent,t=b.dateFormat,m=b.defined,v=b.isArray,w=b.isNumber,q=function(c){return b.isObject(c,!0)},n=b.merge,k=b.pick,d=b.wrap,e=b.Axis,l=b.Tick,h={top:0,right:1,bottom:2,left:3,0:"top",1:"right",2:"bottom",3:"left"};e.prototype.isNavigatorAxis=function(){return/highcharts-navigator-[xy]axis/.test(this.options.className)};
10
+ e.prototype.isOuterAxis=function(){var c=this,a=-1,f=!0;c.chart.axes.forEach(function(g,h){g.side!==c.side||g.isNavigatorAxis()||(g===c?a=h:0<=a&&h>a&&(f=!1))});return f};e.prototype.getMaxLabelDimensions=function(c,a){var f={width:0,height:0};a.forEach(function(a){a=c[a];var g;q(a)&&(g=q(a.label)?a.label:{},a=g.getBBox?g.getBBox().height:0,g=w(g.textPxLength)?g.textPxLength:0,f.height=Math.max(a,f.height),f.width=Math.max(g,f.width))});return f};b.dateFormats={W:function(c){c=new Date(c);var a;c.setHours(0,
11
+ 0,0,0);c.setDate(c.getDate()-(c.getDay()||7));a=new Date(c.getFullYear(),0,1);return Math.ceil(((c-a)/864E5+1)/7)},E:function(c){return t("%a",c,!0).charAt(0)}};p(l,"afterGetLabelPosition",function(c){var a=this.label,f=this.axis,g=f.reversed,d=f.chart,k=f.options,e=k&&q(k.grid)?k.grid:{},k=f.options.labels,l=k.align,b=h[f.side],n=c.tickmarkOffset,z=f.tickPositions,u=this.pos-n,z=w(z[c.index+1])?z[c.index+1]-n:f.max+n,A=f.tickSize("tick",!0),n=v(A)?A[0]:0,A=A&&A[1]/2,r;!0===e.enabled&&("top"===b?
12
+ (e=f.top+f.offset,r=e-n):"bottom"===b?(r=d.chartHeight-f.bottom+f.offset,e=r+n):(e=f.top+f.len-f.translate(g?z:u),r=f.top+f.len-f.translate(g?u:z)),"right"===b?(b=d.chartWidth-f.right+f.offset,g=b+n):"left"===b?(g=f.left+f.offset,b=g-n):(b=Math.round(f.left+f.translate(g?z:u))-A,g=Math.round(f.left+f.translate(g?u:z))-A),this.slotWidth=g-b,c.pos.x="left"===l?b:"right"===l?g:b+(g-b)/2,c.pos.y=r+(e-r)/2,d=d.renderer.fontMetrics(k.style.fontSize,a.element),a=a.getBBox().height,k.useHTML?c.pos.y+=d.b+
13
+ -(a/2):(a=Math.round(a/d.h),c.pos.y+=(d.b-(d.h-d.f))/2+-((a-1)*d.h/2)),c.pos.x+=f.horiz&&k.x||0)});p(e,"afterTickSize",function(c){var a=this.maxLabelDimensions,f=this.options;!0===(f&&q(f.grid)?f.grid:{}).enabled&&(f=2*Math.abs(this.defaultLeftAxisOptions.labels.x),a=f+(this.horiz?a.height:a.width),v(c.tickSize)?c.tickSize[0]=a:c.tickSize=[a])});p(e,"afterGetTitlePosition",function(c){var a=this.options;if(!0===(a&&q(a.grid)?a.grid:{}).enabled){var f=this.axisTitle,g=f&&f.getBBox().width,d=this.horiz,
14
+ e=this.left,b=this.top,l=this.width,n=this.height,p=a.title,a=this.opposite,z=this.offset,u=this.tickSize()||[0],A=p.x||0,r=p.y||0,B=k(p.margin,d?5:10),f=this.chart.renderer.fontMetrics(p.style&&p.style.fontSize,f).f,u=(d?b+n:e)+u[0]/2*(a?-1:1)*(d?1:-1)+(this.side===h.bottom?f:0);c.titlePosition.x=d?e-g/2-B+A:u+(a?l:0)+z+A;c.titlePosition.y=d?u-(a?n:0)+(a?f:-f)/2+z+r:b-B+r}});d(e.prototype,"unsquish",function(c){var a=this.options;return!0===(a&&q(a.grid)?a.grid:{}).enabled&&this.categories?this.tickInterval:
15
+ c.apply(this,Array.prototype.slice.call(arguments,1))});p(e,"afterSetOptions",function(c){var a=this.options;c=c.userOptions;var f,g=a&&q(a.grid)?a.grid:{};!0===g.enabled&&(f=n(!0,{className:"highcharts-grid-axis "+(c.className||""),dateTimeLabelFormats:{hour:{list:["%H:%M","%H"]},day:{list:["%A, %e. %B","%a, %e. %b","%E"]},week:{list:["Week %W","W%W"]},month:{list:["%B","%b","%o"]}},grid:{borderWidth:1},labels:{padding:2,style:{fontSize:"13px"}},margin:0,title:{text:null,reserveSpace:!1,rotation:0},
16
+ units:[["millisecond",[1,10,100]],["second",[1,10]],["minute",[1,5,15]],["hour",[1,6]],["day",[1]],["week",[1]],["month",[1]],["year",null]]},c),"xAxis"===this.coll&&(m(c.linkedTo)&&!m(c.tickPixelInterval)&&(f.tickPixelInterval=350),m(c.tickPixelInterval)||!m(c.linkedTo)||m(c.tickPositioner)||m(c.tickInterval)||(f.tickPositioner=function(a,c){var g=this.linkedParent&&this.linkedParent.tickPositions&&this.linkedParent.tickPositions.info;if(g){var h,d,k,e,l=f.units;for(e=0;e<l.length;e++)if(l[e][0]===
17
+ g.unitName){h=e;break}if(l[h][1])return l[h+1]&&(k=l[h+1][0],d=(l[h+1][1]||[1])[0]),g=b.timeUnits[k],this.tickInterval=g*d,this.getTimeTicks({unitRange:g,count:d,unitName:k},a,c,this.options.startOfWeek)}})),n(!0,this.options,f),this.horiz&&(a.minPadding=k(c.minPadding,0),a.maxPadding=k(c.maxPadding,0)),w(a.grid.borderWidth)&&(a.tickWidth=a.lineWidth=g.borderWidth))});p(e,"afterSetAxisTranslation",function(){var c=this.options,a=c&&q(c.grid)?c.grid:{},f=this.tickPositions&&this.tickPositions.info,
18
+ g=this.userOptions.labels||{};this.horiz&&(!0===a.enabled&&this.series.forEach(function(a){a.options.pointRange=0}),f&&(!1===c.dateTimeLabelFormats[f.unitName].range||1<f.count)&&!m(g.align)&&(c.labels.align="left",m(g.x)||(c.labels.x=3)))});p(e,"trimTicks",function(){var c=this.options,a=c&&q(c.grid)?c.grid:{},f=this.categories,g=this.tickPositions,h=g[0],d=g[g.length-1],k=this.linkedParent&&this.linkedParent.min||this.min,e=this.linkedParent&&this.linkedParent.max||this.max,b=this.tickInterval;
19
+ !0!==a.enabled||f||!this.horiz&&!this.isLinked||((h>k||h<k&&h+b>k)&&!c.startOnTick&&(g[0]=k),(d<e||d>e&&d-b<e)&&!c.endOnTick&&(g[g.length-1]=e))});p(e,"afterRender",function(){var c=this.options,a=c&&q(c.grid)?c.grid:{},f,g,d,k,e,b,l=this.chart.renderer,n=this.horiz;if(!0===a.enabled&&(a=2*Math.abs(this.defaultLeftAxisOptions.labels.x),this.maxLabelDimensions=this.getMaxLabelDimensions(this.ticks,this.tickPositions),a=this.maxLabelDimensions.width+a,f=c.lineWidth,this.rightWall&&this.rightWall.destroy(),
20
+ g=this.axisGroup.getBBox(),this.isOuterAxis()&&this.axisLine&&(n&&(a=g.height-1),f))){g=this.getLinePath(f);e=g.indexOf("M")+1;b=g.indexOf("L")+1;d=g.indexOf("M")+2;k=g.indexOf("L")+2;if(this.side===h.top||this.side===h.left)a=-a;n?(g[d]+=a,g[k]+=a):(g[e]+=a,g[b]+=a);this.axisLineExtra?this.axisLineExtra.animate({d:g}):this.axisLineExtra=l.path(g).attr({stroke:c.lineColor,"stroke-width":f,zIndex:7}).addClass("highcharts-axis-line").add(this.axisGroup);this.axisLine[this.showAxis?"show":"hide"](!0)}});
21
+ p(e,"init",function(c){function a(){var a=f.options,g=25/11,c=f.chart.renderer.fontMetrics(a.labels.style.fontSize);a.labels||(a.labels={});a.labels.align=k(a.labels.align,"center");f.categories||(a.showLastLabel=!1);f.horiz&&(a.tickLength=h.cellHeight||c.h*g);f.labelRotation=0;a.labels.rotation=0}var f=this,g=f.chart,h=(c=c.userOptions)&&q(c.grid)?c.grid:{},l,D,x;if(h.enabled)if(m(h.borderColor)&&(c.tickColor=c.lineColor=h.borderColor),v(h.columns)){D=0;for(x=h.columns.length;x--;)l=n(c,h.columns[x],
22
+ {type:"category"}),delete l.grid.columns,l=new e(f.chart,l),l.isColumn=!0,l.columnIndex=D,d(l,"labelFormatter",function(a){var g=this.axis,c=g.tickPositions,h=this.value,f=h===c[0],c=h===c[c.length-1],d=b.find(g.series[0].options.data,function(a){return a[g.isXAxis?"x":"y"]===h});this.isFirst=f;this.isLast=c;this.point=d;return a.call(this)}),D++;p(this,"afterInit",function(){b.erase(g.axes,this);b.erase(g[f.coll],this)})}else p(this,"afterInit",a)})})(y);var G=function(b){var p=b.extend,t=b.isNumber,
23
+ m=b.pick,v=function(b,n){var k=b.reduce(function(d,k){var e=m(k.parent,"");void 0===d[e]&&(d[e]=[]);d[e].push(k);return d},{});Object.keys(k).forEach(function(d,e){var b=k[d];""!==d&&-1===n.indexOf(d)&&(b.forEach(function(h){e[""].push(h)}),delete e[d])});return k},w=function(b,n,k,d,e,l){var h=0,c=0,a=l&&l.after,f=l&&l.before;n={data:d,depth:k-1,id:b,level:k,parent:n};var g,q;"function"===typeof f&&f(n,l);f=(e[b]||[]).map(function(a){var f=w(a.id,b,k+1,a,e,l),d=a.start;a=!0===a.milestone?d:a.end;
24
+ g=!t(g)||d<g?d:g;q=!t(q)||a>q?a:q;h=h+1+f.descendants;c=Math.max(f.height+1,c);return f});d&&(d.start=m(d.start,g),d.end=m(d.end,q));p(n,{children:f,descendants:h,height:c});"function"===typeof a&&a(n,l);return n};return{getListOfParents:v,getNode:w,getTree:function(b,n){var k=b.map(function(d){return d.id});b=v(b,k);return w("",null,1,null,b,n)}}}(y),H=function(b){var p=b.extend,t=b.isArray,m=b.isObject,v=b.isNumber,w=b.merge,q=b.pick;return{getColor:function(n,k){var d=k.index,e=k.mapOptionsToLevel,
25
+ l=k.parentColor,h=k.parentColorIndex,c=k.series,a=k.colors,f=k.siblings,g=c.points,p=c.chart.options.chart,C,m,x,t;if(n){g=g[n.i];n=e[n.level]||{};if(e=g&&n.colorByPoint)m=g.index%(a?a.length:p.colorCount),C=a&&a[m];if(!c.chart.styledMode){a=g&&g.options.color;p=n&&n.color;if(x=l)x=(x=n&&n.colorVariation)&&"brightness"===x.key?b.color(l).brighten(d/f*x.to).get():l;x=q(a,p,C,x,c.color)}t=q(g&&g.options.colorIndex,n&&n.colorIndex,m,h,k.colorIndex)}return{color:x,colorIndex:t}},getLevelOptions:function(b){var k=
26
+ null,d,e,l,h;if(m(b))for(k={},l=v(b.from)?b.from:1,h=b.levels,e={},d=m(b.defaults)?b.defaults:{},t(h)&&(e=h.reduce(function(c,a){var f,g;m(a)&&v(a.level)&&(g=w({},a),f="boolean"===typeof g.levelIsConstant?g.levelIsConstant:d.levelIsConstant,delete g.levelIsConstant,delete g.level,a=a.level+(f?0:l-1),m(c[a])?p(c[a],g):c[a]=g);return c},{})),h=v(b.to)?b.to:1,b=0;b<=h;b++)k[b]=w({},d,m(e[b])?e[b]:{});return k},setTreeValues:function k(d,b){var e=b.before,h=b.idRoot,c=b.mapIdToNode[h],a=b.points[d.i],
27
+ f=a&&a.options||{},g=0,m=[];p(d,{levelDynamic:d.level-(("boolean"===typeof b.levelIsConstant?b.levelIsConstant:1)?0:c.level),name:q(a&&a.name,""),visible:h===d.id||("boolean"===typeof b.visible?b.visible:!1)});"function"===typeof e&&(d=e(d,b));d.children.forEach(function(a,c){var f=p({},b);p(f,{index:c,siblings:d.children.length,visible:d.visible});a=k(a,f);m.push(a);a.visible&&(g+=a.val)});d.visible=0<g||d.visible;e=q(f.value,g);p(d,{children:m,childrenTotal:g,isLeaf:d.visible&&!g,val:e});return d},
28
+ updateRootId:function(b){var d;m(b)&&(d=m(b.options)?b.options:{},d=q(b.rootNode,d.rootId,""),m(b.userOptions)&&(b.userOptions.rootId=d),b.rootNode=d);return d}}}(y);(function(b){var p=b.addEvent,t=b.pick,m=b.extend,v=b.isArray,w=b.fireEvent,q=b.Axis,n=b.Series;m(q.prototype,{isInBreak:function(b,d){var e=b.repeat||Infinity,k=b.from,h=b.to-b.from;d=d>=k?(d-k)%e:e-(k-d)%e;return b.inclusive?d<=h:d<h&&0!==d},isInAnyBreak:function(b,d){var e=this.options.breaks,k=e&&e.length,h,c,a;if(k){for(;k--;)this.isInBreak(e[k],
29
+ b)&&(h=!0,c||(c=t(e[k].showPoints,!this.isXAxis)));a=h&&d?h&&!c:h}return a}});p(q,"afterInit",function(){"function"===typeof this.setBreaks&&this.setBreaks(this.options.breaks,!1)});p(q,"afterSetTickPositions",function(){if(this.isBroken){var b=this.tickPositions,d=this.tickPositions.info,e=[],l;for(l=0;l<b.length;l++)this.isInAnyBreak(b[l])||e.push(b[l]);this.tickPositions=e;this.tickPositions.info=d}});p(q,"afterSetOptions",function(){this.isBroken&&(this.options.ordinal=!1)});q.prototype.setBreaks=
30
+ function(b,d){function e(a){var b=a,c,d;for(d=0;d<h.breakArray.length;d++)if(c=h.breakArray[d],c.to<=a)b-=c.len;else if(c.from>=a)break;else if(h.isInBreak(c,a)){b-=a-c.from;break}return b}function k(a){var b,c;for(c=0;c<h.breakArray.length&&!(b=h.breakArray[c],b.from>=a);c++)b.to<a?a+=b.len:h.isInBreak(b,a)&&(a+=b.len);return a}var h=this,c=v(b)&&!!b.length;h.isDirty=h.isBroken!==c;h.isBroken=c;h.options.breaks=h.userOptions.breaks=b;h.forceRedraw=!0;c||h.val2lin!==e||(delete h.val2lin,delete h.lin2val);
31
+ c&&(h.userOptions.ordinal=!1,h.val2lin=e,h.lin2val=k,h.setExtremes=function(a,b,c,h,d){if(this.isBroken){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange}q.prototype.setExtremes.call(this,a,b,c,h,d)},h.setAxisTranslation=function(a){q.prototype.setAxisTranslation.call(this,a);this.unitLength=null;if(this.isBroken){a=h.options.breaks;var b=[],c=[],d=0,e,k,l=h.userMin||h.min,n=h.userMax||h.max,p=t(h.pointRangePadding,0),m,u;a.forEach(function(a){k=
32
+ a.repeat||Infinity;h.isInBreak(a,l)&&(l+=a.to%k-l%k);h.isInBreak(a,n)&&(n-=n%k-a.from%k)});a.forEach(function(a){m=a.from;for(k=a.repeat||Infinity;m-k>l;)m-=k;for(;m<l;)m+=k;for(u=m;u<n;u+=k)b.push({value:u,move:"in"}),b.push({value:u+(a.to-a.from),move:"out",size:a.breakSize})});b.sort(function(a,b){return a.value===b.value?("in"===a.move?0:1)-("in"===b.move?0:1):a.value-b.value});e=0;m=l;b.forEach(function(a){e+="in"===a.move?1:-1;1===e&&"in"===a.move&&(m=a.value);0===e&&(c.push({from:m,to:a.value,
33
+ len:a.value-m-(a.size||0)}),d+=a.value-m-(a.size||0))});h.breakArray=c;h.unitLength=n-l-d+p;w(h,"afterBreaks");h.staticScale?h.transA=h.staticScale:h.unitLength&&(h.transA*=(n-h.min+p)/h.unitLength);p&&(h.minPixelPadding=h.transA*h.minPointOffset);h.min=l;h.max=n}});t(d,!0)&&this.chart.redraw()};p(n,"afterGeneratePoints",function(){var b=this.xAxis,d=this.yAxis,e=this.points,l,h=e.length,c=this.options.connectNulls,a;if(b&&d&&(b.options.breaks||d.options.breaks))for(;h--;)l=e[h],a=null===l.y&&!1===
34
+ c,a||!b.isInAnyBreak(l.x,!0)&&!d.isInAnyBreak(l.y,!0)||(e.splice(h,1),this.data[h]&&this.data[h].destroyElements())});p(n,"afterRender",function(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,t(this.pointArrayMap,["y"]))});b.Series.prototype.drawBreaks=function(b,d){var e=this,k=e.points,h,c,a,f;b&&d.forEach(function(d){h=b.breakArray||[];c=b.isXAxis?b.min:t(e.options.threshold,b.min);k.forEach(function(g){f=t(g["stack"+d.toUpperCase()],g[d]);h.forEach(function(d){a=!1;if(c<d.from&&
35
+ f>d.to||c>d.from&&f<d.from)a="pointBreak";else if(c<d.from&&f>d.from&&f<d.to||c>d.from&&f>d.to&&f<d.from)a="pointInBreak";a&&w(b,a,{point:g,brk:d})})})})};b.Series.prototype.gappedPath=function(){var k=this.currentDataGrouping,d=k&&k.gapSize,k=this.options.gapSize,e=this.points.slice(),l=e.length-1,h=this.yAxis;if(k&&0<l)for("value"!==this.options.gapUnit&&(k*=this.closestPointRange),d&&d>k&&(k=d);l--;)e[l+1].x-e[l].x>k&&(d=(e[l].x+e[l+1].x)/2,e.splice(l+1,0,{isNull:!0,x:d}),this.options.stacking&&
36
+ (d=h.stacks[this.stackKey][d]=new b.StackItem(h,h.options.stackLabels,!1,d,this.stack),d.total=0));return this.getGraphPath(e)}})(y);(function(b,p,t){var m=b.addEvent,v=function(a){return Array.prototype.slice.call(a,1)},w=b.defined,q=b.extend,n=b.find,k=b.fireEvent,d=t.getLevelOptions,e=b.merge,l=b.isNumber,h=function(a){return b.isObject(a,!0)},c=b.isString,a=b.pick,f=b.wrap;t=b.Axis;var g=b.Tick,y=function(a,b){var c,d;for(c in b)b.hasOwnProperty(c)&&(d=b[c],f(a,c,d))},C=function(a,b){var c=a.collapseStart;
37
+ a=a.collapseEnd;a>=b&&(c-=.5);return{from:c,to:a,showPoints:!1}},D=function(a){return Object.keys(a.mapOfPosToGridNode).reduce(function(b,c){c=+c;a.min<=c&&a.max>=c&&!a.isInAnyBreak(c)&&b.push(c);return b},[])},x=function(a,b){var c=a.options.breaks||[],d=C(b,a.max);return c.some(function(a){return a.from===d.from&&a.to===d.to})},E=function(a,b){var c=a.options.breaks||[];a=C(b,a.max);c.push(a);return c},F=function(a,b){var c=a.options.breaks||[],d=C(b,a.max);return c.reduce(function(a,b){b.to===
38
+ d.to&&b.from===d.from||a.push(b);return a},[])},z=function(c,d){var h=c.labelIcon,g=!h,f=d.renderer,e=d.xy,k=d.options,B=k.width,l=k.height,n=e.x-B/2-k.padding,e=e.y-l/2,r=d.collapsed?90:180,m=d.show&&b.isNumber(e);g&&(c.labelIcon=h=f.path(f.symbols[k.type](k.x,k.y,B,l)).addClass("highcharts-label-icon").add(d.group));m||h.attr({y:-9999});f.styledMode||h.attr({"stroke-width":1,fill:a(d.color,"#666666")}).css({cursor:"pointer",stroke:k.lineColor,strokeWidth:k.lineWidth});h[g?"attr":"animate"]({translateX:n,
39
+ translateY:e,rotation:r})},u=function(a){a.target.axes.filter(function(a){return"treegrid"===a.options.type}).forEach(function(a){var c=a.options&&a.options.labels,h;a.updateYNames();a.series.forEach(function(a){a.yData=a.options.data.map(function(a){return a.y})});a.mapOptionsToLevel=d({defaults:c,from:1,levels:c.levels,to:a.tree.height});h=b.addEvent(a,"foundExtremes",function(){a.collapsedNodes.forEach(function(b){b=E(a,b);a.setBreaks(b,!1)});h()})})},A=function(a,b,d){var f=[],g=[],e={},k={},
40
+ l=-1,B="boolean"===typeof b?b:!1;a=p.getTree(a,{after:function(a){a=k[a.pos];var b=0,c=0;a.children.forEach(function(a){c+=a.descendants+1;b=Math.max(a.height+1,b)});a.descendants=c;a.height=b;a.collapsed&&g.push(a)},before:function(a){var b=h(a.data)?a.data:{},d=c(b.name)?b.name:"",g=e[a.parent],g=h(g)?k[g.pos]:null,m=function(a){return a.name===d},r;B&&h(g)&&(r=n(g.children,m))?(m=r.pos,r.nodes.push(a)):m=l++;k[m]||(k[m]=r={depth:g?g.depth+1:0,name:d,nodes:[a],children:[],pos:m},-1!==m&&f.push(d),
41
+ h(g)&&g.children.push(r));c(a.id)&&(e[a.id]=a);!0===b.collapsed&&(r.collapsed=!0);a.pos=m}});k=function(a,b){var c=function(a,d,g){var f=d+(-1===d?0:b-1),e=(f-d)/2,k=d+e;a.nodes.forEach(function(a){var b=a.data;h(b)&&(b.y=d+b.seriesIndex,delete b.seriesIndex);a.pos=k});g[k]=a;a.pos=k;a.tickmarkOffset=e+.5;a.collapseStart=f+.5;a.children.forEach(function(a){c(a,f+1,g);f=a.collapseEnd-.5});a.collapseEnd=f+.5;return g};return c(a["-1"],-1,{})}(k,d);return{categories:f,mapOfIdToNode:e,mapOfPosToGridNode:k,
42
+ collapsedNodes:g,tree:a}};y(t.prototype,{init:function(a,b,c){var d="treegrid"===c.type;d&&(m(b,"beforeRender",u),m(b,"beforeRedraw",u),c=e({grid:{enabled:!0},labels:{align:"left",levels:[{level:void 0},{level:1,style:{fontWeight:"bold"}}],symbol:{type:"triangle",x:-5,y:-5,height:10,width:10,padding:5}},uniqueNames:!1},c,{reversed:!0,grid:{columns:void 0}}));a.apply(this,[b,c]);d&&(this.hasNames=!0,this.options.showLastLabel=!0)},getMaxLabelDimensions:function(a){var b=this.options,c=b&&b.labels,
43
+ b=c&&l(c.indentation)?b.labels.indentation:0,c=a.apply(this,v(arguments)),d;"treegrid"===this.options.type&&this.mapOfPosToGridNode&&(d=this.mapOfPosToGridNode[-1].height,c.width+=b*(d-1));return c},generateTick:function(a,b){var c=h(this.mapOptionsToLevel)?this.mapOptionsToLevel:{},d=this.ticks,f=d[b],k,e;"treegrid"===this.options.type?(e=this.mapOfPosToGridNode[b],(c=c[e.depth])&&(k={labels:c}),f?(f.parameters.category=e.name,f.options=k,f.addLabel()):d[b]=new g(this,b,null,void 0,{category:e.name,
44
+ tickmarkOffset:e.tickmarkOffset,options:k})):a.apply(this,v(arguments))},setTickInterval:function(b){var c=this.options;"treegrid"===c.type?(this.min=a(this.userMin,c.min,this.dataMin),this.max=a(this.userMax,c.max,this.dataMax),k(this,"foundExtremes"),this.setAxisTranslation(!0),this.tickmarkOffset=.5,this.tickInterval=1,this.tickPositions=this.mapOfPosToGridNode?D(this):[]):b.apply(this,v(arguments))}});y(g.prototype,{getLabelPosition:function(b,c,d,g,f,e,k,m,n){var p=a(this.options&&this.options.labels,
45
+ e);e=this.pos;var r=this.axis,B="treegrid"===r.options.type;b=b.apply(this,[c,d,g,f,p,k,m,n]);B&&(c=p&&h(p.symbol)?p.symbol:{},p=p&&l(p.indentation)?p.indentation:0,e=(e=(r=r.mapOfPosToGridNode)&&r[e])&&e.depth||1,b.x+=c.width+2*c.padding+(e-1)*p);return b},renderLabel:function(c){var d=this,g=d.pos,f=d.axis,e=d.label,k=f.mapOfPosToGridNode,l=f.options,m=a(d.options&&d.options.labels,l&&l.labels),n=m&&h(m.symbol)?m.symbol:{},p=(k=k&&k[g])&&k.depth,l="treegrid"===l.type,r=!(!e||!e.element),q=-1<f.tickPositions.indexOf(g),
46
+ g=f.chart.styledMode;l&&k&&r&&e.addClass("highcharts-treegrid-node-level-"+p);c.apply(d,v(arguments));l&&k&&r&&0<k.descendants&&(f=x(f,k),z(d,{color:!g&&e.styles.color,collapsed:f,group:e.parentGroup,options:n,renderer:e.renderer,show:q,xy:e.xy}),n="highcharts-treegrid-node-"+(f?"expanded":"collapsed"),e.addClass("highcharts-treegrid-node-"+(f?"collapsed":"expanded")).removeClass(n),g||e.css({cursor:"pointer"}),[e,d.labelIcon].forEach(function(a){a.attachedTreeGridEvents||(b.addEvent(a.element,"mouseover",
47
+ function(){var a=e;a.addClass("highcharts-treegrid-node-active");a.renderer.styledMode||a.css({textDecoration:"underline"})}),b.addEvent(a.element,"mouseout",function(){var a=e,b=m,b=w(b.style)?b.style:{};a.removeClass("highcharts-treegrid-node-active");a.renderer.styledMode||a.css({textDecoration:b.textDecoration})}),b.addEvent(a.element,"click",function(){d.toggleCollapse()}),a.attachedTreeGridEvents=!0)}))}});q(g.prototype,{collapse:function(b){var c=this.axis,d=E(c,c.mapOfPosToGridNode[this.pos]);
48
+ c.setBreaks(d,a(b,!0))},expand:function(b){var c=this.axis,d=F(c,c.mapOfPosToGridNode[this.pos]);c.setBreaks(d,a(b,!0))},toggleCollapse:function(b){var c=this.axis,d;d=c.mapOfPosToGridNode[this.pos];d=x(c,d)?F(c,d):E(c,d);c.setBreaks(d,a(b,!0))}});t.prototype.updateYNames=function(){var a=this.options,b=a.uniqueNames,c=!this.isXAxis,d=this.series,e=0;"treegrid"===a.type&&c&&(a=d.reduce(function(a,c){c.visible&&(c.options.data.forEach(function(b){h(b)&&(b.seriesIndex=e,a.push(b))}),!0===b&&e++);return a},
49
+ []),a=A(a,b,!0===b?e:1),this.categories=a.categories,this.mapOfPosToGridNode=a.mapOfPosToGridNode,this.collapsedNodes=a.collapsedNodes,this.hasNames=!0,this.tree=a.tree)};t.prototype.utils={getNode:p.getNode}})(y,G,H)});
50
+ //# sourceMappingURL=treegrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treegrid.js.map","lineCount":49,"mappings":"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","sources":["treegrid.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","H","addEvent","dateFormat","defined","isArray","isNumber","isObject","x","merge","pick","wrap","Axis","Tick","axisSide","top","right","bottom","left","prototype","isNavigatorAxis","Axis.prototype.isNavigatorAxis","test","options","className","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","forEach","otherAxis","index","side","getMaxLabelDimensions","Axis.prototype.getMaxLabelDimensions","ticks","tickPositions","dimensions","width","height","pos","tick","tickWidth","label","tickHeight","getBBox","textPxLength","Math","max","dateFormats","W","timestamp","d","Date","yearStart","setHours","setDate","getDate","getDay","getFullYear","ceil","weekNo","E","charAt","e","reversed","gridOptions","grid","labelOpts","labels","align","tickmarkOffset","tickPos","nextTickPos","tickSize","crispCorr","enabled","offset","chartHeight","len","translate","chartWidth","round","slotWidth","y","lblMetrics","renderer","fontMetrics","style","fontSize","element","labelHeight","useHTML","b","lines","h","f","horiz","maxLabelDimensions","labelPadding","abs","defaultLeftAxisOptions","distance","title","axisTitle","titleWidth","axisLeft","axisTop","axisWidth","axisHeight","axisTitleOptions","opposite","xOption","yOption","titleMargin","margin","titleFontSize","offAxis","titlePosition","proceed","categories","tickInterval","apply","Array","slice","call","arguments","userOptions","gridAxisOptions","dateTimeLabelFormats","hour","list","day","week","month","borderWidth","padding","text","reserveSpace","rotation","units","coll","linkedTo","tickPixelInterval","tickPositioner","gridAxisOptions.tickPositioner","min","parentInfo","linkedParent","info","unitIdx","count","unitName","i","length","unitRange","timeUnits","getTimeTicks","startOfWeek","minPadding","maxPadding","lineWidth","tickInfo","userLabels","series","pointRange","range","categoryAxis","firstPos","lastPos","isLinked","startOnTick","endOnTick","linePath","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","axisGroup","axisLine","getLinePath","indexOf","axisLineExtra","animate","path","attr","stroke","lineColor","zIndex","addClass","add","showAxis","applyGridOptions","fontSizeToCellHeightRatio","showLastLabel","tickLength","cellHeight","labelRotation","columnOptions","columnIndex","borderColor","tickColor","columns","type","column","isColumn","value","isFirst","isLast","point","find","data","p","isXAxis","erase","Tree","extend","getListOfParents","ids","listOfParents","reduce","prev","curr","parent","push","Object","keys","parents","children","child","getNode","id","level","mapOfIdToChildren","descendants","after","before","node","depth","start","end","map","childStart","childEnd","milestone","getTree","result","getColor","mapOptionsToLevel","parentColor","parentColorIndex","colors","siblings","points","chartOptionsChart","colorByPoint","colorIndexByPoint","color","colorIndex","getColorByPoint","colorCount","styledMode","colorVariation","key","brighten","to","get","getLevelOptions","params","defaults","converted","from","levels","obj","item","levelIsConstant","setTreeValues","tree","idRoot","nodeRoot","mapIdToNode","optionsPoint","childrenTotal","levelDynamic","name","visible","newOptions","val","isLeaf","updateRootId","rootId","rootNode","fireEvent","Series","isInBreak","brk","repeat","Infinity","inclusive","ret","isInAnyBreak","testKeep","breaks","inbrk","keep","showPoints","setBreaks","isBroken","newPositions","ordinal","Axis.prototype.setBreaks","redraw","breakVal2Lin","nval","breakArray","breakLin2Val","isDirty","forceRedraw","val2lin","lin2val","setExtremes","axis.setExtremes","newMin","newMax","animation","eventArguments","closestPointRange","setAxisTranslation","axis.setAxisTranslation","saveOld","unitLength","breakArrayT","inBrk","userMin","userMax","pointRangePadding","move","size","breakSize","sort","a","staticScale","transA","minPixelPadding","minPointOffset","xAxis","yAxis","connectNulls","nullGap","splice","destroyElements","drawPointsWrapped","drawBreaks","pointArrayMap","H.Series.prototype.drawBreaks","threshold","eventName","toUpperCase","gappedPath","H.Series.prototype.gappedPath","currentDataGrouping","groupingSize","gapSize","gapUnit","xRange","isNull","stacking","stack","stacks","stackKey","StackItem","stackLabels","total","getGraphPath","mixinTreeSeries","argsToArray","args","isString","GridAxis","GridAxisTick","override","methods","method","func","hasOwnProperty","getBreakFromNode","collapseStart","collapseEnd","getTickPositions","mapOfPosToGridNode","arr","isCollapsed","some","collapse","expand","renderLabelIcon","icon","labelIcon","isNew","labelBox","xy","collapsed","shouldRender","show","symbols","group","css","cursor","strokeWidth","translateX","translateY","onBeforeRender","target","filter","labelOptions","removeFoundExtremesEvent","updateYNames","yData","collapsedNodes","getTreeGridFromData","uniqueNames","numberOfSeries","mapOfIdToNode","posIterator","uniqueNamesEnabled","treeParams","gridNode","parentNode","parentGridNode","hasSameName","nodes","updateYValuesAndTickPos","setValues","diff","seriesIndex","init","isTreeGrid","fontWeight","symbol","hasNames","indentation","retVal","treeDepth","generateTick","levelOptions","parameters","category","addLabel","setTickInterval","dataMin","dataMax","getLabelPosition","step","lbOptions","symbolOptions","renderLabel","hasLabel","styles","parentGroup","removeClassName","prefixClassName","removeClass","object","attachedTreeGridEvents","textDecoration","toggleCollapse","GridAxis.prototype.updateYNames","isYAxis","s","treeGrid","utils"]}
@@ -0,0 +1,2917 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * Tree Grid
4
+ *
5
+ * (c) 2016-2019 Jon Arild Nygard
6
+ *
7
+ * License: www.highcharts.com/license
8
+ */
9
+ 'use strict';
10
+ (function (factory) {
11
+ if (typeof module === 'object' && module.exports) {
12
+ factory['default'] = factory;
13
+ module.exports = factory;
14
+ } else if (typeof define === 'function' && define.amd) {
15
+ define(function () {
16
+ return factory;
17
+ });
18
+ } else {
19
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
20
+ }
21
+ }(function (Highcharts) {
22
+ (function (H) {
23
+ /* *
24
+ * (c) 2016 Highsoft AS
25
+ * Authors: Lars A. V. Cabrera
26
+ *
27
+ * License: www.highcharts.com/license
28
+ */
29
+
30
+
31
+
32
+ var addEvent = H.addEvent,
33
+ argsToArray = function (args) {
34
+ return Array.prototype.slice.call(args, 1);
35
+ },
36
+ dateFormat = H.dateFormat,
37
+ defined = H.defined,
38
+ isArray = H.isArray,
39
+ isNumber = H.isNumber,
40
+ isObject = function (x) {
41
+ // Always use strict mode
42
+ return H.isObject(x, true);
43
+ },
44
+ merge = H.merge,
45
+ pick = H.pick,
46
+ wrap = H.wrap,
47
+ Axis = H.Axis,
48
+ Tick = H.Tick;
49
+
50
+ /**
51
+ * Set grid options for the axis labels. Requires Highcharts Gantt.
52
+ *
53
+ * @since 6.2.0
54
+ * @product gantt
55
+ * @apioption xAxis.grid
56
+ */
57
+
58
+ /**
59
+ * Enable grid on the axis labels. Defaults to true for Gantt charts.
60
+ *
61
+ * @type {boolean}
62
+ * @default true
63
+ * @since 6.2.0
64
+ * @product gantt
65
+ * @apioption xAxis.grid.enabled
66
+ */
67
+
68
+ /**
69
+ * Set specific options for each column (or row for horizontal axes) in the
70
+ * grid. Each extra column/row is its own axis, and the axis options can be set
71
+ * here.
72
+ *
73
+ * @sample gantt/demo/left-axis-table
74
+ * Left axis as a table
75
+ *
76
+ * @type {Array<Highcharts.XAxisOptions>}
77
+ * @apioption xAxis.grid.columns
78
+ */
79
+
80
+ /**
81
+ * Set border color for the label grid lines.
82
+ *
83
+ * @type {Highcharts.ColorString}
84
+ * @apioption xAxis.grid.borderColor
85
+ */
86
+
87
+ /**
88
+ * Set border width of the label grid lines.
89
+ *
90
+ * @type {number}
91
+ * @default 1
92
+ * @apioption xAxis.grid.borderWidth
93
+ */
94
+
95
+ /**
96
+ * Set cell height for grid axis labels. By default this is calculated from font
97
+ * size.
98
+ *
99
+ * @type {number}
100
+ * @apioption xAxis.grid.cellHeight
101
+ */
102
+
103
+
104
+ // Enum for which side the axis is on.
105
+ // Maps to axis.side
106
+ var axisSide = {
107
+ top: 0,
108
+ right: 1,
109
+ bottom: 2,
110
+ left: 3,
111
+ 0: 'top',
112
+ 1: 'right',
113
+ 2: 'bottom',
114
+ 3: 'left'
115
+ };
116
+
117
+ /**
118
+ * Checks if an axis is a navigator axis.
119
+ *
120
+ * @private
121
+ * @function Highcharts.Axis#isNavigatorAxis
122
+ *
123
+ * @return {boolean}
124
+ * true if axis is found in axis.chart.navigator
125
+ */
126
+ Axis.prototype.isNavigatorAxis = function () {
127
+ return /highcharts-navigator-[xy]axis/.test(this.options.className);
128
+ };
129
+
130
+ /**
131
+ * Checks if an axis is the outer axis in its dimension. Since
132
+ * axes are placed outwards in order, the axis with the highest
133
+ * index is the outermost axis.
134
+ *
135
+ * Example: If there are multiple x-axes at the top of the chart,
136
+ * this function returns true if the axis supplied is the last
137
+ * of the x-axes.
138
+ *
139
+ * @private
140
+ * @function Highcharts.Axis#isOuterAxis
141
+ *
142
+ * @return {boolean}
143
+ * true if the axis is the outermost axis in its dimension; false if not
144
+ */
145
+ Axis.prototype.isOuterAxis = function () {
146
+ var axis = this,
147
+ chart = axis.chart,
148
+ thisIndex = -1,
149
+ isOuter = true;
150
+
151
+ chart.axes.forEach(function (otherAxis, index) {
152
+ if (otherAxis.side === axis.side && !otherAxis.isNavigatorAxis()) {
153
+ if (otherAxis === axis) {
154
+ // Get the index of the axis in question
155
+ thisIndex = index;
156
+
157
+ // Check thisIndex >= 0 in case thisIndex has
158
+ // not been found yet
159
+ } else if (thisIndex >= 0 && index > thisIndex) {
160
+ // There was an axis on the same side with a
161
+ // higher index.
162
+ isOuter = false;
163
+ }
164
+ }
165
+ });
166
+ // There were either no other axes on the same side,
167
+ // or the other axes were not farther from the chart
168
+ return isOuter;
169
+ };
170
+
171
+ /**
172
+ * Get the largest label width and height.
173
+ *
174
+ * @private
175
+ * @function Highcharts.Axis#getMaxLabelDimensions
176
+ *
177
+ * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
178
+ * All the ticks on one axis.
179
+ *
180
+ * @param {Array<number|string>} tickPositions
181
+ * All the tick positions on one axis.
182
+ *
183
+ * @return {object}
184
+ * object containing the properties height and width.
185
+ */
186
+ Axis.prototype.getMaxLabelDimensions = function (ticks, tickPositions) {
187
+ var dimensions = {
188
+ width: 0,
189
+ height: 0
190
+ };
191
+
192
+ tickPositions.forEach(function (pos) {
193
+ var tick = ticks[pos],
194
+ tickHeight = 0,
195
+ tickWidth = 0,
196
+ label;
197
+
198
+ if (isObject(tick)) {
199
+ label = isObject(tick.label) ? tick.label : {};
200
+
201
+ // Find width and height of tick
202
+ tickHeight = label.getBBox ? label.getBBox().height : 0;
203
+ tickWidth = isNumber(label.textPxLength) ? label.textPxLength : 0;
204
+
205
+ // Update the result if width and/or height are larger
206
+ dimensions.height = Math.max(tickHeight, dimensions.height);
207
+ dimensions.width = Math.max(tickWidth, dimensions.width);
208
+ }
209
+ });
210
+
211
+ return dimensions;
212
+ };
213
+
214
+ // Add custom date formats
215
+ H.dateFormats = {
216
+ // Week number
217
+ W: function (timestamp) {
218
+ var d = new Date(timestamp),
219
+ yearStart,
220
+ weekNo;
221
+
222
+ d.setHours(0, 0, 0, 0);
223
+ d.setDate(d.getDate() - (d.getDay() || 7));
224
+ yearStart = new Date(d.getFullYear(), 0, 1);
225
+ weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
226
+ return weekNo;
227
+ },
228
+ // First letter of the day of the week, e.g. 'M' for 'Monday'.
229
+ E: function (timestamp) {
230
+ return dateFormat('%a', timestamp, true).charAt(0);
231
+ }
232
+ };
233
+
234
+ addEvent(
235
+ Tick,
236
+ 'afterGetLabelPosition',
237
+ /**
238
+ * Center tick labels in cells.
239
+ *
240
+ * @private
241
+ */
242
+ function (e) {
243
+ var tick = this,
244
+ label = tick.label,
245
+ axis = tick.axis,
246
+ reversed = axis.reversed,
247
+ chart = axis.chart,
248
+ options = axis.options,
249
+ gridOptions = (
250
+ (options && isObject(options.grid)) ? options.grid : {}
251
+ ),
252
+ labelOpts = axis.options.labels,
253
+ align = labelOpts.align,
254
+ // verticalAlign is currently not supported for axis.labels.
255
+ verticalAlign = 'middle', // labelOpts.verticalAlign,
256
+ side = axisSide[axis.side],
257
+ tickmarkOffset = e.tickmarkOffset,
258
+ tickPositions = axis.tickPositions,
259
+ tickPos = tick.pos - tickmarkOffset,
260
+ nextTickPos = (
261
+ isNumber(tickPositions[e.index + 1]) ?
262
+ tickPositions[e.index + 1] - tickmarkOffset :
263
+ axis.max + tickmarkOffset
264
+ ),
265
+ tickSize = axis.tickSize('tick', true),
266
+ tickWidth = isArray(tickSize) ? tickSize[0] : 0,
267
+ crispCorr = tickSize && tickSize[1] / 2,
268
+ labelHeight,
269
+ lblMetrics,
270
+ lines,
271
+ bottom,
272
+ top,
273
+ left,
274
+ right;
275
+
276
+ // Only center tick labels in grid axes
277
+ if (gridOptions.enabled === true) {
278
+
279
+ // Calculate top and bottom positions of the cell.
280
+ if (side === 'top') {
281
+ bottom = axis.top + axis.offset;
282
+ top = bottom - tickWidth;
283
+ } else if (side === 'bottom') {
284
+ top = chart.chartHeight - axis.bottom + axis.offset;
285
+ bottom = top + tickWidth;
286
+ } else {
287
+ bottom = axis.top + axis.len - axis.translate(
288
+ reversed ? nextTickPos : tickPos
289
+ );
290
+ top = axis.top + axis.len - axis.translate(
291
+ reversed ? tickPos : nextTickPos
292
+ );
293
+ }
294
+
295
+ // Calculate left and right positions of the cell.
296
+ if (side === 'right') {
297
+ left = chart.chartWidth - axis.right + axis.offset;
298
+ right = left + tickWidth;
299
+ } else if (side === 'left') {
300
+ right = axis.left + axis.offset;
301
+ left = right - tickWidth;
302
+ } else {
303
+ left = Math.round(axis.left + axis.translate(
304
+ reversed ? nextTickPos : tickPos
305
+ )) - crispCorr;
306
+ right = Math.round(axis.left + axis.translate(
307
+ reversed ? tickPos : nextTickPos
308
+ )) - crispCorr;
309
+ }
310
+
311
+ tick.slotWidth = right - left;
312
+
313
+ // Calculate the positioning of the label based on alignment.
314
+ e.pos.x = (
315
+ align === 'left' ?
316
+ left :
317
+ align === 'right' ?
318
+ right :
319
+ left + ((right - left) / 2) // default to center
320
+ );
321
+ e.pos.y = (
322
+ verticalAlign === 'top' ?
323
+ top :
324
+ verticalAlign === 'bottom' ?
325
+ bottom :
326
+ top + ((bottom - top) / 2) // default to middle
327
+ );
328
+
329
+ lblMetrics = chart.renderer.fontMetrics(
330
+ labelOpts.style.fontSize,
331
+ label.element
332
+ );
333
+ labelHeight = label.getBBox().height;
334
+
335
+ // Adjustment to y position to align the label correctly.
336
+ // Would be better to have a setter or similar for this.
337
+ if (!labelOpts.useHTML) {
338
+ lines = Math.round(labelHeight / lblMetrics.h);
339
+ e.pos.y += (
340
+ // Center the label
341
+ // TODO: why does this actually center the label?
342
+ ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
343
+ // Adjust for height of additional lines.
344
+ -(((lines - 1) * lblMetrics.h) / 2)
345
+ );
346
+ } else {
347
+ e.pos.y += (
348
+ // Readjust yCorr in htmlUpdateTransform
349
+ lblMetrics.b +
350
+ // Adjust for height of html label
351
+ -(labelHeight / 2)
352
+ );
353
+ }
354
+
355
+ e.pos.x += (axis.horiz && labelOpts.x || 0);
356
+ }
357
+ }
358
+ );
359
+
360
+ // Draw vertical axis ticks extra long to create cell floors and roofs.
361
+ // Overrides the tickLength for vertical axes.
362
+ addEvent(Axis, 'afterTickSize', function (e) {
363
+ var axis = this,
364
+ dimensions = axis.maxLabelDimensions,
365
+ options = axis.options,
366
+ gridOptions = (options && isObject(options.grid)) ? options.grid : {},
367
+ labelPadding,
368
+ distance;
369
+
370
+ if (gridOptions.enabled === true) {
371
+ labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
372
+ distance = labelPadding +
373
+ (axis.horiz ? dimensions.height : dimensions.width);
374
+
375
+ if (isArray(e.tickSize)) {
376
+ e.tickSize[0] = distance;
377
+ } else {
378
+ e.tickSize = [distance];
379
+ }
380
+ }
381
+ });
382
+
383
+ addEvent(Axis, 'afterGetTitlePosition', function (e) {
384
+ var axis = this,
385
+ options = axis.options,
386
+ gridOptions = (options && isObject(options.grid)) ? options.grid : {};
387
+
388
+ if (gridOptions.enabled === true) {
389
+ // compute anchor points for each of the title align options
390
+ var title = axis.axisTitle,
391
+ titleWidth = title && title.getBBox().width,
392
+ horiz = axis.horiz,
393
+ axisLeft = axis.left,
394
+ axisTop = axis.top,
395
+ axisWidth = axis.width,
396
+ axisHeight = axis.height,
397
+ axisTitleOptions = options.title,
398
+ opposite = axis.opposite,
399
+ offset = axis.offset,
400
+ tickSize = axis.tickSize() || [0],
401
+ xOption = axisTitleOptions.x || 0,
402
+ yOption = axisTitleOptions.y || 0,
403
+ titleMargin = pick(axisTitleOptions.margin, horiz ? 5 : 10),
404
+ titleFontSize = axis.chart.renderer.fontMetrics(
405
+ axisTitleOptions.style && axisTitleOptions.style.fontSize,
406
+ title
407
+ ).f,
408
+ // TODO account for alignment
409
+ // the position in the perpendicular direction of the axis
410
+ offAxis = (horiz ? axisTop + axisHeight : axisLeft) +
411
+ (horiz ? 1 : -1) * // horizontal axis reverses the margin
412
+ (opposite ? -1 : 1) * // so does opposite axes
413
+ (tickSize[0] / 2) +
414
+ (axis.side === axisSide.bottom ? titleFontSize : 0);
415
+
416
+ e.titlePosition.x = horiz ?
417
+ axisLeft - titleWidth / 2 - titleMargin + xOption :
418
+ offAxis + (opposite ? axisWidth : 0) + offset + xOption;
419
+ e.titlePosition.y = horiz ?
420
+ (
421
+ offAxis -
422
+ (opposite ? axisHeight : 0) +
423
+ (opposite ? titleFontSize : -titleFontSize) / 2 +
424
+ offset +
425
+ yOption
426
+ ) :
427
+ axisTop - titleMargin + yOption;
428
+ }
429
+ });
430
+
431
+ // Avoid altering tickInterval when reserving space.
432
+ wrap(Axis.prototype, 'unsquish', function (proceed) {
433
+ var axis = this,
434
+ options = axis.options,
435
+ gridOptions = (options && isObject(options.grid)) ? options.grid : {};
436
+
437
+ if (gridOptions.enabled === true && this.categories) {
438
+ return this.tickInterval;
439
+ }
440
+
441
+ return proceed.apply(this, argsToArray(arguments));
442
+ });
443
+
444
+ addEvent(
445
+ Axis,
446
+ 'afterSetOptions',
447
+ /**
448
+ * Creates a left and right wall on horizontal axes:
449
+ *
450
+ * - Places leftmost tick at the start of the axis, to create a left wall
451
+ *
452
+ * - Ensures that the rightmost tick is at the end of the axis, to create a
453
+ * right wall.
454
+ *
455
+ * @private
456
+ * @function
457
+ */
458
+ function (e) {
459
+ var options = this.options,
460
+ userOptions = e.userOptions,
461
+ gridAxisOptions,
462
+ gridOptions = (
463
+ (options && isObject(options.grid)) ? options.grid : {}
464
+ );
465
+
466
+ if (gridOptions.enabled === true) {
467
+
468
+ // Merge the user options into default grid axis options so that
469
+ // when a user option is set, it takes presedence.
470
+ gridAxisOptions = merge(true, {
471
+
472
+ className: (
473
+ 'highcharts-grid-axis ' + (userOptions.className || '')
474
+ ),
475
+
476
+ dateTimeLabelFormats: {
477
+ hour: {
478
+ list: ['%H:%M', '%H']
479
+ },
480
+ day: {
481
+ list: ['%A, %e. %B', '%a, %e. %b', '%E']
482
+ },
483
+ week: {
484
+ list: ['Week %W', 'W%W']
485
+ },
486
+ month: {
487
+ list: ['%B', '%b', '%o']
488
+ }
489
+ },
490
+
491
+ grid: {
492
+ borderWidth: 1
493
+ },
494
+
495
+ labels: {
496
+ padding: 2,
497
+ style: {
498
+ fontSize: '13px'
499
+ }
500
+ },
501
+
502
+ margin: 0,
503
+
504
+ title: {
505
+ text: null,
506
+ reserveSpace: false,
507
+ rotation: 0
508
+ },
509
+
510
+ // In a grid axis, only allow one unit of certain types, for
511
+ // example we shouln't have one grid cell spanning two days.
512
+ units: [[
513
+ 'millisecond', // unit name
514
+ [1, 10, 100]
515
+ ], [
516
+ 'second',
517
+ [1, 10]
518
+ ], [
519
+ 'minute',
520
+ [1, 5, 15]
521
+ ], [
522
+ 'hour',
523
+ [1, 6]
524
+ ], [
525
+ 'day',
526
+ [1]
527
+ ], [
528
+ 'week',
529
+ [1]
530
+ ], [
531
+ 'month',
532
+ [1]
533
+ ], [
534
+ 'year',
535
+ null
536
+ ]]
537
+ }, userOptions);
538
+
539
+ // X-axis specific options
540
+ if (this.coll === 'xAxis') {
541
+
542
+ // For linked axes, tickPixelInterval is used only if the
543
+ // tickPositioner below doesn't run or returns undefined (like
544
+ // multiple years)
545
+ if (
546
+ defined(userOptions.linkedTo) &&
547
+ !defined(userOptions.tickPixelInterval)
548
+ ) {
549
+ gridAxisOptions.tickPixelInterval = 350;
550
+ }
551
+
552
+ // For the secondary grid axis, use the primary axis' tick
553
+ // intervals and return ticks one level higher.
554
+ if (
555
+ // Check for tick pixel interval in options
556
+ !defined(userOptions.tickPixelInterval) &&
557
+
558
+ // Only for linked axes
559
+ defined(userOptions.linkedTo) &&
560
+
561
+ !defined(userOptions.tickPositioner) &&
562
+ !defined(userOptions.tickInterval)
563
+ ) {
564
+ gridAxisOptions.tickPositioner = function (min, max) {
565
+
566
+ var parentInfo = (
567
+ this.linkedParent &&
568
+ this.linkedParent.tickPositions &&
569
+ this.linkedParent.tickPositions.info
570
+ );
571
+
572
+ if (parentInfo) {
573
+
574
+ var unitIdx,
575
+ count,
576
+ unitName,
577
+ i,
578
+ units = gridAxisOptions.units,
579
+ unitRange;
580
+
581
+ for (i = 0; i < units.length; i++) {
582
+ if (units[i][0] === parentInfo.unitName) {
583
+ unitIdx = i;
584
+ break;
585
+ }
586
+ }
587
+
588
+ // Spanning multiple years, go default
589
+ if (!units[unitIdx][1]) {
590
+ return;
591
+ }
592
+
593
+ // Get the first allowed count on the next unit.
594
+ if (units[unitIdx + 1]) {
595
+ unitName = units[unitIdx + 1][0];
596
+ count = (units[unitIdx + 1][1] || [1])[0];
597
+ }
598
+
599
+ unitRange = H.timeUnits[unitName];
600
+ this.tickInterval = unitRange * count;
601
+ return this.getTimeTicks(
602
+ {
603
+ unitRange: unitRange,
604
+ count: count,
605
+ unitName: unitName
606
+ },
607
+ min,
608
+ max,
609
+ this.options.startOfWeek
610
+ );
611
+ }
612
+ };
613
+ }
614
+
615
+ }
616
+
617
+ // Now merge the combined options into the axis options
618
+ merge(true, this.options, gridAxisOptions);
619
+
620
+ if (this.horiz) {
621
+ /* _________________________
622
+ Make this: ___|_____|_____|_____|__|
623
+ ^ ^
624
+ _________________________
625
+ Into this: |_____|_____|_____|_____|
626
+ ^ ^ */
627
+ options.minPadding = pick(userOptions.minPadding, 0);
628
+ options.maxPadding = pick(userOptions.maxPadding, 0);
629
+ }
630
+
631
+ // If borderWidth is set, then use its value for tick and line
632
+ // width.
633
+ if (isNumber(options.grid.borderWidth)) {
634
+ options.tickWidth = options.lineWidth = gridOptions.borderWidth;
635
+ }
636
+
637
+ }
638
+ }
639
+ );
640
+
641
+ addEvent(
642
+ Axis,
643
+ 'afterSetAxisTranslation',
644
+ function () {
645
+ var axis = this,
646
+ options = axis.options,
647
+ gridOptions = (
648
+ (options && isObject(options.grid)) ? options.grid : {}
649
+ ),
650
+ tickInfo = this.tickPositions && this.tickPositions.info,
651
+ userLabels = this.userOptions.labels || {};
652
+
653
+ if (this.horiz) {
654
+ if (gridOptions.enabled === true) {
655
+ axis.series.forEach(function (series) {
656
+ series.options.pointRange = 0;
657
+ });
658
+ }
659
+
660
+ // Lower level time ticks, like hours or minutes, represent points
661
+ // in time and not ranges. These should be aligned left in the grid
662
+ // cell by default. The same applies to years of higher order.
663
+ if (
664
+ tickInfo &&
665
+ (
666
+ options.dateTimeLabelFormats[tickInfo.unitName]
667
+ .range === false ||
668
+ tickInfo.count > 1 // years
669
+ ) &&
670
+ !defined(userLabels.align)
671
+ ) {
672
+ options.labels.align = 'left';
673
+
674
+ if (!defined(userLabels.x)) {
675
+ options.labels.x = 3;
676
+ }
677
+ }
678
+ }
679
+ }
680
+ );
681
+
682
+ // @todo Does this function do what the drawing says? Seems to affect ticks and
683
+ // not the labels directly?
684
+ addEvent(
685
+ Axis,
686
+ 'trimTicks',
687
+ /**
688
+ * Makes tick labels which are usually ignored in a linked axis displayed if
689
+ * they are within range of linkedParent.min.
690
+ * ```
691
+ * _____________________________
692
+ * | | | | |
693
+ * Make this: | | 2 | 3 | 4 |
694
+ * |___|_______|_______|_______|
695
+ * ^
696
+ * _____________________________
697
+ * | | | | |
698
+ * Into this: | 1 | 2 | 3 | 4 |
699
+ * |___|_______|_______|_______|
700
+ * ^
701
+ * ```
702
+ *
703
+ * @private
704
+ */
705
+ function () {
706
+ var axis = this,
707
+ options = axis.options,
708
+ gridOptions = (
709
+ (options && isObject(options.grid)) ? options.grid : {}
710
+ ),
711
+ categoryAxis = axis.categories,
712
+ tickPositions = axis.tickPositions,
713
+ firstPos = tickPositions[0],
714
+ lastPos = tickPositions[tickPositions.length - 1],
715
+ linkedMin = axis.linkedParent && axis.linkedParent.min,
716
+ linkedMax = axis.linkedParent && axis.linkedParent.max,
717
+ min = linkedMin || axis.min,
718
+ max = linkedMax || axis.max,
719
+ tickInterval = axis.tickInterval,
720
+ moreThanMin = firstPos > min,
721
+ lessThanMax = lastPos < max,
722
+ endMoreThanMin = firstPos < min && firstPos + tickInterval > min,
723
+ startLessThanMax = lastPos > max && lastPos - tickInterval < max;
724
+
725
+ if (
726
+ gridOptions.enabled === true &&
727
+ !categoryAxis &&
728
+ (axis.horiz || axis.isLinked)
729
+ ) {
730
+ if ((moreThanMin || endMoreThanMin) && !options.startOnTick) {
731
+ tickPositions[0] = min;
732
+ }
733
+
734
+ if ((lessThanMax || startLessThanMax) && !options.endOnTick) {
735
+ tickPositions[tickPositions.length - 1] = max;
736
+ }
737
+ }
738
+ }
739
+ );
740
+
741
+ addEvent(
742
+ Axis,
743
+ 'afterRender',
744
+ /**
745
+ * Draw an extra line on the far side of the outermost axis,
746
+ * creating floor/roof/wall of a grid. And some padding.
747
+ * ```
748
+ * Make this:
749
+ * (axis.min) __________________________ (axis.max)
750
+ * | | | | |
751
+ * Into this:
752
+ * (axis.min) __________________________ (axis.max)
753
+ * ___|____|____|____|____|__
754
+ * ```
755
+ *
756
+ * @private
757
+ * @function
758
+ *
759
+ * @param {Function} proceed
760
+ * the original function
761
+ */
762
+ function () {
763
+ var axis = this,
764
+ options = axis.options,
765
+ gridOptions = ((
766
+ options && isObject(options.grid)) ? options.grid : {}
767
+ ),
768
+ labelPadding,
769
+ distance,
770
+ lineWidth,
771
+ linePath,
772
+ yStartIndex,
773
+ yEndIndex,
774
+ xStartIndex,
775
+ xEndIndex,
776
+ renderer = axis.chart.renderer,
777
+ horiz = axis.horiz,
778
+ axisGroupBox;
779
+
780
+ if (gridOptions.enabled === true) {
781
+
782
+ // @todo acutual label padding (top, bottom, left, right)
783
+
784
+ // Label padding is needed to figure out where to draw the outer
785
+ // line.
786
+ labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
787
+ axis.maxLabelDimensions = axis.getMaxLabelDimensions(
788
+ axis.ticks,
789
+ axis.tickPositions
790
+ );
791
+ distance = axis.maxLabelDimensions.width + labelPadding;
792
+ lineWidth = options.lineWidth;
793
+
794
+ // Remove right wall before rendering if updating
795
+ if (axis.rightWall) {
796
+ axis.rightWall.destroy();
797
+ }
798
+
799
+ axisGroupBox = axis.axisGroup.getBBox();
800
+
801
+ /*
802
+ Draw an extra axis line on outer axes
803
+ >
804
+ Make this: |______|______|______|___
805
+
806
+ > _________________________
807
+ Into this: |______|______|______|__|
808
+ */
809
+ if (axis.isOuterAxis() && axis.axisLine) {
810
+ if (horiz) {
811
+ // -1 to avoid adding distance each time the chart updates
812
+ distance = axisGroupBox.height - 1;
813
+ }
814
+
815
+ if (lineWidth) {
816
+ linePath = axis.getLinePath(lineWidth);
817
+ xStartIndex = linePath.indexOf('M') + 1;
818
+ xEndIndex = linePath.indexOf('L') + 1;
819
+ yStartIndex = linePath.indexOf('M') + 2;
820
+ yEndIndex = linePath.indexOf('L') + 2;
821
+
822
+ // Negate distance if top or left axis
823
+ if (axis.side === axisSide.top ||
824
+ axis.side === axisSide.left
825
+ ) {
826
+ distance = -distance;
827
+ }
828
+
829
+ // If axis is horizontal, reposition line path vertically
830
+ if (horiz) {
831
+ linePath[yStartIndex] = (
832
+ linePath[yStartIndex] + distance
833
+ );
834
+ linePath[yEndIndex] = linePath[yEndIndex] + distance;
835
+ } else {
836
+ // If axis is vertical, reposition line path
837
+ // horizontally
838
+ linePath[xStartIndex] = (
839
+ linePath[xStartIndex] + distance
840
+ );
841
+ linePath[xEndIndex] = linePath[xEndIndex] + distance;
842
+ }
843
+
844
+ if (!axis.axisLineExtra) {
845
+ axis.axisLineExtra = renderer.path(linePath)
846
+ .attr({
847
+
848
+ stroke: options.lineColor,
849
+ 'stroke-width': lineWidth,
850
+
851
+ zIndex: 7
852
+ })
853
+ .addClass('highcharts-axis-line')
854
+ .add(axis.axisGroup);
855
+ } else {
856
+ axis.axisLineExtra.animate({
857
+ d: linePath
858
+ });
859
+ }
860
+
861
+ // show or hide the line depending on options.showEmpty
862
+ axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
863
+ }
864
+ }
865
+
866
+ }
867
+ }
868
+ );
869
+
870
+ // Wraps axis init to draw cell walls on vertical axes.
871
+ addEvent(Axis, 'init', function (e) {
872
+ var axis = this,
873
+ chart = axis.chart,
874
+ userOptions = e.userOptions,
875
+ gridOptions = (
876
+ (userOptions && isObject(userOptions.grid)) ?
877
+ userOptions.grid :
878
+ {}
879
+ ),
880
+ columnOptions,
881
+ column,
882
+ columnIndex,
883
+ i;
884
+
885
+ function applyGridOptions() {
886
+ var options = axis.options,
887
+ // TODO: Consider using cell margins defined in % of font size?
888
+ // 25 is optimal height for default fontSize (11px)
889
+ // 25 / 11 ≈ 2.28
890
+ fontSizeToCellHeightRatio = 25 / 11,
891
+ fontSize = options.labels.style.fontSize,
892
+ fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
893
+
894
+ // Center-align by default
895
+ if (!options.labels) {
896
+ options.labels = {};
897
+ }
898
+ options.labels.align = pick(options.labels.align, 'center');
899
+
900
+ // @todo: Check against tickLabelPlacement between/on etc
901
+
902
+ /* Prevents adding the last tick label if the axis is not a category
903
+ axis.
904
+ Since numeric labels are normally placed at starts and ends of a
905
+ range of value, and this module makes the label point at the value,
906
+ an "extra" label would appear. */
907
+ if (!axis.categories) {
908
+ options.showLastLabel = false;
909
+ }
910
+
911
+ // Make tick marks taller, creating cell walls of a grid. Use cellHeight
912
+ // axis option if set
913
+ if (axis.horiz) {
914
+ options.tickLength = gridOptions.cellHeight ||
915
+ fontMetrics.h * fontSizeToCellHeightRatio;
916
+ }
917
+
918
+ // Prevents rotation of labels when squished, as rotating them would not
919
+ // help.
920
+ axis.labelRotation = 0;
921
+ options.labels.rotation = 0;
922
+ }
923
+
924
+ if (gridOptions.enabled) {
925
+ if (defined(gridOptions.borderColor)) {
926
+ userOptions.tickColor =
927
+ userOptions.lineColor = gridOptions.borderColor;
928
+ }
929
+
930
+ // Handle columns, each column is a grid axis
931
+ if (isArray(gridOptions.columns)) {
932
+ columnIndex = 0;
933
+ i = gridOptions.columns.length;
934
+ while (i--) {
935
+ columnOptions = merge(
936
+ userOptions,
937
+ gridOptions.columns[i],
938
+ {
939
+ // Force to behave like category axis
940
+ type: 'category'
941
+ }
942
+ );
943
+
944
+ delete columnOptions.grid.columns; // Prevent recursion
945
+
946
+ column = new Axis(axis.chart, columnOptions);
947
+ column.isColumn = true;
948
+ column.columnIndex = columnIndex;
949
+
950
+ wrap(column, 'labelFormatter', function (proceed) {
951
+ var axis = this.axis,
952
+ tickPos = axis.tickPositions,
953
+ value = this.value,
954
+ series = axis.series[0],
955
+ isFirst = value === tickPos[0],
956
+ isLast = value === tickPos[tickPos.length - 1],
957
+ point = H.find(series.options.data, function (p) {
958
+ return p[axis.isXAxis ? 'x' : 'y'] === value;
959
+ });
960
+
961
+ // Make additional properties available for the formatter
962
+ this.isFirst = isFirst;
963
+ this.isLast = isLast;
964
+ this.point = point;
965
+
966
+ // Call original labelFormatter
967
+ return proceed.call(this);
968
+ });
969
+
970
+ columnIndex++;
971
+ }
972
+ // This axis should not be shown, instead the column axes take over
973
+ addEvent(this, 'afterInit', function () {
974
+ H.erase(chart.axes, this);
975
+ H.erase(chart[axis.coll], this);
976
+ });
977
+ } else {
978
+ addEvent(this, 'afterInit', applyGridOptions);
979
+ }
980
+ }
981
+ });
982
+
983
+ }(Highcharts));
984
+ var Tree = (function (H) {
985
+ /* *
986
+ *
987
+ * (c) 2016-2019 Highsoft AS
988
+ *
989
+ * Authors: Jon Arild Nygard
990
+ *
991
+ * License: www.highcharts.com/license
992
+ *
993
+ * */
994
+
995
+ /* eslint no-console: 0 */
996
+
997
+
998
+
999
+ var extend = H.extend,
1000
+ isNumber = H.isNumber,
1001
+ pick = H.pick,
1002
+ isFunction = function (x) {
1003
+ return typeof x === 'function';
1004
+ };
1005
+
1006
+ /**
1007
+ * Creates an object map from parent id to childrens index.
1008
+ *
1009
+ * @private
1010
+ * @function Highcharts.Tree#getListOfParents
1011
+ *
1012
+ * @param {Array<*>} data
1013
+ * List of points set in options. `Array<*>.parent`is parent id of point.
1014
+ *
1015
+ * @param {Array<string>} ids
1016
+ * List of all point ids.
1017
+ *
1018
+ * @return {object}
1019
+ * Map from parent id to children index in data
1020
+ */
1021
+ var getListOfParents = function (data, ids) {
1022
+ var listOfParents = data.reduce(function (prev, curr) {
1023
+ var parent = pick(curr.parent, '');
1024
+
1025
+ if (prev[parent] === undefined) {
1026
+ prev[parent] = [];
1027
+ }
1028
+ prev[parent].push(curr);
1029
+ return prev;
1030
+ }, {}),
1031
+ parents = Object.keys(listOfParents);
1032
+
1033
+ // If parent does not exist, hoist parent to root of tree.
1034
+ parents.forEach(function (parent, list) {
1035
+ var children = listOfParents[parent];
1036
+
1037
+ if ((parent !== '') && (ids.indexOf(parent) === -1)) {
1038
+ children.forEach(function (child) {
1039
+ list[''].push(child);
1040
+ });
1041
+ delete list[parent];
1042
+ }
1043
+ });
1044
+ return listOfParents;
1045
+ };
1046
+ var getNode = function (id, parent, level, data, mapOfIdToChildren, options) {
1047
+ var descendants = 0,
1048
+ height = 0,
1049
+ after = options && options.after,
1050
+ before = options && options.before,
1051
+ node = {
1052
+ data: data,
1053
+ depth: level - 1,
1054
+ id: id,
1055
+ level: level,
1056
+ parent: parent
1057
+ },
1058
+ start,
1059
+ end,
1060
+ children;
1061
+
1062
+ // Allow custom logic before the children has been created.
1063
+ if (isFunction(before)) {
1064
+ before(node, options);
1065
+ }
1066
+
1067
+ // Call getNode recursively on the children. Calulate the height of the
1068
+ // node, and the number of descendants.
1069
+ children = ((mapOfIdToChildren[id] || [])).map(function (child) {
1070
+ var node = getNode(
1071
+ child.id,
1072
+ id,
1073
+ (level + 1),
1074
+ child,
1075
+ mapOfIdToChildren,
1076
+ options
1077
+ ),
1078
+ childStart = child.start,
1079
+ childEnd = (
1080
+ child.milestone === true ?
1081
+ childStart :
1082
+ child.end
1083
+ );
1084
+
1085
+ // Start should be the lowest child.start.
1086
+ start = (
1087
+ (!isNumber(start) || childStart < start) ?
1088
+ childStart :
1089
+ start
1090
+ );
1091
+
1092
+ // End should be the largest child.end.
1093
+ // If child is milestone, then use start as end.
1094
+ end = (
1095
+ (!isNumber(end) || childEnd > end) ?
1096
+ childEnd :
1097
+ end
1098
+ );
1099
+
1100
+ descendants = descendants + 1 + node.descendants;
1101
+ height = Math.max(node.height + 1, height);
1102
+ return node;
1103
+ });
1104
+
1105
+ // Calculate start and end for point if it is not already explicitly set.
1106
+ if (data) {
1107
+ data.start = pick(data.start, start);
1108
+ data.end = pick(data.end, end);
1109
+ }
1110
+
1111
+ extend(node, {
1112
+ children: children,
1113
+ descendants: descendants,
1114
+ height: height
1115
+ });
1116
+
1117
+ // Allow custom logic after the children has been created.
1118
+ if (isFunction(after)) {
1119
+ after(node, options);
1120
+ }
1121
+
1122
+ return node;
1123
+ };
1124
+ var getTree = function (data, options) {
1125
+ var ids = data.map(function (d) {
1126
+ return d.id;
1127
+ }),
1128
+ mapOfIdToChildren = getListOfParents(data, ids);
1129
+
1130
+ return getNode('', null, 1, null, mapOfIdToChildren, options);
1131
+ };
1132
+
1133
+ var Tree = {
1134
+ getListOfParents: getListOfParents,
1135
+ getNode: getNode,
1136
+ getTree: getTree
1137
+ };
1138
+
1139
+
1140
+ return Tree;
1141
+ }(Highcharts));
1142
+ var result = (function (H) {
1143
+
1144
+ var extend = H.extend,
1145
+ isArray = H.isArray,
1146
+ isBoolean = function (x) {
1147
+ return typeof x === 'boolean';
1148
+ },
1149
+ isFn = function (x) {
1150
+ return typeof x === 'function';
1151
+ },
1152
+ isObject = H.isObject,
1153
+ isNumber = H.isNumber,
1154
+ merge = H.merge,
1155
+ pick = H.pick;
1156
+
1157
+ // TODO Combine buildTree and buildNode with setTreeValues
1158
+ // TODO Remove logic from Treemap and make it utilize this mixin.
1159
+ var setTreeValues = function setTreeValues(tree, options) {
1160
+ var before = options.before,
1161
+ idRoot = options.idRoot,
1162
+ mapIdToNode = options.mapIdToNode,
1163
+ nodeRoot = mapIdToNode[idRoot],
1164
+ levelIsConstant = (
1165
+ isBoolean(options.levelIsConstant) ?
1166
+ options.levelIsConstant :
1167
+ true
1168
+ ),
1169
+ points = options.points,
1170
+ point = points[tree.i],
1171
+ optionsPoint = point && point.options || {},
1172
+ childrenTotal = 0,
1173
+ children = [],
1174
+ value;
1175
+
1176
+ extend(tree, {
1177
+ levelDynamic: tree.level - (levelIsConstant ? 0 : nodeRoot.level),
1178
+ name: pick(point && point.name, ''),
1179
+ visible: (
1180
+ idRoot === tree.id ||
1181
+ (isBoolean(options.visible) ? options.visible : false)
1182
+ )
1183
+ });
1184
+ if (isFn(before)) {
1185
+ tree = before(tree, options);
1186
+ }
1187
+ // First give the children some values
1188
+ tree.children.forEach(function (child, i) {
1189
+ var newOptions = extend({}, options);
1190
+
1191
+ extend(newOptions, {
1192
+ index: i,
1193
+ siblings: tree.children.length,
1194
+ visible: tree.visible
1195
+ });
1196
+ child = setTreeValues(child, newOptions);
1197
+ children.push(child);
1198
+ if (child.visible) {
1199
+ childrenTotal += child.val;
1200
+ }
1201
+ });
1202
+ tree.visible = childrenTotal > 0 || tree.visible;
1203
+ // Set the values
1204
+ value = pick(optionsPoint.value, childrenTotal);
1205
+ extend(tree, {
1206
+ children: children,
1207
+ childrenTotal: childrenTotal,
1208
+ isLeaf: tree.visible && !childrenTotal,
1209
+ val: value
1210
+ });
1211
+ return tree;
1212
+ };
1213
+
1214
+ var getColor = function getColor(node, options) {
1215
+ var index = options.index,
1216
+ mapOptionsToLevel = options.mapOptionsToLevel,
1217
+ parentColor = options.parentColor,
1218
+ parentColorIndex = options.parentColorIndex,
1219
+ series = options.series,
1220
+ colors = options.colors,
1221
+ siblings = options.siblings,
1222
+ points = series.points,
1223
+ getColorByPoint,
1224
+ chartOptionsChart = series.chart.options.chart,
1225
+ point,
1226
+ level,
1227
+ colorByPoint,
1228
+ colorIndexByPoint,
1229
+ color,
1230
+ colorIndex;
1231
+
1232
+ function variation(color) {
1233
+ var colorVariation = level && level.colorVariation;
1234
+
1235
+ if (colorVariation) {
1236
+ if (colorVariation.key === 'brightness') {
1237
+ return H.color(color).brighten(
1238
+ colorVariation.to * (index / siblings)
1239
+ ).get();
1240
+ }
1241
+ }
1242
+
1243
+ return color;
1244
+ }
1245
+
1246
+ if (node) {
1247
+ point = points[node.i];
1248
+ level = mapOptionsToLevel[node.level] || {};
1249
+ getColorByPoint = point && level.colorByPoint;
1250
+
1251
+ if (getColorByPoint) {
1252
+ colorIndexByPoint = point.index % (colors ?
1253
+ colors.length :
1254
+ chartOptionsChart.colorCount
1255
+ );
1256
+ colorByPoint = colors && colors[colorIndexByPoint];
1257
+ }
1258
+
1259
+ // Select either point color, level color or inherited color.
1260
+ if (!series.chart.styledMode) {
1261
+ color = pick(
1262
+ point && point.options.color,
1263
+ level && level.color,
1264
+ colorByPoint,
1265
+ parentColor && variation(parentColor),
1266
+ series.color
1267
+ );
1268
+ }
1269
+
1270
+ colorIndex = pick(
1271
+ point && point.options.colorIndex,
1272
+ level && level.colorIndex,
1273
+ colorIndexByPoint,
1274
+ parentColorIndex,
1275
+ options.colorIndex
1276
+ );
1277
+ }
1278
+ return {
1279
+ color: color,
1280
+ colorIndex: colorIndex
1281
+ };
1282
+ };
1283
+
1284
+ /**
1285
+ * Creates a map from level number to its given options.
1286
+ *
1287
+ * @private
1288
+ * @function getLevelOptions
1289
+ *
1290
+ * @param {object} params
1291
+ * Object containing parameters.
1292
+ * - `defaults` Object containing default options. The default options
1293
+ * are merged with the userOptions to get the final options for a
1294
+ * specific level.
1295
+ * - `from` The lowest level number.
1296
+ * - `levels` User options from series.levels.
1297
+ * - `to` The highest level number.
1298
+ *
1299
+ * @return {Highcharts.Dictionary<object>}
1300
+ * Returns a map from level number to its given options.
1301
+ */
1302
+ var getLevelOptions = function getLevelOptions(params) {
1303
+ var result = null,
1304
+ defaults,
1305
+ converted,
1306
+ i,
1307
+ from,
1308
+ to,
1309
+ levels;
1310
+
1311
+ if (isObject(params)) {
1312
+ result = {};
1313
+ from = isNumber(params.from) ? params.from : 1;
1314
+ levels = params.levels;
1315
+ converted = {};
1316
+ defaults = isObject(params.defaults) ? params.defaults : {};
1317
+ if (isArray(levels)) {
1318
+ converted = levels.reduce(function (obj, item) {
1319
+ var level,
1320
+ levelIsConstant,
1321
+ options;
1322
+
1323
+ if (isObject(item) && isNumber(item.level)) {
1324
+ options = merge({}, item);
1325
+ levelIsConstant = (
1326
+ isBoolean(options.levelIsConstant) ?
1327
+ options.levelIsConstant :
1328
+ defaults.levelIsConstant
1329
+ );
1330
+ // Delete redundant properties.
1331
+ delete options.levelIsConstant;
1332
+ delete options.level;
1333
+ // Calculate which level these options apply to.
1334
+ level = item.level + (levelIsConstant ? 0 : from - 1);
1335
+ if (isObject(obj[level])) {
1336
+ extend(obj[level], options);
1337
+ } else {
1338
+ obj[level] = options;
1339
+ }
1340
+ }
1341
+ return obj;
1342
+ }, {});
1343
+ }
1344
+ to = isNumber(params.to) ? params.to : 1;
1345
+ for (i = 0; i <= to; i++) {
1346
+ result[i] = merge(
1347
+ {},
1348
+ defaults,
1349
+ isObject(converted[i]) ? converted[i] : {}
1350
+ );
1351
+ }
1352
+ }
1353
+ return result;
1354
+ };
1355
+
1356
+ /**
1357
+ * Update the rootId property on the series. Also makes sure that it is
1358
+ * accessible to exporting.
1359
+ *
1360
+ * @private
1361
+ * @function updateRootId
1362
+ *
1363
+ * @param {object} series
1364
+ * The series to operate on.
1365
+ *
1366
+ * @return {string}
1367
+ * Returns the resulting rootId after update.
1368
+ */
1369
+ var updateRootId = function (series) {
1370
+ var rootId,
1371
+ options;
1372
+
1373
+ if (isObject(series)) {
1374
+ // Get the series options.
1375
+ options = isObject(series.options) ? series.options : {};
1376
+
1377
+ // Calculate the rootId.
1378
+ rootId = pick(series.rootNode, options.rootId, '');
1379
+
1380
+ // Set rootId on series.userOptions to pick it up in exporting.
1381
+ if (isObject(series.userOptions)) {
1382
+ series.userOptions.rootId = rootId;
1383
+ }
1384
+ // Set rootId on series to pick it up on next update.
1385
+ series.rootNode = rootId;
1386
+ }
1387
+ return rootId;
1388
+ };
1389
+
1390
+ var result = {
1391
+ getColor: getColor,
1392
+ getLevelOptions: getLevelOptions,
1393
+ setTreeValues: setTreeValues,
1394
+ updateRootId: updateRootId
1395
+ };
1396
+
1397
+
1398
+ return result;
1399
+ }(Highcharts));
1400
+ (function (H) {
1401
+ /**
1402
+ * (c) 2009-2019 Torstein Honsi
1403
+ *
1404
+ * License: www.highcharts.com/license
1405
+ */
1406
+
1407
+
1408
+
1409
+ var addEvent = H.addEvent,
1410
+ pick = H.pick,
1411
+ extend = H.extend,
1412
+ isArray = H.isArray,
1413
+ fireEvent = H.fireEvent,
1414
+ Axis = H.Axis,
1415
+ Series = H.Series;
1416
+
1417
+ extend(Axis.prototype, {
1418
+ isInBreak: function (brk, val) {
1419
+ var ret,
1420
+ repeat = brk.repeat || Infinity,
1421
+ from = brk.from,
1422
+ length = brk.to - brk.from,
1423
+ test = (
1424
+ val >= from ?
1425
+ (val - from) % repeat :
1426
+ repeat - ((from - val) % repeat)
1427
+ );
1428
+
1429
+ if (!brk.inclusive) {
1430
+ ret = test < length && test !== 0;
1431
+ } else {
1432
+ ret = test <= length;
1433
+ }
1434
+ return ret;
1435
+ },
1436
+
1437
+ isInAnyBreak: function (val, testKeep) {
1438
+
1439
+ var breaks = this.options.breaks,
1440
+ i = breaks && breaks.length,
1441
+ inbrk,
1442
+ keep,
1443
+ ret;
1444
+
1445
+
1446
+ if (i) {
1447
+
1448
+ while (i--) {
1449
+ if (this.isInBreak(breaks[i], val)) {
1450
+ inbrk = true;
1451
+ if (!keep) {
1452
+ keep = pick(
1453
+ breaks[i].showPoints,
1454
+ !this.isXAxis
1455
+ );
1456
+ }
1457
+ }
1458
+ }
1459
+
1460
+ if (inbrk && testKeep) {
1461
+ ret = inbrk && !keep;
1462
+ } else {
1463
+ ret = inbrk;
1464
+ }
1465
+ }
1466
+ return ret;
1467
+ }
1468
+ });
1469
+
1470
+ addEvent(Axis, 'afterInit', function () {
1471
+ if (typeof this.setBreaks === 'function') {
1472
+ this.setBreaks(this.options.breaks, false);
1473
+ }
1474
+ });
1475
+
1476
+ addEvent(Axis, 'afterSetTickPositions', function () {
1477
+ if (this.isBroken) {
1478
+ var axis = this,
1479
+ tickPositions = this.tickPositions,
1480
+ info = this.tickPositions.info,
1481
+ newPositions = [],
1482
+ i;
1483
+
1484
+ for (i = 0; i < tickPositions.length; i++) {
1485
+ if (!axis.isInAnyBreak(tickPositions[i])) {
1486
+ newPositions.push(tickPositions[i]);
1487
+ }
1488
+ }
1489
+
1490
+ this.tickPositions = newPositions;
1491
+ this.tickPositions.info = info;
1492
+ }
1493
+ });
1494
+
1495
+ // Force Axis to be not-ordinal when breaks are defined
1496
+ addEvent(Axis, 'afterSetOptions', function () {
1497
+ if (this.isBroken) {
1498
+ this.options.ordinal = false;
1499
+ }
1500
+ });
1501
+
1502
+ /**
1503
+ * Dynamically set or unset breaks in an axis. This function in lighter than
1504
+ * usin Axis.update, and it also preserves animation.
1505
+ *
1506
+ * @private
1507
+ * @function Highcharts.Axis#setBreaks
1508
+ *
1509
+ * @param {Array<*>} [breaks]
1510
+ * The breaks to add. When `undefined` it removes existing breaks.
1511
+ *
1512
+ * @param {boolean} [redraw=true]
1513
+ * Whether to redraw the chart immediately.
1514
+ */
1515
+ Axis.prototype.setBreaks = function (breaks, redraw) {
1516
+ var axis = this,
1517
+ isBroken = (isArray(breaks) && !!breaks.length);
1518
+
1519
+ function breakVal2Lin(val) {
1520
+ var nval = val,
1521
+ brk,
1522
+ i;
1523
+
1524
+ for (i = 0; i < axis.breakArray.length; i++) {
1525
+ brk = axis.breakArray[i];
1526
+ if (brk.to <= val) {
1527
+ nval -= brk.len;
1528
+ } else if (brk.from >= val) {
1529
+ break;
1530
+ } else if (axis.isInBreak(brk, val)) {
1531
+ nval -= (val - brk.from);
1532
+ break;
1533
+ }
1534
+ }
1535
+
1536
+ return nval;
1537
+ }
1538
+
1539
+ function breakLin2Val(val) {
1540
+ var nval = val,
1541
+ brk,
1542
+ i;
1543
+
1544
+ for (i = 0; i < axis.breakArray.length; i++) {
1545
+ brk = axis.breakArray[i];
1546
+ if (brk.from >= nval) {
1547
+ break;
1548
+ } else if (brk.to < nval) {
1549
+ nval += brk.len;
1550
+ } else if (axis.isInBreak(brk, nval)) {
1551
+ nval += brk.len;
1552
+ }
1553
+ }
1554
+ return nval;
1555
+ }
1556
+
1557
+
1558
+ axis.isDirty = axis.isBroken !== isBroken;
1559
+ axis.isBroken = isBroken;
1560
+ axis.options.breaks = axis.userOptions.breaks = breaks;
1561
+ axis.forceRedraw = true; // Force recalculation in setScale
1562
+
1563
+ if (!isBroken && axis.val2lin === breakVal2Lin) {
1564
+ // Revert to prototype functions
1565
+ delete axis.val2lin;
1566
+ delete axis.lin2val;
1567
+ }
1568
+
1569
+ if (isBroken) {
1570
+ axis.userOptions.ordinal = false;
1571
+ axis.val2lin = breakVal2Lin;
1572
+ axis.lin2val = breakLin2Val;
1573
+
1574
+ axis.setExtremes = function (
1575
+ newMin,
1576
+ newMax,
1577
+ redraw,
1578
+ animation,
1579
+ eventArguments
1580
+ ) {
1581
+ // If trying to set extremes inside a break, extend it to before and
1582
+ // after the break ( #3857 )
1583
+ if (this.isBroken) {
1584
+ while (this.isInAnyBreak(newMin)) {
1585
+ newMin -= this.closestPointRange;
1586
+ }
1587
+ while (this.isInAnyBreak(newMax)) {
1588
+ newMax -= this.closestPointRange;
1589
+ }
1590
+ }
1591
+ Axis.prototype.setExtremes.call(
1592
+ this,
1593
+ newMin,
1594
+ newMax,
1595
+ redraw,
1596
+ animation,
1597
+ eventArguments
1598
+ );
1599
+ };
1600
+
1601
+ axis.setAxisTranslation = function (saveOld) {
1602
+ Axis.prototype.setAxisTranslation.call(this, saveOld);
1603
+
1604
+ this.unitLength = null;
1605
+ if (this.isBroken) {
1606
+ var breaks = axis.options.breaks,
1607
+ breakArrayT = [], // Temporary one
1608
+ breakArray = [],
1609
+ length = 0,
1610
+ inBrk,
1611
+ repeat,
1612
+ min = axis.userMin || axis.min,
1613
+ max = axis.userMax || axis.max,
1614
+ pointRangePadding = pick(axis.pointRangePadding, 0),
1615
+ start,
1616
+ i;
1617
+
1618
+ // Min & max check (#4247)
1619
+ breaks.forEach(function (brk) {
1620
+ repeat = brk.repeat || Infinity;
1621
+ if (axis.isInBreak(brk, min)) {
1622
+ min += (brk.to % repeat) - (min % repeat);
1623
+ }
1624
+ if (axis.isInBreak(brk, max)) {
1625
+ max -= (max % repeat) - (brk.from % repeat);
1626
+ }
1627
+ });
1628
+
1629
+ // Construct an array holding all breaks in the axis
1630
+ breaks.forEach(function (brk) {
1631
+ start = brk.from;
1632
+ repeat = brk.repeat || Infinity;
1633
+
1634
+ while (start - repeat > min) {
1635
+ start -= repeat;
1636
+ }
1637
+ while (start < min) {
1638
+ start += repeat;
1639
+ }
1640
+
1641
+ for (i = start; i < max; i += repeat) {
1642
+ breakArrayT.push({
1643
+ value: i,
1644
+ move: 'in'
1645
+ });
1646
+ breakArrayT.push({
1647
+ value: i + (brk.to - brk.from),
1648
+ move: 'out',
1649
+ size: brk.breakSize
1650
+ });
1651
+ }
1652
+ });
1653
+
1654
+ breakArrayT.sort(function (a, b) {
1655
+ return (
1656
+ (a.value === b.value) ?
1657
+ (
1658
+ (a.move === 'in' ? 0 : 1) -
1659
+ (b.move === 'in' ? 0 : 1)
1660
+ ) :
1661
+ a.value - b.value
1662
+ );
1663
+ });
1664
+
1665
+ // Simplify the breaks
1666
+ inBrk = 0;
1667
+ start = min;
1668
+
1669
+ breakArrayT.forEach(function (brk) {
1670
+ inBrk += (brk.move === 'in' ? 1 : -1);
1671
+
1672
+ if (inBrk === 1 && brk.move === 'in') {
1673
+ start = brk.value;
1674
+ }
1675
+ if (inBrk === 0) {
1676
+ breakArray.push({
1677
+ from: start,
1678
+ to: brk.value,
1679
+ len: brk.value - start - (brk.size || 0)
1680
+ });
1681
+ length += brk.value - start - (brk.size || 0);
1682
+ }
1683
+ });
1684
+
1685
+ axis.breakArray = breakArray;
1686
+
1687
+ // Used with staticScale, and below, the actual axis length when
1688
+ // breaks are substracted.
1689
+ axis.unitLength = max - min - length + pointRangePadding;
1690
+
1691
+ fireEvent(axis, 'afterBreaks');
1692
+
1693
+ if (axis.staticScale) {
1694
+ axis.transA = axis.staticScale;
1695
+ } else if (axis.unitLength) {
1696
+ axis.transA *= (max - axis.min + pointRangePadding) /
1697
+ axis.unitLength;
1698
+ }
1699
+
1700
+ if (pointRangePadding) {
1701
+ axis.minPixelPadding = axis.transA * axis.minPointOffset;
1702
+ }
1703
+
1704
+ axis.min = min;
1705
+ axis.max = max;
1706
+ }
1707
+ };
1708
+ }
1709
+
1710
+ if (pick(redraw, true)) {
1711
+ this.chart.redraw();
1712
+ }
1713
+ };
1714
+
1715
+ addEvent(Series, 'afterGeneratePoints', function () {
1716
+
1717
+ var series = this,
1718
+ xAxis = series.xAxis,
1719
+ yAxis = series.yAxis,
1720
+ points = series.points,
1721
+ point,
1722
+ i = points.length,
1723
+ connectNulls = series.options.connectNulls,
1724
+ nullGap;
1725
+
1726
+
1727
+ if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
1728
+ while (i--) {
1729
+ point = points[i];
1730
+
1731
+ // Respect nulls inside the break (#4275)
1732
+ nullGap = point.y === null && connectNulls === false;
1733
+ if (
1734
+ !nullGap &&
1735
+ (
1736
+ xAxis.isInAnyBreak(point.x, true) ||
1737
+ yAxis.isInAnyBreak(point.y, true)
1738
+ )
1739
+ ) {
1740
+ points.splice(i, 1);
1741
+ if (this.data[i]) {
1742
+ // Removes the graphics for this point if they exist
1743
+ this.data[i].destroyElements();
1744
+ }
1745
+ }
1746
+ }
1747
+ }
1748
+
1749
+ });
1750
+
1751
+ addEvent(Series, 'afterRender', function drawPointsWrapped() {
1752
+ this.drawBreaks(this.xAxis, ['x']);
1753
+ this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
1754
+ });
1755
+
1756
+ H.Series.prototype.drawBreaks = function (axis, keys) {
1757
+ var series = this,
1758
+ points = series.points,
1759
+ breaks,
1760
+ threshold,
1761
+ eventName,
1762
+ y;
1763
+
1764
+ if (!axis) {
1765
+ return; // #5950
1766
+ }
1767
+
1768
+ keys.forEach(function (key) {
1769
+ breaks = axis.breakArray || [];
1770
+ threshold = axis.isXAxis ?
1771
+ axis.min :
1772
+ pick(series.options.threshold, axis.min);
1773
+ points.forEach(function (point) {
1774
+ y = pick(point['stack' + key.toUpperCase()], point[key]);
1775
+ breaks.forEach(function (brk) {
1776
+ eventName = false;
1777
+
1778
+ if (
1779
+ (threshold < brk.from && y > brk.to) ||
1780
+ (threshold > brk.from && y < brk.from)
1781
+ ) {
1782
+ eventName = 'pointBreak';
1783
+
1784
+ } else if (
1785
+ (threshold < brk.from && y > brk.from && y < brk.to) ||
1786
+ (threshold > brk.from && y > brk.to && y < brk.from)
1787
+ ) {
1788
+ eventName = 'pointInBreak';
1789
+ }
1790
+ if (eventName) {
1791
+ fireEvent(axis, eventName, { point: point, brk: brk });
1792
+ }
1793
+ });
1794
+ });
1795
+ });
1796
+ };
1797
+
1798
+
1799
+ /**
1800
+ * Extend getGraphPath by identifying gaps in the data so that we can draw a gap
1801
+ * in the line or area. This was moved from ordinal axis module to broken axis
1802
+ * module as of #5045.
1803
+ *
1804
+ * @private
1805
+ * @function Highcharts.Series#gappedPath
1806
+ */
1807
+ H.Series.prototype.gappedPath = function () {
1808
+ var currentDataGrouping = this.currentDataGrouping,
1809
+ groupingSize = currentDataGrouping && currentDataGrouping.gapSize,
1810
+ gapSize = this.options.gapSize,
1811
+ points = this.points.slice(),
1812
+ i = points.length - 1,
1813
+ yAxis = this.yAxis,
1814
+ xRange,
1815
+ stack;
1816
+
1817
+ /**
1818
+ * Defines when to display a gap in the graph, together with the
1819
+ * [gapUnit](plotOptions.series.gapUnit) option.
1820
+ *
1821
+ * In case when `dataGrouping` is enabled, points can be grouped into a
1822
+ * larger time span. This can make the grouped points to have a greater
1823
+ * distance than the absolute value of `gapSize` property, which will result
1824
+ * in disappearing graph completely. To prevent this situation the mentioned
1825
+ * distance between grouped points is used instead of previously defined
1826
+ * `gapSize`.
1827
+ *
1828
+ * In practice, this option is most often used to visualize gaps in
1829
+ * time series. In a stock chart, intraday data is available for daytime
1830
+ * hours, while gaps will appear in nights and weekends.
1831
+ *
1832
+ * @see [gapUnit](plotOptions.series.gapUnit)
1833
+ * @see [xAxis.breaks](#xAxis.breaks)
1834
+ *
1835
+ * @sample {highstock} stock/plotoptions/series-gapsize/
1836
+ * Setting the gap size to 2 introduces gaps for weekends in daily
1837
+ * datasets.
1838
+ *
1839
+ * @type {number}
1840
+ * @default 0
1841
+ * @product highstock
1842
+ * @apioption plotOptions.series.gapSize
1843
+ */
1844
+
1845
+ /**
1846
+ * Together with [gapSize](plotOptions.series.gapSize), this option defines
1847
+ * where to draw gaps in the graph.
1848
+ *
1849
+ * When the `gapUnit` is `relative` (default), a gap size of 5 means
1850
+ * that if the distance between two points is greater than five times
1851
+ * that of the two closest points, the graph will be broken.
1852
+ *
1853
+ * When the `gapUnit` is `value`, the gap is based on absolute axis values,
1854
+ * which on a datetime axis is milliseconds. This also applies to the
1855
+ * navigator series that inherits gap options from the base series.
1856
+ *
1857
+ * @see [gapSize](plotOptions.series.gapSize)
1858
+ *
1859
+ * @type {string}
1860
+ * @default relative
1861
+ * @since 5.0.13
1862
+ * @product highstock
1863
+ * @validvalue ["relative", "value"]
1864
+ * @apioption plotOptions.series.gapUnit
1865
+ */
1866
+
1867
+ if (gapSize && i > 0) { // #5008
1868
+
1869
+ // Gap unit is relative
1870
+ if (this.options.gapUnit !== 'value') {
1871
+ gapSize *= this.closestPointRange;
1872
+ }
1873
+
1874
+ // Setting a new gapSize in case dataGrouping is enabled (#7686)
1875
+ if (groupingSize && groupingSize > gapSize) {
1876
+ gapSize = groupingSize;
1877
+ }
1878
+
1879
+ // extension for ordinal breaks
1880
+ while (i--) {
1881
+ if (points[i + 1].x - points[i].x > gapSize) {
1882
+ xRange = (points[i].x + points[i + 1].x) / 2;
1883
+
1884
+ points.splice( // insert after this one
1885
+ i + 1,
1886
+ 0,
1887
+ {
1888
+ isNull: true,
1889
+ x: xRange
1890
+ }
1891
+ );
1892
+
1893
+ // For stacked chart generate empty stack items, #6546
1894
+ if (this.options.stacking) {
1895
+ stack = yAxis.stacks[this.stackKey][xRange] =
1896
+ new H.StackItem(
1897
+ yAxis,
1898
+ yAxis.options.stackLabels,
1899
+ false,
1900
+ xRange,
1901
+ this.stack
1902
+ );
1903
+ stack.total = 0;
1904
+ }
1905
+ }
1906
+ }
1907
+ }
1908
+
1909
+ // Call base method
1910
+ return this.getGraphPath(points);
1911
+ };
1912
+
1913
+ }(Highcharts));
1914
+ (function (H, Tree, mixinTreeSeries) {
1915
+ /* *
1916
+ * (c) 2016 Highsoft AS
1917
+ * Authors: Jon Arild Nygard
1918
+ *
1919
+ * License: www.highcharts.com/license
1920
+ */
1921
+
1922
+ /* eslint no-console: 0 */
1923
+
1924
+
1925
+
1926
+ var addEvent = H.addEvent,
1927
+ argsToArray = function (args) {
1928
+ return Array.prototype.slice.call(args, 1);
1929
+ },
1930
+ defined = H.defined,
1931
+ extend = H.extend,
1932
+ find = H.find,
1933
+ fireEvent = H.fireEvent,
1934
+ getLevelOptions = mixinTreeSeries.getLevelOptions,
1935
+ merge = H.merge,
1936
+ isBoolean = function (x) {
1937
+ return typeof x === 'boolean';
1938
+ },
1939
+ isNumber = H.isNumber,
1940
+ isObject = function (x) {
1941
+ // Always use strict mode.
1942
+ return H.isObject(x, true);
1943
+ },
1944
+ isString = H.isString,
1945
+ pick = H.pick,
1946
+ wrap = H.wrap,
1947
+ GridAxis = H.Axis,
1948
+ GridAxisTick = H.Tick;
1949
+
1950
+ var override = function (obj, methods) {
1951
+ var method,
1952
+ func;
1953
+
1954
+ for (method in methods) {
1955
+ if (methods.hasOwnProperty(method)) {
1956
+ func = methods[method];
1957
+ wrap(obj, method, func);
1958
+ }
1959
+ }
1960
+ };
1961
+
1962
+ var getBreakFromNode = function (node, max) {
1963
+ var from = node.collapseStart,
1964
+ to = node.collapseEnd;
1965
+
1966
+ // In broken-axis, the axis.max is minimized until it is not within a break.
1967
+ // Therefore, if break.to is larger than axis.max, the axis.to should not
1968
+ // add the 0.5 axis.tickMarkOffset, to avoid adding a break larger than
1969
+ // axis.max
1970
+ // TODO consider simplifying broken-axis and this might solve itself
1971
+ if (to >= max) {
1972
+ from -= 0.5;
1973
+ }
1974
+
1975
+ return {
1976
+ from: from,
1977
+ to: to,
1978
+ showPoints: false
1979
+ };
1980
+ };
1981
+
1982
+ /**
1983
+ * Creates a list of positions for the ticks on the axis. Filters out positions
1984
+ * that are outside min and max, or is inside an axis break.
1985
+ *
1986
+ * @private
1987
+ * @function getTickPositions
1988
+ *
1989
+ * @param {Highcharts.Axis} axis
1990
+ * The Axis to get the tick positions from.
1991
+ *
1992
+ * @return {Array<number>}
1993
+ * List of positions.
1994
+ */
1995
+ var getTickPositions = function (axis) {
1996
+ return Object.keys(axis.mapOfPosToGridNode).reduce(
1997
+ function (arr, key) {
1998
+ var pos = +key;
1999
+ if (
2000
+ axis.min <= pos &&
2001
+ axis.max >= pos &&
2002
+ !axis.isInAnyBreak(pos)
2003
+ ) {
2004
+ arr.push(pos);
2005
+ }
2006
+ return arr;
2007
+ },
2008
+ []
2009
+ );
2010
+ };
2011
+
2012
+ /**
2013
+ * Check if a node is collapsed.
2014
+ *
2015
+ * @private
2016
+ * @function isCollapsed
2017
+ *
2018
+ * @param {Highcharts.Axis} axis
2019
+ * The axis to check against.
2020
+ *
2021
+ * @param {object} node
2022
+ * The node to check if is collapsed.
2023
+ *
2024
+ * @param {number} pos
2025
+ * The tick position to collapse.
2026
+ *
2027
+ * @return {boolean}
2028
+ * Returns true if collapsed, false if expanded.
2029
+ */
2030
+ var isCollapsed = function (axis, node) {
2031
+ var breaks = (axis.options.breaks || []),
2032
+ obj = getBreakFromNode(node, axis.max);
2033
+
2034
+ return breaks.some(function (b) {
2035
+ return b.from === obj.from && b.to === obj.to;
2036
+ });
2037
+ };
2038
+
2039
+ /**
2040
+ * Calculates the new axis breaks to collapse a node.
2041
+ *
2042
+ * @private
2043
+ * @function collapse
2044
+ *
2045
+ * @param {Highcharts.Axis} axis
2046
+ * The axis to check against.
2047
+ *
2048
+ * @param {object} node
2049
+ * The node to collapse.
2050
+ *
2051
+ * @param {number} pos
2052
+ * The tick position to collapse.
2053
+ *
2054
+ * @return {Array<object>}
2055
+ * Returns an array of the new breaks for the axis.
2056
+ */
2057
+ var collapse = function (axis, node) {
2058
+ var breaks = (axis.options.breaks || []),
2059
+ obj = getBreakFromNode(node, axis.max);
2060
+
2061
+ breaks.push(obj);
2062
+ return breaks;
2063
+ };
2064
+
2065
+ /**
2066
+ * Calculates the new axis breaks to expand a node.
2067
+ *
2068
+ * @private
2069
+ * @function expand
2070
+ *
2071
+ * @param {Highcharts.Axis} axis
2072
+ * The axis to check against.
2073
+ *
2074
+ * @param {object} node
2075
+ * The node to expand.
2076
+ *
2077
+ * @param {number} pos
2078
+ * The tick position to expand.
2079
+ *
2080
+ * @returns {Array<object>} Returns an array of the new breaks for the axis.
2081
+ */
2082
+ var expand = function (axis, node) {
2083
+ var breaks = (axis.options.breaks || []),
2084
+ obj = getBreakFromNode(node, axis.max);
2085
+
2086
+ // Remove the break from the axis breaks array.
2087
+ return breaks.reduce(function (arr, b) {
2088
+ if (b.to !== obj.to || b.from !== obj.from) {
2089
+ arr.push(b);
2090
+ }
2091
+ return arr;
2092
+ }, []);
2093
+ };
2094
+
2095
+ /**
2096
+ * Calculates the new axis breaks after toggling the collapse/expand state of a
2097
+ * node. If it is collapsed it will be expanded, and if it is exapended it will
2098
+ * be collapsed.
2099
+ *
2100
+ * @private
2101
+ * @function toggleCollapse
2102
+ *
2103
+ * @param {Highcharts.Axis} axis
2104
+ * The axis to check against.
2105
+ *
2106
+ * @param {object} node
2107
+ * The node to toggle.
2108
+ *
2109
+ * @param {number} pos
2110
+ * The tick position to toggle.
2111
+ *
2112
+ * @return {Array<object>}
2113
+ * Returns an array of the new breaks for the axis.
2114
+ */
2115
+ var toggleCollapse = function (axis, node) {
2116
+ return (
2117
+ isCollapsed(axis, node) ?
2118
+ expand(axis, node) :
2119
+ collapse(axis, node)
2120
+ );
2121
+ };
2122
+ var renderLabelIcon = function (tick, params) {
2123
+ var icon = tick.labelIcon,
2124
+ isNew = !icon,
2125
+ renderer = params.renderer,
2126
+ labelBox = params.xy,
2127
+ options = params.options,
2128
+ width = options.width,
2129
+ height = options.height,
2130
+ iconCenter = {
2131
+ x: labelBox.x - (width / 2) - options.padding,
2132
+ y: labelBox.y - (height / 2)
2133
+ },
2134
+ rotation = params.collapsed ? 90 : 180,
2135
+ shouldRender = params.show && H.isNumber(iconCenter.y);
2136
+
2137
+ if (isNew) {
2138
+ tick.labelIcon = icon = renderer.path(renderer.symbols[options.type](
2139
+ options.x,
2140
+ options.y,
2141
+ width,
2142
+ height
2143
+ ))
2144
+ .addClass('highcharts-label-icon')
2145
+ .add(params.group);
2146
+ }
2147
+
2148
+ // Set the new position, and show or hide
2149
+ if (!shouldRender) {
2150
+ icon.attr({ y: -9999 }); // #1338
2151
+ }
2152
+
2153
+ // Presentational attributes
2154
+ if (!renderer.styledMode) {
2155
+ icon
2156
+ .attr({
2157
+ 'stroke-width': 1,
2158
+ 'fill': pick(params.color, '#666666')
2159
+ })
2160
+ .css({
2161
+ cursor: 'pointer',
2162
+ stroke: options.lineColor,
2163
+ strokeWidth: options.lineWidth
2164
+ });
2165
+ }
2166
+
2167
+ // Update the icon positions
2168
+ icon[isNew ? 'attr' : 'animate']({
2169
+ translateX: iconCenter.x,
2170
+ translateY: iconCenter.y,
2171
+ rotation: rotation
2172
+ });
2173
+
2174
+ };
2175
+ var onTickHover = function (label) {
2176
+ label.addClass('highcharts-treegrid-node-active');
2177
+
2178
+ if (!label.renderer.styledMode) {
2179
+ label.css({
2180
+ textDecoration: 'underline'
2181
+ });
2182
+ }
2183
+ };
2184
+ var onTickHoverExit = function (label, options) {
2185
+ var css = defined(options.style) ? options.style : {};
2186
+
2187
+ label.removeClass('highcharts-treegrid-node-active');
2188
+
2189
+ if (!label.renderer.styledMode) {
2190
+ label.css({
2191
+ textDecoration: css.textDecoration
2192
+ });
2193
+ }
2194
+ };
2195
+
2196
+ /**
2197
+ * Builds the tree of categories and calculates its positions.
2198
+ *
2199
+ * @param {object} e Event object
2200
+ * @param {object} e.target The chart instance which the event was fired on.
2201
+ * @param {object[]} e.target.axes The axes of the chart.
2202
+ */
2203
+ var onBeforeRender = function (e) {
2204
+ var chart = e.target,
2205
+ axes = chart.axes;
2206
+
2207
+ axes
2208
+ .filter(function (axis) {
2209
+ return axis.options.type === 'treegrid';
2210
+ })
2211
+ .forEach(function (axis) {
2212
+ var labelOptions = axis.options && axis.options.labels,
2213
+ removeFoundExtremesEvent;
2214
+
2215
+ // setScale is fired after all the series is initialized,
2216
+ // which is an ideal time to update the axis.categories.
2217
+ axis.updateYNames();
2218
+
2219
+ // Update yData now that we have calculated the y values
2220
+ // TODO: it would be better to be able to calculate y values
2221
+ // before Series.setData
2222
+ axis.series.forEach(function (series) {
2223
+ series.yData = series.options.data.map(function (data) {
2224
+ return data.y;
2225
+ });
2226
+ });
2227
+
2228
+ // Calculate the label options for each level in the tree.
2229
+ axis.mapOptionsToLevel = getLevelOptions({
2230
+ defaults: labelOptions,
2231
+ from: 1,
2232
+ levels: labelOptions.levels,
2233
+ to: axis.tree.height
2234
+ });
2235
+
2236
+ // Collapse all the nodes belonging to a point where collapsed
2237
+ // equals true.
2238
+ // Can be called from beforeRender, if getBreakFromNode removes
2239
+ // its dependency on axis.max.
2240
+ removeFoundExtremesEvent =
2241
+ H.addEvent(axis, 'foundExtremes', function () {
2242
+ axis.collapsedNodes.forEach(function (node) {
2243
+ var breaks = collapse(axis, node);
2244
+
2245
+ axis.setBreaks(breaks, false);
2246
+ });
2247
+ removeFoundExtremesEvent();
2248
+ });
2249
+ });
2250
+ };
2251
+
2252
+ /**
2253
+ * Creates a tree structure of the data, and the treegrid. Calculates
2254
+ * categories, and y-values of points based on the tree.
2255
+ *
2256
+ * @private
2257
+ * @function getTreeGridFromData
2258
+ *
2259
+ * @param {Array<*>} data
2260
+ * All the data points to display in the axis.
2261
+ *
2262
+ * @param {boolean} uniqueNames
2263
+ * Wether or not the data node with the same name should share grid cell.
2264
+ * If true they do share cell. False by default.
2265
+ *
2266
+ * @return {object}
2267
+ * Returns an object containing categories, mapOfIdToNode,
2268
+ * mapOfPosToGridNode, and tree.
2269
+ *
2270
+ * @todo There should be only one point per line.
2271
+ * @todo It should be optional to have one category per point, or merge cells
2272
+ * @todo Add unit-tests.
2273
+ */
2274
+ var getTreeGridFromData = function (data, uniqueNames, numberOfSeries) {
2275
+ var categories = [],
2276
+ collapsedNodes = [],
2277
+ mapOfIdToNode = {},
2278
+ mapOfPosToGridNode = {},
2279
+ posIterator = -1,
2280
+ uniqueNamesEnabled = isBoolean(uniqueNames) ? uniqueNames : false,
2281
+ tree,
2282
+ treeParams,
2283
+ updateYValuesAndTickPos;
2284
+
2285
+ // Build the tree from the series data.
2286
+ treeParams = {
2287
+ // After the children has been created.
2288
+ after: function (node) {
2289
+ var gridNode = mapOfPosToGridNode[node.pos],
2290
+ height = 0,
2291
+ descendants = 0;
2292
+
2293
+ gridNode.children.forEach(function (child) {
2294
+ descendants += child.descendants + 1;
2295
+ height = Math.max(child.height + 1, height);
2296
+ });
2297
+ gridNode.descendants = descendants;
2298
+ gridNode.height = height;
2299
+ if (gridNode.collapsed) {
2300
+ collapsedNodes.push(gridNode);
2301
+ }
2302
+ },
2303
+ // Before the children has been created.
2304
+ before: function (node) {
2305
+ var data = isObject(node.data) ? node.data : {},
2306
+ name = isString(data.name) ? data.name : '',
2307
+ parentNode = mapOfIdToNode[node.parent],
2308
+ parentGridNode = (
2309
+ isObject(parentNode) ?
2310
+ mapOfPosToGridNode[parentNode.pos] :
2311
+ null
2312
+ ),
2313
+ hasSameName = function (x) {
2314
+ return x.name === name;
2315
+ },
2316
+ gridNode,
2317
+ pos;
2318
+
2319
+ // If not unique names, look for a sibling node with the same name.
2320
+ if (
2321
+ uniqueNamesEnabled &&
2322
+ isObject(parentGridNode) &&
2323
+ !!(gridNode = find(parentGridNode.children, hasSameName))
2324
+ ) {
2325
+ // If if there is a gridNode with the same name, reuse position.
2326
+ pos = gridNode.pos;
2327
+ // Add data node to list of nodes in the grid node.
2328
+ gridNode.nodes.push(node);
2329
+ } else {
2330
+ // If it is a new grid node, increment position.
2331
+ pos = posIterator++;
2332
+ }
2333
+
2334
+ // Add new grid node to map.
2335
+ if (!mapOfPosToGridNode[pos]) {
2336
+ mapOfPosToGridNode[pos] = gridNode = {
2337
+ depth: parentGridNode ? parentGridNode.depth + 1 : 0,
2338
+ name: name,
2339
+ nodes: [node],
2340
+ children: [],
2341
+ pos: pos
2342
+ };
2343
+
2344
+ // If not root, then add name to categories.
2345
+ if (pos !== -1) {
2346
+ categories.push(name);
2347
+ }
2348
+
2349
+ // Add name to list of children.
2350
+ if (isObject(parentGridNode)) {
2351
+ parentGridNode.children.push(gridNode);
2352
+ }
2353
+ }
2354
+
2355
+ // Add data node to map
2356
+ if (isString(node.id)) {
2357
+ mapOfIdToNode[node.id] = node;
2358
+ }
2359
+
2360
+ // If one of the points are collapsed, then start the grid node in
2361
+ // collapsed state.
2362
+ if (data.collapsed === true) {
2363
+ gridNode.collapsed = true;
2364
+ }
2365
+
2366
+ // Assign pos to data node
2367
+ node.pos = pos;
2368
+ }
2369
+ };
2370
+
2371
+ updateYValuesAndTickPos = function (map, numberOfSeries) {
2372
+ var setValues = function (gridNode, start, result) {
2373
+ var nodes = gridNode.nodes,
2374
+ end = start + (start === -1 ? 0 : numberOfSeries - 1),
2375
+ diff = (end - start) / 2,
2376
+ padding = 0.5,
2377
+ pos = start + diff;
2378
+
2379
+ nodes.forEach(function (node) {
2380
+ var data = node.data;
2381
+
2382
+ if (isObject(data)) {
2383
+ // Update point
2384
+ data.y = start + data.seriesIndex;
2385
+ // Remove the property once used
2386
+ delete data.seriesIndex;
2387
+ }
2388
+ node.pos = pos;
2389
+ });
2390
+
2391
+ result[pos] = gridNode;
2392
+
2393
+ gridNode.pos = pos;
2394
+ gridNode.tickmarkOffset = diff + padding;
2395
+ gridNode.collapseStart = end + padding;
2396
+
2397
+
2398
+ gridNode.children.forEach(function (child) {
2399
+ setValues(child, end + 1, result);
2400
+ end = child.collapseEnd - padding;
2401
+ });
2402
+ // Set collapseEnd to the end of the last child node.
2403
+ gridNode.collapseEnd = end + padding;
2404
+
2405
+ return result;
2406
+ };
2407
+
2408
+ return setValues(map['-1'], -1, {});
2409
+ };
2410
+
2411
+ // Create tree from data
2412
+ tree = Tree.getTree(data, treeParams);
2413
+
2414
+ // Update y values of data, and set calculate tick positions.
2415
+ mapOfPosToGridNode = updateYValuesAndTickPos(
2416
+ mapOfPosToGridNode,
2417
+ numberOfSeries
2418
+ );
2419
+
2420
+ // Return the resulting data.
2421
+ return {
2422
+ categories: categories,
2423
+ mapOfIdToNode: mapOfIdToNode,
2424
+ mapOfPosToGridNode: mapOfPosToGridNode,
2425
+ collapsedNodes: collapsedNodes,
2426
+ tree: tree
2427
+ };
2428
+ };
2429
+
2430
+ override(GridAxis.prototype, {
2431
+ init: function (proceed, chart, userOptions) {
2432
+ var axis = this,
2433
+ isTreeGrid = userOptions.type === 'treegrid';
2434
+
2435
+ // Set default and forced options for TreeGrid
2436
+ if (isTreeGrid) {
2437
+
2438
+ // Add event for updating the categories of a treegrid.
2439
+ // NOTE Preferably these events should be set on the axis.
2440
+ addEvent(chart, 'beforeRender', onBeforeRender);
2441
+ addEvent(chart, 'beforeRedraw', onBeforeRender);
2442
+
2443
+ userOptions = merge({
2444
+ // Default options
2445
+ grid: {
2446
+ enabled: true
2447
+ },
2448
+ // TODO: add support for align in treegrid.
2449
+ labels: {
2450
+ align: 'left',
2451
+
2452
+ /**
2453
+ * Set options on specific levels in a tree grid axis. Takes
2454
+ * precedence over labels options.
2455
+ *
2456
+ * @sample {gantt} gantt/treegrid-axis/labels-levels
2457
+ * Levels on TreeGrid Labels
2458
+ *
2459
+ * @type {Array<*>}
2460
+ * @product gantt
2461
+ * @apioption yAxis.labels.levels
2462
+ */
2463
+ levels: [{
2464
+ /**
2465
+ * Specify the level which the options within this object
2466
+ * applies to.
2467
+ *
2468
+ * @sample {gantt} gantt/treegrid-axis/labels-levels
2469
+ *
2470
+ * @type {number}
2471
+ * @product gantt
2472
+ * @apioption yAxis.labels.levels.level
2473
+ */
2474
+ level: undefined
2475
+ }, {
2476
+ level: 1,
2477
+ /**
2478
+ * @type {Highcharts.CSSObject}
2479
+ * @product gantt
2480
+ * @apioption yAxis.labels.levels.style
2481
+ */
2482
+ style: {
2483
+ /** @ignore-option */
2484
+ fontWeight: 'bold'
2485
+ }
2486
+ }],
2487
+
2488
+ /**
2489
+ * The symbol for the collapse and expand icon in a
2490
+ * treegrid.
2491
+ *
2492
+ * @product gantt
2493
+ * @optionparent yAxis.labels.symbol
2494
+ */
2495
+ symbol: {
2496
+ /**
2497
+ * The symbol type. Points to a definition function in
2498
+ * the `Highcharts.Renderer.symbols` collection.
2499
+ *
2500
+ * @validvalue ["arc", "circle", "diamond", "square", "triangle", "triangle-down"]
2501
+ */
2502
+ type: 'triangle',
2503
+ x: -5,
2504
+ y: -5,
2505
+ height: 10,
2506
+ width: 10,
2507
+ padding: 5
2508
+ }
2509
+ },
2510
+ uniqueNames: false
2511
+
2512
+ }, userOptions, { // User options
2513
+ // Forced options
2514
+ reversed: true,
2515
+ // grid.columns is not supported in treegrid
2516
+ grid: {
2517
+ columns: undefined
2518
+ }
2519
+ });
2520
+ }
2521
+
2522
+ // Now apply the original function with the original arguments,
2523
+ // which are sliced off this function's arguments
2524
+ proceed.apply(axis, [chart, userOptions]);
2525
+ if (isTreeGrid) {
2526
+ axis.hasNames = true;
2527
+ axis.options.showLastLabel = true;
2528
+ }
2529
+ },
2530
+ /**
2531
+ * Override to add indentation to axis.maxLabelDimensions.
2532
+ *
2533
+ * @private
2534
+ * @function Highcharts.GridAxis#getMaxLabelDimensions
2535
+ *
2536
+ * @param {Function} proceed
2537
+ * The original function
2538
+ */
2539
+ getMaxLabelDimensions: function (proceed) {
2540
+ var axis = this,
2541
+ options = axis.options,
2542
+ labelOptions = options && options.labels,
2543
+ indentation = (
2544
+ labelOptions && isNumber(labelOptions.indentation) ?
2545
+ options.labels.indentation :
2546
+ 0
2547
+ ),
2548
+ retVal = proceed.apply(axis, argsToArray(arguments)),
2549
+ isTreeGrid = axis.options.type === 'treegrid',
2550
+ treeDepth;
2551
+
2552
+ if (isTreeGrid && this.mapOfPosToGridNode) {
2553
+ treeDepth = axis.mapOfPosToGridNode[-1].height;
2554
+ retVal.width += indentation * (treeDepth - 1);
2555
+ }
2556
+
2557
+ return retVal;
2558
+ },
2559
+ /**
2560
+ * Generates a tick for initial positioning.
2561
+ *
2562
+ * @private
2563
+ * @function Highcharts.GridAxis#generateTick
2564
+ *
2565
+ * @param {Function} proceed
2566
+ * The original generateTick function.
2567
+ *
2568
+ * @param {number} pos
2569
+ * The tick position in axis values.
2570
+ */
2571
+ generateTick: function (proceed, pos) {
2572
+ var axis = this,
2573
+ mapOptionsToLevel = (
2574
+ isObject(axis.mapOptionsToLevel) ? axis.mapOptionsToLevel : {}
2575
+ ),
2576
+ isTreeGrid = axis.options.type === 'treegrid',
2577
+ ticks = axis.ticks,
2578
+ tick = ticks[pos],
2579
+ levelOptions,
2580
+ options,
2581
+ gridNode;
2582
+
2583
+ if (isTreeGrid) {
2584
+ gridNode = axis.mapOfPosToGridNode[pos];
2585
+ levelOptions = mapOptionsToLevel[gridNode.depth];
2586
+
2587
+ if (levelOptions) {
2588
+ options = {
2589
+ labels: levelOptions
2590
+ };
2591
+ }
2592
+
2593
+ if (!tick) {
2594
+ ticks[pos] = tick =
2595
+ new GridAxisTick(axis, pos, null, undefined, {
2596
+ category: gridNode.name,
2597
+ tickmarkOffset: gridNode.tickmarkOffset,
2598
+ options: options
2599
+ });
2600
+ } else {
2601
+ // update labels depending on tick interval
2602
+ tick.parameters.category = gridNode.name;
2603
+ tick.options = options;
2604
+ tick.addLabel();
2605
+ }
2606
+ } else {
2607
+ proceed.apply(axis, argsToArray(arguments));
2608
+ }
2609
+ },
2610
+ /**
2611
+ * Set the tick positions, tickInterval, axis min and max.
2612
+ *
2613
+ * @private
2614
+ * @function Highcharts.GridAxis#setTickInterval
2615
+ *
2616
+ * @param {Function} proceed
2617
+ * The original setTickInterval function.
2618
+ */
2619
+ setTickInterval: function (proceed) {
2620
+ var axis = this,
2621
+ options = axis.options,
2622
+ isTreeGrid = options.type === 'treegrid';
2623
+
2624
+ if (isTreeGrid) {
2625
+ axis.min = pick(axis.userMin, options.min, axis.dataMin);
2626
+ axis.max = pick(axis.userMax, options.max, axis.dataMax);
2627
+
2628
+ fireEvent(axis, 'foundExtremes');
2629
+
2630
+ // setAxisTranslation modifies the min and max according to
2631
+ // axis breaks.
2632
+ axis.setAxisTranslation(true);
2633
+
2634
+ axis.tickmarkOffset = 0.5;
2635
+ axis.tickInterval = 1;
2636
+ axis.tickPositions = this.mapOfPosToGridNode ?
2637
+ getTickPositions(axis) :
2638
+ [];
2639
+ } else {
2640
+ proceed.apply(axis, argsToArray(arguments));
2641
+ }
2642
+ }
2643
+ });
2644
+ override(GridAxisTick.prototype, {
2645
+ getLabelPosition: function (
2646
+ proceed,
2647
+ x,
2648
+ y,
2649
+ label,
2650
+ horiz,
2651
+ labelOptions,
2652
+ tickmarkOffset,
2653
+ index,
2654
+ step
2655
+ ) {
2656
+ var tick = this,
2657
+ lbOptions = pick(
2658
+ tick.options && tick.options.labels,
2659
+ labelOptions
2660
+ ),
2661
+ pos = tick.pos,
2662
+ axis = tick.axis,
2663
+ options = axis.options,
2664
+ isTreeGrid = options.type === 'treegrid',
2665
+ result = proceed.apply(
2666
+ tick,
2667
+ [x, y, label, horiz, lbOptions, tickmarkOffset, index, step]
2668
+ ),
2669
+ symbolOptions,
2670
+ indentation,
2671
+ mapOfPosToGridNode,
2672
+ node,
2673
+ level;
2674
+
2675
+ if (isTreeGrid) {
2676
+ symbolOptions = (
2677
+ lbOptions && isObject(lbOptions.symbol) ?
2678
+ lbOptions.symbol :
2679
+ {}
2680
+ );
2681
+ indentation = (
2682
+ lbOptions && isNumber(lbOptions.indentation) ?
2683
+ lbOptions.indentation :
2684
+ 0
2685
+ );
2686
+ mapOfPosToGridNode = axis.mapOfPosToGridNode;
2687
+ node = mapOfPosToGridNode && mapOfPosToGridNode[pos];
2688
+ level = (node && node.depth) || 1;
2689
+ result.x += (
2690
+ // Add space for symbols
2691
+ ((symbolOptions.width) + (symbolOptions.padding * 2)) +
2692
+ // Apply indentation
2693
+ ((level - 1) * indentation)
2694
+ );
2695
+ }
2696
+
2697
+ return result;
2698
+ },
2699
+ renderLabel: function (proceed) {
2700
+ var tick = this,
2701
+ pos = tick.pos,
2702
+ axis = tick.axis,
2703
+ label = tick.label,
2704
+ mapOfPosToGridNode = axis.mapOfPosToGridNode,
2705
+ options = axis.options,
2706
+ labelOptions = pick(
2707
+ tick.options && tick.options.labels,
2708
+ options && options.labels
2709
+ ),
2710
+ symbolOptions = (
2711
+ labelOptions && isObject(labelOptions.symbol) ?
2712
+ labelOptions.symbol :
2713
+ {}
2714
+ ),
2715
+ node = mapOfPosToGridNode && mapOfPosToGridNode[pos],
2716
+ level = node && node.depth,
2717
+ isTreeGrid = options.type === 'treegrid',
2718
+ hasLabel = !!(label && label.element),
2719
+ shouldRender = axis.tickPositions.indexOf(pos) > -1,
2720
+ prefixClassName = 'highcharts-treegrid-node-',
2721
+ collapsed,
2722
+ addClassName,
2723
+ removeClassName,
2724
+ styledMode = axis.chart.styledMode;
2725
+
2726
+ if (isTreeGrid && node) {
2727
+ // Add class name for hierarchical styling.
2728
+ if (hasLabel) {
2729
+ label.addClass(prefixClassName + 'level-' + level);
2730
+ }
2731
+ }
2732
+
2733
+ proceed.apply(tick, argsToArray(arguments));
2734
+
2735
+ if (isTreeGrid && node && hasLabel && node.descendants > 0) {
2736
+ collapsed = isCollapsed(axis, node);
2737
+
2738
+ renderLabelIcon(
2739
+ tick,
2740
+ {
2741
+ color: !styledMode && label.styles.color,
2742
+ collapsed: collapsed,
2743
+ group: label.parentGroup,
2744
+ options: symbolOptions,
2745
+ renderer: label.renderer,
2746
+ show: shouldRender,
2747
+ xy: label.xy
2748
+ }
2749
+ );
2750
+
2751
+ // Add class name for the node.
2752
+ addClassName = prefixClassName +
2753
+ (collapsed ? 'collapsed' : 'expanded');
2754
+ removeClassName = prefixClassName +
2755
+ (collapsed ? 'expanded' : 'collapsed');
2756
+
2757
+ label
2758
+ .addClass(addClassName)
2759
+ .removeClass(removeClassName);
2760
+
2761
+ if (!styledMode) {
2762
+ label.css({
2763
+ cursor: 'pointer'
2764
+ });
2765
+ }
2766
+
2767
+ // Add events to both label text and icon
2768
+ [label, tick.labelIcon].forEach(function (object) {
2769
+ if (!object.attachedTreeGridEvents) {
2770
+ // On hover
2771
+ H.addEvent(object.element, 'mouseover', function () {
2772
+ onTickHover(label);
2773
+ });
2774
+
2775
+ // On hover out
2776
+ H.addEvent(object.element, 'mouseout', function () {
2777
+ onTickHoverExit(label, labelOptions);
2778
+ });
2779
+
2780
+ H.addEvent(object.element, 'click', function () {
2781
+ tick.toggleCollapse();
2782
+ });
2783
+ object.attachedTreeGridEvents = true;
2784
+ }
2785
+ });
2786
+ }
2787
+ }
2788
+ });
2789
+
2790
+ extend(GridAxisTick.prototype, /** @lends Highcharts.Tick.prototype */{
2791
+
2792
+ /**
2793
+ * Collapse the grid cell. Used when axis is of type treegrid.
2794
+ *
2795
+ * @see gantt/treegrid-axis/collapsed-dynamically/demo.js
2796
+ *
2797
+ * @private
2798
+ * @function Highcharts.GridAxisTick#collapse
2799
+ *
2800
+ * @param {boolean} [redraw=true]
2801
+ * Whether to redraw the chart or wait for an explicit call to
2802
+ * {@link Highcharts.Chart#redraw}
2803
+ */
2804
+ collapse: function (redraw) {
2805
+ var tick = this,
2806
+ axis = tick.axis,
2807
+ pos = tick.pos,
2808
+ node = axis.mapOfPosToGridNode[pos],
2809
+ breaks = collapse(axis, node);
2810
+
2811
+ axis.setBreaks(breaks, pick(redraw, true));
2812
+ },
2813
+ /**
2814
+ * Expand the grid cell. Used when axis is of type treegrid.
2815
+ *
2816
+ * @see gantt/treegrid-axis/collapsed-dynamically/demo.js
2817
+ *
2818
+ * @private
2819
+ * @function Highcharts.GridAxisTick#expand
2820
+ *
2821
+ * @param {boolean} [redraw=true]
2822
+ * Whether to redraw the chart or wait for an explicit call to
2823
+ * {@link Highcharts.Chart#redraw}
2824
+ */
2825
+ expand: function (redraw) {
2826
+ var tick = this,
2827
+ axis = tick.axis,
2828
+ pos = tick.pos,
2829
+ node = axis.mapOfPosToGridNode[pos],
2830
+ breaks = expand(axis, node);
2831
+
2832
+ axis.setBreaks(breaks, pick(redraw, true));
2833
+ },
2834
+ /**
2835
+ * Toggle the collapse/expand state of the grid cell. Used when axis is of
2836
+ * type treegrid.
2837
+ *
2838
+ * @see gantt/treegrid-axis/collapsed-dynamically/demo.js
2839
+ *
2840
+ * @private
2841
+ * @function Highcharts.GridAxisTick#toggleCollapse
2842
+ *
2843
+ * @param {boolean} [redraw=true]
2844
+ * Whether to redraw the chart or wait for an explicit call to
2845
+ * {@link Highcharts.Chart#redraw}
2846
+ */
2847
+ toggleCollapse: function (redraw) {
2848
+ var tick = this,
2849
+ axis = tick.axis,
2850
+ pos = tick.pos,
2851
+ node = axis.mapOfPosToGridNode[pos],
2852
+ breaks = toggleCollapse(axis, node);
2853
+
2854
+ axis.setBreaks(breaks, pick(redraw, true));
2855
+ }
2856
+ });
2857
+
2858
+ GridAxis.prototype.updateYNames = function () {
2859
+ var axis = this,
2860
+ options = axis.options,
2861
+ isTreeGrid = options.type === 'treegrid',
2862
+ uniqueNames = options.uniqueNames,
2863
+ isYAxis = !axis.isXAxis,
2864
+ series = axis.series,
2865
+ numberOfSeries = 0,
2866
+ treeGrid,
2867
+ data;
2868
+
2869
+ if (isTreeGrid && isYAxis) {
2870
+ // Concatenate data from all series assigned to this axis.
2871
+ data = series.reduce(function (arr, s) {
2872
+ if (s.visible) {
2873
+ // Push all data to array
2874
+ s.options.data.forEach(function (data) {
2875
+ if (isObject(data)) {
2876
+ // Set series index on data. Removed again after use.
2877
+ data.seriesIndex = numberOfSeries;
2878
+ arr.push(data);
2879
+ }
2880
+ });
2881
+
2882
+ // Increment series index
2883
+ if (uniqueNames === true) {
2884
+ numberOfSeries++;
2885
+ }
2886
+ }
2887
+ return arr;
2888
+ }, []);
2889
+
2890
+ // Calculate categories and the hierarchy for the grid.
2891
+ treeGrid = getTreeGridFromData(
2892
+ data,
2893
+ uniqueNames,
2894
+ (uniqueNames === true) ? numberOfSeries : 1
2895
+ );
2896
+
2897
+ // Assign values to the axis.
2898
+ axis.categories = treeGrid.categories;
2899
+ axis.mapOfPosToGridNode = treeGrid.mapOfPosToGridNode;
2900
+ // Used on init to start a node as collapsed
2901
+ axis.collapsedNodes = treeGrid.collapsedNodes;
2902
+ axis.hasNames = true;
2903
+ axis.tree = treeGrid.tree;
2904
+ }
2905
+ };
2906
+
2907
+ // Make utility functions available for testing.
2908
+ GridAxis.prototype.utils = {
2909
+ getNode: Tree.getNode
2910
+ };
2911
+
2912
+ }(Highcharts, Tree, result));
2913
+ return (function () {
2914
+
2915
+
2916
+ }());
2917
+ }));