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,10 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+ Streamgraph module
4
+
5
+ (c) 2010-2019 Torstein Honsi
6
+
7
+ License: www.highcharts.com/license
8
+ */
9
+ (function(a){"object"===typeof module&&module.exports?(a["default"]=a,module.exports=a):"function"===typeof define&&define.amd?define(function(){return a}):a("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(a){(function(a){a=a.seriesType;a("streamgraph","areaspline",{fillOpacity:1,lineWidth:0,marker:{enabled:!1},stacking:"stream"},{negStacks:!1,streamStacker:function(a,b,c){a[0]-=b.total/2;a[1]-=b.total/2;this.stackedYData[c]=a}})})(a)});
10
+ //# sourceMappingURL=streamgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamgraph.js.map","lineCount":9,"mappings":"A;;;;;;;;AASC,SAAS,CAACA,CAAD,CAAU,CACM,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,EACIF,CAAA,CAAQ,SAAR,CACA,CADqBA,CACrB,CAAAC,MAAAC,QAAA,CAAiBF,CAFrB,EAG6B,UAAtB,GAAI,MAAOG,OAAX,EAAoCA,MAAAC,IAApC,CACHD,MAAA,CAAO,QAAS,EAAG,CACf,MAAOH,EADQ,CAAnB,CADG,CAKHA,CAAA,CAA8B,WAAtB,GAAA,MAAOK,WAAP,CAAoCA,UAApC,CAAiDC,IAAAA,EAAzD,CATY,CAAnB,CAAA,CAWC,QAAS,CAACD,CAAD,CAAa,CACnB,SAAS,CAACE,CAAD,CAAI,CAWNC,CAAAA,CAAaD,CAAAC,WASjBA,EAAA,CAAW,aAAX,CAA0B,YAA1B,CAcM,CACEC,YAAa,CADf,CAEEC,UAAW,CAFb,CAGEC,OAAQ,CACJC,QAAS,CAAA,CADL,CAHV,CAMEC,SAAU,QANZ,CAdN,CAsBO,CACCC,UAAW,CAAA,CADZ,CAKCC,cAAeA,QAAS,CAACC,CAAD,CAAgBC,CAAhB,CAAuBC,CAAvB,CAA0B,CAE9CF,CAAA,CAAc,CAAd,CAAA,EAAoBC,CAAAE,MAApB,CAAkC,CAElCH,EAAA,CAAc,CAAd,CAAA,EAAoBC,CAAAE,MAApB,CAAkC,CAGlC,KAAAC,aAAA,CAAkBF,CAAlB,CAAA,CAAuBF,CAPuB,CALnD,CAtBP,CApBU,CAAb,CAAA,CAmICX,CAnID,CADmB,CAXvB;","sources":["streamgraph.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","H","seriesType","fillOpacity","lineWidth","marker","enabled","stacking","negStacks","streamStacker","pointExtremes","stack","i","total","stackedYData"]}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * Streamgraph module
4
+ *
5
+ * (c) 2010-2019 Torstein Honsi
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
+ * Streamgraph module
25
+ *
26
+ * (c) 2010-2019 Torstein Honsi
27
+ *
28
+ * License: www.highcharts.com/license
29
+ */
30
+
31
+
32
+
33
+ var seriesType = H.seriesType;
34
+
35
+ /**
36
+ * @private
37
+ * @class
38
+ * @name Highcharts.seriesTypes.streamgraph
39
+ *
40
+ * @augments Highcharts.Series
41
+ */
42
+ seriesType('streamgraph', 'areaspline'
43
+
44
+ /**
45
+ * A streamgraph is a type of stacked area graph which is displaced around a
46
+ * central axis, resulting in a flowing, organic shape.
47
+ *
48
+ * @sample {highcharts|highstock} highcharts/demo/streamgraph/
49
+ * Streamgraph
50
+ *
51
+ * @extends plotOptions.areaspline
52
+ * @since 6.0.0
53
+ * @product highcharts highstock
54
+ * @optionparent plotOptions.streamgraph
55
+ */
56
+ , {
57
+ fillOpacity: 1,
58
+ lineWidth: 0,
59
+ marker: {
60
+ enabled: false
61
+ },
62
+ stacking: 'stream'
63
+ // Prototype functions
64
+ }, {
65
+ negStacks: false,
66
+
67
+ // Modifier function for stream stacks. It simply moves the point up or
68
+ // down in order to center the full stack vertically.
69
+ streamStacker: function (pointExtremes, stack, i) {
70
+ // Y bottom value
71
+ pointExtremes[0] -= stack.total / 2;
72
+ // Y value
73
+ pointExtremes[1] -= stack.total / 2;
74
+
75
+ // Record the Y data for use when getting axis extremes
76
+ this.stackedYData[i] = pointExtremes;
77
+ }
78
+ });
79
+
80
+
81
+ /**
82
+ * A `streamgraph` series. If the [type](#series.streamgraph.type) option is not
83
+ * specified, it is inherited from [chart.type](#chart.type).
84
+ *
85
+ * @extends series,plotOptions.streamgraph
86
+ * @excluding dataParser, dataURL
87
+ * @product highcharts highstock
88
+ * @apioption series.streamgraph
89
+ */
90
+
91
+ /**
92
+ * An array of data points for the series. For the `streamgraph` series type,
93
+ * points can be given in the following ways:
94
+ *
95
+ * 1. An array of numerical values. In this case, the numerical values
96
+ * will be interpreted as `y` options. The `x` values will be automatically
97
+ * calculated, either starting at 0 and incremented by 1, or from `pointStart`
98
+ * and `pointInterval` given in the series options. If the axis has
99
+ * categories, these will be used. Example:
100
+ *
101
+ * ```js
102
+ * data: [0, 5, 3, 5]
103
+ * ```
104
+ *
105
+ * 2. An array of arrays with 2 values. In this case, the values correspond
106
+ * to `x,y`. If the first value is a string, it is applied as the name
107
+ * of the point, and the `x` value is inferred.
108
+ *
109
+ * ```js
110
+ * data: [
111
+ * [0, 9],
112
+ * [1, 7],
113
+ * [2, 6]
114
+ * ]
115
+ * ```
116
+ *
117
+ * 3. An array of objects with named values. The following snippet shows only a
118
+ * few settings, see the complete options set below. If the total number of data
119
+ * points exceeds the series' [turboThreshold](#series.area.turboThreshold),
120
+ * this option is not available.
121
+ *
122
+ * ```js
123
+ * data: [{
124
+ * x: 1,
125
+ * y: 9,
126
+ * name: "Point2",
127
+ * color: "#00FF00"
128
+ * }, {
129
+ * x: 1,
130
+ * y: 6,
131
+ * name: "Point1",
132
+ * color: "#FF00FF"
133
+ * }]
134
+ * ```
135
+ *
136
+ * @sample {highcharts} highcharts/chart/reflow-true/
137
+ * Numerical values
138
+ * @sample {highcharts} highcharts/series/data-array-of-arrays/
139
+ * Arrays of numeric x and y
140
+ * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
141
+ * Arrays of datetime x and y
142
+ * @sample {highcharts} highcharts/series/data-array-of-name-value/
143
+ * Arrays of point.name and y
144
+ * @sample {highcharts} highcharts/series/data-array-of-objects/
145
+ * Config objects
146
+ *
147
+ * @type {Array<number|Array<(number|string),number>|*>}
148
+ * @extends series.line.data
149
+ * @product highcharts highstock
150
+ * @apioption series.streamgraph.data
151
+ */
152
+
153
+ }(Highcharts));
154
+ return (function () {
155
+
156
+
157
+ }());
158
+ }));
@@ -0,0 +1,52 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+
4
+ (c) 2016-2019 Highsoft AS
5
+ Authors: Jon Arild Nygard
6
+
7
+ License: www.highcharts.com/license
8
+ */
9
+ (function(z){"object"===typeof module&&module.exports?(z["default"]=z,module.exports=z):"function"===typeof define&&define.amd?define(function(){return z}):z("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(z){var N=function(){return function(b){var r=this,n=r.graphic,f=b.animatableAttribs,p=b.onComplete,D=b.css,C=b.renderer;r.shouldDraw()?(n||(r.graphic=n=C[b.shapeType](b.shapeArgs).add(b.group)),n.css(D).attr(b.attribs).animate(f,b.isNew?!1:void 0,p)):n&&n.animate(f,void 0,function(){r.graphic=
10
+ n=n.destroy();"function"===typeof p&&p()});n&&n.addClass(r.getClassName(),!0)}}(),K=function(b){var r=b.extend,n=b.isArray,f=b.isObject,p=b.isNumber,D=b.merge,C=b.pick;return{getColor:function(m,l){var A=l.index,k=l.mapOptionsToLevel,f=l.parentColor,n=l.parentColorIndex,E=l.series,F=l.colors,r=l.siblings,q=E.points,v=E.chart.options.chart,y,p,e,g;if(m){q=q[m.i];m=k[m.level]||{};if(k=q&&m.colorByPoint)p=q.index%(F?F.length:v.colorCount),y=F&&F[p];if(!E.chart.styledMode){F=q&&q.options.color;v=m&&m.color;
11
+ if(e=f)e=(e=m&&m.colorVariation)&&"brightness"===e.key?b.color(f).brighten(A/r*e.to).get():f;e=C(F,v,y,e,E.color)}g=C(q&&q.options.colorIndex,m&&m.colorIndex,p,n,l.colorIndex)}return{color:e,colorIndex:g}},getLevelOptions:function(b){var l=null,A,k,I,m;if(f(b))for(l={},I=p(b.from)?b.from:1,m=b.levels,k={},A=f(b.defaults)?b.defaults:{},n(m)&&(k=m.reduce(function(b,l){var k,q;f(l)&&p(l.level)&&(q=D({},l),k="boolean"===typeof q.levelIsConstant?q.levelIsConstant:A.levelIsConstant,delete q.levelIsConstant,
12
+ delete q.level,l=l.level+(k?0:I-1),f(b[l])?r(b[l],q):b[l]=q);return b},{})),m=p(b.to)?b.to:1,b=0;b<=m;b++)l[b]=D({},A,f(k[b])?k[b]:{});return l},setTreeValues:function l(b,k){var f=k.before,n=k.idRoot,p=k.mapIdToNode[n],A=k.points[b.i],D=A&&A.options||{},q=0,v=[];r(b,{levelDynamic:b.level-(("boolean"===typeof k.levelIsConstant?k.levelIsConstant:1)?0:p.level),name:C(A&&A.name,""),visible:n===b.id||("boolean"===typeof k.visible?k.visible:!1)});"function"===typeof f&&(b=f(b,k));b.children.forEach(function(f,
13
+ n){var e=r({},k);r(e,{index:n,siblings:b.children.length,visible:b.visible});f=l(f,e);v.push(f);f.visible&&(q+=f.val)});b.visible=0<q||b.visible;f=C(D.value,q);r(b,{children:v,childrenTotal:q,isLeaf:b.visible&&!q,val:f});return b},updateRootId:function(b){var l;f(b)&&(l=f(b.options)?b.options:{},l=C(b.rootNode,l.rootId,""),f(b.userOptions)&&(b.userOptions.rootId=l),b.rootNode=l);return l}}}(z);(function(b,r){var n=b.seriesType,f=b.seriesTypes,p=b.addEvent,D=b.merge,C=b.extend,m=b.error,l=b.defined,
14
+ A=b.noop,k=b.fireEvent,I=r.getColor,z=r.getLevelOptions,E=b.isArray,F=b.isNumber,L=b.isObject,q=b.isString,v=b.pick,y=b.Series,M=b.stableSort,e=b.Color,g=function(a,c,d){d=d||this;b.objectEach(a,function(x,h){c.call(d,x,h,a)})},w=function(a,c,d){d=d||this;a=c.call(d,a);!1!==a&&w(a,c,d)},u=r.updateRootId;n("treemap","scatter",{allowTraversingTree:!1,showInLegend:!1,marker:!1,colorByPoint:!1,dataLabels:{enabled:!0,defer:!1,verticalAlign:"middle",formatter:function(){var a=this&&this.point?this.point:
15
+ {};return q(a.name)?a.name:""},inside:!0},tooltip:{headerFormat:"",pointFormat:"\x3cb\x3e{point.name}\x3c/b\x3e: {point.value}\x3cbr/\x3e"},ignoreHiddenPoint:!0,layoutAlgorithm:"sliceAndDice",layoutStartingDirection:"vertical",alternateStartingDirection:!1,levelIsConstant:!0,drillUpButton:{position:{align:"right",x:-10,y:10}},traverseUpButton:{position:{align:"right",x:-10,y:10}},borderColor:"#e6e6e6",borderWidth:1,opacity:.15,states:{hover:{borderColor:"#999999",brightness:f.heatmap?0:.1,halo:!1,
16
+ opacity:.75,shadow:!1}}},{pointArrayMap:["value"],directTouch:!0,optionalAxis:"colorAxis",getSymbol:A,parallelArrays:["x","y","value","colorValue"],colorKey:"colorValue",trackerGroups:["group","dataLabelsGroup"],getListOfParents:function(a,c){a=E(a)?a:[];var d=E(c)?c:[];c=a.reduce(function(a,c,d){c=v(c.parent,"");void 0===a[c]&&(a[c]=[]);a[c].push(d);return a},{"":[]});g(c,function(a,c,b){""!==c&&-1===d.indexOf(c)&&(a.forEach(function(a){b[""].push(a)}),delete b[c])});return c},getTree:function(){var a=
17
+ this.data.map(function(a){return a.id}),a=this.getListOfParents(this.data,a);this.nodeMap=[];return this.buildNode("",-1,0,a,null)},init:function(a,c){var d=b.colorSeriesMixin;b.colorSeriesMixin&&(this.translateColors=d.translateColors,this.colorAttribs=d.colorAttribs,this.axisTypes=d.axisTypes);p(this,"setOptions",function(a){a=a.userOptions;l(a.allowDrillToNode)&&!l(a.allowTraversingTree)&&(a.allowTraversingTree=a.allowDrillToNode,delete a.allowDrillToNode);l(a.drillUpButton)&&!l(a.traverseUpButton)&&
18
+ (a.traverseUpButton=a.drillUpButton,delete a.drillUpButton)});y.prototype.init.call(this,a,c);this.options.allowTraversingTree&&p(this,"click",this.onClickDrillToNode)},buildNode:function(a,c,d,b,h){var e=this,x=[],t=e.points[c],g=0,w;(b[a]||[]).forEach(function(c){w=e.buildNode(e.points[c].id,c,d+1,b,a);g=Math.max(w.height+1,g);x.push(w)});c={id:a,i:c,children:x,height:g,level:d,parent:h,visible:!1};e.nodeMap[c.id]=c;t&&(t.node=c);return c},setTreeValues:function(a){var c=this,d=c.options,b=c.nodeMap[c.rootNode],
19
+ d="boolean"===typeof d.levelIsConstant?d.levelIsConstant:!0,h=0,e=[],G,t=c.points[a.i];a.children.forEach(function(a){a=c.setTreeValues(a);e.push(a);a.ignore||(h+=a.val)});M(e,function(a,c){return a.sortIndex-c.sortIndex});G=v(t&&t.options.value,h);t&&(t.value=G);C(a,{children:e,childrenTotal:h,ignore:!(v(t&&t.visible,!0)&&0<G),isLeaf:a.visible&&!h,levelDynamic:a.level-(d?0:b.level),name:v(t&&t.name,""),sortIndex:v(t&&t.sortIndex,-G),val:G});return a},calculateChildrenAreas:function(a,c){var d=this,
20
+ b=d.options,h=d.mapOptionsToLevel[a.level+1],e=v(d[h&&h.layoutAlgorithm]&&h.layoutAlgorithm,b.layoutAlgorithm),G=b.alternateStartingDirection,t=[];a=a.children.filter(function(a){return!a.ignore});h&&h.layoutStartingDirection&&(c.direction="vertical"===h.layoutStartingDirection?0:1);t=d[e](c,a);a.forEach(function(a,h){h=t[h];a.values=D(h,{val:a.childrenTotal,direction:G?1-c.direction:c.direction});a.pointValues=D(h,{x:h.x/d.axisRatio,width:h.width/d.axisRatio});a.children.length&&d.calculateChildrenAreas(a,
21
+ a.values)})},setPointValues:function(){var a=this,c=a.xAxis,d=a.yAxis;a.points.forEach(function(b){var h=b.node,e=h.pointValues,x,t,g=0;a.chart.styledMode||(g=(a.pointAttribs(b)["stroke-width"]||0)%2/2);e&&h.visible?(h=Math.round(c.translate(e.x,0,0,0,1))-g,x=Math.round(c.translate(e.x+e.width,0,0,0,1))-g,t=Math.round(d.translate(e.y,0,0,0,1))-g,e=Math.round(d.translate(e.y+e.height,0,0,0,1))-g,b.shapeType="rect",b.shapeArgs={x:Math.min(h,x),y:Math.min(t,e),width:Math.abs(x-h),height:Math.abs(e-t)},
22
+ b.plotX=b.shapeArgs.x+b.shapeArgs.width/2,b.plotY=b.shapeArgs.y+b.shapeArgs.height/2):(delete b.plotX,delete b.plotY)})},setColorRecursive:function(a,c,d,b,h){var e=this,x=e&&e.chart,x=x&&x.options&&x.options.colors,g;if(a){g=I(a,{colors:x,index:b,mapOptionsToLevel:e.mapOptionsToLevel,parentColor:c,parentColorIndex:d,series:e,siblings:h});if(c=e.points[a.i])c.color=g.color,c.colorIndex=g.colorIndex;(a.children||[]).forEach(function(c,d){e.setColorRecursive(c,g.color,g.colorIndex,d,a.children.length)})}},
23
+ algorithmGroup:function(a,c,d,b){this.height=a;this.width=c;this.plot=b;this.startDirection=this.direction=d;this.lH=this.nH=this.lW=this.nW=this.total=0;this.elArr=[];this.lP={total:0,lH:0,nH:0,lW:0,nW:0,nR:0,lR:0,aspectRatio:function(a,c){return Math.max(a/c,c/a)}};this.addElement=function(a){this.lP.total=this.elArr[this.elArr.length-1];this.total+=a;0===this.direction?(this.lW=this.nW,this.lP.lH=this.lP.total/this.lW,this.lP.lR=this.lP.aspectRatio(this.lW,this.lP.lH),this.nW=this.total/this.height,
24
+ this.lP.nH=this.lP.total/this.nW,this.lP.nR=this.lP.aspectRatio(this.nW,this.lP.nH)):(this.lH=this.nH,this.lP.lW=this.lP.total/this.lH,this.lP.lR=this.lP.aspectRatio(this.lP.lW,this.lH),this.nH=this.total/this.width,this.lP.nW=this.lP.total/this.nH,this.lP.nR=this.lP.aspectRatio(this.lP.nW,this.nH));this.elArr.push(a)};this.reset=function(){this.lW=this.nW=0;this.elArr=[];this.total=0}},algorithmCalcPoints:function(a,c,d,e){var h,x,g,t,w=d.lW,l=d.lH,f=d.plot,k,q=0,n=d.elArr.length-1;c?(w=d.nW,l=d.nH):
25
+ k=d.elArr[d.elArr.length-1];d.elArr.forEach(function(a){if(c||q<n)0===d.direction?(h=f.x,x=f.y,g=w,t=a/g):(h=f.x,x=f.y,t=l,g=a/t),e.push({x:h,y:x,width:g,height:b.correctFloat(t)}),0===d.direction?f.y+=t:f.x+=g;q+=1});d.reset();0===d.direction?d.width-=w:d.height-=l;f.y=f.parent.y+(f.parent.height-d.height);f.x=f.parent.x+(f.parent.width-d.width);a&&(d.direction=1-d.direction);c||d.addElement(k)},algorithmLowAspectRatio:function(a,c,d){var b=[],e=this,g,f={x:c.x,y:c.y,parent:c},w=0,l=d.length-1,k=
26
+ new this.algorithmGroup(c.height,c.width,c.direction,f);d.forEach(function(d){g=d.val/c.val*c.height*c.width;k.addElement(g);k.lP.nR>k.lP.lR&&e.algorithmCalcPoints(a,!1,k,b,f);w===l&&e.algorithmCalcPoints(a,!0,k,b,f);w+=1});return b},algorithmFill:function(a,c,d){var b=[],e,g=c.direction,f=c.x,w=c.y,l=c.width,k=c.height,q,n,u,m;d.forEach(function(d){e=d.val/c.val*c.height*c.width;q=f;n=w;0===g?(m=k,u=e/m,l-=u,f+=u):(u=l,m=e/u,k-=m,w+=m);b.push({x:q,y:n,width:u,height:m});a&&(g=1-g)});return b},strip:function(a,
27
+ c){return this.algorithmLowAspectRatio(!1,a,c)},squarified:function(a,c){return this.algorithmLowAspectRatio(!0,a,c)},sliceAndDice:function(a,c){return this.algorithmFill(!0,a,c)},stripes:function(a,c){return this.algorithmFill(!1,a,c)},translate:function(){var a=this,c=a.options,d=u(a),b,e;y.prototype.translate.call(a);e=a.tree=a.getTree();b=a.nodeMap[d];a.renderTraverseUpButton(d);a.mapOptionsToLevel=z({from:b.level+1,levels:c.levels,to:e.height,defaults:{levelIsConstant:a.options.levelIsConstant,
28
+ colorByPoint:c.colorByPoint}});""===d||b&&b.children.length||(a.setRootNode("",!1),d=a.rootNode,b=a.nodeMap[d]);w(a.nodeMap[a.rootNode],function(c){var d=!1,b=c.parent;c.visible=!0;if(b||""===b)d=a.nodeMap[b];return d});w(a.nodeMap[a.rootNode].children,function(a){var c=!1;a.forEach(function(a){a.visible=!0;a.children.length&&(c=(c||[]).concat(a.children))});return c});a.setTreeValues(e);a.axisRatio=a.xAxis.len/a.yAxis.len;a.nodeMap[""].pointValues=d={x:0,y:0,width:100,height:100};a.nodeMap[""].values=
29
+ d=D(d,{width:d.width*a.axisRatio,direction:"vertical"===c.layoutStartingDirection?0:1,val:e.val});a.calculateChildrenAreas(e,d);a.colorAxis?a.translateColors():c.colorByPoint||a.setColorRecursive(a.tree);c.allowTraversingTree&&(c=b.pointValues,a.xAxis.setExtremes(c.x,c.x+c.width,!1),a.yAxis.setExtremes(c.y,c.y+c.height,!1),a.xAxis.setScale(),a.yAxis.setScale());a.setPointValues()},drawDataLabels:function(){var a=this,c=a.mapOptionsToLevel,d,b;a.points.filter(function(a){return a.node.visible}).forEach(function(e){b=
30
+ c[e.node.level];d={style:{}};e.node.isLeaf||(d.enabled=!1);b&&b.dataLabels&&(d=D(d,b.dataLabels),a._hasPointLabels=!0);e.shapeArgs&&(d.style.width=e.shapeArgs.width,e.dataLabel&&e.dataLabel.css({width:e.shapeArgs.width+"px"}));e.dlOptions=D(d,e.options.dataLabels)});y.prototype.drawDataLabels.call(this)},alignDataLabel:function(a,c,d){var e=d.style;!b.defined(e.textOverflow)&&c.text&&c.getBBox().width>c.text.textWidth&&c.css({textOverflow:"ellipsis",width:e.width+="px"});f.column.prototype.alignDataLabel.apply(this,
31
+ arguments);a.dataLabel&&a.dataLabel.attr({zIndex:(a.node.zIndex||0)+1})},pointAttribs:function(a,c){var d=L(this.mapOptionsToLevel)?this.mapOptionsToLevel:{},b=a&&d[a.node.level]||{},d=this.options,h=c&&d.states[c]||{},g=a&&a.getClassName()||"";a={stroke:a&&a.borderColor||b.borderColor||h.borderColor||d.borderColor,"stroke-width":v(a&&a.borderWidth,b.borderWidth,h.borderWidth,d.borderWidth),dashstyle:a&&a.borderDashStyle||b.borderDashStyle||h.borderDashStyle||d.borderDashStyle,fill:a&&a.color||this.color};
32
+ -1!==g.indexOf("highcharts-above-level")?(a.fill="none",a["stroke-width"]=0):-1!==g.indexOf("highcharts-internal-node-interactive")?(c=v(h.opacity,d.opacity),a.fill=e(a.fill).setOpacity(c).get(),a.cursor="pointer"):-1!==g.indexOf("highcharts-internal-node")?a.fill="none":c&&(a.fill=e(a.fill).brighten(h.brightness).get());return a},drawPoints:function(){var a=this,c=a.points.filter(function(a){return a.node.visible});c.forEach(function(c){var d="level-group-"+c.node.levelDynamic;a[d]||(a[d]=a.chart.renderer.g(d).attr({zIndex:1E3-
33
+ c.node.levelDynamic}).add(a.group));c.group=a[d]});f.column.prototype.drawPoints.call(this);this.colorAttribs&&a.chart.styledMode&&this.points.forEach(function(a){a.graphic&&a.graphic.css(this.colorAttribs(a))},this);a.options.allowTraversingTree&&c.forEach(function(c){c.graphic&&(c.drillId=a.options.interactByLeaf?a.drillToByLeaf(c):a.drillToByGroup(c))})},onClickDrillToNode:function(a){var c=(a=a.point)&&a.drillId;q(c)&&(a.setState(""),this.setRootNode(c,!0,{trigger:"click"}))},drillToByGroup:function(a){var c=
34
+ !1;1!==a.node.level-this.nodeMap[this.rootNode].level||a.node.isLeaf||(c=a.id);return c},drillToByLeaf:function(a){var c=!1;if(a.node.parent!==this.rootNode&&a.node.isLeaf)for(a=a.node;!c;)a=this.nodeMap[a.parent],a.parent===this.rootNode&&(c=a.id);return c},drillUp:function(){var a=this.nodeMap[this.rootNode];a&&q(a.parent)&&this.setRootNode(a.parent,!0,{trigger:"traverseUpButton"})},drillToNode:function(a,c){m("WARNING: treemap.drillToNode has been renamed to treemap.setRootNode, and will be removed in the next major version.");
35
+ this.setRootNode(a,c)},setRootNode:function(a,c,d){a=C({newRootId:a,previousRootId:this.rootNode,redraw:v(c,!0),series:this},d);k(this,"setRootNode",a,function(a){var c=a.series;c.idPreviousRoot=a.previousRootId;c.rootNode=a.newRootId;c.isDirty=!0;a.redraw&&c.chart.redraw()})},renderTraverseUpButton:function(a){var c=this,d=c.options.traverseUpButton,b=v(d.text,c.nodeMap[a].name,"\x3c Back"),e;""===a?c.drillUpButton&&(c.drillUpButton=c.drillUpButton.destroy()):this.drillUpButton?(this.drillUpButton.placed=
36
+ !1,this.drillUpButton.attr({text:b}).align()):(e=(a=d.theme)&&a.states,this.drillUpButton=this.chart.renderer.button(b,null,null,function(){c.drillUp()},a,e&&e.hover,e&&e.select).addClass("highcharts-drillup-button").attr({align:d.position.align,zIndex:7}).add().align(d.position,!1,d.relativeTo||"plotBox"))},buildKDTree:A,drawLegendSymbol:b.LegendSymbolMixin.drawRectangle,getExtremes:function(){y.prototype.getExtremes.call(this,this.colorValueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;
37
+ y.prototype.getExtremes.call(this)},getExtremesFromAll:!0,bindAxes:function(){var a={endOnTick:!1,gridLineWidth:0,lineWidth:0,min:0,dataMin:0,minPadding:0,max:100,dataMax:100,maxPadding:0,startOnTick:!1,title:null,tickPositions:[]};y.prototype.bindAxes.call(this);b.extend(this.yAxis.options,a);b.extend(this.xAxis.options,a)},utils:{recursive:w}},{getClassName:function(){var a=b.Point.prototype.getClassName.call(this),c=this.series,d=c.options;this.node.level<=c.nodeMap[c.rootNode].level?a+=" highcharts-above-level":
38
+ this.node.isLeaf||v(d.interactByLeaf,!d.allowTraversingTree)?this.node.isLeaf||(a+=" highcharts-internal-node"):a+=" highcharts-internal-node-interactive";return a},isValid:function(){return this.id||F(this.value)},setState:function(a){b.Point.prototype.setState.call(this,a);this.graphic&&this.graphic.attr({zIndex:"hover"===a?1:0})},setVisible:f.pie.prototype.pointClass.prototype.setVisible})})(z,K);(function(b,r,n){var f=b.CenteredSeriesMixin,p=b.Series,D=b.extend,C=f.getCenter,m=n.getColor,l=n.getLevelOptions,
39
+ A=f.getStartAndEndRadians,k=b.isNumber,z=b.isObject,K=b.isString,E=b.merge,F=180/Math.PI,f=b.seriesType,L=n.setTreeValues,q=n.updateRootId,v=function(b,g){var e=[];if(k(b)&&k(g)&&b<=g)for(;b<=g;b++)e.push(b);return e},y=function(b,g){var e;g=z(g)?g:{};var f=0,a,c,d,l;z(b)&&(e=E({},b),b=k(g.from)?g.from:0,l=k(g.to)?g.to:0,c=v(b,l),b=Object.keys(e).filter(function(a){return-1===c.indexOf(+a)}),a=d=k(g.diffRadius)?g.diffRadius:0,c.forEach(function(c){c=e[c];var b=c.levelSize.unit,g=c.levelSize.value;
40
+ "weight"===b?f+=g:"percentage"===b?(c.levelSize={unit:"pixels",value:g/100*a},d-=c.levelSize.value):"pixels"===b&&(d-=g)}),c.forEach(function(a){var c=e[a];"weight"===c.levelSize.unit&&(c=c.levelSize.value,e[a].levelSize={unit:"pixels",value:c/f*d})}),b.forEach(function(a){e[a].levelSize={value:0,unit:"pixels"}}));return e},M=function(b,g){var e=g.mapIdToNode[b.parent],f=g.series,a=f.chart,c=f.points[b.i],e=m(b,{colors:a&&a.options&&a.options.colors,colorIndex:f.colorIndex,index:g.index,mapOptionsToLevel:g.mapOptionsToLevel,
41
+ parentColor:e&&e.color,parentColorIndex:e&&e.colorIndex,series:g.series,siblings:g.siblings});b.color=e.color;b.colorIndex=e.colorIndex;c&&(c.color=b.color,c.colorIndex=b.colorIndex,b.sliced=b.id!==g.idRoot?c.sliced:!1);return b};f("sunburst","treemap",{center:["50%","50%"],colorByPoint:!1,dataLabels:{allowOverlap:!0,defer:!0,style:{textOverflow:"ellipsis"},rotationMode:"auto"},rootId:void 0,levelIsConstant:!0,levelSize:{value:1,unit:"weight"},slicedOffset:10},{drawDataLabels:b.noop,drawPoints:function(){var b=
42
+ this,g=b.mapOptionsToLevel,f=b.shapeRoot,l=b.group,a=b.hasRendered,c=b.rootNode,d=b.idPreviousRoot,x=b.nodeMap,h=x[d],q=h&&h.shapeArgs,h=b.points,n=b.startAndEndRadians,t=b.chart,m=t&&t.options&&t.options.chart||{},v="boolean"===typeof m.animation?m.animation:!0,r=b.center[3]/2,A=b.chart.renderer,C,y=!1,I=!1;if(m=!!(v&&a&&c!==d&&b.dataLabelsGroup))b.dataLabelsGroup.attr({opacity:0}),C=function(){y=!0;b.dataLabelsGroup&&b.dataLabelsGroup.animate({opacity:1,visibility:"visible"})};h.forEach(function(e){var h,
43
+ w,m=e.node,u=g[m.level];h=e.shapeExisting||{};var p=m.shapeArgs||{},G,y=!(!m.visible||!m.shapeArgs);if(a&&v){var J={};w={end:p.end,start:p.start,innerR:p.innerR,r:p.r,x:p.x,y:p.y};y?!e.graphic&&q&&(J=c===e.id?{start:n.start,end:n.end}:q.end<=p.start?{start:n.end,end:n.end}:{start:n.start,end:n.start},J.innerR=J.r=r):e.graphic&&(d===e.id?w={innerR:r,r:r}:f&&(w=f.end<=h.start?{innerR:r,r:r,start:n.end,end:n.end}:{innerR:r,r:r,start:n.start,end:n.start}));h=J}else w=p,h={};var J=[p.plotX,p.plotY],B;
44
+ e.node.isLeaf||(c===e.id?(B=x[c],B=B.parent):B=e.id);D(e,{shapeExisting:p,tooltipPos:J,drillId:B,name:""+(e.name||e.id||e.index),plotX:p.plotX,plotY:p.plotY,value:m.val,isNull:!y});B=e.options;m=z(p)?p:{};B=z(B)?B.dataLabels:{};var u=z(u)?u.dataLabels:{},u=E({style:{}},u,B),H;B=u.rotationMode;k(u.rotation)||("auto"===B&&(1>e.innerArcLength&&e.outerArcLength>m.radius?H=0:B=1<e.innerArcLength&&e.outerArcLength>1.5*m.radius?"parallel":"perpendicular"),"auto"!==B&&(H=m.end-(m.end-m.start)/2),u.style.width=
45
+ "parallel"===B?Math.min(2.5*m.radius,(e.outerArcLength+e.innerArcLength)/2):m.radius,"perpendicular"===B&&e.series.chart.renderer.fontMetrics(u.style.fontSize).h>e.outerArcLength&&(u.style.width=1),u.style.width=Math.max(u.style.width-2*(u.padding||0),1),H=H*F%180,"parallel"===B&&(H-=90),90<H?H-=180:-90>H&&(H+=180),u.rotation=H);0===u.rotation&&(u.rotation=.001);e.dlOptions=u;!I&&y&&(I=!0,G=C);e.draw({animatableAttribs:w,attribs:D(h,!t.styledMode&&b.pointAttribs(e,e.selected&&"select")),onComplete:G,
46
+ group:l,renderer:A,shapeType:"arc",shapeArgs:p})});m&&I?(b.hasRendered=!1,b.options.dataLabels.defer=!0,p.prototype.drawDataLabels.call(b),b.hasRendered=!0,y&&C()):p.prototype.drawDataLabels.call(b)},pointAttribs:b.seriesTypes.column.prototype.pointAttribs,layoutAlgorithm:function(b,g,f){var e=b.start,a=b.end-e,c=b.val,d=b.x,l=b.y,h=f&&z(f.levelSize)&&k(f.levelSize.value)?f.levelSize.value:0,m=b.r,n=m+h,p=f&&k(f.slicedOffset)?f.slicedOffset:0;return(g||[]).reduce(function(b,g){var f=1/c*g.val*a,k=
47
+ e+f/2,q=d+Math.cos(k)*p,k=l+Math.sin(k)*p;g={x:g.sliced?q:d,y:g.sliced?k:l,innerR:m,r:n,radius:h,start:e,end:e+f};b.push(g);e=g.end;return b},[])},setShapeArgs:function(b,g,f){var e=[],a=f[b.level+1];b=b.children.filter(function(a){return a.visible});e=this.layoutAlgorithm(g,b,a);b.forEach(function(a,b){b=e[b];var c=b.start+(b.end-b.start)/2,d=b.innerR+(b.r-b.innerR)/2,g=b.end-b.start,d=0===b.innerR&&6.28<g?{x:b.x,y:b.y}:{x:b.x+Math.cos(c)*d,y:b.y+Math.sin(c)*d},l=a.val?a.childrenTotal>a.val?a.childrenTotal:
48
+ a.val:a.childrenTotal;this.points[a.i]&&(this.points[a.i].innerArcLength=g*b.innerR,this.points[a.i].outerArcLength=g*b.r);a.shapeArgs=E(b,{plotX:d.x,plotY:d.y+4*Math.abs(Math.cos(c))});a.values=E(b,{val:l});a.children.length&&this.setShapeArgs(a,a.values,f)},this)},translate:function(){var b=this.options,g=this.center=C.call(this),f=this.startAndEndRadians=A(b.startAngle,b.endAngle),m=g[3]/2,a=g[2]/2-m,c=q(this),d=this.nodeMap,k,h=d&&d[c],n,r;this.shapeRoot=h&&h.shapeArgs;p.prototype.translate.call(this);
49
+ r=this.tree=this.getTree();this.renderTraverseUpButton(c);d=this.nodeMap;h=d[c];k=K(h.parent)?h.parent:"";n=d[k];k=l({from:0<h.level?h.level:1,levels:this.options.levels,to:r.height,defaults:{colorByPoint:b.colorByPoint,dataLabels:b.dataLabels,levelIsConstant:b.levelIsConstant,levelSize:b.levelSize,slicedOffset:b.slicedOffset}});k=y(k,{diffRadius:a,from:0<h.level?h.level:1,to:r.height});L(r,{before:M,idRoot:c,levelIsConstant:b.levelIsConstant,mapOptionsToLevel:k,mapIdToNode:d,points:this.points,series:this});
50
+ b=d[""].shapeArgs={end:f.end,r:m,start:f.start,val:h.val,x:g[0],y:g[1]};this.setShapeArgs(n,b,k);this.mapOptionsToLevel=k},animate:function(b){var e=this.chart,f=[e.plotWidth/2,e.plotHeight/2],k=e.plotLeft,a=e.plotTop,e=this.group;b?(b={translateX:f[0]+k,translateY:f[1]+a,scaleX:.001,scaleY:.001,rotation:10,opacity:.01},e.attr(b)):(b={translateX:k,translateY:a,scaleX:1,scaleY:1,rotation:0,opacity:1},e.animate(b,this.options.animation),this.animate=null)},utils:{calculateLevelSizes:y,range:v}},{draw:r,
51
+ shouldDraw:function(){return!this.isNull}})})(z,N,K)});
52
+ //# sourceMappingURL=sunburst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sunburst.js.map","lineCount":51,"mappings":"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","sources":["sunburst.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","draw","params","point","graphic","animatableAttribs","onComplete","css","renderer","shouldDraw","shapeType","shapeArgs","add","group","attr","attribs","animate","isNew","destroy","addClass","getClassName","result","H","extend","isArray","isObject","isNumber","merge","pick","getColor","node","options","index","mapOptionsToLevel","parentColor","parentColorIndex","series","colors","siblings","points","chartOptionsChart","chart","colorByPoint","colorIndexByPoint","color","colorIndex","i","level","getColorByPoint","length","colorCount","styledMode","colorVariation","key","brighten","to","get","getLevelOptions","defaults","converted","from","levels","reduce","obj","item","levelIsConstant","setTreeValues","tree","before","idRoot","nodeRoot","mapIdToNode","optionsPoint","childrenTotal","children","levelDynamic","name","visible","id","forEach","child","newOptions","push","val","value","isLeaf","updateRootId","rootId","rootNode","userOptions","mixinTreeSeries","seriesType","seriesTypes","addEvent","error","defined","noop","fireEvent","isString","Series","stableSort","Color","eachObject","list","func","context","objectEach","call","recursive","next","allowTraversingTree","showInLegend","marker","dataLabels","enabled","defer","verticalAlign","formatter","inside","tooltip","headerFormat","pointFormat","ignoreHiddenPoint","layoutAlgorithm","layoutStartingDirection","alternateStartingDirection","drillUpButton","position","align","x","y","traverseUpButton","borderColor","borderWidth","opacity","states","hover","brightness","heatmap","halo","shadow","pointArrayMap","directTouch","optionalAxis","getSymbol","parallelArrays","colorKey","trackerGroups","getListOfParents","data","existingIds","arr","ids","listOfParents","prev","curr","parent","indexOf","getTree","allIds","map","d","parentList","nodeMap","buildNode","init","colorSeriesMixin","translateColors","colorAttribs","axisTypes","event","allowDrillToNode","prototype","onClickDrillToNode","height","Math","max","ignore","a","b","sortIndex","calculateChildrenAreas","area","algorithm","alternate","childrenValues","filter","n","direction","values","pointValues","axisRatio","width","setPointValues","xAxis","yAxis","x2","y1","crispCorr","pointAttribs","x1","round","translate","y2","min","abs","plotX","plotY","setColorRecursive","colorInfo","algorithmGroup","h","w","p","plot","startDirection","lH","nH","lW","nW","total","elArr","lP","nR","lR","aspectRatio","addElement","this.addElement","el","reset","this.reset","algorithmCalcPoints","directionChange","last","childrenArea","pX","pY","pW","pH","gW","gH","keep","end","correctFloat","algorithmLowAspectRatio","pTot","algorithmFill","strip","squarified","sliceAndDice","stripes","renderTraverseUpButton","setRootNode","concat","len","seriesArea","colorAxis","setExtremes","setScale","drawDataLabels","style","_hasPointLabels","dataLabel","dlOptions","alignDataLabel","labelOptions","textOverflow","text","getBBox","textWidth","column","apply","arguments","zIndex","state","stateOptions","className","borderDashStyle","fill","setOpacity","cursor","drawPoints","groupKey","g","drillId","interactByLeaf","drillToByLeaf","drillToByGroup","setState","trigger","nodeParent","drillUp","drillToNode","redraw","eventArguments","eventArgs","newRootId","previousRootId","defaultFn","args","idPreviousRoot","isDirty","buttonOptions","backText","placed","theme","button","select","relativeTo","buildKDTree","drawLegendSymbol","LegendSymbolMixin","drawRectangle","getExtremes","colorValueData","valueMin","dataMin","valueMax","dataMax","getExtremesFromAll","bindAxes","treeAxis","endOnTick","gridLineWidth","lineWidth","minPadding","maxPadding","startOnTick","title","tickPositions","utils","Point","isValid","setVisible","pie","pointClass","drawPoint","CenteredSeriesMixin","getCenter","getStartAndEndRadians","rad2deg","PI","range","calculateLevelSizes","levelOptions","totalWeight","diffRadius","remainingSize","levelsNotIncluded","Object","keys","k","unit","levelSize","weight","cbSetTreeValuesBefore","sliced","sunburstOptions","center","allowOverlap","rotationMode","slicedOffset","sunburstSeries","shapeRoot","hasRendered","nodePreviousRoot","shapePreviousRoot","radians","startAndEndRadians","optionsChart","animation","innerR","animateLabels","animateLabelsCalled","addedHack","hackDataLabelAnimation","dataLabelsGroup","visibility","shapeExisting","shape","start","r","tooltipPos","isNull","optionsLevel","rotationRad","rotation","innerArcLength","outerArcLength","radius","fontMetrics","fontSize","padding","selected","startAngle","innerRadius","outerRadius","radiansCenter","cos","sin","setShapeArgs","parentValues","angle","twoPi","positions","endAngle","nodeTop","idTop","plotWidth","plotHeight","plotLeft","plotTop","translateX","translateY","scaleX","scaleY","sunburstPoint"]}
@@ -0,0 +1,3174 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ *
4
+ * (c) 2016-2019 Highsoft AS
5
+ * Authors: 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
+ var draw = (function () {
23
+ var isFn = function (x) {
24
+ return typeof x === 'function';
25
+ };
26
+
27
+ /**
28
+ * Handles the drawing of a point.
29
+ *
30
+ * @private
31
+ * @function draw
32
+ *
33
+ * @param {object} params
34
+ * Parameters.
35
+ *
36
+ * @todo
37
+ * - add type checking.
38
+ */
39
+ var draw = function draw(params) {
40
+ var point = this,
41
+ graphic = point.graphic,
42
+ animatableAttribs = params.animatableAttribs,
43
+ onComplete = params.onComplete,
44
+ css = params.css,
45
+ renderer = params.renderer;
46
+
47
+ if (point.shouldDraw()) {
48
+ if (!graphic) {
49
+ point.graphic = graphic =
50
+ renderer[params.shapeType](params.shapeArgs).add(params.group);
51
+ }
52
+ graphic
53
+ .css(css)
54
+ .attr(params.attribs)
55
+ .animate(
56
+ animatableAttribs,
57
+ params.isNew ? false : undefined,
58
+ onComplete
59
+ );
60
+ } else if (graphic) {
61
+ graphic.animate(animatableAttribs, undefined, function () {
62
+ point.graphic = graphic = graphic.destroy();
63
+ if (isFn(onComplete)) {
64
+ onComplete();
65
+ }
66
+ });
67
+ }
68
+ if (graphic) {
69
+ graphic.addClass(point.getClassName(), true);
70
+ }
71
+ };
72
+
73
+
74
+ return draw;
75
+ }());
76
+ var result = (function (H) {
77
+
78
+ var extend = H.extend,
79
+ isArray = H.isArray,
80
+ isBoolean = function (x) {
81
+ return typeof x === 'boolean';
82
+ },
83
+ isFn = function (x) {
84
+ return typeof x === 'function';
85
+ },
86
+ isObject = H.isObject,
87
+ isNumber = H.isNumber,
88
+ merge = H.merge,
89
+ pick = H.pick;
90
+
91
+ // TODO Combine buildTree and buildNode with setTreeValues
92
+ // TODO Remove logic from Treemap and make it utilize this mixin.
93
+ var setTreeValues = function setTreeValues(tree, options) {
94
+ var before = options.before,
95
+ idRoot = options.idRoot,
96
+ mapIdToNode = options.mapIdToNode,
97
+ nodeRoot = mapIdToNode[idRoot],
98
+ levelIsConstant = (
99
+ isBoolean(options.levelIsConstant) ?
100
+ options.levelIsConstant :
101
+ true
102
+ ),
103
+ points = options.points,
104
+ point = points[tree.i],
105
+ optionsPoint = point && point.options || {},
106
+ childrenTotal = 0,
107
+ children = [],
108
+ value;
109
+
110
+ extend(tree, {
111
+ levelDynamic: tree.level - (levelIsConstant ? 0 : nodeRoot.level),
112
+ name: pick(point && point.name, ''),
113
+ visible: (
114
+ idRoot === tree.id ||
115
+ (isBoolean(options.visible) ? options.visible : false)
116
+ )
117
+ });
118
+ if (isFn(before)) {
119
+ tree = before(tree, options);
120
+ }
121
+ // First give the children some values
122
+ tree.children.forEach(function (child, i) {
123
+ var newOptions = extend({}, options);
124
+
125
+ extend(newOptions, {
126
+ index: i,
127
+ siblings: tree.children.length,
128
+ visible: tree.visible
129
+ });
130
+ child = setTreeValues(child, newOptions);
131
+ children.push(child);
132
+ if (child.visible) {
133
+ childrenTotal += child.val;
134
+ }
135
+ });
136
+ tree.visible = childrenTotal > 0 || tree.visible;
137
+ // Set the values
138
+ value = pick(optionsPoint.value, childrenTotal);
139
+ extend(tree, {
140
+ children: children,
141
+ childrenTotal: childrenTotal,
142
+ isLeaf: tree.visible && !childrenTotal,
143
+ val: value
144
+ });
145
+ return tree;
146
+ };
147
+
148
+ var getColor = function getColor(node, options) {
149
+ var index = options.index,
150
+ mapOptionsToLevel = options.mapOptionsToLevel,
151
+ parentColor = options.parentColor,
152
+ parentColorIndex = options.parentColorIndex,
153
+ series = options.series,
154
+ colors = options.colors,
155
+ siblings = options.siblings,
156
+ points = series.points,
157
+ getColorByPoint,
158
+ chartOptionsChart = series.chart.options.chart,
159
+ point,
160
+ level,
161
+ colorByPoint,
162
+ colorIndexByPoint,
163
+ color,
164
+ colorIndex;
165
+
166
+ function variation(color) {
167
+ var colorVariation = level && level.colorVariation;
168
+
169
+ if (colorVariation) {
170
+ if (colorVariation.key === 'brightness') {
171
+ return H.color(color).brighten(
172
+ colorVariation.to * (index / siblings)
173
+ ).get();
174
+ }
175
+ }
176
+
177
+ return color;
178
+ }
179
+
180
+ if (node) {
181
+ point = points[node.i];
182
+ level = mapOptionsToLevel[node.level] || {};
183
+ getColorByPoint = point && level.colorByPoint;
184
+
185
+ if (getColorByPoint) {
186
+ colorIndexByPoint = point.index % (colors ?
187
+ colors.length :
188
+ chartOptionsChart.colorCount
189
+ );
190
+ colorByPoint = colors && colors[colorIndexByPoint];
191
+ }
192
+
193
+ // Select either point color, level color or inherited color.
194
+ if (!series.chart.styledMode) {
195
+ color = pick(
196
+ point && point.options.color,
197
+ level && level.color,
198
+ colorByPoint,
199
+ parentColor && variation(parentColor),
200
+ series.color
201
+ );
202
+ }
203
+
204
+ colorIndex = pick(
205
+ point && point.options.colorIndex,
206
+ level && level.colorIndex,
207
+ colorIndexByPoint,
208
+ parentColorIndex,
209
+ options.colorIndex
210
+ );
211
+ }
212
+ return {
213
+ color: color,
214
+ colorIndex: colorIndex
215
+ };
216
+ };
217
+
218
+ /**
219
+ * Creates a map from level number to its given options.
220
+ *
221
+ * @private
222
+ * @function getLevelOptions
223
+ *
224
+ * @param {object} params
225
+ * Object containing parameters.
226
+ * - `defaults` Object containing default options. The default options
227
+ * are merged with the userOptions to get the final options for a
228
+ * specific level.
229
+ * - `from` The lowest level number.
230
+ * - `levels` User options from series.levels.
231
+ * - `to` The highest level number.
232
+ *
233
+ * @return {Highcharts.Dictionary<object>}
234
+ * Returns a map from level number to its given options.
235
+ */
236
+ var getLevelOptions = function getLevelOptions(params) {
237
+ var result = null,
238
+ defaults,
239
+ converted,
240
+ i,
241
+ from,
242
+ to,
243
+ levels;
244
+
245
+ if (isObject(params)) {
246
+ result = {};
247
+ from = isNumber(params.from) ? params.from : 1;
248
+ levels = params.levels;
249
+ converted = {};
250
+ defaults = isObject(params.defaults) ? params.defaults : {};
251
+ if (isArray(levels)) {
252
+ converted = levels.reduce(function (obj, item) {
253
+ var level,
254
+ levelIsConstant,
255
+ options;
256
+
257
+ if (isObject(item) && isNumber(item.level)) {
258
+ options = merge({}, item);
259
+ levelIsConstant = (
260
+ isBoolean(options.levelIsConstant) ?
261
+ options.levelIsConstant :
262
+ defaults.levelIsConstant
263
+ );
264
+ // Delete redundant properties.
265
+ delete options.levelIsConstant;
266
+ delete options.level;
267
+ // Calculate which level these options apply to.
268
+ level = item.level + (levelIsConstant ? 0 : from - 1);
269
+ if (isObject(obj[level])) {
270
+ extend(obj[level], options);
271
+ } else {
272
+ obj[level] = options;
273
+ }
274
+ }
275
+ return obj;
276
+ }, {});
277
+ }
278
+ to = isNumber(params.to) ? params.to : 1;
279
+ for (i = 0; i <= to; i++) {
280
+ result[i] = merge(
281
+ {},
282
+ defaults,
283
+ isObject(converted[i]) ? converted[i] : {}
284
+ );
285
+ }
286
+ }
287
+ return result;
288
+ };
289
+
290
+ /**
291
+ * Update the rootId property on the series. Also makes sure that it is
292
+ * accessible to exporting.
293
+ *
294
+ * @private
295
+ * @function updateRootId
296
+ *
297
+ * @param {object} series
298
+ * The series to operate on.
299
+ *
300
+ * @return {string}
301
+ * Returns the resulting rootId after update.
302
+ */
303
+ var updateRootId = function (series) {
304
+ var rootId,
305
+ options;
306
+
307
+ if (isObject(series)) {
308
+ // Get the series options.
309
+ options = isObject(series.options) ? series.options : {};
310
+
311
+ // Calculate the rootId.
312
+ rootId = pick(series.rootNode, options.rootId, '');
313
+
314
+ // Set rootId on series.userOptions to pick it up in exporting.
315
+ if (isObject(series.userOptions)) {
316
+ series.userOptions.rootId = rootId;
317
+ }
318
+ // Set rootId on series to pick it up on next update.
319
+ series.rootNode = rootId;
320
+ }
321
+ return rootId;
322
+ };
323
+
324
+ var result = {
325
+ getColor: getColor,
326
+ getLevelOptions: getLevelOptions,
327
+ setTreeValues: setTreeValues,
328
+ updateRootId: updateRootId
329
+ };
330
+
331
+
332
+ return result;
333
+ }(Highcharts));
334
+ (function (H, mixinTreeSeries) {
335
+ /* *
336
+ * (c) 2014-2019 Highsoft AS
337
+ *
338
+ * Authors: Jon Arild Nygard / Oystein Moseng
339
+ *
340
+ * License: www.highcharts.com/license
341
+ */
342
+
343
+
344
+
345
+ var seriesType = H.seriesType,
346
+ seriesTypes = H.seriesTypes,
347
+ addEvent = H.addEvent,
348
+ merge = H.merge,
349
+ extend = H.extend,
350
+ error = H.error,
351
+ defined = H.defined,
352
+ noop = H.noop,
353
+ fireEvent = H.fireEvent,
354
+ getColor = mixinTreeSeries.getColor,
355
+ getLevelOptions = mixinTreeSeries.getLevelOptions,
356
+ isArray = H.isArray,
357
+ isBoolean = function (x) {
358
+ return typeof x === 'boolean';
359
+ },
360
+ isNumber = H.isNumber,
361
+ isObject = H.isObject,
362
+ isString = H.isString,
363
+ pick = H.pick,
364
+ Series = H.Series,
365
+ stableSort = H.stableSort,
366
+ color = H.Color,
367
+ eachObject = function (list, func, context) {
368
+ context = context || this;
369
+ H.objectEach(list, function (val, key) {
370
+ func.call(context, val, key, list);
371
+ });
372
+ },
373
+ // @todo find correct name for this function.
374
+ // @todo Similar to reduce, this function is likely redundant
375
+ recursive = function (item, func, context) {
376
+ var next;
377
+
378
+ context = context || this;
379
+ next = func.call(context, item);
380
+ if (next !== false) {
381
+ recursive(next, func, context);
382
+ }
383
+ },
384
+ updateRootId = mixinTreeSeries.updateRootId;
385
+
386
+ /**
387
+ * @private
388
+ * @class
389
+ * @name Highcharts.seriesTypes.treemap
390
+ *
391
+ * @augments Highcharts.Series
392
+ */
393
+ seriesType(
394
+ 'treemap',
395
+ 'scatter'
396
+
397
+ /**
398
+ * A treemap displays hierarchical data using nested rectangles. The data
399
+ * can be laid out in varying ways depending on options.
400
+ *
401
+ * @sample highcharts/demo/treemap-large-dataset/
402
+ * Treemap
403
+ *
404
+ * @extends plotOptions.scatter
405
+ * @excluding marker, jitter
406
+ * @product highcharts
407
+ * @optionparent plotOptions.treemap
408
+ */
409
+ , {
410
+
411
+ /**
412
+ * When enabled the user can click on a point which is a parent and
413
+ * zoom in on its children. Deprecated and replaced by
414
+ * [allowTraversingTree](#plotOptions.treemap.allowTraversingTree).
415
+ *
416
+ * @sample {highcharts} highcharts/plotoptions/treemap-allowdrilltonode/
417
+ * Enabled
418
+ *
419
+ * @deprecated
420
+ * @type {boolean}
421
+ * @default false
422
+ * @since 4.1.0
423
+ * @product highcharts
424
+ * @apioption plotOptions.treemap.allowDrillToNode
425
+ */
426
+
427
+ /**
428
+ * When enabled the user can click on a point which is a parent and
429
+ * zoom in on its children.
430
+ *
431
+ * @sample {highcharts} highcharts/plotoptions/treemap-allowtraversingtree/
432
+ * Enabled
433
+ *
434
+ * @since 7.0.3
435
+ * @product highcharts
436
+ */
437
+ allowTraversingTree: false,
438
+
439
+ /**
440
+ * When the series contains less points than the crop threshold, all
441
+ * points are drawn, event if the points fall outside the visible plot
442
+ * area at the current zoom. The advantage of drawing all points
443
+ * (including markers and columns), is that animation is performed on
444
+ * updates. On the other hand, when the series contains more points than
445
+ * the crop threshold, the series data is cropped to only contain points
446
+ * that fall within the plot area. The advantage of cropping away
447
+ * invisible points is to increase performance on large series.
448
+ *
449
+ * @type {number}
450
+ * @default 300
451
+ * @since 4.1.0
452
+ * @product highcharts
453
+ * @apioption plotOptions.treemap.cropThreshold
454
+ */
455
+
456
+ /**
457
+ * Fires on a request for change of root node for the tree, before the
458
+ * update is made. An event object is passed to the function, containing
459
+ * additional properties `newRootId`, `previousRootId`, `redraw` and
460
+ * `trigger`.
461
+ *
462
+ * @type {function}
463
+ * @default undefined
464
+ * @sample {highcharts} highcharts/plotoptions/treemap-events-setrootnode/
465
+ * Alert update information on setRootNode event.
466
+ * @since 7.0.3
467
+ * @product highcharts
468
+ * @apioption plotOptions.treemap.events.setRootNode
469
+ */
470
+
471
+ /**
472
+ * This option decides if the user can interact with the parent nodes
473
+ * or just the leaf nodes. When this option is undefined, it will be
474
+ * true by default. However when allowTraversingTree is true, then it
475
+ * will be false by default.
476
+ *
477
+ * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-false/
478
+ * False
479
+ * @sample {highcharts} highcharts/plotoptions/treemap-interactbyleaf-true-and-allowtraversingtree/
480
+ * InteractByLeaf and allowTraversingTree is true
481
+ *
482
+ * @type {boolean}
483
+ * @since 4.1.2
484
+ * @product highcharts
485
+ * @apioption plotOptions.treemap.interactByLeaf
486
+ */
487
+
488
+ /**
489
+ * The sort index of the point inside the treemap level.
490
+ *
491
+ * @sample {highcharts} highcharts/plotoptions/treemap-sortindex/
492
+ * Sort by years
493
+ *
494
+ * @type {number}
495
+ * @since 4.1.10
496
+ * @product highcharts
497
+ * @apioption plotOptions.treemap.sortIndex
498
+ */
499
+
500
+ /**
501
+ * When using automatic point colors pulled from the `options.colors`
502
+ * collection, this option determines whether the chart should receive
503
+ * one color per series or one color per point.
504
+ *
505
+ * @see [series colors](#plotOptions.treemap.colors)
506
+ *
507
+ * @type {boolean}
508
+ * @default false
509
+ * @since 2.0
510
+ * @product highcharts
511
+ * @apioption plotOptions.treemap.colorByPoint
512
+ */
513
+
514
+ /**
515
+ * A series specific or series type specific color set to apply instead
516
+ * of the global [colors](#colors) when
517
+ * [colorByPoint](#plotOptions.treemap.colorByPoint) is true.
518
+ *
519
+ * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}
520
+ * @since 3.0
521
+ * @product highcharts
522
+ * @apioption plotOptions.treemap.colors
523
+ */
524
+
525
+ /**
526
+ * Whether to display this series type or specific series item in the
527
+ * legend.
528
+ */
529
+ showInLegend: false,
530
+
531
+ /**
532
+ * @ignore
533
+ */
534
+ marker: false,
535
+
536
+ colorByPoint: false,
537
+
538
+ /**
539
+ * @extends plotOptions.heatmap.dataLabels
540
+ * @since 4.1.0
541
+ */
542
+ dataLabels: {
543
+ enabled: true,
544
+ defer: false,
545
+ verticalAlign: 'middle',
546
+ formatter: function () {
547
+ var point = this && this.point ? this.point : {},
548
+ name = isString(point.name) ? point.name : '';
549
+
550
+ return name;
551
+ },
552
+ inside: true
553
+ },
554
+
555
+ tooltip: {
556
+ headerFormat: '',
557
+ pointFormat: '<b>{point.name}</b>: {point.value}<br/>'
558
+ },
559
+
560
+ /**
561
+ * Whether to ignore hidden points when the layout algorithm runs.
562
+ * If `false`, hidden points will leave open spaces.
563
+ *
564
+ * @since 5.0.8
565
+ */
566
+ ignoreHiddenPoint: true,
567
+
568
+ /**
569
+ * This option decides which algorithm is used for setting position
570
+ * and dimensions of the points.
571
+ *
572
+ * @see [How to write your own algorithm](https://www.highcharts.com/docs/chart-and-series-types/treemap)
573
+ *
574
+ * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-sliceanddice/
575
+ * SliceAndDice by default
576
+ * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-stripes/
577
+ * Stripes
578
+ * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-squarified/
579
+ * Squarified
580
+ * @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-strip/
581
+ * Strip
582
+ *
583
+ * @since 4.1.0
584
+ * @validvalue ["sliceAndDice", "stripes", "squarified", "strip"]
585
+ */
586
+ layoutAlgorithm: 'sliceAndDice',
587
+
588
+ /**
589
+ * Defines which direction the layout algorithm will start drawing.
590
+ *
591
+ * @since 4.1.0
592
+ * @validvalue ["vertical", "horizontal"]
593
+ */
594
+ layoutStartingDirection: 'vertical',
595
+
596
+ /**
597
+ * Enabling this option will make the treemap alternate the drawing
598
+ * direction between vertical and horizontal. The next levels starting
599
+ * direction will always be the opposite of the previous.
600
+ *
601
+ * @sample {highcharts} highcharts/plotoptions/treemap-alternatestartingdirection-true/
602
+ * Enabled
603
+ *
604
+ * @since 4.1.0
605
+ */
606
+ alternateStartingDirection: false,
607
+
608
+ /**
609
+ * Used together with the levels and allowTraversingTree options. When
610
+ * set to false the first level visible to be level one, which is
611
+ * dynamic when traversing the tree. Otherwise the level will be the
612
+ * same as the tree structure.
613
+ *
614
+ * @since 4.1.0
615
+ */
616
+ levelIsConstant: true,
617
+ /**
618
+ * Options for the button appearing when drilling down in a treemap.
619
+ * Deprecated and replaced by [traverseUpButton](#plotOptions.treemap.traverseUpButton).
620
+ *
621
+ * @deprecated
622
+ */
623
+ drillUpButton: {
624
+
625
+ /**
626
+ * The position of the button.
627
+ *
628
+ * @deprecated
629
+ */
630
+ position: {
631
+
632
+ /**
633
+ * Vertical alignment of the button.
634
+ *
635
+ * @deprecated
636
+ * @default top
637
+ * @validvalue ["top", "middle", "bottom"]
638
+ * @product highcharts
639
+ * @apioption plotOptions.treemap.drillUpButton.position.verticalAlign
640
+ */
641
+
642
+ /**
643
+ * Horizontal alignment of the button.
644
+ *
645
+ * @deprecated
646
+ * @validvalue ["left", "center", "right"]
647
+ */
648
+ align: 'right',
649
+
650
+ /**
651
+ * Horizontal offset of the button.
652
+ *
653
+ * @deprecated
654
+ */
655
+ x: -10,
656
+
657
+ /**
658
+ * Vertical offset of the button.
659
+ *
660
+ * @deprecated
661
+ */
662
+ y: 10
663
+ }
664
+ },
665
+
666
+ /**
667
+ * Options for the button appearing when traversing down in a treemap.
668
+ */
669
+ traverseUpButton: {
670
+
671
+ /**
672
+ * The position of the button.
673
+ */
674
+ position: {
675
+
676
+ /**
677
+ * Vertical alignment of the button.
678
+ *
679
+ * @default top
680
+ * @validvalue ["top", "middle", "bottom"]
681
+ * @product highcharts
682
+ * @apioption plotOptions.treemap.traverseUpButton.position.verticalAlign
683
+ */
684
+
685
+ /**
686
+ * Horizontal alignment of the button.
687
+ *
688
+ * @validvalue ["left", "center", "right"]
689
+ */
690
+ align: 'right',
691
+
692
+ /**
693
+ * Horizontal offset of the button.
694
+ */
695
+ x: -10,
696
+
697
+ /**
698
+ * Vertical offset of the button.
699
+ */
700
+ y: 10
701
+ }
702
+ },
703
+
704
+
705
+ /**
706
+ * Set options on specific levels. Takes precedence over series options,
707
+ * but not point options.
708
+ *
709
+ * @sample {highcharts} highcharts/plotoptions/treemap-levels/
710
+ * Styling dataLabels and borders
711
+ * @sample {highcharts} highcharts/demo/treemap-with-levels/
712
+ * Different layoutAlgorithm
713
+ *
714
+ * @type {Array<*>}
715
+ * @since 4.1.0
716
+ * @product highcharts
717
+ * @apioption plotOptions.treemap.levels
718
+ */
719
+
720
+ /**
721
+ * Can set a `borderColor` on all points which lies on the same level.
722
+ *
723
+ * @type {Highcharts.ColorString}
724
+ * @since 4.1.0
725
+ * @product highcharts
726
+ * @apioption plotOptions.treemap.levels.borderColor
727
+ */
728
+
729
+ /**
730
+ * Set the dash style of the border of all the point which lies on the
731
+ * level. See <a href"#plotoptions.scatter.dashstyle">
732
+ * plotOptions.scatter.dashStyle</a> for possible options.
733
+ *
734
+ * @type {string}
735
+ * @since 4.1.0
736
+ * @product highcharts
737
+ * @apioption plotOptions.treemap.levels.borderDashStyle
738
+ */
739
+
740
+ /**
741
+ * Can set the borderWidth on all points which lies on the same level.
742
+ *
743
+ * @type {number}
744
+ * @since 4.1.0
745
+ * @product highcharts
746
+ * @apioption plotOptions.treemap.levels.borderWidth
747
+ */
748
+
749
+ /**
750
+ * Can set a color on all points which lies on the same level.
751
+ *
752
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
753
+ * @since 4.1.0
754
+ * @product highcharts
755
+ * @apioption plotOptions.treemap.levels.color
756
+ */
757
+
758
+ /**
759
+ * A configuration object to define how the color of a child varies from
760
+ * the parent's color. The variation is distributed among the children
761
+ * of node. For example when setting brightness, the brightness change
762
+ * will range from the parent's original brightness on the first child,
763
+ * to the amount set in the `to` setting on the last node. This allows a
764
+ * gradient-like color scheme that sets children out from each other
765
+ * while highlighting the grouping on treemaps and sectors on sunburst
766
+ * charts.
767
+ *
768
+ * @sample highcharts/demo/sunburst/
769
+ * Sunburst with color variation
770
+ *
771
+ * @since 6.0.0
772
+ * @product highcharts
773
+ * @apioption plotOptions.treemap.levels.colorVariation
774
+ */
775
+
776
+ /**
777
+ * The key of a color variation. Currently supports `brightness` only.
778
+ *
779
+ * @type {string}
780
+ * @since 6.0.0
781
+ * @product highcharts
782
+ * @validvalue ["brightness"]
783
+ * @apioption plotOptions.treemap.levels.colorVariation.key
784
+ */
785
+
786
+ /**
787
+ * The ending value of a color variation. The last sibling will receive
788
+ * this value.
789
+ *
790
+ * @type {number}
791
+ * @since 6.0.0
792
+ * @product highcharts
793
+ * @apioption plotOptions.treemap.levels.colorVariation.to
794
+ */
795
+
796
+ /**
797
+ * Can set the options of dataLabels on each point which lies on the
798
+ * level.
799
+ * [plotOptions.treemap.dataLabels](#plotOptions.treemap.dataLabels) for
800
+ * possible values.
801
+ *
802
+ * @type {object}
803
+ * @since 4.1.0
804
+ * @product highcharts
805
+ * @apioption plotOptions.treemap.levels.dataLabels
806
+ */
807
+
808
+ /**
809
+ * Can set the layoutAlgorithm option on a specific level.
810
+ *
811
+ * @type {string}
812
+ * @since 4.1.0
813
+ * @product highcharts
814
+ * @validvalue ["sliceAndDice", "stripes", "squarified", "strip"]
815
+ * @apioption plotOptions.treemap.levels.layoutAlgorithm
816
+ */
817
+
818
+ /**
819
+ * Can set the layoutStartingDirection option on a specific level.
820
+ *
821
+ * @type {string}
822
+ * @since 4.1.0
823
+ * @product highcharts
824
+ * @validvalue ["vertical", "horizontal"]
825
+ * @apioption plotOptions.treemap.levels.layoutStartingDirection
826
+ */
827
+
828
+ /**
829
+ * Decides which level takes effect from the options set in the levels
830
+ * object.
831
+ *
832
+ * @sample {highcharts} highcharts/plotoptions/treemap-levels/
833
+ * Styling of both levels
834
+ *
835
+ * @type {number}
836
+ * @since 4.1.0
837
+ * @product highcharts
838
+ * @apioption plotOptions.treemap.levels.level
839
+ */
840
+
841
+
842
+ // Presentational options
843
+
844
+ /**
845
+ * The color of the border surrounding each tree map item.
846
+ *
847
+ * @type {Highcharts.ColorString}
848
+ */
849
+ borderColor: '#e6e6e6',
850
+
851
+ /**
852
+ * The width of the border surrounding each tree map item.
853
+ */
854
+ borderWidth: 1,
855
+
856
+ /**
857
+ * The opacity of a point in treemap. When a point has children, the
858
+ * visibility of the children is determined by the opacity.
859
+ *
860
+ * @since 4.2.4
861
+ */
862
+ opacity: 0.15,
863
+
864
+ /**
865
+ * A wrapper object for all the series options in specific states.
866
+ *
867
+ * @extends plotOptions.heatmap.states
868
+ */
869
+ states: {
870
+
871
+ /**
872
+ * Options for the hovered series
873
+ *
874
+ * @extends plotOptions.heatmap.states.hover
875
+ * @excluding halo
876
+ */
877
+ hover: {
878
+
879
+ /**
880
+ * The border color for the hovered state.
881
+ */
882
+ borderColor: '#999999',
883
+
884
+ /**
885
+ * Brightness for the hovered point. Defaults to 0 if the
886
+ * heatmap series is loaded first, otherwise 0.1.
887
+ *
888
+ * @type {number}
889
+ * @default undefined
890
+ */
891
+ brightness: seriesTypes.heatmap ? 0 : 0.1,
892
+
893
+ /**
894
+ * @extends plotOptions.heatmap.states.hover.halo
895
+ */
896
+ halo: false,
897
+
898
+ /**
899
+ * The opacity of a point in treemap. When a point has children,
900
+ * the visibility of the children is determined by the opacity.
901
+ *
902
+ * @since 4.2.4
903
+ */
904
+ opacity: 0.75,
905
+
906
+ /**
907
+ * The shadow option for hovered state.
908
+ */
909
+ shadow: false
910
+ }
911
+ }
912
+
913
+
914
+ // Prototype members
915
+ }, {
916
+ pointArrayMap: ['value'],
917
+ directTouch: true,
918
+ optionalAxis: 'colorAxis',
919
+ getSymbol: noop,
920
+ parallelArrays: ['x', 'y', 'value', 'colorValue'],
921
+ colorKey: 'colorValue', // Point color option key
922
+ trackerGroups: ['group', 'dataLabelsGroup'],
923
+ /**
924
+ * Creates an object map from parent id to childrens index.
925
+ *
926
+ * @private
927
+ * @function Highcharts.Series#getListOfParents
928
+ *
929
+ * @param {Highcharts.SeriesTreemapDataOptions} data
930
+ * List of points set in options.
931
+ *
932
+ * @param {Array<string>} existingIds
933
+ * List of all point ids.
934
+ *
935
+ * @return {object}
936
+ * Map from parent id to children index in data.
937
+ */
938
+ getListOfParents: function (data, existingIds) {
939
+ var arr = isArray(data) ? data : [],
940
+ ids = isArray(existingIds) ? existingIds : [],
941
+ listOfParents = arr.reduce(function (prev, curr, i) {
942
+ var parent = pick(curr.parent, '');
943
+
944
+ if (prev[parent] === undefined) {
945
+ prev[parent] = [];
946
+ }
947
+ prev[parent].push(i);
948
+ return prev;
949
+ }, {
950
+ '': [] // Root of tree
951
+ });
952
+
953
+ // If parent does not exist, hoist parent to root of tree.
954
+ eachObject(listOfParents, function (children, parent, list) {
955
+ if ((parent !== '') && (ids.indexOf(parent) === -1)) {
956
+ children.forEach(function (child) {
957
+ list[''].push(child);
958
+ });
959
+ delete list[parent];
960
+ }
961
+ });
962
+ return listOfParents;
963
+ },
964
+ // Creates a tree structured object from the series points
965
+ getTree: function () {
966
+ var series = this,
967
+ allIds = this.data.map(function (d) {
968
+ return d.id;
969
+ }),
970
+ parentList = series.getListOfParents(this.data, allIds);
971
+
972
+ series.nodeMap = [];
973
+ return series.buildNode('', -1, 0, parentList, null);
974
+ },
975
+ init: function (chart, options) {
976
+ var series = this,
977
+ colorSeriesMixin = H.colorSeriesMixin;
978
+
979
+ // If color series logic is loaded, add some properties
980
+ if (H.colorSeriesMixin) {
981
+ this.translateColors = colorSeriesMixin.translateColors;
982
+ this.colorAttribs = colorSeriesMixin.colorAttribs;
983
+ this.axisTypes = colorSeriesMixin.axisTypes;
984
+ }
985
+
986
+ // Handle deprecated options.
987
+ addEvent(series, 'setOptions', function (event) {
988
+ var options = event.userOptions;
989
+
990
+ if (
991
+ defined(options.allowDrillToNode) &&
992
+ !defined(options.allowTraversingTree)
993
+ ) {
994
+ options.allowTraversingTree = options.allowDrillToNode;
995
+ delete options.allowDrillToNode;
996
+ }
997
+
998
+ if (
999
+ defined(options.drillUpButton) &&
1000
+ !defined(options.traverseUpButton)
1001
+ ) {
1002
+ options.traverseUpButton = options.drillUpButton;
1003
+ delete options.drillUpButton;
1004
+ }
1005
+ });
1006
+
1007
+ Series.prototype.init.call(series, chart, options);
1008
+
1009
+ if (series.options.allowTraversingTree) {
1010
+ addEvent(series, 'click', series.onClickDrillToNode);
1011
+ }
1012
+ },
1013
+ buildNode: function (id, i, level, list, parent) {
1014
+ var series = this,
1015
+ children = [],
1016
+ point = series.points[i],
1017
+ height = 0,
1018
+ node,
1019
+ child;
1020
+
1021
+ // Actions
1022
+ ((list[id] || [])).forEach(function (i) {
1023
+ child = series.buildNode(
1024
+ series.points[i].id,
1025
+ i,
1026
+ (level + 1),
1027
+ list,
1028
+ id
1029
+ );
1030
+ height = Math.max(child.height + 1, height);
1031
+ children.push(child);
1032
+ });
1033
+ node = {
1034
+ id: id,
1035
+ i: i,
1036
+ children: children,
1037
+ height: height,
1038
+ level: level,
1039
+ parent: parent,
1040
+ visible: false // @todo move this to better location
1041
+ };
1042
+ series.nodeMap[node.id] = node;
1043
+ if (point) {
1044
+ point.node = node;
1045
+ }
1046
+ return node;
1047
+ },
1048
+ setTreeValues: function (tree) {
1049
+ var series = this,
1050
+ options = series.options,
1051
+ idRoot = series.rootNode,
1052
+ mapIdToNode = series.nodeMap,
1053
+ nodeRoot = mapIdToNode[idRoot],
1054
+ levelIsConstant = (
1055
+ isBoolean(options.levelIsConstant) ?
1056
+ options.levelIsConstant :
1057
+ true
1058
+ ),
1059
+ childrenTotal = 0,
1060
+ children = [],
1061
+ val,
1062
+ point = series.points[tree.i];
1063
+
1064
+ // First give the children some values
1065
+ tree.children.forEach(function (child) {
1066
+ child = series.setTreeValues(child);
1067
+ children.push(child);
1068
+ if (!child.ignore) {
1069
+ childrenTotal += child.val;
1070
+ }
1071
+ });
1072
+ // Sort the children
1073
+ stableSort(children, function (a, b) {
1074
+ return a.sortIndex - b.sortIndex;
1075
+ });
1076
+ // Set the values
1077
+ val = pick(point && point.options.value, childrenTotal);
1078
+ if (point) {
1079
+ point.value = val;
1080
+ }
1081
+ extend(tree, {
1082
+ children: children,
1083
+ childrenTotal: childrenTotal,
1084
+ // Ignore this node if point is not visible
1085
+ ignore: !(pick(point && point.visible, true) && (val > 0)),
1086
+ isLeaf: tree.visible && !childrenTotal,
1087
+ levelDynamic: (
1088
+ tree.level - (levelIsConstant ? 0 : nodeRoot.level)
1089
+ ),
1090
+ name: pick(point && point.name, ''),
1091
+ sortIndex: pick(point && point.sortIndex, -val),
1092
+ val: val
1093
+ });
1094
+ return tree;
1095
+ },
1096
+ /**
1097
+ * Recursive function which calculates the area for all children of a
1098
+ * node.
1099
+ *
1100
+ * @private
1101
+ * @function Highcharts.Series#calculateChildrenAreas
1102
+ *
1103
+ * @param {object} node
1104
+ * The node which is parent to the children.
1105
+ *
1106
+ * @param {object} area
1107
+ * The rectangular area of the parent.
1108
+ */
1109
+ calculateChildrenAreas: function (parent, area) {
1110
+ var series = this,
1111
+ options = series.options,
1112
+ mapOptionsToLevel = series.mapOptionsToLevel,
1113
+ level = mapOptionsToLevel[parent.level + 1],
1114
+ algorithm = pick(
1115
+ (
1116
+ series[level &&
1117
+ level.layoutAlgorithm] &&
1118
+ level.layoutAlgorithm
1119
+ ),
1120
+ options.layoutAlgorithm
1121
+ ),
1122
+ alternate = options.alternateStartingDirection,
1123
+ childrenValues = [],
1124
+ children;
1125
+
1126
+ // Collect all children which should be included
1127
+ children = parent.children.filter(function (n) {
1128
+ return !n.ignore;
1129
+ });
1130
+
1131
+ if (level && level.layoutStartingDirection) {
1132
+ area.direction = level.layoutStartingDirection === 'vertical' ?
1133
+ 0 :
1134
+ 1;
1135
+ }
1136
+ childrenValues = series[algorithm](area, children);
1137
+ children.forEach(function (child, index) {
1138
+ var values = childrenValues[index];
1139
+
1140
+ child.values = merge(values, {
1141
+ val: child.childrenTotal,
1142
+ direction: (alternate ? 1 - area.direction : area.direction)
1143
+ });
1144
+ child.pointValues = merge(values, {
1145
+ x: (values.x / series.axisRatio),
1146
+ width: (values.width / series.axisRatio)
1147
+ });
1148
+ // If node has children, then call method recursively
1149
+ if (child.children.length) {
1150
+ series.calculateChildrenAreas(child, child.values);
1151
+ }
1152
+ });
1153
+ },
1154
+ setPointValues: function () {
1155
+ var series = this,
1156
+ xAxis = series.xAxis,
1157
+ yAxis = series.yAxis;
1158
+
1159
+ series.points.forEach(function (point) {
1160
+ var node = point.node,
1161
+ values = node.pointValues,
1162
+ x1,
1163
+ x2,
1164
+ y1,
1165
+ y2,
1166
+ crispCorr = 0;
1167
+
1168
+ // Get the crisp correction in classic mode. For this to work in
1169
+ // styled mode, we would need to first add the shape (without x,
1170
+ // y, width and height), then read the rendered stroke width
1171
+ // using point.graphic.strokeWidth(), then modify and apply the
1172
+ // shapeArgs. This applies also to column series, but the
1173
+ // downside is performance and code complexity.
1174
+ if (!series.chart.styledMode) {
1175
+ crispCorr = (
1176
+ (series.pointAttribs(point)['stroke-width'] || 0) % 2
1177
+ ) / 2;
1178
+ }
1179
+
1180
+ // Points which is ignored, have no values.
1181
+ if (values && node.visible) {
1182
+ x1 = Math.round(
1183
+ xAxis.translate(values.x, 0, 0, 0, 1)
1184
+ ) - crispCorr;
1185
+ x2 = Math.round(
1186
+ xAxis.translate(values.x + values.width, 0, 0, 0, 1)
1187
+ ) - crispCorr;
1188
+ y1 = Math.round(
1189
+ yAxis.translate(values.y, 0, 0, 0, 1)
1190
+ ) - crispCorr;
1191
+ y2 = Math.round(
1192
+ yAxis.translate(values.y + values.height, 0, 0, 0, 1)
1193
+ ) - crispCorr;
1194
+ // Set point values
1195
+ point.shapeType = 'rect';
1196
+ point.shapeArgs = {
1197
+ x: Math.min(x1, x2),
1198
+ y: Math.min(y1, y2),
1199
+ width: Math.abs(x2 - x1),
1200
+ height: Math.abs(y2 - y1)
1201
+ };
1202
+ point.plotX =
1203
+ point.shapeArgs.x + (point.shapeArgs.width / 2);
1204
+ point.plotY =
1205
+ point.shapeArgs.y + (point.shapeArgs.height / 2);
1206
+ } else {
1207
+ // Reset visibility
1208
+ delete point.plotX;
1209
+ delete point.plotY;
1210
+ }
1211
+ });
1212
+ },
1213
+
1214
+ // Set the node's color recursively, from the parent down.
1215
+ setColorRecursive: function (
1216
+ node,
1217
+ parentColor,
1218
+ colorIndex,
1219
+ index,
1220
+ siblings
1221
+ ) {
1222
+ var series = this,
1223
+ chart = series && series.chart,
1224
+ colors = chart && chart.options && chart.options.colors,
1225
+ colorInfo,
1226
+ point;
1227
+
1228
+ if (node) {
1229
+ colorInfo = getColor(node, {
1230
+ colors: colors,
1231
+ index: index,
1232
+ mapOptionsToLevel: series.mapOptionsToLevel,
1233
+ parentColor: parentColor,
1234
+ parentColorIndex: colorIndex,
1235
+ series: series,
1236
+ siblings: siblings
1237
+ });
1238
+
1239
+ point = series.points[node.i];
1240
+ if (point) {
1241
+ point.color = colorInfo.color;
1242
+ point.colorIndex = colorInfo.colorIndex;
1243
+ }
1244
+
1245
+ // Do it all again with the children
1246
+ (node.children || []).forEach(function (child, i) {
1247
+ series.setColorRecursive(
1248
+ child,
1249
+ colorInfo.color,
1250
+ colorInfo.colorIndex,
1251
+ i,
1252
+ node.children.length
1253
+ );
1254
+ });
1255
+ }
1256
+ },
1257
+ algorithmGroup: function (h, w, d, p) {
1258
+ this.height = h;
1259
+ this.width = w;
1260
+ this.plot = p;
1261
+ this.direction = d;
1262
+ this.startDirection = d;
1263
+ this.total = 0;
1264
+ this.nW = 0;
1265
+ this.lW = 0;
1266
+ this.nH = 0;
1267
+ this.lH = 0;
1268
+ this.elArr = [];
1269
+ this.lP = {
1270
+ total: 0,
1271
+ lH: 0,
1272
+ nH: 0,
1273
+ lW: 0,
1274
+ nW: 0,
1275
+ nR: 0,
1276
+ lR: 0,
1277
+ aspectRatio: function (w, h) {
1278
+ return Math.max((w / h), (h / w));
1279
+ }
1280
+ };
1281
+ this.addElement = function (el) {
1282
+ this.lP.total = this.elArr[this.elArr.length - 1];
1283
+ this.total = this.total + el;
1284
+ if (this.direction === 0) {
1285
+ // Calculate last point old aspect ratio
1286
+ this.lW = this.nW;
1287
+ this.lP.lH = this.lP.total / this.lW;
1288
+ this.lP.lR = this.lP.aspectRatio(this.lW, this.lP.lH);
1289
+ // Calculate last point new aspect ratio
1290
+ this.nW = this.total / this.height;
1291
+ this.lP.nH = this.lP.total / this.nW;
1292
+ this.lP.nR = this.lP.aspectRatio(this.nW, this.lP.nH);
1293
+ } else {
1294
+ // Calculate last point old aspect ratio
1295
+ this.lH = this.nH;
1296
+ this.lP.lW = this.lP.total / this.lH;
1297
+ this.lP.lR = this.lP.aspectRatio(this.lP.lW, this.lH);
1298
+ // Calculate last point new aspect ratio
1299
+ this.nH = this.total / this.width;
1300
+ this.lP.nW = this.lP.total / this.nH;
1301
+ this.lP.nR = this.lP.aspectRatio(this.lP.nW, this.nH);
1302
+ }
1303
+ this.elArr.push(el);
1304
+ };
1305
+ this.reset = function () {
1306
+ this.nW = 0;
1307
+ this.lW = 0;
1308
+ this.elArr = [];
1309
+ this.total = 0;
1310
+ };
1311
+ },
1312
+ algorithmCalcPoints: function (
1313
+ directionChange, last, group, childrenArea
1314
+ ) {
1315
+ var pX,
1316
+ pY,
1317
+ pW,
1318
+ pH,
1319
+ gW = group.lW,
1320
+ gH = group.lH,
1321
+ plot = group.plot,
1322
+ keep,
1323
+ i = 0,
1324
+ end = group.elArr.length - 1;
1325
+
1326
+ if (last) {
1327
+ gW = group.nW;
1328
+ gH = group.nH;
1329
+ } else {
1330
+ keep = group.elArr[group.elArr.length - 1];
1331
+ }
1332
+ group.elArr.forEach(function (p) {
1333
+ if (last || (i < end)) {
1334
+ if (group.direction === 0) {
1335
+ pX = plot.x;
1336
+ pY = plot.y;
1337
+ pW = gW;
1338
+ pH = p / pW;
1339
+ } else {
1340
+ pX = plot.x;
1341
+ pY = plot.y;
1342
+ pH = gH;
1343
+ pW = p / pH;
1344
+ }
1345
+ childrenArea.push({
1346
+ x: pX,
1347
+ y: pY,
1348
+ width: pW,
1349
+ height: H.correctFloat(pH)
1350
+ });
1351
+ if (group.direction === 0) {
1352
+ plot.y = plot.y + pH;
1353
+ } else {
1354
+ plot.x = plot.x + pW;
1355
+ }
1356
+ }
1357
+ i = i + 1;
1358
+ });
1359
+ // Reset variables
1360
+ group.reset();
1361
+ if (group.direction === 0) {
1362
+ group.width = group.width - gW;
1363
+ } else {
1364
+ group.height = group.height - gH;
1365
+ }
1366
+ plot.y = plot.parent.y + (plot.parent.height - group.height);
1367
+ plot.x = plot.parent.x + (plot.parent.width - group.width);
1368
+ if (directionChange) {
1369
+ group.direction = 1 - group.direction;
1370
+ }
1371
+ // If not last, then add uncalculated element
1372
+ if (!last) {
1373
+ group.addElement(keep);
1374
+ }
1375
+ },
1376
+ algorithmLowAspectRatio: function (directionChange, parent, children) {
1377
+ var childrenArea = [],
1378
+ series = this,
1379
+ pTot,
1380
+ plot = {
1381
+ x: parent.x,
1382
+ y: parent.y,
1383
+ parent: parent
1384
+ },
1385
+ direction = parent.direction,
1386
+ i = 0,
1387
+ end = children.length - 1,
1388
+ group = new this.algorithmGroup( // eslint-disable-line new-cap
1389
+ parent.height,
1390
+ parent.width,
1391
+ direction,
1392
+ plot
1393
+ );
1394
+
1395
+ // Loop through and calculate all areas
1396
+ children.forEach(function (child) {
1397
+ pTot =
1398
+ (parent.width * parent.height) * (child.val / parent.val);
1399
+ group.addElement(pTot);
1400
+ if (group.lP.nR > group.lP.lR) {
1401
+ series.algorithmCalcPoints(
1402
+ directionChange,
1403
+ false,
1404
+ group,
1405
+ childrenArea,
1406
+ plot
1407
+ );
1408
+ }
1409
+ // If last child, then calculate all remaining areas
1410
+ if (i === end) {
1411
+ series.algorithmCalcPoints(
1412
+ directionChange,
1413
+ true,
1414
+ group,
1415
+ childrenArea,
1416
+ plot
1417
+ );
1418
+ }
1419
+ i = i + 1;
1420
+ });
1421
+ return childrenArea;
1422
+ },
1423
+ algorithmFill: function (directionChange, parent, children) {
1424
+ var childrenArea = [],
1425
+ pTot,
1426
+ direction = parent.direction,
1427
+ x = parent.x,
1428
+ y = parent.y,
1429
+ width = parent.width,
1430
+ height = parent.height,
1431
+ pX,
1432
+ pY,
1433
+ pW,
1434
+ pH;
1435
+
1436
+ children.forEach(function (child) {
1437
+ pTot =
1438
+ (parent.width * parent.height) * (child.val / parent.val);
1439
+ pX = x;
1440
+ pY = y;
1441
+ if (direction === 0) {
1442
+ pH = height;
1443
+ pW = pTot / pH;
1444
+ width = width - pW;
1445
+ x = x + pW;
1446
+ } else {
1447
+ pW = width;
1448
+ pH = pTot / pW;
1449
+ height = height - pH;
1450
+ y = y + pH;
1451
+ }
1452
+ childrenArea.push({
1453
+ x: pX,
1454
+ y: pY,
1455
+ width: pW,
1456
+ height: pH
1457
+ });
1458
+ if (directionChange) {
1459
+ direction = 1 - direction;
1460
+ }
1461
+ });
1462
+ return childrenArea;
1463
+ },
1464
+ strip: function (parent, children) {
1465
+ return this.algorithmLowAspectRatio(false, parent, children);
1466
+ },
1467
+ squarified: function (parent, children) {
1468
+ return this.algorithmLowAspectRatio(true, parent, children);
1469
+ },
1470
+ sliceAndDice: function (parent, children) {
1471
+ return this.algorithmFill(true, parent, children);
1472
+ },
1473
+ stripes: function (parent, children) {
1474
+ return this.algorithmFill(false, parent, children);
1475
+ },
1476
+ translate: function () {
1477
+ var series = this,
1478
+ options = series.options,
1479
+ // NOTE: updateRootId modifies series.
1480
+ rootId = updateRootId(series),
1481
+ rootNode,
1482
+ pointValues,
1483
+ seriesArea,
1484
+ tree,
1485
+ val;
1486
+
1487
+ // Call prototype function
1488
+ Series.prototype.translate.call(series);
1489
+
1490
+ // @todo Only if series.isDirtyData is true
1491
+ tree = series.tree = series.getTree();
1492
+ rootNode = series.nodeMap[rootId];
1493
+ series.renderTraverseUpButton(rootId);
1494
+ series.mapOptionsToLevel = getLevelOptions({
1495
+ from: rootNode.level + 1,
1496
+ levels: options.levels,
1497
+ to: tree.height,
1498
+ defaults: {
1499
+ levelIsConstant: series.options.levelIsConstant,
1500
+ colorByPoint: options.colorByPoint
1501
+ }
1502
+ });
1503
+ if (
1504
+ rootId !== '' &&
1505
+ (!rootNode || !rootNode.children.length)
1506
+ ) {
1507
+ series.setRootNode('', false);
1508
+ rootId = series.rootNode;
1509
+ rootNode = series.nodeMap[rootId];
1510
+ }
1511
+ // Parents of the root node is by default visible
1512
+ recursive(series.nodeMap[series.rootNode], function (node) {
1513
+ var next = false,
1514
+ p = node.parent;
1515
+
1516
+ node.visible = true;
1517
+ if (p || p === '') {
1518
+ next = series.nodeMap[p];
1519
+ }
1520
+ return next;
1521
+ });
1522
+ // Children of the root node is by default visible
1523
+ recursive(
1524
+ series.nodeMap[series.rootNode].children,
1525
+ function (children) {
1526
+ var next = false;
1527
+
1528
+ children.forEach(function (child) {
1529
+ child.visible = true;
1530
+ if (child.children.length) {
1531
+ next = (next || []).concat(child.children);
1532
+ }
1533
+ });
1534
+ return next;
1535
+ }
1536
+ );
1537
+ series.setTreeValues(tree);
1538
+
1539
+ // Calculate plotting values.
1540
+ series.axisRatio = (series.xAxis.len / series.yAxis.len);
1541
+ series.nodeMap[''].pointValues = pointValues =
1542
+ { x: 0, y: 0, width: 100, height: 100 };
1543
+ series.nodeMap[''].values = seriesArea = merge(pointValues, {
1544
+ width: (pointValues.width * series.axisRatio),
1545
+ direction: (
1546
+ options.layoutStartingDirection === 'vertical' ? 0 : 1
1547
+ ),
1548
+ val: tree.val
1549
+ });
1550
+ series.calculateChildrenAreas(tree, seriesArea);
1551
+
1552
+ // Logic for point colors
1553
+ if (series.colorAxis) {
1554
+ series.translateColors();
1555
+ } else if (!options.colorByPoint) {
1556
+ series.setColorRecursive(series.tree);
1557
+ }
1558
+
1559
+ // Update axis extremes according to the root node.
1560
+ if (options.allowTraversingTree) {
1561
+ val = rootNode.pointValues;
1562
+ series.xAxis.setExtremes(val.x, val.x + val.width, false);
1563
+ series.yAxis.setExtremes(val.y, val.y + val.height, false);
1564
+ series.xAxis.setScale();
1565
+ series.yAxis.setScale();
1566
+ }
1567
+
1568
+ // Assign values to points.
1569
+ series.setPointValues();
1570
+ },
1571
+ /**
1572
+ * Extend drawDataLabels with logic to handle custom options related to
1573
+ * the treemap series:
1574
+ *
1575
+ * - Points which is not a leaf node, has dataLabels disabled by
1576
+ * default.
1577
+ *
1578
+ * - Options set on series.levels is merged in.
1579
+ *
1580
+ * - Width of the dataLabel is set to match the width of the point
1581
+ * shape.
1582
+ *
1583
+ * @private
1584
+ * @function Highcharts.Series#drawDataLabels
1585
+ */
1586
+ drawDataLabels: function () {
1587
+ var series = this,
1588
+ mapOptionsToLevel = series.mapOptionsToLevel,
1589
+ points = series.points.filter(function (n) {
1590
+ return n.node.visible;
1591
+ }),
1592
+ options,
1593
+ level;
1594
+
1595
+ points.forEach(function (point) {
1596
+ level = mapOptionsToLevel[point.node.level];
1597
+ // Set options to new object to avoid problems with scope
1598
+ options = { style: {} };
1599
+
1600
+ // If not a leaf, then label should be disabled as default
1601
+ if (!point.node.isLeaf) {
1602
+ options.enabled = false;
1603
+ }
1604
+
1605
+ // If options for level exists, include them as well
1606
+ if (level && level.dataLabels) {
1607
+ options = merge(options, level.dataLabels);
1608
+ series._hasPointLabels = true;
1609
+ }
1610
+
1611
+ // Set dataLabel width to the width of the point shape.
1612
+ if (point.shapeArgs) {
1613
+ options.style.width = point.shapeArgs.width;
1614
+ if (point.dataLabel) {
1615
+ point.dataLabel.css({
1616
+ width: point.shapeArgs.width + 'px'
1617
+ });
1618
+ }
1619
+ }
1620
+
1621
+ // Merge custom options with point options
1622
+ point.dlOptions = merge(options, point.options.dataLabels);
1623
+ });
1624
+ Series.prototype.drawDataLabels.call(this);
1625
+ },
1626
+
1627
+ // Over the alignment method by setting z index
1628
+ alignDataLabel: function (point, dataLabel, labelOptions) {
1629
+ var style = labelOptions.style;
1630
+
1631
+ // #8160: Prevent the label from exceeding the point's
1632
+ // boundaries in treemaps by applying ellipsis overflow.
1633
+ // The issue was happening when datalabel's text contained a
1634
+ // long sequence of characters without a whitespace.
1635
+ if (
1636
+ !H.defined(style.textOverflow) &&
1637
+ dataLabel.text &&
1638
+ dataLabel.getBBox().width > dataLabel.text.textWidth
1639
+ ) {
1640
+ dataLabel.css({
1641
+ textOverflow: 'ellipsis',
1642
+ // unit (px) is required when useHTML is true
1643
+ width: style.width += 'px'
1644
+ });
1645
+ }
1646
+
1647
+ seriesTypes.column.prototype.alignDataLabel.apply(this, arguments);
1648
+ if (point.dataLabel) {
1649
+ // point.node.zIndex could be undefined (#6956)
1650
+ point.dataLabel.attr({ zIndex: (point.node.zIndex || 0) + 1 });
1651
+ }
1652
+ },
1653
+
1654
+ // Get presentational attributes
1655
+ pointAttribs: function (point, state) {
1656
+ var series = this,
1657
+ mapOptionsToLevel = (
1658
+ isObject(series.mapOptionsToLevel) ?
1659
+ series.mapOptionsToLevel :
1660
+ {}
1661
+ ),
1662
+ level = point && mapOptionsToLevel[point.node.level] || {},
1663
+ options = this.options,
1664
+ attr,
1665
+ stateOptions = (state && options.states[state]) || {},
1666
+ className = (point && point.getClassName()) || '',
1667
+ opacity;
1668
+
1669
+ // Set attributes by precedence. Point trumps level trumps series.
1670
+ // Stroke width uses pick because it can be 0.
1671
+ attr = {
1672
+ 'stroke':
1673
+ (point && point.borderColor) ||
1674
+ level.borderColor ||
1675
+ stateOptions.borderColor ||
1676
+ options.borderColor,
1677
+ 'stroke-width': pick(
1678
+ point && point.borderWidth,
1679
+ level.borderWidth,
1680
+ stateOptions.borderWidth,
1681
+ options.borderWidth
1682
+ ),
1683
+ 'dashstyle':
1684
+ (point && point.borderDashStyle) ||
1685
+ level.borderDashStyle ||
1686
+ stateOptions.borderDashStyle ||
1687
+ options.borderDashStyle,
1688
+ 'fill': (point && point.color) || this.color
1689
+ };
1690
+
1691
+ // Hide levels above the current view
1692
+ if (className.indexOf('highcharts-above-level') !== -1) {
1693
+ attr.fill = 'none';
1694
+ attr['stroke-width'] = 0;
1695
+
1696
+ // Nodes with children that accept interaction
1697
+ } else if (
1698
+ className.indexOf('highcharts-internal-node-interactive') !== -1
1699
+ ) {
1700
+ opacity = pick(stateOptions.opacity, options.opacity);
1701
+ attr.fill = color(attr.fill).setOpacity(opacity).get();
1702
+ attr.cursor = 'pointer';
1703
+ // Hide nodes that have children
1704
+ } else if (className.indexOf('highcharts-internal-node') !== -1) {
1705
+ attr.fill = 'none';
1706
+
1707
+ } else if (state) {
1708
+ // Brighten and hoist the hover nodes
1709
+ attr.fill = color(attr.fill)
1710
+ .brighten(stateOptions.brightness)
1711
+ .get();
1712
+ }
1713
+ return attr;
1714
+ },
1715
+
1716
+ // Extending ColumnSeries drawPoints
1717
+ drawPoints: function () {
1718
+ var series = this,
1719
+ points = series.points.filter(function (n) {
1720
+ return n.node.visible;
1721
+ });
1722
+
1723
+ points.forEach(function (point) {
1724
+ var groupKey = 'level-group-' + point.node.levelDynamic;
1725
+
1726
+ if (!series[groupKey]) {
1727
+ series[groupKey] = series.chart.renderer.g(groupKey)
1728
+ .attr({
1729
+ // @todo Set the zIndex based upon the number of levels,
1730
+ // instead of using 1000
1731
+ zIndex: 1000 - point.node.levelDynamic
1732
+ })
1733
+ .add(series.group);
1734
+ }
1735
+ point.group = series[groupKey];
1736
+
1737
+ });
1738
+ // Call standard drawPoints
1739
+ seriesTypes.column.prototype.drawPoints.call(this);
1740
+
1741
+ // In styled mode apply point.color. Use CSS, otherwise the fill
1742
+ // used in the style sheet will take precedence over the fill
1743
+ // attribute.
1744
+ if (this.colorAttribs && series.chart.styledMode) {
1745
+ // Heatmap is loaded
1746
+ this.points.forEach(function (point) {
1747
+ if (point.graphic) {
1748
+ point.graphic.css(this.colorAttribs(point));
1749
+ }
1750
+ }, this);
1751
+ }
1752
+
1753
+ // If setRootNode is allowed, set a point cursor on clickables & add
1754
+ // drillId to point
1755
+ if (series.options.allowTraversingTree) {
1756
+ points.forEach(function (point) {
1757
+ if (point.graphic) {
1758
+ point.drillId = series.options.interactByLeaf ?
1759
+ series.drillToByLeaf(point) :
1760
+ series.drillToByGroup(point);
1761
+ }
1762
+ });
1763
+ }
1764
+ },
1765
+ // Add drilling on the suitable points
1766
+ onClickDrillToNode: function (event) {
1767
+ var series = this,
1768
+ point = event.point,
1769
+ drillId = point && point.drillId;
1770
+
1771
+ // If a drill id is returned, add click event and cursor.
1772
+ if (isString(drillId)) {
1773
+ point.setState(''); // Remove hover
1774
+ series.setRootNode(drillId, true, { trigger: 'click' });
1775
+ }
1776
+ },
1777
+ /**
1778
+ * Finds the drill id for a parent node. Returns false if point should
1779
+ * not have a click event.
1780
+ *
1781
+ * @private
1782
+ * @function Highcharts.Series#drillToByGroup
1783
+ *
1784
+ * @param {object} point
1785
+ *
1786
+ * @return {boolean|string}
1787
+ * Drill to id or false when point should not have a click
1788
+ * event.
1789
+ */
1790
+ drillToByGroup: function (point) {
1791
+ var series = this,
1792
+ drillId = false;
1793
+
1794
+ if ((point.node.level - series.nodeMap[series.rootNode].level) ===
1795
+ 1 &&
1796
+ !point.node.isLeaf
1797
+ ) {
1798
+ drillId = point.id;
1799
+ }
1800
+ return drillId;
1801
+ },
1802
+ /**
1803
+ * Finds the drill id for a leaf node. Returns false if point should not
1804
+ * have a click event
1805
+ *
1806
+ * @private
1807
+ * @function Highcharts.Series#drillToByLeaf
1808
+ *
1809
+ * @param {object} point
1810
+ *
1811
+ * @return {boolean|string}
1812
+ * Drill to id or false when point should not have a click
1813
+ * event.
1814
+ */
1815
+ drillToByLeaf: function (point) {
1816
+ var series = this,
1817
+ drillId = false,
1818
+ nodeParent;
1819
+
1820
+ if ((point.node.parent !== series.rootNode) &&
1821
+ point.node.isLeaf
1822
+ ) {
1823
+ nodeParent = point.node;
1824
+ while (!drillId) {
1825
+ nodeParent = series.nodeMap[nodeParent.parent];
1826
+ if (nodeParent.parent === series.rootNode) {
1827
+ drillId = nodeParent.id;
1828
+ }
1829
+ }
1830
+ }
1831
+ return drillId;
1832
+ },
1833
+ drillUp: function () {
1834
+ var series = this,
1835
+ node = series.nodeMap[series.rootNode];
1836
+
1837
+ if (node && isString(node.parent)) {
1838
+ series.setRootNode(
1839
+ node.parent,
1840
+ true,
1841
+ { trigger: 'traverseUpButton' }
1842
+ );
1843
+ }
1844
+ },
1845
+ // TODO remove this function at a suitable version.
1846
+ drillToNode: function (id, redraw) {
1847
+ error(
1848
+ 'WARNING: treemap.drillToNode has been renamed to treemap.' +
1849
+ 'setRootNode, and will be removed in the next major version.'
1850
+ );
1851
+ this.setRootNode(id, redraw);
1852
+ },
1853
+ /**
1854
+ * Sets a new root node for the series.
1855
+ *
1856
+ * @private
1857
+ * @function Highcharts.Series#setRootNode
1858
+ *
1859
+ * @param {string} id The id of the new root node.
1860
+ * @param {boolean} [redraw=true] Wether to redraw the chart or not.
1861
+ * @param {object} [eventArguments] Arguments to be accessed in
1862
+ * event handler.
1863
+ * @param {string} [eventArguments.newRootId] Id of the new root.
1864
+ * @param {string} [eventArguments.previousRootId] Id of the previous
1865
+ * root.
1866
+ * @param {boolean} [eventArguments.redraw] Wether to redraw the
1867
+ * chart after.
1868
+ * @param {object} [eventArguments.series] The series to update the root
1869
+ * of.
1870
+ * @param {string} [eventArguments.trigger] The action which
1871
+ * triggered the event. Undefined if the setRootNode is called
1872
+ * directly.
1873
+ */
1874
+ setRootNode: function (id, redraw, eventArguments) {
1875
+ var series = this,
1876
+ eventArgs = extend({
1877
+ newRootId: id,
1878
+ previousRootId: series.rootNode,
1879
+ redraw: pick(redraw, true),
1880
+ series: series
1881
+ }, eventArguments);
1882
+
1883
+ /**
1884
+ * The default functionality of the setRootNode event.
1885
+ *
1886
+ * @private
1887
+ * @param {object} args The event arguments.
1888
+ * @param {string} args.newRootId Id of the new root.
1889
+ * @param {string} args.previousRootId Id of the previous root.
1890
+ * @param {boolean} args.redraw Wether to redraw the chart after.
1891
+ * @param {object} args.series The series to update the root of.
1892
+ * @param {string} [args.trigger=undefined] The action which
1893
+ * triggered the event. Undefined if the setRootNode is called
1894
+ * directly.
1895
+ */
1896
+ var defaultFn = function (args) {
1897
+ var series = args.series;
1898
+
1899
+ // Store previous and new root ids on the series.
1900
+ series.idPreviousRoot = args.previousRootId;
1901
+ series.rootNode = args.newRootId;
1902
+
1903
+ // Redraw the chart
1904
+ series.isDirty = true; // Force redraw
1905
+ if (args.redraw) {
1906
+ series.chart.redraw();
1907
+ }
1908
+ };
1909
+
1910
+ // Fire setRootNode event.
1911
+ fireEvent(series, 'setRootNode', eventArgs, defaultFn);
1912
+ },
1913
+ renderTraverseUpButton: function (rootId) {
1914
+ var series = this,
1915
+ nodeMap = series.nodeMap,
1916
+ node = nodeMap[rootId],
1917
+ name = node.name,
1918
+ buttonOptions = series.options.traverseUpButton,
1919
+ backText = pick(buttonOptions.text, name, '< Back'),
1920
+ attr,
1921
+ states;
1922
+
1923
+ if (rootId === '') {
1924
+ if (series.drillUpButton) {
1925
+ series.drillUpButton = series.drillUpButton.destroy();
1926
+ }
1927
+ } else if (!this.drillUpButton) {
1928
+ attr = buttonOptions.theme;
1929
+ states = attr && attr.states;
1930
+
1931
+ this.drillUpButton = this.chart.renderer.button(
1932
+ backText,
1933
+ null,
1934
+ null,
1935
+ function () {
1936
+ series.drillUp();
1937
+ },
1938
+ attr,
1939
+ states && states.hover,
1940
+ states && states.select
1941
+ )
1942
+ .addClass('highcharts-drillup-button')
1943
+ .attr({
1944
+ align: buttonOptions.position.align,
1945
+ zIndex: 7
1946
+ })
1947
+ .add()
1948
+ .align(
1949
+ buttonOptions.position,
1950
+ false,
1951
+ buttonOptions.relativeTo || 'plotBox'
1952
+ );
1953
+ } else {
1954
+ this.drillUpButton.placed = false;
1955
+ this.drillUpButton.attr({
1956
+ text: backText
1957
+ })
1958
+ .align();
1959
+ }
1960
+ },
1961
+ buildKDTree: noop,
1962
+ drawLegendSymbol: H.LegendSymbolMixin.drawRectangle,
1963
+ getExtremes: function () {
1964
+ // Get the extremes from the value data
1965
+ Series.prototype.getExtremes.call(this, this.colorValueData);
1966
+ this.valueMin = this.dataMin;
1967
+ this.valueMax = this.dataMax;
1968
+
1969
+ // Get the extremes from the y data
1970
+ Series.prototype.getExtremes.call(this);
1971
+ },
1972
+ getExtremesFromAll: true,
1973
+ bindAxes: function () {
1974
+ var treeAxis = {
1975
+ endOnTick: false,
1976
+ gridLineWidth: 0,
1977
+ lineWidth: 0,
1978
+ min: 0,
1979
+ dataMin: 0,
1980
+ minPadding: 0,
1981
+ max: 100,
1982
+ dataMax: 100,
1983
+ maxPadding: 0,
1984
+ startOnTick: false,
1985
+ title: null,
1986
+ tickPositions: []
1987
+ };
1988
+
1989
+ Series.prototype.bindAxes.call(this);
1990
+ H.extend(this.yAxis.options, treeAxis);
1991
+ H.extend(this.xAxis.options, treeAxis);
1992
+ },
1993
+ utils: {
1994
+ recursive: recursive
1995
+ }
1996
+
1997
+ // Point class
1998
+ }, {
1999
+ getClassName: function () {
2000
+ var className = H.Point.prototype.getClassName.call(this),
2001
+ series = this.series,
2002
+ options = series.options;
2003
+
2004
+ // Above the current level
2005
+ if (this.node.level <= series.nodeMap[series.rootNode].level) {
2006
+ className += ' highcharts-above-level';
2007
+
2008
+ } else if (
2009
+ !this.node.isLeaf &&
2010
+ !pick(options.interactByLeaf, !options.allowTraversingTree)
2011
+ ) {
2012
+ className += ' highcharts-internal-node-interactive';
2013
+
2014
+ } else if (!this.node.isLeaf) {
2015
+ className += ' highcharts-internal-node';
2016
+ }
2017
+ return className;
2018
+ },
2019
+
2020
+ /**
2021
+ * A tree point is valid if it has han id too, assume it may be a parent
2022
+ * item.
2023
+ *
2024
+ * @private
2025
+ * @function Highcharts.Point#isValid
2026
+ */
2027
+ isValid: function () {
2028
+ return this.id || isNumber(this.value);
2029
+ },
2030
+ setState: function (state) {
2031
+ H.Point.prototype.setState.call(this, state);
2032
+
2033
+ // Graphic does not exist when point is not visible.
2034
+ if (this.graphic) {
2035
+ this.graphic.attr({
2036
+ zIndex: state === 'hover' ? 1 : 0
2037
+ });
2038
+ }
2039
+ },
2040
+ setVisible: seriesTypes.pie.prototype.pointClass.prototype.setVisible
2041
+ }
2042
+ );
2043
+
2044
+
2045
+ /**
2046
+ * A `treemap` series. If the [type](#series.treemap.type) option is
2047
+ * not specified, it is inherited from [chart.type](#chart.type).
2048
+ *
2049
+ * @extends series,plotOptions.treemap
2050
+ * @excluding dataParser, dataURL, stack
2051
+ * @product highcharts
2052
+ * @apioption series.treemap
2053
+ */
2054
+
2055
+ /**
2056
+ * An array of data points for the series. For the `treemap` series
2057
+ * type, points can be given in the following ways:
2058
+ *
2059
+ * 1. An array of numerical values. In this case, the numerical values
2060
+ * will be interpreted as `value` options. Example:
2061
+ *
2062
+ * ```js
2063
+ * data: [0, 5, 3, 5]
2064
+ * ```
2065
+ *
2066
+ * 2. An array of objects with named values. The following snippet shows only a
2067
+ * few settings, see the complete options set below. If the total number of data
2068
+ * points exceeds the series' [turboThreshold](#series.treemap.turboThreshold),
2069
+ * this option is not available.
2070
+ *
2071
+ * ```js
2072
+ * data: [{
2073
+ * value: 9,
2074
+ * name: "Point2",
2075
+ * color: "#00FF00"
2076
+ * }, {
2077
+ * value: 6,
2078
+ * name: "Point1",
2079
+ * color: "#FF00FF"
2080
+ * }]
2081
+ * ```
2082
+ *
2083
+ * @sample {highcharts} highcharts/chart/reflow-true/
2084
+ * Numerical values
2085
+ * @sample {highcharts} highcharts/series/data-array-of-objects/
2086
+ * Config objects
2087
+ *
2088
+ * @type {Array<number|*>}
2089
+ * @extends series.heatmap.data
2090
+ * @excluding x, y
2091
+ * @product highcharts
2092
+ * @apioption series.treemap.data
2093
+ */
2094
+
2095
+ /**
2096
+ * The value of the point, resulting in a relative area of the point
2097
+ * in the treemap.
2098
+ *
2099
+ * @type {number}
2100
+ * @product highcharts
2101
+ * @apioption series.treemap.data.value
2102
+ */
2103
+
2104
+ /**
2105
+ * Serves a purpose only if a `colorAxis` object is defined in the chart
2106
+ * options. This value will decide which color the point gets from the
2107
+ * scale of the colorAxis.
2108
+ *
2109
+ * @type {number}
2110
+ * @since 4.1.0
2111
+ * @product highcharts
2112
+ * @apioption series.treemap.data.colorValue
2113
+ */
2114
+
2115
+ /**
2116
+ * Only for treemap. Use this option to build a tree structure. The
2117
+ * value should be the id of the point which is the parent. If no points
2118
+ * has a matching id, or this option is undefined, then the parent will
2119
+ * be set to the root.
2120
+ *
2121
+ * @sample {highcharts} highcharts/point/parent/
2122
+ * Point parent
2123
+ * @sample {highcharts} highcharts/demo/treemap-with-levels/
2124
+ * Example where parent id is not matching
2125
+ *
2126
+ * @type {string}
2127
+ * @since 4.1.0
2128
+ * @product highcharts
2129
+ * @apioption series.treemap.data.parent
2130
+ */
2131
+
2132
+ }(Highcharts, result));
2133
+ (function (H, drawPoint, mixinTreeSeries) {
2134
+ /* *
2135
+ *
2136
+ * This module implements sunburst charts in Highcharts.
2137
+ *
2138
+ * (c) 2016-2019 Highsoft AS
2139
+ *
2140
+ * Authors: Jon Arild Nygard
2141
+ *
2142
+ * License: www.highcharts.com/license
2143
+ *
2144
+ * */
2145
+
2146
+
2147
+
2148
+ var CenteredSeriesMixin = H.CenteredSeriesMixin,
2149
+ Series = H.Series,
2150
+ extend = H.extend,
2151
+ getCenter = CenteredSeriesMixin.getCenter,
2152
+ getColor = mixinTreeSeries.getColor,
2153
+ getLevelOptions = mixinTreeSeries.getLevelOptions,
2154
+ getStartAndEndRadians = CenteredSeriesMixin.getStartAndEndRadians,
2155
+ isBoolean = function (x) {
2156
+ return typeof x === 'boolean';
2157
+ },
2158
+ isNumber = H.isNumber,
2159
+ isObject = H.isObject,
2160
+ isString = H.isString,
2161
+ merge = H.merge,
2162
+ noop = H.noop,
2163
+ rad2deg = 180 / Math.PI,
2164
+ seriesType = H.seriesType,
2165
+ seriesTypes = H.seriesTypes,
2166
+ setTreeValues = mixinTreeSeries.setTreeValues,
2167
+ updateRootId = mixinTreeSeries.updateRootId;
2168
+
2169
+ // TODO introduce step, which should default to 1.
2170
+ var range = function range(from, to) {
2171
+ var result = [],
2172
+ i;
2173
+
2174
+ if (isNumber(from) && isNumber(to) && from <= to) {
2175
+ for (i = from; i <= to; i++) {
2176
+ result.push(i);
2177
+ }
2178
+ }
2179
+ return result;
2180
+ };
2181
+
2182
+ /**
2183
+ * @private
2184
+ * @function calculateLevelSizes
2185
+ *
2186
+ * @param {object} levelOptions
2187
+ * Map of level to its options.
2188
+ *
2189
+ * @param {object} params
2190
+ * Object containing number parameters `innerRadius` and `outerRadius`.
2191
+ */
2192
+ var calculateLevelSizes = function calculateLevelSizes(levelOptions, params) {
2193
+ var result,
2194
+ p = isObject(params) ? params : {},
2195
+ totalWeight = 0,
2196
+ diffRadius,
2197
+ levels,
2198
+ levelsNotIncluded,
2199
+ remainingSize,
2200
+ from,
2201
+ to;
2202
+
2203
+ if (isObject(levelOptions)) {
2204
+ result = merge({}, levelOptions); // Copy levelOptions
2205
+ from = isNumber(p.from) ? p.from : 0;
2206
+ to = isNumber(p.to) ? p.to : 0;
2207
+ levels = range(from, to);
2208
+ levelsNotIncluded = Object.keys(result).filter(function (k) {
2209
+ return levels.indexOf(+k) === -1;
2210
+ });
2211
+ diffRadius = remainingSize = isNumber(p.diffRadius) ? p.diffRadius : 0;
2212
+
2213
+ // Convert percentage to pixels.
2214
+ // Calculate the remaining size to divide between "weight" levels.
2215
+ // Calculate total weight to use in convertion from weight to pixels.
2216
+ levels.forEach(function (level) {
2217
+ var options = result[level],
2218
+ unit = options.levelSize.unit,
2219
+ value = options.levelSize.value;
2220
+
2221
+ if (unit === 'weight') {
2222
+ totalWeight += value;
2223
+ } else if (unit === 'percentage') {
2224
+ options.levelSize = {
2225
+ unit: 'pixels',
2226
+ value: (value / 100) * diffRadius
2227
+ };
2228
+ remainingSize -= options.levelSize.value;
2229
+ } else if (unit === 'pixels') {
2230
+ remainingSize -= value;
2231
+ }
2232
+ });
2233
+
2234
+ // Convert weight to pixels.
2235
+ levels.forEach(function (level) {
2236
+ var options = result[level],
2237
+ weight;
2238
+
2239
+ if (options.levelSize.unit === 'weight') {
2240
+ weight = options.levelSize.value;
2241
+ result[level].levelSize = {
2242
+ unit: 'pixels',
2243
+ value: (weight / totalWeight) * remainingSize
2244
+ };
2245
+ }
2246
+ });
2247
+
2248
+ // Set all levels not included in interval [from,to] to have 0 pixels.
2249
+ levelsNotIncluded.forEach(function (level) {
2250
+ result[level].levelSize = {
2251
+ value: 0,
2252
+ unit: 'pixels'
2253
+ };
2254
+ });
2255
+ }
2256
+ return result;
2257
+ };
2258
+
2259
+ /**
2260
+ * Find a set of coordinates given a start coordinates, an angle, and a
2261
+ * distance.
2262
+ *
2263
+ * @private
2264
+ * @function getEndPoint
2265
+ *
2266
+ * @param {number} x
2267
+ * Start coordinate x
2268
+ *
2269
+ * @param {number} y
2270
+ * Start coordinate y
2271
+ *
2272
+ * @param {number} angle
2273
+ * Angle in radians
2274
+ *
2275
+ * @param {number} distance
2276
+ * Distance from start to end coordinates
2277
+ *
2278
+ * @return {Highcharts.SVGAttributes}
2279
+ * Returns the end coordinates, x and y.
2280
+ */
2281
+ var getEndPoint = function getEndPoint(x, y, angle, distance) {
2282
+ return {
2283
+ x: x + (Math.cos(angle) * distance),
2284
+ y: y + (Math.sin(angle) * distance)
2285
+ };
2286
+ };
2287
+
2288
+ var layoutAlgorithm = function layoutAlgorithm(parent, children, options) {
2289
+ var startAngle = parent.start,
2290
+ range = parent.end - startAngle,
2291
+ total = parent.val,
2292
+ x = parent.x,
2293
+ y = parent.y,
2294
+ radius = (
2295
+ (
2296
+ options &&
2297
+ isObject(options.levelSize) &&
2298
+ isNumber(options.levelSize.value)
2299
+ ) ?
2300
+ options.levelSize.value :
2301
+ 0
2302
+ ),
2303
+ innerRadius = parent.r,
2304
+ outerRadius = innerRadius + radius,
2305
+ slicedOffset = options && isNumber(options.slicedOffset) ?
2306
+ options.slicedOffset :
2307
+ 0;
2308
+
2309
+ return (children || []).reduce(function (arr, child) {
2310
+ var percentage = (1 / total) * child.val,
2311
+ radians = percentage * range,
2312
+ radiansCenter = startAngle + (radians / 2),
2313
+ offsetPosition = getEndPoint(x, y, radiansCenter, slicedOffset),
2314
+ values = {
2315
+ x: child.sliced ? offsetPosition.x : x,
2316
+ y: child.sliced ? offsetPosition.y : y,
2317
+ innerR: innerRadius,
2318
+ r: outerRadius,
2319
+ radius: radius,
2320
+ start: startAngle,
2321
+ end: startAngle + radians
2322
+ };
2323
+
2324
+ arr.push(values);
2325
+ startAngle = values.end;
2326
+ return arr;
2327
+ }, []);
2328
+ };
2329
+
2330
+ var getDlOptions = function getDlOptions(params) {
2331
+ // Set options to new object to avoid problems with scope
2332
+ var point = params.point,
2333
+ shape = isObject(params.shapeArgs) ? params.shapeArgs : {},
2334
+ optionsPoint = (
2335
+ isObject(params.optionsPoint) ?
2336
+ params.optionsPoint.dataLabels :
2337
+ {}
2338
+ ),
2339
+ optionsLevel = (
2340
+ isObject(params.level) ?
2341
+ params.level.dataLabels :
2342
+ {}
2343
+ ),
2344
+ options = merge({
2345
+ style: {}
2346
+ }, optionsLevel, optionsPoint),
2347
+ rotationRad,
2348
+ rotation,
2349
+ rotationMode = options.rotationMode;
2350
+
2351
+ if (!isNumber(options.rotation)) {
2352
+ if (rotationMode === 'auto') {
2353
+ if (
2354
+ point.innerArcLength < 1 &&
2355
+ point.outerArcLength > shape.radius
2356
+ ) {
2357
+ rotationRad = 0;
2358
+ } else if (
2359
+ point.innerArcLength > 1 &&
2360
+ point.outerArcLength > 1.5 * shape.radius
2361
+ ) {
2362
+ rotationMode = 'parallel';
2363
+ } else {
2364
+ rotationMode = 'perpendicular';
2365
+ }
2366
+ }
2367
+
2368
+ if (rotationMode !== 'auto') {
2369
+ rotationRad = (shape.end - (shape.end - shape.start) / 2);
2370
+ }
2371
+
2372
+ if (rotationMode === 'parallel') {
2373
+ options.style.width = Math.min(
2374
+ shape.radius * 2.5,
2375
+ (point.outerArcLength + point.innerArcLength) / 2
2376
+ );
2377
+ } else {
2378
+ options.style.width = shape.radius;
2379
+ }
2380
+
2381
+ if (
2382
+ rotationMode === 'perpendicular' &&
2383
+ point.series.chart.renderer.fontMetrics(options.style.fontSize).h >
2384
+ point.outerArcLength
2385
+ ) {
2386
+ options.style.width = 1;
2387
+ }
2388
+
2389
+ // Apply padding (#8515)
2390
+ options.style.width = Math.max(
2391
+ options.style.width - 2 * (options.padding || 0),
2392
+ 1
2393
+ );
2394
+
2395
+ rotation = (rotationRad * rad2deg) % 180;
2396
+ if (rotationMode === 'parallel') {
2397
+ rotation -= 90;
2398
+ }
2399
+
2400
+ // Prevent text from rotating upside down
2401
+ if (rotation > 90) {
2402
+ rotation -= 180;
2403
+ } else if (rotation < -90) {
2404
+ rotation += 180;
2405
+ }
2406
+
2407
+ options.rotation = rotation;
2408
+ }
2409
+ // NOTE: alignDataLabel positions the data label differntly when rotation is
2410
+ // 0. Avoiding this by setting rotation to a small number.
2411
+ if (options.rotation === 0) {
2412
+ options.rotation = 0.001;
2413
+ }
2414
+ return options;
2415
+ };
2416
+
2417
+ var getAnimation = function getAnimation(shape, params) {
2418
+ var point = params.point,
2419
+ radians = params.radians,
2420
+ innerR = params.innerR,
2421
+ idRoot = params.idRoot,
2422
+ idPreviousRoot = params.idPreviousRoot,
2423
+ shapeExisting = params.shapeExisting,
2424
+ shapeRoot = params.shapeRoot,
2425
+ shapePreviousRoot = params.shapePreviousRoot,
2426
+ visible = params.visible,
2427
+ from = {},
2428
+ to = {
2429
+ end: shape.end,
2430
+ start: shape.start,
2431
+ innerR: shape.innerR,
2432
+ r: shape.r,
2433
+ x: shape.x,
2434
+ y: shape.y
2435
+ };
2436
+
2437
+ if (visible) {
2438
+ // Animate points in
2439
+ if (!point.graphic && shapePreviousRoot) {
2440
+ if (idRoot === point.id) {
2441
+ from = {
2442
+ start: radians.start,
2443
+ end: radians.end
2444
+ };
2445
+ } else {
2446
+ from = (shapePreviousRoot.end <= shape.start) ? {
2447
+ start: radians.end,
2448
+ end: radians.end
2449
+ } : {
2450
+ start: radians.start,
2451
+ end: radians.start
2452
+ };
2453
+ }
2454
+ // Animate from center and outwards.
2455
+ from.innerR = from.r = innerR;
2456
+ }
2457
+ } else {
2458
+ // Animate points out
2459
+ if (point.graphic) {
2460
+ if (idPreviousRoot === point.id) {
2461
+ to = {
2462
+ innerR: innerR,
2463
+ r: innerR
2464
+ };
2465
+ } else if (shapeRoot) {
2466
+ to = (shapeRoot.end <= shapeExisting.start) ?
2467
+ {
2468
+ innerR: innerR,
2469
+ r: innerR,
2470
+ start: radians.end,
2471
+ end: radians.end
2472
+ } : {
2473
+ innerR: innerR,
2474
+ r: innerR,
2475
+ start: radians.start,
2476
+ end: radians.start
2477
+ };
2478
+ }
2479
+ }
2480
+ }
2481
+ return {
2482
+ from: from,
2483
+ to: to
2484
+ };
2485
+ };
2486
+
2487
+ var getDrillId = function getDrillId(point, idRoot, mapIdToNode) {
2488
+ var drillId,
2489
+ node = point.node,
2490
+ nodeRoot;
2491
+
2492
+ if (!node.isLeaf) {
2493
+ // When it is the root node, the drillId should be set to parent.
2494
+ if (idRoot === point.id) {
2495
+ nodeRoot = mapIdToNode[idRoot];
2496
+ drillId = nodeRoot.parent;
2497
+ } else {
2498
+ drillId = point.id;
2499
+ }
2500
+ }
2501
+ return drillId;
2502
+ };
2503
+
2504
+ var cbSetTreeValuesBefore = function before(node, options) {
2505
+ var mapIdToNode = options.mapIdToNode,
2506
+ nodeParent = mapIdToNode[node.parent],
2507
+ series = options.series,
2508
+ chart = series.chart,
2509
+ points = series.points,
2510
+ point = points[node.i],
2511
+ colorInfo = getColor(node, {
2512
+ colors: chart && chart.options && chart.options.colors,
2513
+ colorIndex: series.colorIndex,
2514
+ index: options.index,
2515
+ mapOptionsToLevel: options.mapOptionsToLevel,
2516
+ parentColor: nodeParent && nodeParent.color,
2517
+ parentColorIndex: nodeParent && nodeParent.colorIndex,
2518
+ series: options.series,
2519
+ siblings: options.siblings
2520
+ });
2521
+
2522
+ node.color = colorInfo.color;
2523
+ node.colorIndex = colorInfo.colorIndex;
2524
+ if (point) {
2525
+ point.color = node.color;
2526
+ point.colorIndex = node.colorIndex;
2527
+ // Set slicing on node, but avoid slicing the top node.
2528
+ node.sliced = (node.id !== options.idRoot) ? point.sliced : false;
2529
+ }
2530
+ return node;
2531
+ };
2532
+
2533
+ /**
2534
+ * A Sunburst displays hierarchical data, where a level in the hierarchy is
2535
+ * represented by a circle. The center represents the root node of the tree.
2536
+ * The visualization bears a resemblance to both treemap and pie charts.
2537
+ *
2538
+ * @sample highcharts/demo/sunburst
2539
+ * Sunburst chart
2540
+ *
2541
+ * @extends plotOptions.pie
2542
+ * @excluding allAreas, clip, colorAxis, compare, compareBase, dataGrouping,
2543
+ * depth, endAngle, gapSize, gapUnit, ignoreHiddenPoint,
2544
+ * innerSize, joinBy, legendType, linecap, minSize,
2545
+ * navigatorOptions, pointRange
2546
+ * @product highcharts
2547
+ * @optionparent plotOptions.sunburst
2548
+ */
2549
+ var sunburstOptions = {
2550
+
2551
+ /**
2552
+ * Set options on specific levels. Takes precedence over series options,
2553
+ * but not point options.
2554
+ *
2555
+ * @sample highcharts/demo/sunburst
2556
+ * Sunburst chart
2557
+ *
2558
+ * @type {Array<*>}
2559
+ * @apioption plotOptions.sunburst.levels
2560
+ */
2561
+
2562
+ /**
2563
+ * Can set a `borderColor` on all points which lies on the same level.
2564
+ *
2565
+ * @type {Highcharts.ColorString}
2566
+ * @apioption plotOptions.sunburst.levels.borderColor
2567
+ */
2568
+
2569
+ /**
2570
+ * Can set a `borderWidth` on all points which lies on the same level.
2571
+ *
2572
+ * @type {number}
2573
+ * @apioption plotOptions.sunburst.levels.borderWidth
2574
+ */
2575
+
2576
+ /**
2577
+ * Can set a `borderDashStyle` on all points which lies on the same level.
2578
+ *
2579
+ * @type {string}
2580
+ * @apioption plotOptions.sunburst.levels.borderDashStyle
2581
+ */
2582
+
2583
+ /**
2584
+ * Can set a `color` on all points which lies on the same level.
2585
+ *
2586
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
2587
+ * @apioption plotOptions.sunburst.levels.color
2588
+ */
2589
+
2590
+ /**
2591
+ * Can set a `colorVariation` on all points which lies on the same level.
2592
+ *
2593
+ * @apioption plotOptions.sunburst.levels.colorVariation
2594
+ */
2595
+
2596
+ /**
2597
+ * The key of a color variation. Currently supports `brightness` only.
2598
+ *
2599
+ * @type {string}
2600
+ * @apioption plotOptions.sunburst.levels.colorVariation.key
2601
+ */
2602
+
2603
+ /**
2604
+ * The ending value of a color variation. The last sibling will receive this
2605
+ * value.
2606
+ *
2607
+ * @type {number}
2608
+ * @apioption plotOptions.sunburst.levels.colorVariation.to
2609
+ */
2610
+
2611
+ /**
2612
+ * Can set `dataLabels` on all points which lies on the same level.
2613
+ *
2614
+ * @type {object}
2615
+ * @apioption plotOptions.sunburst.levels.dataLabels
2616
+ */
2617
+
2618
+ /**
2619
+ * Can set a `levelSize` on all points which lies on the same level.
2620
+ *
2621
+ * @type {object}
2622
+ * @apioption plotOptions.sunburst.levels.levelSize
2623
+ */
2624
+
2625
+ /**
2626
+ * Can set a `rotation` on all points which lies on the same level.
2627
+ *
2628
+ * @type {number}
2629
+ * @apioption plotOptions.sunburst.levels.rotation
2630
+ */
2631
+
2632
+ /**
2633
+ * Can set a `rotationMode` on all points which lies on the same level.
2634
+ *
2635
+ * @type {string}
2636
+ * @apioption plotOptions.sunburst.levels.rotationMode
2637
+ */
2638
+
2639
+ /**
2640
+ * When enabled the user can click on a point which is a parent and
2641
+ * zoom in on its children. Deprecated and replaced by
2642
+ * [allowTraversingTree](#plotOptions.sunburst.allowTraversingTree).
2643
+ *
2644
+ * @deprecated
2645
+ * @type {boolean}
2646
+ * @default false
2647
+ * @since 6.0.0
2648
+ * @product highcharts
2649
+ * @apioption plotOptions.sunburst.allowDrillToNode
2650
+ */
2651
+
2652
+ /**
2653
+ * When enabled the user can click on a point which is a parent and
2654
+ * zoom in on its children.
2655
+ *
2656
+ * @type {boolean}
2657
+ * @default false
2658
+ * @since 7.0.3
2659
+ * @product highcharts
2660
+ * @apioption plotOptions.sunburst.allowTraversingTree
2661
+ */
2662
+
2663
+ /**
2664
+ * The center of the sunburst chart relative to the plot area. Can be
2665
+ * percentages or pixel values.
2666
+ *
2667
+ * @sample {highcharts} highcharts/plotoptions/pie-center/
2668
+ * Centered at 100, 100
2669
+ *
2670
+ * @type {Array<number|string>}
2671
+ * @default ["50%", "50%"]
2672
+ * @product highcharts
2673
+ */
2674
+ center: ['50%', '50%'],
2675
+ colorByPoint: false,
2676
+ /**
2677
+ * @extends plotOptions.series.dataLabels
2678
+ * @excluding align, allowOverlap, distance, staggerLines, step
2679
+ */
2680
+ dataLabels: {
2681
+ allowOverlap: true,
2682
+ defer: true,
2683
+ style: {
2684
+ textOverflow: 'ellipsis'
2685
+ },
2686
+ /**
2687
+ * Decides how the data label will be rotated relative to the perimeter
2688
+ * of the sunburst. Valid values are `auto`, `parallel` and
2689
+ * `perpendicular`. When `auto`, the best fit will be computed for the
2690
+ * point.
2691
+ *
2692
+ * The `series.rotation` option takes precedence over `rotationMode`.
2693
+ *
2694
+ * @since 6.0.0
2695
+ * @validvalue ["auto", "perpendicular", "parallel"]
2696
+ */
2697
+ rotationMode: 'auto'
2698
+ },
2699
+ /**
2700
+ * Which point to use as a root in the visualization.
2701
+ *
2702
+ * @type {string}
2703
+ */
2704
+ rootId: undefined,
2705
+
2706
+ /**
2707
+ * Used together with the levels and `allowDrillToNode` options. When
2708
+ * set to false the first level visible when drilling is considered
2709
+ * to be level one. Otherwise the level will be the same as the tree
2710
+ * structure.
2711
+ */
2712
+ levelIsConstant: true,
2713
+
2714
+ /**
2715
+ * Determines the width of the ring per level.
2716
+ *
2717
+ * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/
2718
+ * Sunburst with various sizes per level
2719
+ *
2720
+ * @since 6.0.5
2721
+ */
2722
+ levelSize: {
2723
+ /**
2724
+ * The value used for calculating the width of the ring. Its' affect is
2725
+ * determined by `levelSize.unit`.
2726
+ *
2727
+ * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/
2728
+ * Sunburst with various sizes per level
2729
+ */
2730
+ value: 1,
2731
+ /**
2732
+ * How to interpret `levelSize.value`.
2733
+ *
2734
+ * - `percentage` gives a width relative to result of outer radius minus
2735
+ * inner radius.
2736
+ *
2737
+ * - `pixels` gives the ring a fixed width in pixels.
2738
+ *
2739
+ * - `weight` takes the remaining width after percentage and pixels, and
2740
+ * distributes it accross all "weighted" levels. The value relative to
2741
+ * the sum of all weights determines the width.
2742
+ *
2743
+ * @sample {highcharts} highcharts/plotoptions/sunburst-levelsize/
2744
+ * Sunburst with various sizes per level
2745
+ *
2746
+ * @validvalue ["percentage", "pixels", "weight"]
2747
+ */
2748
+ unit: 'weight'
2749
+ },
2750
+
2751
+ /**
2752
+ * Options for the button appearing when traversing down in a treemap.
2753
+ *
2754
+ * @extends plotOptions.treemap.traverseUpButton
2755
+ * @since 6.0.0
2756
+ * @apioption plotOptions.sunburst.traverseUpButton
2757
+ */
2758
+
2759
+ /**
2760
+ * If a point is sliced, moved out from the center, how many pixels
2761
+ * should it be moved?.
2762
+ *
2763
+ * @sample highcharts/plotoptions/sunburst-sliced
2764
+ * Sliced sunburst
2765
+ *
2766
+ * @since 6.0.4
2767
+ */
2768
+ slicedOffset: 10
2769
+ };
2770
+
2771
+ // Properties of the Sunburst series.
2772
+ var sunburstSeries = {
2773
+ drawDataLabels: noop, // drawDataLabels is called in drawPoints
2774
+ drawPoints: function drawPoints() {
2775
+ var series = this,
2776
+ mapOptionsToLevel = series.mapOptionsToLevel,
2777
+ shapeRoot = series.shapeRoot,
2778
+ group = series.group,
2779
+ hasRendered = series.hasRendered,
2780
+ idRoot = series.rootNode,
2781
+ idPreviousRoot = series.idPreviousRoot,
2782
+ nodeMap = series.nodeMap,
2783
+ nodePreviousRoot = nodeMap[idPreviousRoot],
2784
+ shapePreviousRoot = nodePreviousRoot && nodePreviousRoot.shapeArgs,
2785
+ points = series.points,
2786
+ radians = series.startAndEndRadians,
2787
+ chart = series.chart,
2788
+ optionsChart = chart && chart.options && chart.options.chart || {},
2789
+ animation = (
2790
+ isBoolean(optionsChart.animation) ?
2791
+ optionsChart.animation :
2792
+ true
2793
+ ),
2794
+ positions = series.center,
2795
+ center = {
2796
+ x: positions[0],
2797
+ y: positions[1]
2798
+ },
2799
+ innerR = positions[3] / 2,
2800
+ renderer = series.chart.renderer,
2801
+ animateLabels,
2802
+ animateLabelsCalled = false,
2803
+ addedHack = false,
2804
+ hackDataLabelAnimation = !!(
2805
+ animation &&
2806
+ hasRendered &&
2807
+ idRoot !== idPreviousRoot &&
2808
+ series.dataLabelsGroup
2809
+ );
2810
+
2811
+ if (hackDataLabelAnimation) {
2812
+ series.dataLabelsGroup.attr({ opacity: 0 });
2813
+ animateLabels = function () {
2814
+ var s = series;
2815
+
2816
+ animateLabelsCalled = true;
2817
+ if (s.dataLabelsGroup) {
2818
+ s.dataLabelsGroup.animate({
2819
+ opacity: 1,
2820
+ visibility: 'visible'
2821
+ });
2822
+ }
2823
+ };
2824
+ }
2825
+ points.forEach(function (point) {
2826
+ var node = point.node,
2827
+ level = mapOptionsToLevel[node.level],
2828
+ shapeExisting = point.shapeExisting || {},
2829
+ shape = node.shapeArgs || {},
2830
+ animationInfo,
2831
+ onComplete,
2832
+ visible = !!(node.visible && node.shapeArgs);
2833
+
2834
+ if (hasRendered && animation) {
2835
+ animationInfo = getAnimation(shape, {
2836
+ center: center,
2837
+ point: point,
2838
+ radians: radians,
2839
+ innerR: innerR,
2840
+ idRoot: idRoot,
2841
+ idPreviousRoot: idPreviousRoot,
2842
+ shapeExisting: shapeExisting,
2843
+ shapeRoot: shapeRoot,
2844
+ shapePreviousRoot: shapePreviousRoot,
2845
+ visible: visible
2846
+ });
2847
+ } else {
2848
+ // When animation is disabled, attr is called from animation.
2849
+ animationInfo = {
2850
+ to: shape,
2851
+ from: {}
2852
+ };
2853
+ }
2854
+ extend(point, {
2855
+ shapeExisting: shape, // Store for use in animation
2856
+ tooltipPos: [shape.plotX, shape.plotY],
2857
+ drillId: getDrillId(point, idRoot, nodeMap),
2858
+ name: '' + (point.name || point.id || point.index),
2859
+ plotX: shape.plotX, // used for data label position
2860
+ plotY: shape.plotY, // used for data label position
2861
+ value: node.val,
2862
+ isNull: !visible // used for dataLabels & point.draw
2863
+ });
2864
+ point.dlOptions = getDlOptions({
2865
+ point: point,
2866
+ level: level,
2867
+ optionsPoint: point.options,
2868
+ shapeArgs: shape
2869
+ });
2870
+ if (!addedHack && visible) {
2871
+ addedHack = true;
2872
+ onComplete = animateLabels;
2873
+ }
2874
+ point.draw({
2875
+ animatableAttribs: animationInfo.to,
2876
+ attribs: extend(
2877
+ animationInfo.from,
2878
+ !chart.styledMode && series.pointAttribs(
2879
+ point,
2880
+ point.selected && 'select'
2881
+ )
2882
+ ),
2883
+ onComplete: onComplete,
2884
+ group: group,
2885
+ renderer: renderer,
2886
+ shapeType: 'arc',
2887
+ shapeArgs: shape
2888
+ });
2889
+ });
2890
+ // Draw data labels after points
2891
+ // TODO draw labels one by one to avoid addtional looping
2892
+ if (hackDataLabelAnimation && addedHack) {
2893
+ series.hasRendered = false;
2894
+ series.options.dataLabels.defer = true;
2895
+ Series.prototype.drawDataLabels.call(series);
2896
+ series.hasRendered = true;
2897
+ // If animateLabels is called before labels were hidden, then call
2898
+ // it again.
2899
+ if (animateLabelsCalled) {
2900
+ animateLabels();
2901
+ }
2902
+ } else {
2903
+ Series.prototype.drawDataLabels.call(series);
2904
+ }
2905
+ },
2906
+
2907
+ pointAttribs: seriesTypes.column.prototype.pointAttribs,
2908
+
2909
+ // The layout algorithm for the levels
2910
+ layoutAlgorithm: layoutAlgorithm,
2911
+
2912
+ // Set the shape arguments on the nodes. Recursive from root down.
2913
+ setShapeArgs: function (parent, parentValues, mapOptionsToLevel) {
2914
+ var childrenValues = [],
2915
+ level = parent.level + 1,
2916
+ options = mapOptionsToLevel[level],
2917
+ // Collect all children which should be included
2918
+ children = parent.children.filter(function (n) {
2919
+ return n.visible;
2920
+ }),
2921
+ twoPi = 6.28; // Two times Pi.
2922
+
2923
+ childrenValues = this.layoutAlgorithm(parentValues, children, options);
2924
+ children.forEach(function (child, index) {
2925
+ var values = childrenValues[index],
2926
+ angle = values.start + ((values.end - values.start) / 2),
2927
+ radius = values.innerR + ((values.r - values.innerR) / 2),
2928
+ radians = (values.end - values.start),
2929
+ isCircle = (values.innerR === 0 && radians > twoPi),
2930
+ center = (
2931
+ isCircle ?
2932
+ { x: values.x, y: values.y } :
2933
+ getEndPoint(values.x, values.y, angle, radius)
2934
+ ),
2935
+ val = (
2936
+ child.val ?
2937
+ (
2938
+ child.childrenTotal > child.val ?
2939
+ child.childrenTotal :
2940
+ child.val
2941
+ ) :
2942
+ child.childrenTotal
2943
+ );
2944
+
2945
+ // The inner arc length is a convenience for data label filters.
2946
+ if (this.points[child.i]) {
2947
+ this.points[child.i].innerArcLength = radians * values.innerR;
2948
+ this.points[child.i].outerArcLength = radians * values.r;
2949
+ }
2950
+
2951
+ child.shapeArgs = merge(values, {
2952
+ plotX: center.x,
2953
+ plotY: center.y + 4 * Math.abs(Math.cos(angle))
2954
+ });
2955
+ child.values = merge(values, {
2956
+ val: val
2957
+ });
2958
+ // If node has children, then call method recursively
2959
+ if (child.children.length) {
2960
+ this.setShapeArgs(child, child.values, mapOptionsToLevel);
2961
+ }
2962
+ }, this);
2963
+ },
2964
+
2965
+
2966
+ translate: function translate() {
2967
+ var series = this,
2968
+ options = series.options,
2969
+ positions = series.center = getCenter.call(series),
2970
+ radians = series.startAndEndRadians = getStartAndEndRadians(
2971
+ options.startAngle,
2972
+ options.endAngle
2973
+ ),
2974
+ innerRadius = positions[3] / 2,
2975
+ outerRadius = positions[2] / 2,
2976
+ diffRadius = outerRadius - innerRadius,
2977
+ // NOTE: updateRootId modifies series.
2978
+ rootId = updateRootId(series),
2979
+ mapIdToNode = series.nodeMap,
2980
+ mapOptionsToLevel,
2981
+ idTop,
2982
+ nodeRoot = mapIdToNode && mapIdToNode[rootId],
2983
+ nodeTop,
2984
+ tree,
2985
+ values;
2986
+
2987
+ series.shapeRoot = nodeRoot && nodeRoot.shapeArgs;
2988
+ // Call prototype function
2989
+ Series.prototype.translate.call(series);
2990
+ // @todo Only if series.isDirtyData is true
2991
+ tree = series.tree = series.getTree();
2992
+
2993
+ // Render traverseUpButton, after series.nodeMap i calculated.
2994
+ series.renderTraverseUpButton(rootId);
2995
+ mapIdToNode = series.nodeMap;
2996
+ nodeRoot = mapIdToNode[rootId];
2997
+ idTop = isString(nodeRoot.parent) ? nodeRoot.parent : '';
2998
+ nodeTop = mapIdToNode[idTop];
2999
+ mapOptionsToLevel = getLevelOptions({
3000
+ from: nodeRoot.level > 0 ? nodeRoot.level : 1,
3001
+ levels: series.options.levels,
3002
+ to: tree.height,
3003
+ defaults: {
3004
+ colorByPoint: options.colorByPoint,
3005
+ dataLabels: options.dataLabels,
3006
+ levelIsConstant: options.levelIsConstant,
3007
+ levelSize: options.levelSize,
3008
+ slicedOffset: options.slicedOffset
3009
+ }
3010
+ });
3011
+ // NOTE consider doing calculateLevelSizes in a callback to
3012
+ // getLevelOptions
3013
+ mapOptionsToLevel = calculateLevelSizes(mapOptionsToLevel, {
3014
+ diffRadius: diffRadius,
3015
+ from: nodeRoot.level > 0 ? nodeRoot.level : 1,
3016
+ to: tree.height
3017
+ });
3018
+ // TODO Try to combine setTreeValues & setColorRecursive to avoid
3019
+ // unnecessary looping.
3020
+ setTreeValues(tree, {
3021
+ before: cbSetTreeValuesBefore,
3022
+ idRoot: rootId,
3023
+ levelIsConstant: options.levelIsConstant,
3024
+ mapOptionsToLevel: mapOptionsToLevel,
3025
+ mapIdToNode: mapIdToNode,
3026
+ points: series.points,
3027
+ series: series
3028
+ });
3029
+ values = mapIdToNode[''].shapeArgs = {
3030
+ end: radians.end,
3031
+ r: innerRadius,
3032
+ start: radians.start,
3033
+ val: nodeRoot.val,
3034
+ x: positions[0],
3035
+ y: positions[1]
3036
+ };
3037
+ this.setShapeArgs(nodeTop, values, mapOptionsToLevel);
3038
+ // Set mapOptionsToLevel on series for use in drawPoints.
3039
+ series.mapOptionsToLevel = mapOptionsToLevel;
3040
+ },
3041
+
3042
+ // Animate the slices in. Similar to the animation of polar charts.
3043
+ animate: function (init) {
3044
+ var chart = this.chart,
3045
+ center = [
3046
+ chart.plotWidth / 2,
3047
+ chart.plotHeight / 2
3048
+ ],
3049
+ plotLeft = chart.plotLeft,
3050
+ plotTop = chart.plotTop,
3051
+ attribs,
3052
+ group = this.group;
3053
+
3054
+ // Initialize the animation
3055
+ if (init) {
3056
+
3057
+ // Scale down the group and place it in the center
3058
+ attribs = {
3059
+ translateX: center[0] + plotLeft,
3060
+ translateY: center[1] + plotTop,
3061
+ scaleX: 0.001, // #1499
3062
+ scaleY: 0.001,
3063
+ rotation: 10,
3064
+ opacity: 0.01
3065
+ };
3066
+
3067
+ group.attr(attribs);
3068
+
3069
+ // Run the animation
3070
+ } else {
3071
+ attribs = {
3072
+ translateX: plotLeft,
3073
+ translateY: plotTop,
3074
+ scaleX: 1,
3075
+ scaleY: 1,
3076
+ rotation: 0,
3077
+ opacity: 1
3078
+ };
3079
+ group.animate(attribs, this.options.animation);
3080
+
3081
+ // Delete this function to allow it only once
3082
+ this.animate = null;
3083
+ }
3084
+ },
3085
+ utils: {
3086
+ calculateLevelSizes: calculateLevelSizes,
3087
+ range: range
3088
+ }
3089
+ };
3090
+
3091
+ // Properties of the Sunburst series.
3092
+ var sunburstPoint = {
3093
+ draw: drawPoint,
3094
+ shouldDraw: function shouldDraw() {
3095
+ var point = this;
3096
+
3097
+ return !point.isNull;
3098
+ }
3099
+ };
3100
+
3101
+ /**
3102
+ * A `sunburst` series. If the [type](#series.sunburst.type) option is
3103
+ * not specified, it is inherited from [chart.type](#chart.type).
3104
+ *
3105
+ * @extends series,plotOptions.sunburst
3106
+ * @excluding dataParser, dataURL, stack
3107
+ * @product highcharts
3108
+ * @apioption series.sunburst
3109
+ */
3110
+
3111
+ /**
3112
+ * @type {Array<number|*>}
3113
+ * @extends series.treemap.data
3114
+ * @excluding x, y
3115
+ * @product highcharts
3116
+ * @apioption series.sunburst.data
3117
+ */
3118
+
3119
+ /**
3120
+ * The value of the point, resulting in a relative area of the point
3121
+ * in the sunburst.
3122
+ *
3123
+ * @type {number}
3124
+ * @since 6.0.0
3125
+ * @product highcharts
3126
+ * @apioption series.sunburst.data.value
3127
+ */
3128
+
3129
+ /**
3130
+ * Use this option to build a tree structure. The value should be the id of the
3131
+ * point which is the parent. If no points has a matching id, or this option is
3132
+ * undefined, then the parent will be set to the root.
3133
+ *
3134
+ * @type {string}
3135
+ * @since 6.0.0
3136
+ * @product highcharts
3137
+ * @apioption series.treemap.data.parent
3138
+ */
3139
+
3140
+ /**
3141
+ * Whether to display a slice offset from the center. When a sunburst point is
3142
+ * sliced, its children are also offset.
3143
+ *
3144
+ * @sample highcharts/plotoptions/sunburst-sliced
3145
+ * Sliced sunburst
3146
+ *
3147
+ * @type {boolean}
3148
+ * @default false
3149
+ * @since 6.0.4
3150
+ * @product highcharts
3151
+ * @apioption series.sunburst.data.sliced
3152
+ */
3153
+
3154
+ /**
3155
+ * @private
3156
+ * @class
3157
+ * @name Highcharts.seriesTypes.sunburst
3158
+ *
3159
+ * @augments Highcharts.Series
3160
+ */
3161
+ seriesType(
3162
+ 'sunburst',
3163
+ 'treemap',
3164
+ sunburstOptions,
3165
+ sunburstSeries,
3166
+ sunburstPoint
3167
+ );
3168
+
3169
+ }(Highcharts, draw, result));
3170
+ return (function () {
3171
+
3172
+
3173
+ }());
3174
+ }));