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,12 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+ StaticScale
4
+
5
+ (c) 2016-2019 Torstein Honsi, Lars A. V. Cabrera
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){var d=a.Chart,g=a.pick;a.addEvent(a.Axis,"afterSetOptions",function(){this.horiz||!a.isNumber(this.options.staticScale)||this.chart.options.chart.height||(this.staticScale=this.options.staticScale)});d.prototype.adjustHeight=function(){"adjustHeight"!==this.redrawTrigger&&
10
+ ((this.axes||[]).forEach(function(b){var c=b.chart,d=!!c.initiatedScale&&c.options.animation,e=b.options.staticScale,f;b.staticScale&&a.defined(b.min)&&(f=g(b.unitLength,b.max+b.tickInterval-b.min)*e,f=Math.max(f,e),e=f-c.plotHeight,1<=Math.abs(e)&&(c.plotHeight=f,c.redrawTrigger="adjustHeight",c.setSize(void 0,c.chartHeight+e,d)),b.series.forEach(function(a){(a=a.sharedClipKey&&c[a.sharedClipKey])&&a.attr({height:c.plotHeight})}))}),this.initiatedScale=!0);this.redrawTrigger=null};a.addEvent(d,"render",
11
+ d.prototype.adjustHeight)})(a)});
12
+ //# sourceMappingURL=static-scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-scale.js.map","lineCount":11,"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,CAAA,IASNC,EAAQD,CAAAC,MATF,CAUNC,EAAOF,CAAAE,KAmBXF,EAAAG,SAAA,CAAWH,CAAAI,KAAX,CAAmB,iBAAnB,CAAsC,QAAS,EAAG,CAEzC,IAAAC,MADL,EAEI,CAAAL,CAAAM,SAAA,CAAW,IAAAC,QAAAC,YAAX,CAFJ,EAGK,IAAAC,MAAAF,QAAAE,MAAAC,OAHL,GAKI,IAAAF,YALJ,CAKuB,IAAAD,QAAAC,YALvB,CAD8C,CAAlD,CAUAP,EAAAU,UAAAC,aAAA,CAA+BC,QAAS,EAAG,CACZ,cAA3B,GAAI,IAAAC,cAAJ;CACIC,CAAC,IAAAC,KAADD,EAAc,EAAdA,SAAA,CAA0B,QAAS,CAACE,CAAD,CAAO,CAAA,IAClCR,EAAQQ,CAAAR,MAD0B,CAElCS,EAAU,CAAEC,CAAAV,CAAAU,eAAZD,EAAoCT,CAAAF,QAAAa,UAFF,CAGlCZ,EAAcS,CAAAV,QAAAC,YAHoB,CAIlCE,CAGAO,EAAAT,YAAJ,EAAwBR,CAAAqB,QAAA,CAAUJ,CAAAK,IAAV,CAAxB,GACIZ,CAmBA,CAnBSR,CAAA,CACLe,CAAAM,WADK,CAELN,CAAAO,IAFK,CAEMP,CAAAQ,aAFN,CAE0BR,CAAAK,IAF1B,CAmBT,CAhBId,CAgBJ,CAZAE,CAYA,CAZSgB,IAAAF,IAAA,CAASd,CAAT,CAAiBF,CAAjB,CAYT,CAVAmB,CAUA,CAVOjB,CAUP,CAVgBD,CAAAmB,WAUhB,CARsB,CAQtB,EARIF,IAAAG,IAAA,CAASF,CAAT,CAQJ,GAPIlB,CAAAmB,WAEA,CAFmBlB,CAEnB,CADAD,CAAAK,cACA,CADsB,cACtB,CAAAL,CAAAqB,QAAA,CAAc/B,IAAAA,EAAd,CAAyBU,CAAAsB,YAAzB,CAA6CJ,CAA7C,CAAmDT,CAAnD,CAKJ,EAAAD,CAAAe,OAAAjB,QAAA,CAAoB,QAAS,CAACiB,CAAD,CAAS,CAIlC,CAHIC,CAGJ,CAFID,CAAAE,cAEJ,EAF4BzB,CAAA,CAAMuB,CAAAE,cAAN,CAE5B,GACID,CAAAE,KAAA,CAAc,CACVzB,OAAQD,CAAAmB,WADE,CAAd,CAL8B,CAAtC,CApBJ,CAPsC,CAA1C,CAwCA,CAAA,IAAAT,eAAA,CAAsB,CAAA,CAzC1B,CA2CA,KAAAL,cAAA,CAAqB,IA5CkB,CA8C3Cd,EAAAG,SAAA,CAAWF,CAAX,CAAkB,QAAlB;AAA4BA,CAAAU,UAAAC,aAA5B,CArFU,CAAb,CAAA,CAuFCd,CAvFD,CADmB,CAXvB;","sources":["static-scale.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","H","Chart","pick","addEvent","Axis","horiz","isNumber","options","staticScale","chart","height","prototype","adjustHeight","Chart.prototype.adjustHeight","redrawTrigger","forEach","axes","axis","animate","initiatedScale","animation","defined","min","unitLength","max","tickInterval","Math","diff","plotHeight","abs","setSize","chartHeight","series","clipRect","sharedClipKey","attr"]}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * StaticScale
4
+ *
5
+ * (c) 2016-2019 Torstein Honsi, Lars A. V. Cabrera
6
+ *
7
+ * License: www.highcharts.com/license
8
+ */
9
+ 'use strict';
10
+ (function (factory) {
11
+ if (typeof module === 'object' && module.exports) {
12
+ factory['default'] = factory;
13
+ module.exports = factory;
14
+ } else if (typeof define === 'function' && define.amd) {
15
+ define(function () {
16
+ return factory;
17
+ });
18
+ } else {
19
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
20
+ }
21
+ }(function (Highcharts) {
22
+ (function (H) {
23
+ /* *
24
+ * (c) 2016-2019 Torstein Honsi, Lars Cabrera
25
+ *
26
+ * License: www.highcharts.com/license
27
+ */
28
+
29
+
30
+
31
+ var Chart = H.Chart,
32
+ pick = H.pick;
33
+
34
+ /**
35
+ * For vertical axes only. Setting the static scale ensures that each tick unit
36
+ * is translated into a fixed pixel height. For example, setting the static
37
+ * scale to 24 results in each Y axis category taking up 24 pixels, and the
38
+ * height of the chart adjusts. Adding or removing items will make the chart
39
+ * resize.
40
+ *
41
+ * @sample gantt/xrange-series/demo/
42
+ * X-range series with static scale
43
+ *
44
+ * @type {number}
45
+ * @default 50
46
+ * @since 6.2.0
47
+ * @product gantt
48
+ * @apioption yAxis.staticScale
49
+ */
50
+
51
+ H.addEvent(H.Axis, 'afterSetOptions', function () {
52
+ if (
53
+ !this.horiz &&
54
+ H.isNumber(this.options.staticScale) &&
55
+ !this.chart.options.chart.height
56
+ ) {
57
+ this.staticScale = this.options.staticScale;
58
+ }
59
+ });
60
+
61
+ Chart.prototype.adjustHeight = function () {
62
+ if (this.redrawTrigger !== 'adjustHeight') {
63
+ (this.axes || []).forEach(function (axis) {
64
+ var chart = axis.chart,
65
+ animate = !!chart.initiatedScale && chart.options.animation,
66
+ staticScale = axis.options.staticScale,
67
+ height,
68
+ diff;
69
+
70
+ if (axis.staticScale && H.defined(axis.min)) {
71
+ height = pick(
72
+ axis.unitLength,
73
+ axis.max + axis.tickInterval - axis.min
74
+ ) * staticScale;
75
+
76
+
77
+ // Minimum height is 1 x staticScale.
78
+ height = Math.max(height, staticScale);
79
+
80
+ diff = height - chart.plotHeight;
81
+
82
+ if (Math.abs(diff) >= 1) {
83
+ chart.plotHeight = height;
84
+ chart.redrawTrigger = 'adjustHeight';
85
+ chart.setSize(undefined, chart.chartHeight + diff, animate);
86
+ }
87
+
88
+ // Make sure clip rects have the right height before initial
89
+ // animation.
90
+ axis.series.forEach(function (series) {
91
+ var clipRect =
92
+ series.sharedClipKey && chart[series.sharedClipKey];
93
+
94
+ if (clipRect) {
95
+ clipRect.attr({
96
+ height: chart.plotHeight
97
+ });
98
+ }
99
+ });
100
+ }
101
+
102
+ });
103
+ this.initiatedScale = true;
104
+ }
105
+ this.redrawTrigger = null;
106
+ };
107
+ H.addEvent(Chart, 'render', Chart.prototype.adjustHeight);
108
+
109
+ }(Highcharts));
110
+ return (function () {
111
+
112
+
113
+ }());
114
+ }));
@@ -0,0 +1,65 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+ Advanced Highstock tools
4
+
5
+ (c) 2010-2019 Highsoft AS
6
+ Author: Torstein Honsi
7
+
8
+ License: www.highcharts.com/license
9
+ */
10
+ (function(l){"object"===typeof module&&module.exports?(l["default"]=l,module.exports=l):"function"===typeof define&&define.amd?define(function(){return l}):l("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(l){(function(f){var h=f.fireEvent,n=f.defined,l=f.pick,r=f.extend,v=f.isNumber,m=f.correctFloat,d=f.NavigationBindings.prototype.utils;d.addFlagFromForm=function(a){return function(b){var c=this,g=c.chart,e=g.toolbar,k=d.getFieldType;b=d.attractToPoint(b,g);var p={type:"flags",onSeries:b.series.id,
11
+ shape:a,data:[{x:b.x,y:b.y}],point:{events:{click:function(){var a=this,b=a.options;h(c,"showPopup",{point:a,formType:"annotation-toolbar",options:{langKey:"flags",type:"flags",title:[b.title,k(b.title)],name:[b.name,k(b.name)]},onSubmit:function(b){a.update(c.fieldsToOptions(b.fields,{}))}})}}}};e&&e.guiEnabled||g.addSeries(p);h(c,"showPopup",{formType:"flag",options:{langKey:"flags",type:"flags",title:["A",k("A")],name:["Flag A",k("Flag A")]},onSubmit:function(a){c.fieldsToOptions(a.fields,p.data[0]);
12
+ g.addSeries(p)}})}};d.manageIndicators=function(a){var b=this.chart,c={linkedTo:a.linkedTo,type:a.type},g=["ad","cmf","mfi","vbp","vwap"],e="ad atr cci cmf macd mfi roc rsi vwap ao aroon aroonoscillator trix apo dpo ppo natr williamsr linearRegression linearRegressionSlope linearRegressionIntercept linearRegressionAngle".split(" "),k;if("edit"===a.actionType)this.fieldsToOptions(a.fields,c),(a=b.get(a.seriesId))&&a.update(c,!1);else if("remove"===a.actionType){if(a=b.get(a.seriesId))k=a.yAxis,a.linkedSeries&&
13
+ a.linkedSeries.forEach(function(a){a.remove(!1)}),a.remove(!1),0<=e.indexOf(a.type)&&(k.remove(!1),this.resizeYAxes())}else c.id=f.uniqueKey(),this.fieldsToOptions(a.fields,c),0<=e.indexOf(a.type)&&(k=b.addAxis({id:f.uniqueKey(),offset:0,opposite:!0,title:{text:""},tickPixelInterval:40,showLastLabel:!1,labels:{align:"left",y:-2}},!1,!1),c.yAxis=k.options.id,this.resizeYAxes()),0<=g.indexOf(a.type)&&(c.params.volumeSeriesID=b.series.filter(function(a){return"column"===a.options.type})[0].options.id),
14
+ b.addSeries(c,!1);h(this,"deselectButton",{button:this.selectedButtonElement});b.redraw()};d.updateHeight=function(a,b){b.update({typeOptions:{height:this.chart.yAxis[0].toValue(a.chartY)-b.options.typeOptions.points[1].y}})};d.attractToPoint=function(a,b){var c=b.xAxis[0].toValue(a.chartX);a=b.yAxis[0].toValue(a.chartY);var g=Number.MAX_VALUE,e;b.series.forEach(function(a){a.points.forEach(function(a){a&&g>Math.abs(a.x-c)&&(g=Math.abs(a.x-c),e=a)})});return{x:e.x,y:e.y,below:a<e.y,series:e.series,
15
+ xAxis:e.series.xAxis.index||0,yAxis:e.series.yAxis.index||0}};d.isNotNavigatorYAxis=function(a){return"highcharts-navigator-yaxis"!==a.userOptions.className};d.updateNthPoint=function(a){return function(b,c){var g=c.options.typeOptions,e=this.chart.xAxis[0].toValue(b.chartX),k=this.chart.yAxis[0].toValue(b.chartY);g.points.forEach(function(b,c){c>=a&&(b.x=e,b.y=k)});c.update({typeOptions:{points:g.points}})}};r(f.NavigationBindings.prototype,{getYAxisPositions:function(a,b,c){function g(a){return n(a)&&
16
+ !v(a)&&a.match("%")}var e=0;a=a.map(function(a){var k=g(a.options.height)?parseFloat(a.options.height)/100:a.height/b;a=g(a.options.top)?parseFloat(a.options.top)/100:m(a.top-a.chart.plotTop)/b;v(k)||(k=c/100);e=m(e+k);return{height:100*k,top:100*a}});a.allAxesHeight=e;return a},getYAxisResizers:function(a){var b=[];a.forEach(function(c,g){c=a[g+1];b[g]=c?{enabled:!0,controlledAxis:{next:[l(c.options.id,c.options.index)]}}:{enabled:!1}});return b},resizeYAxes:function(a){a=a||20;var b=this.chart,
17
+ c=b.yAxis.filter(this.utils.isNotNavigatorYAxis),g=c.length,b=this.getYAxisPositions(c,b.plotHeight,a),e=this.getYAxisResizers(c),k=b.allAxesHeight,d=a;1<k?(6>g?(b[0].height=m(b[0].height-d),b=this.recalculateYAxisPositions(b,d)):(a=100/g,b=this.recalculateYAxisPositions(b,a/(g-1),!0,-1)),b[g-1]={top:m(100-a),height:a}):(d=100*m(1-k),5>g?(b[0].height=m(b[0].height+d),b=this.recalculateYAxisPositions(b,d)):b=this.recalculateYAxisPositions(b,d/g,!0,1));b.forEach(function(a,b){c[b].update({height:a.height+
18
+ "%",top:a.top+"%",resize:e[b]},!1)})},recalculateYAxisPositions:function(a,b,c,g){a.forEach(function(e,k){k=a[k-1];e.top=k?m(k.height+k.top):0;c&&(e.height=m(e.height+g*b))});return a}});r={segment:{className:"highcharts-segment",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"segment",type:"crookedLine",typeOptions:{points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},arrowSegment:{className:"highcharts-arrow-segment",
19
+ start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"arrowSegment",type:"crookedLine",typeOptions:{line:{markerEnd:"arrow"},points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},ray:{className:"highcharts-ray",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"ray",type:"infinityLine",typeOptions:{type:"ray",
20
+ points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},arrowRay:{className:"highcharts-arrow-ray",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"arrowRay",type:"infinityLine",typeOptions:{type:"ray",line:{markerEnd:"arrow"},points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},infinityLine:{className:"highcharts-infinity-line",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);
21
+ a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"infinityLine",type:"infinityLine",typeOptions:{type:"line",points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},arrowInfinityLine:{className:"highcharts-arrow-infinity-line",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"arrowInfinityLine",type:"infinityLine",typeOptions:{type:"line",line:{markerEnd:"arrow"},points:[{x:b,
22
+ y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1)]},horizontalLine:{className:"highcharts-horizontal-line",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);this.chart.addAnnotation({langKey:"horizontalLine",type:"infinityLine",typeOptions:{type:"horizontalLine",points:[{x:b,y:a}]}})}},verticalLine:{className:"highcharts-vertical-line",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);this.chart.addAnnotation({langKey:"verticalLine",
23
+ type:"infinityLine",typeOptions:{type:"verticalLine",points:[{x:b,y:a}]}})}},crooked3:{className:"highcharts-crooked3",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"crooked3",type:"crookedLine",typeOptions:{points:[{x:b,y:a},{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1),d.updateNthPoint(2)]},crooked5:{className:"highcharts-crooked5",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);
24
+ a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"crookedLine",type:"crookedLine",typeOptions:{points:[{x:b,y:a},{x:b,y:a},{x:b,y:a},{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1),d.updateNthPoint(2),d.updateNthPoint(3),d.updateNthPoint(4)]},elliott3:{className:"highcharts-elliott3",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"elliott3",type:"elliottWave",typeOptions:{points:[{x:b,
25
+ y:a},{x:b,y:a},{x:b,y:a}]},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateNthPoint(1),d.updateNthPoint(2)]},elliott5:{className:"highcharts-elliott5",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"elliott5",type:"elliottWave",typeOptions:{points:[{x:b,y:a},{x:b,y:a},{x:b,y:a},{x:b,y:a},{x:b,y:a}]},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateNthPoint(1),d.updateNthPoint(2),d.updateNthPoint(3),
26
+ d.updateNthPoint(4)]},measureX:{className:"highcharts-measure-x",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"measure",type:"measure",typeOptions:{selectType:"x",point:{x:b,y:a,xAxis:0,yAxis:0},crosshairX:{strokeWidth:1,stroke:"#000000"},crosshairY:{enabled:!1,strokeWidth:0,stroke:"#000000"},background:{width:0,height:0,strokeWidth:0,stroke:"#ffffff"}},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateRectSize]},
27
+ measureY:{className:"highcharts-measure-y",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"measure",type:"measure",typeOptions:{selectType:"y",point:{x:b,y:a,xAxis:0,yAxis:0},crosshairX:{enabled:!1,strokeWidth:0,stroke:"#000000"},crosshairY:{strokeWidth:1,stroke:"#000000"},background:{width:0,height:0,strokeWidth:0,stroke:"#ffffff"}},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateRectSize]},measureXY:{className:"highcharts-measure-xy",
28
+ start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"measure",type:"measure",typeOptions:{selectType:"xy",point:{x:b,y:a,xAxis:0,yAxis:0},background:{width:0,height:0,strokeWidth:0,stroke:"#000000"},crosshairX:{strokeWidth:1,stroke:"#000000"},crosshairY:{strokeWidth:1,stroke:"#000000"}},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateRectSize]},fibonacci:{className:"highcharts-fibonacci",start:function(a){var b=
29
+ this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"fibonacci",type:"fibonacci",typeOptions:{points:[{x:b,y:a},{x:b,y:a}]},labelOptions:{style:{color:"#666666"}}})},steps:[d.updateNthPoint(1),d.updateHeight]},parallelChannel:{className:"highcharts-parallel-channel",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"parallelChannel",type:"tunnel",
30
+ typeOptions:{points:[{x:b,y:a},{x:b,y:a}]}})},steps:[d.updateNthPoint(1),d.updateHeight]},pitchfork:{className:"highcharts-pitchfork",start:function(a){var b=this.chart.xAxis[0].toValue(a.chartX);a=this.chart.yAxis[0].toValue(a.chartY);return this.chart.addAnnotation({langKey:"pitchfork",type:"pitchfork",typeOptions:{points:[{x:b,y:a,controlPoint:{style:{fill:"red"}}},{x:b,y:a},{x:b,y:a}],innerBackground:{fill:"rgba(100, 170, 255, 0.8)"}},shapeOptions:{strokeWidth:2}})},steps:[d.updateNthPoint(1),
31
+ d.updateNthPoint(2)]},verticalCounter:{className:"highcharts-vertical-counter",start:function(a){a=d.attractToPoint(a,this.chart);n(this.verticalCounter)||(this.verticalCounter=0);a=this.chart.addAnnotation({langKey:"verticalCounter",type:"verticalLine",typeOptions:{point:{x:a.x,y:a.y,xAxis:a.xAxis,yAxis:a.yAxis},label:{offset:a.below?40:-40,text:this.verticalCounter.toString()}},labelOptions:{style:{color:"#666666",fontSize:"11px"}},shapeOptions:{stroke:"rgba(0, 0, 0, 0.75)",strokeWidth:1}});this.verticalCounter++;
32
+ a.options.events.click.call(a,{})}},verticalLabel:{className:"highcharts-vertical-label",start:function(a){a=d.attractToPoint(a,this.chart);a=this.chart.addAnnotation({langKey:"verticalLabel",type:"verticalLine",typeOptions:{point:{x:a.x,y:a.y,xAxis:a.xAxis,yAxis:a.yAxis},label:{offset:a.below?40:-40}},labelOptions:{style:{color:"#666666",fontSize:"11px"}},shapeOptions:{stroke:"rgba(0, 0, 0, 0.75)",strokeWidth:1}});a.options.events.click.call(a,{})}},verticalArrow:{className:"highcharts-vertical-arrow",
33
+ start:function(a){a=d.attractToPoint(a,this.chart);a=this.chart.addAnnotation({langKey:"verticalArrow",type:"verticalLine",typeOptions:{point:{x:a.x,y:a.y,xAxis:a.xAxis,yAxis:a.yAxis},label:{offset:a.below?40:-40,format:" "},connector:{fill:"none",stroke:a.below?"red":"green"}},shapeOptions:{stroke:"rgba(0, 0, 0, 0.75)",strokeWidth:1}});a.options.events.click.call(a,{})}},flagCirclepin:{className:"highcharts-flag-circlepin",start:d.addFlagFromForm("circlepin")},flagDiamondpin:{className:"highcharts-flag-diamondpin",
34
+ start:d.addFlagFromForm("flag")},flagSquarepin:{className:"highcharts-flag-squarepin",start:d.addFlagFromForm("squarepin")},flagSimplepin:{className:"highcharts-flag-simplepin",start:d.addFlagFromForm("nopin")},zoomX:{className:"highcharts-zoom-x",init:function(a){this.chart.update({chart:{zoomType:"x"}});h(this,"deselectButton",{button:a})}},zoomY:{className:"highcharts-zoom-y",init:function(a){this.chart.update({chart:{zoomType:"y"}});h(this,"deselectButton",{button:a})}},zoomXY:{className:"highcharts-zoom-xy",
35
+ init:function(a){this.chart.update({chart:{zoomType:"xy"}});h(this,"deselectButton",{button:a})}},seriesTypeLine:{className:"highcharts-series-type-line",init:function(a){this.chart.series[0].update({type:"line",useOhlcData:!0});h(this,"deselectButton",{button:a})}},seriesTypeOhlc:{className:"highcharts-series-type-ohlc",init:function(a){this.chart.series[0].update({type:"ohlc"});h(this,"deselectButton",{button:a})}},seriesTypeCandlestick:{className:"highcharts-series-type-candlestick",init:function(a){this.chart.series[0].update({type:"candlestick"});
36
+ h(this,"deselectButton",{button:a})}},fullScreen:{className:"highcharts-full-screen",init:function(a){var b=this.chart;b.fullScreen=new f.FullScreen(b.container);h(this,"deselectButton",{button:a})}},currentPriceIndicator:{className:"highcharts-current-price-indicator",init:function(a){var b=this.chart.series[0],c=b.options,g=c.lastVisiblePrice&&c.lastVisiblePrice.enabled,c=c.lastPrice&&c.lastPrice.enabled,e=this.chart.stockToolbar;e&&e.guiEnabled&&(a.firstChild.style["background-image"]=c?'url("'+
37
+ e.options.iconsURL+'current-price-show.svg")':'url("'+e.options.iconsURL+'current-price-hide.svg")');b.update({lastPrice:{enabled:!c,color:"red"},lastVisiblePrice:{enabled:!g,label:{enabled:!0}}});h(this,"deselectButton",{button:a})}},indicators:{className:"highcharts-indicators",init:function(){var a=this;h(a,"showPopup",{formType:"indicators",options:{},onSubmit:function(b){a.utils.manageIndicators.call(a,b)}})}},toggleAnnotations:{className:"highcharts-toggle-annotations",init:function(a){var b=
38
+ this.chart.stockToolbar;this.toggledAnnotations=!this.toggledAnnotations;(this.chart.annotations||[]).forEach(function(a){a.setVisibility(!this.toggledAnnotations)},this);b&&b.guiEnabled&&(a.firstChild.style["background-image"]=this.toggledAnnotations?'url("'+b.options.iconsURL+'annotations-hidden.svg")':'url("'+b.options.iconsURL+'annotations-visible.svg")');h(this,"deselectButton",{button:a})}},saveChart:{className:"highcharts-save-chart",init:function(a){var b=this,c=b.chart,g=[],e=[],k=[],d=[];
39
+ c.annotations.forEach(function(a,b){g[b]=a.userOptions});c.series.forEach(function(a){a instanceof f.seriesTypes.sma?e.push(a.userOptions):"flags"===a.type&&k.push(a.userOptions)});c.yAxis.forEach(function(a){b.utils.isNotNavigatorYAxis(a)&&d.push(a.options)});f.win.localStorage.setItem("highcharts-chart",JSON.stringify({annotations:g,indicators:e,flags:k,yAxes:d}));h(this,"deselectButton",{button:a})}}};f.setOptions({navigation:{bindings:r}})})(l);(function(f){var h=f.addEvent,n=f.createElement,
40
+ l=f.pick,r=f.isArray,v=f.fireEvent,m=f.getStyle,d=f.merge,a=f.css,b=f.win;f.setOptions({lang:{stockTools:{gui:{simpleShapes:"Simple shapes",lines:"Lines",crookedLines:"Crooked lines",measure:"Measure",advanced:"Advanced",toggleAnnotations:"Toggle annotations",verticalLabels:"Vertical labels",flags:"Flags",zoomChange:"Zoom change",typeChange:"Type change",saveChart:"Save chart",indicators:"Indicators",currentPriceIndicator:"Current Price Indicators",zoomX:"Zoom X",zoomY:"Zoom Y",zoomXY:"Zooom XY",
41
+ fullScreen:"Fullscreen",typeOHLC:"OHLC",typeLine:"Line",typeCandlestick:"Candlestick",circle:"Circle",label:"Label",rectangle:"Rectangle",flagCirclepin:"Flag circle",flagDiamondpin:"Flag diamond",flagSquarepin:"Flag square",flagSimplepin:"Flag simple",measureXY:"Measure XY",measureX:"Measure X",measureY:"Measure Y",segment:"Segment",arrowSegment:"Arrow segment",ray:"Ray",arrowRay:"Arrow ray",line:"Line",arrowLine:"Arrow line",horizontalLine:"Horizontal line",verticalLine:"Vertical line",infinityLine:"Infinity line",
42
+ crooked3:"Crooked 3 line",crooked5:"Crooked 5 line",elliott3:"Elliott 3 line",elliott5:"Elliott 5 line",verticalCounter:"Vertical counter",verticalLabel:"Vertical label",verticalArrow:"Vertical arrow",fibonacci:"Fibonacci",pitchfork:"Pitchfork",parallelChannel:"Parallel channel"}},navigation:{popup:{circle:"Circle",rectangle:"Rectangle",label:"Label",segment:"Segment",arrowSegment:"Arrow segment",ray:"Ray",arrowRay:"Arrow ray",line:"Line",arrowLine:"Arrow line",horizontalLine:"Horizontal line",verticalLine:"Vertical line",
43
+ crooked3:"Crooked 3 line",crooked5:"Crooked 5 line",elliott3:"Elliott 3 line",elliott5:"Elliott 5 line",verticalCounter:"Vertical counter",verticalLabel:"Vertical label",verticalArrow:"Vertical arrow",fibonacci:"Fibonacci",pitchfork:"Pitchfork",parallelChannel:"Parallel channel",infinityLine:"Infinity line",measure:"Measure",measureXY:"Measure XY",measureX:"Measure X",measureY:"Measure Y",flags:"Flags",addButton:"add",saveButton:"save",editButton:"edit",removeButton:"remove",series:"Series",volume:"Volume",
44
+ connector:"Connector",innerBackground:"Inner background",outerBackground:"Outer background",crosshairX:"Crosshair X",crosshairY:"Crosshair Y",tunnel:"Tunnel",background:"Background"}}},stockTools:{gui:{enabled:!0,className:"highcharts-bindings-wrapper",toolbarClassName:"stocktools-toolbar",iconsURL:"https://code.highcharts.com/7.0.3/gfx/stock-icons/",buttons:"indicators separator simpleShapes lines crookedLines measure advanced toggleAnnotations separator verticalLabels flags separator zoomChange fullScreen typeChange separator currentPriceIndicator saveChart".split(" "),
45
+ definitions:{separator:{symbol:"separator.svg"},simpleShapes:{items:["label","circle","rectangle"],circle:{symbol:"circle.svg"},rectangle:{symbol:"rectangle.svg"},label:{symbol:"label.svg"}},flags:{items:["flagCirclepin","flagDiamondpin","flagSquarepin","flagSimplepin"],flagSimplepin:{symbol:"flag-basic.svg"},flagDiamondpin:{symbol:"flag-diamond.svg"},flagSquarepin:{symbol:"flag-trapeze.svg"},flagCirclepin:{symbol:"flag-elipse.svg"}},lines:{items:"segment arrowSegment ray arrowRay line arrowLine horizontalLine verticalLine".split(" "),
46
+ segment:{symbol:"segment.svg"},arrowSegment:{symbol:"arrow-segment.svg"},ray:{symbol:"ray.svg"},arrowRay:{symbol:"arrow-ray.svg"},line:{symbol:"line.svg"},arrowLine:{symbol:"arrow-line.svg"},verticalLine:{symbol:"vertical-line.svg"},horizontalLine:{symbol:"horizontal-line.svg"}},crookedLines:{items:["elliott3","elliott5","crooked3","crooked5"],crooked3:{symbol:"crooked-3.svg"},crooked5:{symbol:"crooked-5.svg"},elliott3:{symbol:"elliott-3.svg"},elliott5:{symbol:"elliott-5.svg"}},verticalLabels:{items:["verticalCounter",
47
+ "verticalLabel","verticalArrow"],verticalCounter:{symbol:"vertical-counter.svg"},verticalLabel:{symbol:"vertical-label.svg"},verticalArrow:{symbol:"vertical-arrow.svg"}},advanced:{items:["fibonacci","pitchfork","parallelChannel"],pitchfork:{symbol:"pitchfork.svg"},fibonacci:{symbol:"fibonacci.svg"},parallelChannel:{symbol:"parallel-channel.svg"}},measure:{items:["measureXY","measureX","measureY"],measureX:{symbol:"measure-x.svg"},measureY:{symbol:"measure-y.svg"},measureXY:{symbol:"measure-xy.svg"}},
48
+ toggleAnnotations:{symbol:"annotations-visible.svg"},currentPriceIndicator:{symbol:"current-price-show.svg"},indicators:{symbol:"indicators.svg"},zoomChange:{items:["zoomX","zoomY","zoomXY"],zoomX:{symbol:"zoom-x.svg"},zoomY:{symbol:"zoom-y.svg"},zoomXY:{symbol:"zoom-xy.svg"}},typeChange:{items:["typeOHLC","typeLine","typeCandlestick"],typeOHLC:{symbol:"series-ohlc.svg"},typeLine:{symbol:"series-line.svg"},typeCandlestick:{symbol:"series-candlestick.svg"}},fullScreen:{symbol:"fullscreen.svg"},saveChart:{symbol:"save-chart.svg"}}}}});
49
+ h(f.Chart,"afterGetContainer",function(){this.setStockTools()});h(f.Chart,"getMargins",function(){var a=this.stockTools&&this.stockTools.listWrapper&&this.stockTools.listWrapper.offsetWidth;a&&a<this.plotWidth&&(this.plotLeft+=a)});h(f.Chart,"destroy",function(){this.stockTools&&this.stockTools.destroy()});h(f.Chart,"redraw",function(){this.stockTools&&this.stockTools.guiEnabled&&this.stockTools.redraw()});f.Toolbar=function(a,b,e){this.chart=e;this.options=a;this.lang=b;this.guiEnabled=a.enabled;
50
+ this.visible=l(a.visible,!0);this.placed=l(a.placed,!1);this.eventsToUnbind=[];this.guiEnabled&&(this.createHTML(),this.init(),this.showHideNavigatorion());v(this,"afterInit")};f.extend(f.Chart.prototype,{setStockTools:function(a){var b=this.options,c=b.lang;a=d(b.stockTools&&b.stockTools.gui,a&&a.gui);this.stockTools=new f.Toolbar(a,c.stockTools&&c.stockTools.gui,this);this.stockTools.guiEnabled&&(this.isDirtyBox=!0)}});f.Toolbar.prototype={init:function(){var a=this,b=this.lang,e=this.options,d=
51
+ this.toolbar,f=a.addSubmenu,w=e.buttons,l=e.definitions,n=d.childNodes,m=this.inIframe(),q;w.forEach(function(c){q=a.addButton(d,l,c,b);m&&"fullScreen"===c&&(q.buttonWrapper.className+=" highcharts-disabled-btn");["click","touchstart"].forEach(function(b){h(q.buttonWrapper,b,function(){a.eraseActiveButtons(n,q.buttonWrapper)})});r(l[c].items)&&f.call(a,q,l[c])})},addSubmenu:function(b,g){var c=this,d=b.submenuArrow,p=b.buttonWrapper,w=m(p,"width"),l=this.wrapper,u=this.listWrapper,r=this.toolbar.childNodes,
52
+ q=0,t;this.submenu=t=n("ul",{className:"highcharts-submenu-wrapper"},null,p);this.addSubmenuItems(p,g);["click","touchstart"].forEach(function(b){h(d,b,function(b){b.stopPropagation();c.eraseActiveButtons(r,p);0<=p.className.indexOf("highcharts-current")?(u.style.width=u.startWidth+"px",p.classList.remove("highcharts-current"),t.style.display="none"):(t.style.display="block",q=t.offsetHeight-p.offsetHeight-3,t.offsetHeight+p.offsetTop>l.offsetHeight&&p.offsetTop>q||(q=0),a(t,{top:-q+"px",left:w+3+
53
+ "px"}),p.className+=" highcharts-current",u.startWidth=l.offsetWidth,u.style.width=u.startWidth+f.getStyle(u,"padding-left")+t.offsetWidth+3+"px")})})},addSubmenuItems:function(a,b){var c=this,g=this.submenu,d=this.lang,f=this.listWrapper,l,n;b.items.forEach(function(e){n=c.addButton(g,b,e,d);["click","touchstart"].forEach(function(b){h(n.mainButton,b,function(){c.switchSymbol(this,a,!0);f.style.width=f.startWidth+"px";g.style.display="none"})})});l=g.querySelectorAll("li \x3e .highcharts-menu-item-btn")[0];
54
+ c.switchSymbol(l,!1)},eraseActiveButtons:function(a,b,e){[].forEach.call(a,function(a){a!==b&&(a.classList.remove("highcharts-current"),a.classList.remove("highcharts-active"),e=a.querySelectorAll(".highcharts-submenu-wrapper"),0<e.length&&(e[0].style.display="none"))})},addButton:function(a,b,e,d){var c=this.options;b=b[e];var g=b.items,k=b.className||"",h;e=n("li",{className:l(f.Toolbar.prototype.classMapping[e],"")+" "+k,title:d[e]||e},null,a);a=n("span",{className:"highcharts-menu-item-btn"},
55
+ null,e);g&&1<g.length?h=n("span",{className:"highcharts-submenu-item-arrow highcharts-arrow-right"},null,e):a.style["background-image"]="url("+c.iconsURL+b.symbol+")";return{buttonWrapper:e,mainButton:a,submenuArrow:h}},addNavigation:function(){var a=this.wrapper;this.arrowWrapper=n("div",{className:"highcharts-arrow-wrapper"});this.arrowUp=n("div",{className:"highcharts-arrow-up"},null,this.arrowWrapper);this.arrowDown=n("div",{className:"highcharts-arrow-down"},null,this.arrowWrapper);a.insertBefore(this.arrowWrapper,
56
+ a.childNodes[0]);this.scrollButtons()},scrollButtons:function(){var a=0,b=this,e=b.wrapper,d=b.toolbar,f=.1*e.offsetHeight;["click","touchstart"].forEach(function(c){h(b.arrowUp,c,function(){0<a&&(a-=f,d.style["margin-top"]=-a+"px")});h(b.arrowDown,c,function(){e.offsetHeight+a<=d.offsetHeight+f&&(a+=f,d.style["margin-top"]=-a+"px")})})},createHTML:function(){var a=this.options,b=this.chart.container,e;this.wrapper=e=n("div",{className:"highcharts-stocktools-wrapper "+a.className});b.parentNode.insertBefore(e,
57
+ b);this.toolbar=b=n("ul",{className:"highcharts-stocktools-toolbar "+a.toolbarClassName});this.listWrapper=a=n("div",{className:"highcharts-menu-wrapper"});e.insertBefore(a,e.childNodes[0]);a.insertBefore(b,a.childNodes[0]);this.showHideToolbar();this.addNavigation()},showHideNavigatorion:function(){this.visible&&this.toolbar.offsetHeight>this.wrapper.offsetHeight-50?this.arrowWrapper.style.display="block":(this.toolbar.style.marginTop="0px",this.arrowWrapper.style.display="none")},showHideToolbar:function(){var a=
58
+ this.chart,b=this.wrapper,e=this.listWrapper,d=this.submenu,l=this.visible,m;this.showhideBtn=m=n("div",{className:"highcharts-toggle-toolbar highcharts-arrow-left"},null,b);l?(b.style.height="100%",m.style.top=f.getStyle(e,"padding-top")+"px",m.style.left=b.offsetWidth+f.getStyle(e,"padding-left")+"px"):(d&&(d.style.display="none"),m.style.left="0px",this.visible=l=!1,e.classList.add("highcharts-hide"),m.classList.toggle("highcharts-arrow-right"),b.style.height=m.offsetHeight+"px");["click","touchstart"].forEach(function(b){h(m,
59
+ b,function(){a.update({stockTools:{gui:{visible:!l,placed:!0}}})})})},switchSymbol:function(a,b){var c=a.parentNode,d=c.classList.value,c=c.parentNode.parentNode;c.className="";d&&c.classList.add(d.trim());c.querySelectorAll(".highcharts-menu-item-btn")[0].style["background-image"]=a.style["background-image"];b&&this.selectButton(c)},selectButton:function(a){0<=a.className.indexOf("highcharts-active")?a.classList.remove("highcharts-active"):a.classList.add("highcharts-active")},unselectAllButtons:function(a){var b=
60
+ a.parentNode.querySelectorAll(".highcharts-active");[].forEach.call(b,function(b){b!==a&&b.classList.remove("highcharts-active")})},inIframe:function(){try{return b.self!==b.top}catch(c){return!0}},update:function(a){d(!0,this.chart.options.stockTools,a);this.destroy();this.chart.setStockTools(a);this.chart.navigationBindings&&this.chart.navigationBindings.update()},destroy:function(){var a=this.wrapper,b=a&&a.parentNode;this.eventsToUnbind.forEach(function(a){a()});b&&b.removeChild(a);this.chart.isDirtyBox=
61
+ !0;this.chart.redraw()},redraw:function(){this.showHideNavigatorion()},classMapping:{circle:"highcharts-circle-annotation",rectangle:"highcharts-rectangle-annotation",label:"highcharts-label-annotation",segment:"highcharts-segment",arrowSegment:"highcharts-arrow-segment",ray:"highcharts-ray",arrowRay:"highcharts-arrow-ray",line:"highcharts-infinity-line",arrowLine:"highcharts-arrow-infinity-line",verticalLine:"highcharts-vertical-line",horizontalLine:"highcharts-horizontal-line",crooked3:"highcharts-crooked3",
62
+ crooked5:"highcharts-crooked5",elliott3:"highcharts-elliott3",elliott5:"highcharts-elliott5",pitchfork:"highcharts-pitchfork",fibonacci:"highcharts-fibonacci",parallelChannel:"highcharts-parallel-channel",measureX:"highcharts-measure-x",measureY:"highcharts-measure-y",measureXY:"highcharts-measure-xy",verticalCounter:"highcharts-vertical-counter",verticalLabel:"highcharts-vertical-label",verticalArrow:"highcharts-vertical-arrow",currentPriceIndicator:"highcharts-current-price-indicator",indicators:"highcharts-indicators",
63
+ flagCirclepin:"highcharts-flag-circlepin",flagDiamondpin:"highcharts-flag-diamondpin",flagSquarepin:"highcharts-flag-squarepin",flagSimplepin:"highcharts-flag-simplepin",zoomX:"highcharts-zoom-x",zoomY:"highcharts-zoom-y",zoomXY:"highcharts-zoom-xy",typeLine:"highcharts-series-type-line",typeOHLC:"highcharts-series-type-ohlc",typeCandlestick:"highcharts-series-type-candlestick",fullScreen:"highcharts-full-screen",toggleAnnotations:"highcharts-toggle-annotations",saveChart:"highcharts-save-chart",
64
+ separator:"highcharts-separator"}};h(f.NavigationBindings,"selectButton",function(a){var b=a.button,c=this.chart.stockTools;c&&c.guiEnabled&&(c.unselectAllButtons(a.button),0<=b.parentNode.className.indexOf("highcharts-submenu-wrapper")&&(b=b.parentNode.parentNode),c.selectButton(b))});h(f.NavigationBindings,"deselectButton",function(a){a=a.button;var b=this.chart.stockTools;b&&b.guiEnabled&&(0<=a.parentNode.className.indexOf("highcharts-submenu-wrapper")&&(a=a.parentNode.parentNode),b.selectButton(a))})})(l)});
65
+ //# sourceMappingURL=stock-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-tools.js.map","lineCount":64,"mappings":"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","sources":["stock-tools.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","H","fireEvent","defined","pick","extend","isNumber","correctFloat","bindingsUtils","NavigationBindings","prototype","utils","addFlagFromForm","bindingsUtils.addFlagFromForm","type","e","navigation","chart","toolbar","getFieldType","point","attractToPoint","seriesOptions","onSeries","series","id","shape","data","pointConfig","x","y","events","click","options","formType","langKey","title","name","onSubmit","updated","update","fieldsToOptions","fields","guiEnabled","addSeries","manageIndicators","bindingsUtils.manageIndicators","seriesConfig","linkedTo","indicatorsWithVolume","indicatorsWithAxes","yAxis","actionType","get","seriesId","linkedSeries","forEach","remove","indexOf","resizeYAxes","uniqueKey","addAxis","offset","opposite","text","tickPixelInterval","showLastLabel","labels","align","params","volumeSeriesID","filter","button","selectedButtonElement","redraw","updateHeight","bindingsUtils.updateHeight","annotation","typeOptions","height","toValue","chartY","points","bindingsUtils.attractToPoint","xAxis","chartX","distX","Number","MAX_VALUE","closestPoint","Math","abs","below","index","isNotNavigatorYAxis","bindingsUtils.isNotNavigatorYAxis","axis","userOptions","className","updateNthPoint","bindingsUtils.updateNthPoint","startIndex","getYAxisPositions","yAxes","plotHeight","defaultHeight","isPercentage","prop","match","allAxesHeight","positions","map","parseFloat","top","plotTop","getYAxisResizers","resizers","nextYAxis","enabled","controlledAxis","next","allAxesLength","length","changedSpace","recalculateYAxisPositions","position","resize","modifyHeight","adder","prevPosition","stockToolsBindings","segment","start","addAnnotation","steps","arrowSegment","line","markerEnd","ray","arrowRay","infinityLine","arrowInfinityLine","horizontalLine","verticalLine","crooked3","crooked5","elliott3","labelOptions","style","color","elliott5","measureX","selectType","crosshairX","strokeWidth","stroke","crosshairY","background","width","updateRectSize","measureY","measureXY","fibonacci","parallelChannel","pitchfork","controlPoint","fill","innerBackground","shapeOptions","verticalCounter","label","toString","fontSize","call","verticalLabel","verticalArrow","format","connector","flagCirclepin","flagDiamondpin","flagSquarepin","flagSimplepin","zoomX","init","zoomType","zoomY","zoomXY","seriesTypeLine","useOhlcData","seriesTypeOhlc","seriesTypeCandlestick","fullScreen","FullScreen","container","currentPriceIndicator","lastVisiblePrice","lastPrice","gui","stockToolbar","firstChild","iconsURL","indicators","toggleAnnotations","toggledAnnotations","annotations","setVisibility","saveChart","flags","seriesTypes","sma","push","win","localStorage","setItem","JSON","stringify","setOptions","bindings","addEvent","createElement","isArray","getStyle","merge","css","lang","stockTools","simpleShapes","lines","crookedLines","measure","advanced","verticalLabels","zoomChange","typeChange","typeOHLC","typeLine","typeCandlestick","circle","rectangle","arrowLine","popup","addButton","saveButton","editButton","removeButton","volume","outerBackground","tunnel","toolbarClassName","buttons","definitions","separator","symbol","items","Chart","setStockTools","offsetWidth","listWrapper","plotWidth","plotLeft","destroy","Toolbar","H.Toolbar","langOptions","visible","placed","eventsToUnbind","createHTML","showHideNavigatorion","chartOptions","guiOptions","isDirtyBox","_self","addSubmenu","defs","allButtons","childNodes","inIframe","btnName","buttonWrapper","eventName","eraseActiveButtons","parentBtn","submenuArrow","buttonWidth","wrapper","menuWrapper","topMargin","submenuWrapper","submenu","UL","addSubmenuItems","stopPropagation","startWidth","classList","display","offsetHeight","offsetTop","left","firstSubmenuItem","submenuBtn","mainButton","switchSymbol","querySelectorAll","currentButton","submenuItems","btn","target","btnOptions","userClassName","LI","classMapping","SPAN","addNavigation","arrowWrapper","DIV","arrowUp","arrowDown","insertBefore","scrollButtons","targetY","step","parentNode","showHideToolbar","marginTop","showhideBtn","add","toggle","buttonWrapperClass","value","mainNavButton","trim","selectButton","activeClass","unselectAllButtons","activeButtons","activeBtn","self","navigationBindings","stockToolsDiv","parent","unbinder","removeChild","event"]}
@@ -0,0 +1,3437 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * Advanced Highstock tools
4
+ *
5
+ * (c) 2010-2019 Highsoft AS
6
+ * Author: Torstein Honsi
7
+ *
8
+ * License: www.highcharts.com/license
9
+ */
10
+ 'use strict';
11
+ (function (factory) {
12
+ if (typeof module === 'object' && module.exports) {
13
+ factory['default'] = factory;
14
+ module.exports = factory;
15
+ } else if (typeof define === 'function' && define.amd) {
16
+ define(function () {
17
+ return factory;
18
+ });
19
+ } else {
20
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
21
+ }
22
+ }(function (Highcharts) {
23
+ (function (H) {
24
+ /**
25
+ *
26
+ * Events generator for Stock tools
27
+ *
28
+ * (c) 2009-2019 Paweł Fus
29
+ *
30
+ * License: www.highcharts.com/license
31
+ *
32
+ * */
33
+
34
+ /**
35
+ * A config object for bindings in Stock Tools module.
36
+ *
37
+ * @interface Highcharts.StockToolsBindingsObject
38
+ *//**
39
+ * ClassName of the element for a binding.
40
+ * @name Highcharts.StockToolsBindingsObject#className
41
+ * @type {string|undefined}
42
+ *//**
43
+ * Last event to be fired after last step event.
44
+ * @name Highcharts.StockToolsBindingsObject#end
45
+ * @type {Function|undefined}
46
+ *//**
47
+ * Initial event, fired on a button click.
48
+ * @name Highcharts.StockToolsBindingsObject#init
49
+ * @type {Function|undefined}
50
+ *//**
51
+ * Event fired on first click on a chart.
52
+ * @name Highcharts.StockToolsBindingsObject#start
53
+ * @type {Function|undefined}
54
+ *//**
55
+ * Last event to be fired after last step event. Array of step events to be
56
+ * called sequentially after each user click.
57
+ * @name Highcharts.StockToolsBindingsObject#steps
58
+ * @type {Array<Function>|undefined}
59
+ */
60
+
61
+
62
+
63
+ var fireEvent = H.fireEvent,
64
+ defined = H.defined,
65
+ pick = H.pick,
66
+ extend = H.extend,
67
+ isNumber = H.isNumber,
68
+ correctFloat = H.correctFloat,
69
+ bindingsUtils = H.NavigationBindings.prototype.utils,
70
+ PREFIX = 'highcharts-';
71
+
72
+ /**
73
+ * Generates function which will add a flag series using modal in GUI.
74
+ * Method fires an event "showPopup" with config:
75
+ * `{type, options, callback}`.
76
+ *
77
+ * Example: NavigationBindings.utils.addFlagFromForm('url(...)') - will
78
+ * generate function that shows modal in GUI.
79
+ *
80
+ * @private
81
+ * @function bindingsUtils.addFlagFromForm
82
+ *
83
+ * @param {string} type
84
+ * Type of flag series, e.g. "squarepin"
85
+ *
86
+ * @return {Function}
87
+ * Callback to be used in `start` callback
88
+ */
89
+ bindingsUtils.addFlagFromForm = function (type) {
90
+ return function (e) {
91
+ var navigation = this,
92
+ chart = navigation.chart,
93
+ toolbar = chart.toolbar,
94
+ getFieldType = bindingsUtils.getFieldType,
95
+ point = bindingsUtils.attractToPoint(e, chart),
96
+ pointConfig = {
97
+ x: point.x,
98
+ y: point.y
99
+ },
100
+ seriesOptions = {
101
+ type: 'flags',
102
+ onSeries: point.series.id,
103
+ shape: type,
104
+ data: [pointConfig],
105
+ point: {
106
+ events: {
107
+ click: function () {
108
+ var point = this,
109
+ options = point.options;
110
+
111
+ fireEvent(
112
+ navigation,
113
+ 'showPopup',
114
+ {
115
+ point: point,
116
+ formType: 'annotation-toolbar',
117
+ options: {
118
+ langKey: 'flags',
119
+ type: 'flags',
120
+ title: [
121
+ options.title,
122
+ getFieldType(
123
+ options.title
124
+ )
125
+ ],
126
+ name: [
127
+ options.name,
128
+ getFieldType(
129
+ options.name
130
+ )
131
+ ]
132
+ },
133
+ onSubmit: function (updated) {
134
+ point.update(
135
+ navigation.fieldsToOptions(
136
+ updated.fields,
137
+ {}
138
+ )
139
+ );
140
+ }
141
+ }
142
+ );
143
+ }
144
+ }
145
+ }
146
+ };
147
+
148
+ if (!toolbar || !toolbar.guiEnabled) {
149
+ chart.addSeries(seriesOptions);
150
+ }
151
+
152
+ fireEvent(
153
+ navigation,
154
+ 'showPopup',
155
+ {
156
+ formType: 'flag',
157
+ // Enabled options:
158
+ options: {
159
+ langKey: 'flags',
160
+ type: 'flags',
161
+ title: ['A', getFieldType('A')],
162
+ name: ['Flag A', getFieldType('Flag A')]
163
+ },
164
+ // Callback on submit:
165
+ onSubmit: function (data) {
166
+ navigation.fieldsToOptions(
167
+ data.fields,
168
+ seriesOptions.data[0]
169
+ );
170
+ chart.addSeries(seriesOptions);
171
+ }
172
+ }
173
+ );
174
+ };
175
+ };
176
+
177
+ bindingsUtils.manageIndicators = function (data) {
178
+ var navigation = this,
179
+ chart = navigation.chart,
180
+ seriesConfig = {
181
+ linkedTo: data.linkedTo,
182
+ type: data.type
183
+ },
184
+ indicatorsWithVolume = [
185
+ 'ad',
186
+ 'cmf',
187
+ 'mfi',
188
+ 'vbp',
189
+ 'vwap'
190
+ ],
191
+ indicatorsWithAxes = [
192
+ 'ad',
193
+ 'atr',
194
+ 'cci',
195
+ 'cmf',
196
+ 'macd',
197
+ 'mfi',
198
+ 'roc',
199
+ 'rsi',
200
+ 'vwap',
201
+ 'ao',
202
+ 'aroon',
203
+ 'aroonoscillator',
204
+ 'trix',
205
+ 'apo',
206
+ 'dpo',
207
+ 'ppo',
208
+ 'natr',
209
+ 'williamsr',
210
+ 'linearRegression',
211
+ 'linearRegressionSlope',
212
+ 'linearRegressionIntercept',
213
+ 'linearRegressionAngle'
214
+ ],
215
+ yAxis,
216
+ series;
217
+
218
+ if (data.actionType === 'edit') {
219
+ navigation.fieldsToOptions(data.fields, seriesConfig);
220
+ series = chart.get(data.seriesId);
221
+
222
+ if (series) {
223
+ series.update(seriesConfig, false);
224
+ }
225
+ } else if (data.actionType === 'remove') {
226
+ series = chart.get(data.seriesId);
227
+ if (series) {
228
+ yAxis = series.yAxis;
229
+
230
+ if (series.linkedSeries) {
231
+ series.linkedSeries.forEach(function (linkedSeries) {
232
+ linkedSeries.remove(false);
233
+ });
234
+ }
235
+
236
+ series.remove(false);
237
+
238
+ if (indicatorsWithAxes.indexOf(series.type) >= 0) {
239
+ yAxis.remove(false);
240
+ navigation.resizeYAxes();
241
+ }
242
+ }
243
+ } else {
244
+ seriesConfig.id = H.uniqueKey();
245
+ navigation.fieldsToOptions(data.fields, seriesConfig);
246
+
247
+ if (indicatorsWithAxes.indexOf(data.type) >= 0) {
248
+ yAxis = chart.addAxis({
249
+ id: H.uniqueKey(),
250
+ offset: 0,
251
+ opposite: true,
252
+ title: {
253
+ text: ''
254
+ },
255
+ tickPixelInterval: 40,
256
+ showLastLabel: false,
257
+ labels: {
258
+ align: 'left',
259
+ y: -2
260
+ }
261
+ }, false, false);
262
+ seriesConfig.yAxis = yAxis.options.id;
263
+ navigation.resizeYAxes();
264
+ }
265
+
266
+ if (indicatorsWithVolume.indexOf(data.type) >= 0) {
267
+ seriesConfig.params.volumeSeriesID = chart.series.filter(
268
+ function (series) {
269
+ return series.options.type === 'column';
270
+ }
271
+ )[0].options.id;
272
+ }
273
+
274
+ chart.addSeries(seriesConfig, false);
275
+ }
276
+
277
+ fireEvent(
278
+ navigation,
279
+ 'deselectButton',
280
+ {
281
+ button: navigation.selectedButtonElement
282
+ }
283
+ );
284
+
285
+ chart.redraw();
286
+ };
287
+
288
+ /**
289
+ * Update height for an annotation. Height is calculated as a difference
290
+ * between last point in `typeOptions` and current position. It's a value,
291
+ * not pixels height.
292
+ *
293
+ * @private
294
+ * @function bindingsUtils.updateHeight
295
+ *
296
+ * @param {global.Event} e
297
+ * normalized browser event
298
+ *
299
+ * @param {Highcharts.Annotation} annotation
300
+ * Annotation to be updated
301
+ */
302
+ bindingsUtils.updateHeight = function (e, annotation) {
303
+ annotation.update({
304
+ typeOptions: {
305
+ height: this.chart.yAxis[0].toValue(e.chartY) -
306
+ annotation.options.typeOptions.points[1].y
307
+ }
308
+ });
309
+ };
310
+
311
+ // @todo
312
+ // Consider using getHoverData(), but always kdTree (columns?)
313
+ bindingsUtils.attractToPoint = function (e, chart) {
314
+ var x = chart.xAxis[0].toValue(e.chartX),
315
+ y = chart.yAxis[0].toValue(e.chartY),
316
+ distX = Number.MAX_VALUE,
317
+ closestPoint;
318
+
319
+ chart.series.forEach(function (series) {
320
+ series.points.forEach(function (point) {
321
+ if (point && distX > Math.abs(point.x - x)) {
322
+ distX = Math.abs(point.x - x);
323
+ closestPoint = point;
324
+ }
325
+ });
326
+ });
327
+
328
+ return {
329
+ x: closestPoint.x,
330
+ y: closestPoint.y,
331
+ below: y < closestPoint.y,
332
+ series: closestPoint.series,
333
+ xAxis: closestPoint.series.xAxis.index || 0,
334
+ yAxis: closestPoint.series.yAxis.index || 0
335
+ };
336
+ };
337
+
338
+ /**
339
+ * Shorthand to check if given yAxis comes from navigator.
340
+ *
341
+ * @private
342
+ * @function bindingsUtils.isNotNavigatorYAxis
343
+ *
344
+ * @param {Highcharts.Axis} axis
345
+ * Axis
346
+ *
347
+ * @return {boolean}
348
+ */
349
+ bindingsUtils.isNotNavigatorYAxis = function (axis) {
350
+ return axis.userOptions.className !== PREFIX + 'navigator-yaxis';
351
+ };
352
+ /**
353
+ * Update each point after specified index, most of the annotations use
354
+ * this. For example crooked line: logic behind updating each point is the
355
+ * same, only index changes when adding an annotation.
356
+ *
357
+ * Example: NavigationBindings.utils.updateNthPoint(1) - will generate
358
+ * function that updates all consecutive points except point with index=0.
359
+ *
360
+ * @private
361
+ * @function bindingsUtils.updateNthPoint
362
+ *
363
+ * @param {number} startIndex
364
+ * Index from each point should udpated
365
+ *
366
+ * @return {Function}
367
+ * Callback to be used in steps array
368
+ */
369
+ bindingsUtils.updateNthPoint = function (startIndex) {
370
+ return function (e, annotation) {
371
+ var options = annotation.options.typeOptions,
372
+ x = this.chart.xAxis[0].toValue(e.chartX),
373
+ y = this.chart.yAxis[0].toValue(e.chartY);
374
+
375
+ options.points.forEach(function (point, index) {
376
+ if (index >= startIndex) {
377
+ point.x = x;
378
+ point.y = y;
379
+ }
380
+ });
381
+
382
+ annotation.update({
383
+ typeOptions: {
384
+ points: options.points
385
+ }
386
+ });
387
+ };
388
+ };
389
+
390
+ // Extends NavigationBindigs to support indicators and resizers:
391
+ extend(H.NavigationBindings.prototype, {
392
+ /**
393
+ * Get current positions for all yAxes. If new axis does not have position,
394
+ * returned is default height and last available top place.
395
+ *
396
+ * @private
397
+ * @function Highcharts.NavigationBindings#getYAxisPositions
398
+ *
399
+ * @param {Array<Highcharts.Axis>} yAxes
400
+ * Array of yAxes available in the chart.
401
+ *
402
+ * @param {number} plotHeight
403
+ * Available height in the chart.
404
+ *
405
+ * @param {number} defaultHeight
406
+ * Default height in percents.
407
+ *
408
+ * @return {Array}
409
+ * An array of calculated positions in percentages.
410
+ * Format: `{top: Number, height: Number}`
411
+ */
412
+ getYAxisPositions: function (yAxes, plotHeight, defaultHeight) {
413
+ var positions,
414
+ allAxesHeight = 0;
415
+
416
+ function isPercentage(prop) {
417
+ return defined(prop) && !isNumber(prop) && prop.match('%');
418
+ }
419
+
420
+ positions = yAxes.map(function (yAxis) {
421
+ var height = isPercentage(yAxis.options.height) ?
422
+ parseFloat(yAxis.options.height) / 100 :
423
+ yAxis.height / plotHeight,
424
+ top = isPercentage(yAxis.options.top) ?
425
+ parseFloat(yAxis.options.top) / 100 :
426
+ correctFloat(
427
+ yAxis.top - yAxis.chart.plotTop
428
+ ) / plotHeight;
429
+
430
+ // New yAxis does not contain "height" info yet
431
+ if (!isNumber(height)) {
432
+ height = defaultHeight / 100;
433
+ }
434
+
435
+ allAxesHeight = correctFloat(allAxesHeight + height);
436
+
437
+ return {
438
+ height: height * 100,
439
+ top: top * 100
440
+ };
441
+ });
442
+
443
+ positions.allAxesHeight = allAxesHeight;
444
+
445
+ return positions;
446
+ },
447
+
448
+ /**
449
+ * Get current resize options for each yAxis. Note that each resize is
450
+ * linked to the next axis, except the last one which shouldn't affect
451
+ * axes in the navigator. Because indicator can be removed with it's yAxis
452
+ * in the middle of yAxis array, we need to bind closest yAxes back.
453
+ *
454
+ * @private
455
+ * @function Highcharts.NavigationBindings#getYAxisResizers
456
+ *
457
+ * @param {Array<Highcharts.Axis>} yAxes
458
+ * Array of yAxes available in the chart
459
+ *
460
+ * @return {Array<object>}
461
+ * An array of resizer options.
462
+ * Format: `{enabled: Boolean, controlledAxis: { next: [String]}}`
463
+ */
464
+ getYAxisResizers: function (yAxes) {
465
+ var resizers = [];
466
+
467
+ yAxes.forEach(function (yAxis, index) {
468
+ var nextYAxis = yAxes[index + 1];
469
+
470
+ // We have next axis, bind them:
471
+ if (nextYAxis) {
472
+ resizers[index] = {
473
+ enabled: true,
474
+ controlledAxis: {
475
+ next: [
476
+ pick(
477
+ nextYAxis.options.id,
478
+ nextYAxis.options.index
479
+ )
480
+ ]
481
+ }
482
+ };
483
+ } else {
484
+ // Remove binding:
485
+ resizers[index] = {
486
+ enabled: false
487
+ };
488
+ }
489
+ });
490
+
491
+ return resizers;
492
+ },
493
+ /**
494
+ * Resize all yAxes (except navigator) to fit the plotting height. Method
495
+ * checks if new axis is added, then shrinks other main axis up to 5 panes.
496
+ * If added is more thatn 5 panes, it rescales all other axes to fit new
497
+ * yAxis.
498
+ *
499
+ * If axis is removed, and we have more than 5 panes, rescales all other
500
+ * axes. If chart has less than 5 panes, first pane receives all extra
501
+ * space.
502
+ *
503
+ * @private
504
+ * @function Highcharts.NavigationBindings#resizeYAxes
505
+ *
506
+ * @param {number} defaultHeight
507
+ * Default height for yAxis
508
+ */
509
+ resizeYAxes: function (defaultHeight) {
510
+ defaultHeight = defaultHeight || 20; // in %, but as a number
511
+ var chart = this.chart,
512
+ // Only non-navigator axes
513
+ yAxes = chart.yAxis.filter(this.utils.isNotNavigatorYAxis),
514
+ plotHeight = chart.plotHeight,
515
+ allAxesLength = yAxes.length,
516
+ // Gather current heights (in %)
517
+ positions = this.getYAxisPositions(
518
+ yAxes,
519
+ plotHeight,
520
+ defaultHeight
521
+ ),
522
+ resizers = this.getYAxisResizers(yAxes),
523
+ allAxesHeight = positions.allAxesHeight,
524
+ changedSpace = defaultHeight;
525
+
526
+ // More than 100%
527
+ if (allAxesHeight > 1) {
528
+ // Simple case, add new panes up to 5
529
+ if (allAxesLength < 6) {
530
+ // Added axis, decrease first pane's height:
531
+ positions[0].height = correctFloat(
532
+ positions[0].height - changedSpace
533
+ );
534
+ // And update all other "top" positions:
535
+ positions = this.recalculateYAxisPositions(
536
+ positions,
537
+ changedSpace
538
+ );
539
+ } else {
540
+ // We have more panes, rescale all others to gain some space,
541
+ // This is new height for upcoming yAxis:
542
+ defaultHeight = 100 / allAxesLength;
543
+ // This is how much we need to take from each other yAxis:
544
+ changedSpace = defaultHeight / (allAxesLength - 1);
545
+
546
+ // Now update all positions:
547
+ positions = this.recalculateYAxisPositions(
548
+ positions,
549
+ changedSpace,
550
+ true,
551
+ -1
552
+ );
553
+ }
554
+ // Set last position manually:
555
+ positions[allAxesLength - 1] = {
556
+ top: correctFloat(100 - defaultHeight),
557
+ height: defaultHeight
558
+ };
559
+
560
+ } else {
561
+ // Less than 100%
562
+ changedSpace = correctFloat(1 - allAxesHeight) * 100;
563
+ // Simple case, return first pane it's space:
564
+ if (allAxesLength < 5) {
565
+ positions[0].height = correctFloat(
566
+ positions[0].height + changedSpace
567
+ );
568
+
569
+ positions = this.recalculateYAxisPositions(
570
+ positions,
571
+ changedSpace
572
+ );
573
+ } else {
574
+ // There were more panes, return to each pane a bit of space:
575
+ changedSpace /= allAxesLength;
576
+ // Removed axis, add extra space to the first pane:
577
+ // And update all other positions:
578
+ positions = this.recalculateYAxisPositions(
579
+ positions,
580
+ changedSpace,
581
+ true,
582
+ 1
583
+ );
584
+ }
585
+ }
586
+
587
+ positions.forEach(function (position, index) {
588
+ // if (index === 0) debugger;
589
+ yAxes[index].update({
590
+ height: position.height + '%',
591
+ top: position.top + '%',
592
+ resize: resizers[index]
593
+ }, false);
594
+ });
595
+ },
596
+ /**
597
+ * Utility to modify calculated positions according to the remaining/needed
598
+ * space. Later, these positions are used in `yAxis.update({ top, height })`
599
+ *
600
+ * @private
601
+ * @function Highcharts.NavigationBindings#recalculateYAxisPositions
602
+ *
603
+ * @param {Array<object>} positions
604
+ * Default positions of all yAxes.
605
+ *
606
+ * @param {number} changedSpace
607
+ * How much space should be added or removed.
608
+ * @param {number} adder
609
+ * `-1` or `1`, to determine whether we should add or remove space.
610
+ *
611
+ * @param {boolean} modifyHeight
612
+ * Update only `top` or both `top` and `height`.
613
+ *
614
+ * @return {Array<object>}
615
+ * Modified positions,
616
+ */
617
+ recalculateYAxisPositions: function (
618
+ positions,
619
+ changedSpace,
620
+ modifyHeight,
621
+ adder
622
+ ) {
623
+ positions.forEach(function (position, index) {
624
+ var prevPosition = positions[index - 1];
625
+
626
+ position.top = !prevPosition ? 0 :
627
+ correctFloat(prevPosition.height + prevPosition.top);
628
+
629
+ if (modifyHeight) {
630
+ position.height = correctFloat(
631
+ position.height + adder * changedSpace
632
+ );
633
+ }
634
+ });
635
+
636
+ return positions;
637
+ }
638
+ });
639
+
640
+ /**
641
+ * @type {Highcharts.Dictionary<Highcharts.StockToolsBindingsObject>|*}
642
+ * @since 7.0.0
643
+ * @optionparent navigation.bindings
644
+ */
645
+ var stockToolsBindings = {
646
+ // Line type annotations:
647
+ /**
648
+ * A segment annotation bindings. Includes `start` and one event in `steps`
649
+ * array.
650
+ *
651
+ * @type {Highcharts.StockToolsBindingsObject}
652
+ * @product highstock
653
+ * @default {"className": "highcharts-segment", "start": function() {}, "steps": [function() {}]}
654
+ */
655
+ segment: {
656
+ /** @ignore */
657
+ className: 'highcharts-segment',
658
+ /** @ignore */
659
+ start: function (e) {
660
+ var x = this.chart.xAxis[0].toValue(e.chartX),
661
+ y = this.chart.yAxis[0].toValue(e.chartY);
662
+
663
+ return this.chart.addAnnotation({
664
+ langKey: 'segment',
665
+ type: 'crookedLine',
666
+ typeOptions: {
667
+ points: [{
668
+ x: x,
669
+ y: y
670
+ }, {
671
+ x: x,
672
+ y: y
673
+ }]
674
+ }
675
+ });
676
+ },
677
+ /** @ignore */
678
+ steps: [
679
+ bindingsUtils.updateNthPoint(1)
680
+ ]
681
+ },
682
+ /**
683
+ * A segment with an arrow annotation bindings. Includes `start` and one
684
+ * event in `steps` array.
685
+ *
686
+ * @type {Highcharts.StockToolsBindingsObject}
687
+ * @product highstock
688
+ * @default {"className": "highcharts-arrow-segment", "start": function() {}, "steps": [function() {}]}
689
+ */
690
+ arrowSegment: {
691
+ /** @ignore */
692
+ className: 'highcharts-arrow-segment',
693
+ /** @ignore */
694
+ start: function (e) {
695
+ var x = this.chart.xAxis[0].toValue(e.chartX),
696
+ y = this.chart.yAxis[0].toValue(e.chartY);
697
+
698
+ return this.chart.addAnnotation({
699
+ langKey: 'arrowSegment',
700
+ type: 'crookedLine',
701
+ typeOptions: {
702
+ line: {
703
+ markerEnd: 'arrow'
704
+ },
705
+ points: [{
706
+ x: x,
707
+ y: y
708
+ }, {
709
+ x: x,
710
+ y: y
711
+ }]
712
+ }
713
+ });
714
+ },
715
+ /** @ignore */
716
+ steps: [
717
+ bindingsUtils.updateNthPoint(1)
718
+ ]
719
+ },
720
+ /**
721
+ * A ray annotation bindings. Includes `start` and one event in `steps`
722
+ * array.
723
+ *
724
+ * @type {Highcharts.StockToolsBindingsObject}
725
+ * @product highstock
726
+ * @default {"className": "highcharts-ray", "start": function() {}, "steps": [function() {}]}
727
+ */
728
+ ray: {
729
+ /** @ignore */
730
+ className: 'highcharts-ray',
731
+ /** @ignore */
732
+ start: function (e) {
733
+ var x = this.chart.xAxis[0].toValue(e.chartX),
734
+ y = this.chart.yAxis[0].toValue(e.chartY);
735
+
736
+ return this.chart.addAnnotation({
737
+ langKey: 'ray',
738
+ type: 'infinityLine',
739
+ typeOptions: {
740
+ type: 'ray',
741
+ points: [{
742
+ x: x,
743
+ y: y
744
+ }, {
745
+ x: x,
746
+ y: y
747
+ }]
748
+ }
749
+ });
750
+ },
751
+ /** @ignore */
752
+ steps: [
753
+ bindingsUtils.updateNthPoint(1)
754
+ ]
755
+ },
756
+ /**
757
+ * A ray with an arrow annotation bindings. Includes `start` and one event
758
+ * in `steps` array.
759
+ *
760
+ * @type {Highcharts.StockToolsBindingsObject}
761
+ * @product highstock
762
+ * @default {"className": "highcharts-arrow-ray", "start": function() {}, "steps": [function() {}]}
763
+ */
764
+ arrowRay: {
765
+ /** @ignore */
766
+ className: 'highcharts-arrow-ray',
767
+ /** @ignore */
768
+ start: function (e) {
769
+ var x = this.chart.xAxis[0].toValue(e.chartX),
770
+ y = this.chart.yAxis[0].toValue(e.chartY);
771
+
772
+ return this.chart.addAnnotation({
773
+ langKey: 'arrowRay',
774
+ type: 'infinityLine',
775
+ typeOptions: {
776
+ type: 'ray',
777
+ line: {
778
+ markerEnd: 'arrow'
779
+ },
780
+ points: [{
781
+ x: x,
782
+ y: y
783
+ }, {
784
+ x: x,
785
+ y: y
786
+ }]
787
+ }
788
+ });
789
+ },
790
+ /** @ignore */
791
+ steps: [
792
+ bindingsUtils.updateNthPoint(1)
793
+ ]
794
+ },
795
+ /**
796
+ * A line annotation. Includes `start` and one event in `steps` array.
797
+ *
798
+ * @type {Highcharts.StockToolsBindingsObject}
799
+ * @product highstock
800
+ * @default {"className": "highcharts-infinity-line", "start": function() {}, "steps": [function() {}]}
801
+ */
802
+ infinityLine: {
803
+ /** @ignore */
804
+ className: 'highcharts-infinity-line',
805
+ /** @ignore */
806
+ start: function (e) {
807
+ var x = this.chart.xAxis[0].toValue(e.chartX),
808
+ y = this.chart.yAxis[0].toValue(e.chartY);
809
+
810
+ return this.chart.addAnnotation({
811
+ langKey: 'infinityLine',
812
+ type: 'infinityLine',
813
+ typeOptions: {
814
+ type: 'line',
815
+ points: [{
816
+ x: x,
817
+ y: y
818
+ }, {
819
+ x: x,
820
+ y: y
821
+ }]
822
+ }
823
+ });
824
+ },
825
+ /** @ignore */
826
+ steps: [
827
+ bindingsUtils.updateNthPoint(1)
828
+ ]
829
+ },
830
+ /**
831
+ * A line with arrow annotation. Includes `start` and one event in `steps`
832
+ * array.
833
+ *
834
+ * @type {Highcharts.StockToolsBindingsObject}
835
+ * @product highstock
836
+ * @default {"className": "highcharts-arrow-infinity-line", "start": function() {}, "steps": [function() {}]}
837
+ */
838
+ arrowInfinityLine: {
839
+ /** @ignore */
840
+ className: 'highcharts-arrow-infinity-line',
841
+ /** @ignore */
842
+ start: function (e) {
843
+ var x = this.chart.xAxis[0].toValue(e.chartX),
844
+ y = this.chart.yAxis[0].toValue(e.chartY);
845
+
846
+ return this.chart.addAnnotation({
847
+ langKey: 'arrowInfinityLine',
848
+ type: 'infinityLine',
849
+ typeOptions: {
850
+ type: 'line',
851
+ line: {
852
+ markerEnd: 'arrow'
853
+ },
854
+ points: [{
855
+ x: x,
856
+ y: y
857
+ }, {
858
+ x: x,
859
+ y: y
860
+ }]
861
+ }
862
+ });
863
+ },
864
+ /** @ignore */
865
+ steps: [
866
+ bindingsUtils.updateNthPoint(1)
867
+ ]
868
+ },
869
+ /**
870
+ * A horizontal line annotation. Includes `start` event.
871
+ *
872
+ * @type {Highcharts.StockToolsBindingsObject}
873
+ * @product highstock
874
+ * @default {"className": "highcharts-horizontal-line", "start": function() {}}
875
+ */
876
+ horizontalLine: {
877
+ /** @ignore */
878
+ className: 'highcharts-horizontal-line',
879
+ /** @ignore */
880
+ start: function (e) {
881
+ var x = this.chart.xAxis[0].toValue(e.chartX),
882
+ y = this.chart.yAxis[0].toValue(e.chartY);
883
+
884
+ this.chart.addAnnotation({
885
+ langKey: 'horizontalLine',
886
+ type: 'infinityLine',
887
+ typeOptions: {
888
+ type: 'horizontalLine',
889
+ points: [{
890
+ x: x,
891
+ y: y
892
+ }]
893
+ }
894
+ });
895
+ }
896
+ },
897
+ /**
898
+ * A vertical line annotation. Includes `start` event.
899
+ *
900
+ * @type {Highcharts.StockToolsBindingsObject}
901
+ * @product highstock
902
+ * @default {"className": "highcharts-vertical-line", "start": function() {}}
903
+ */
904
+ verticalLine: {
905
+ /** @ignore */
906
+ className: 'highcharts-vertical-line',
907
+ /** @ignore */
908
+ start: function (e) {
909
+ var x = this.chart.xAxis[0].toValue(e.chartX),
910
+ y = this.chart.yAxis[0].toValue(e.chartY);
911
+
912
+ this.chart.addAnnotation({
913
+ langKey: 'verticalLine',
914
+ type: 'infinityLine',
915
+ typeOptions: {
916
+ type: 'verticalLine',
917
+ points: [{
918
+ x: x,
919
+ y: y
920
+ }]
921
+ }
922
+ });
923
+ }
924
+ },
925
+ /**
926
+ * Crooked line (three points) annotation bindings. Includes `start` and two
927
+ * events in `steps` (for second and third points in crooked line) array.
928
+ *
929
+ * @type {Highcharts.StockToolsBindingsObject}
930
+ * @product highstock
931
+ * @default {"className": "highcharts-crooked3", "start": function() {}, "steps": [function() {}, function() {}]}
932
+ */
933
+ // Crooked Line type annotations:
934
+ crooked3: {
935
+ /** @ignore */
936
+ className: 'highcharts-crooked3',
937
+ /** @ignore */
938
+ start: function (e) {
939
+ var x = this.chart.xAxis[0].toValue(e.chartX),
940
+ y = this.chart.yAxis[0].toValue(e.chartY);
941
+
942
+ return this.chart.addAnnotation({
943
+ langKey: 'crooked3',
944
+ type: 'crookedLine',
945
+ typeOptions: {
946
+ points: [{
947
+ x: x,
948
+ y: y
949
+ }, {
950
+ x: x,
951
+ y: y
952
+ }, {
953
+ x: x,
954
+ y: y
955
+ }]
956
+ }
957
+ });
958
+ },
959
+ /** @ignore */
960
+ steps: [
961
+ bindingsUtils.updateNthPoint(1),
962
+ bindingsUtils.updateNthPoint(2)
963
+ ]
964
+ },
965
+ /**
966
+ * Crooked line (five points) annotation bindings. Includes `start` and four
967
+ * events in `steps` (for all consequent points in crooked line) array.
968
+ *
969
+ * @type {Highcharts.StockToolsBindingsObject}
970
+ * @product highstock
971
+ * @default {"className": "highcharts-crooked3", "start": function() {}, "steps": [function() {}, function() {}, function() {}, function() {}]}
972
+ */
973
+ crooked5: {
974
+ /** @ignore */
975
+ className: 'highcharts-crooked5',
976
+ /** @ignore */
977
+ start: function (e) {
978
+ var x = this.chart.xAxis[0].toValue(e.chartX),
979
+ y = this.chart.yAxis[0].toValue(e.chartY);
980
+
981
+ return this.chart.addAnnotation({
982
+ langKey: 'crookedLine',
983
+ type: 'crookedLine',
984
+ typeOptions: {
985
+ points: [{
986
+ x: x,
987
+ y: y
988
+ }, {
989
+ x: x,
990
+ y: y
991
+ }, {
992
+ x: x,
993
+ y: y
994
+ }, {
995
+ x: x,
996
+ y: y
997
+ }, {
998
+ x: x,
999
+ y: y
1000
+ }]
1001
+ }
1002
+ });
1003
+ },
1004
+ /** @ignore */
1005
+ steps: [
1006
+ bindingsUtils.updateNthPoint(1),
1007
+ bindingsUtils.updateNthPoint(2),
1008
+ bindingsUtils.updateNthPoint(3),
1009
+ bindingsUtils.updateNthPoint(4)
1010
+ ]
1011
+ },
1012
+ /**
1013
+ * Elliott wave (three points) annotation bindings. Includes `start` and two
1014
+ * events in `steps` (for second and third points) array.
1015
+ *
1016
+ * @type {Highcharts.StockToolsBindingsObject}
1017
+ * @product highstock
1018
+ * @default {"className": "highcharts-elliott3", "start": function() {}, "steps": [function() {}, function() {}]}
1019
+ */
1020
+ elliott3: {
1021
+ /** @ignore */
1022
+ className: 'highcharts-elliott3',
1023
+ /** @ignore */
1024
+ start: function (e) {
1025
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1026
+ y = this.chart.yAxis[0].toValue(e.chartY);
1027
+
1028
+ return this.chart.addAnnotation({
1029
+ langKey: 'elliott3',
1030
+ type: 'elliottWave',
1031
+ typeOptions: {
1032
+ points: [{
1033
+ x: x,
1034
+ y: y
1035
+ }, {
1036
+ x: x,
1037
+ y: y
1038
+ }, {
1039
+ x: x,
1040
+ y: y
1041
+ }]
1042
+ },
1043
+ labelOptions: {
1044
+ style: {
1045
+ color: '#666666'
1046
+ }
1047
+ }
1048
+ });
1049
+ },
1050
+ /** @ignore */
1051
+ steps: [
1052
+ bindingsUtils.updateNthPoint(1),
1053
+ bindingsUtils.updateNthPoint(2)
1054
+ ]
1055
+ },
1056
+ /**
1057
+ * Elliott wave (five points) annotation bindings. Includes `start` and four
1058
+ * event in `steps` (for all consequent points in Elliott wave) array.
1059
+ *
1060
+ * @type {Highcharts.StockToolsBindingsObject}
1061
+ * @product highstock
1062
+ * @default {"className": "highcharts-elliott3", "start": function() {}, "steps": [function() {}, function() {}, function() {}, function() {}]}
1063
+ */
1064
+ elliott5: {
1065
+ /** @ignore */
1066
+ className: 'highcharts-elliott5',
1067
+ /** @ignore */
1068
+ start: function (e) {
1069
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1070
+ y = this.chart.yAxis[0].toValue(e.chartY);
1071
+
1072
+ return this.chart.addAnnotation({
1073
+ langKey: 'elliott5',
1074
+ type: 'elliottWave',
1075
+ typeOptions: {
1076
+ points: [{
1077
+ x: x,
1078
+ y: y
1079
+ }, {
1080
+ x: x,
1081
+ y: y
1082
+ }, {
1083
+ x: x,
1084
+ y: y
1085
+ }, {
1086
+ x: x,
1087
+ y: y
1088
+ }, {
1089
+ x: x,
1090
+ y: y
1091
+ }]
1092
+ },
1093
+ labelOptions: {
1094
+ style: {
1095
+ color: '#666666'
1096
+ }
1097
+ }
1098
+ });
1099
+ },
1100
+ /** @ignore */
1101
+ steps: [
1102
+ bindingsUtils.updateNthPoint(1),
1103
+ bindingsUtils.updateNthPoint(2),
1104
+ bindingsUtils.updateNthPoint(3),
1105
+ bindingsUtils.updateNthPoint(4)
1106
+ ]
1107
+ },
1108
+ /**
1109
+ * A measure (x-dimension) annotation bindings. Includes `start` and one
1110
+ * event in `steps` array.
1111
+ *
1112
+ * @type {Highcharts.StockToolsBindingsObject}
1113
+ * @product highstock
1114
+ * @default {"className": "highcharts-measure-x", "start": function() {}, "steps": [function() {}]}
1115
+ */
1116
+ measureX: {
1117
+ /** @ignore */
1118
+ className: 'highcharts-measure-x',
1119
+ /** @ignore */
1120
+ start: function (e) {
1121
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1122
+ y = this.chart.yAxis[0].toValue(e.chartY),
1123
+ options = {
1124
+ langKey: 'measure',
1125
+ type: 'measure',
1126
+ typeOptions: {
1127
+ selectType: 'x',
1128
+ point: {
1129
+ x: x,
1130
+ y: y,
1131
+ xAxis: 0,
1132
+ yAxis: 0
1133
+ },
1134
+ crosshairX: {
1135
+ strokeWidth: 1,
1136
+ stroke: '#000000'
1137
+ },
1138
+ crosshairY: {
1139
+ enabled: false,
1140
+ strokeWidth: 0,
1141
+ stroke: '#000000'
1142
+ },
1143
+ background: {
1144
+ width: 0,
1145
+ height: 0,
1146
+ strokeWidth: 0,
1147
+ stroke: '#ffffff'
1148
+ }
1149
+ },
1150
+ labelOptions: {
1151
+ style: {
1152
+ color: '#666666'
1153
+ }
1154
+ }
1155
+ };
1156
+
1157
+ return this.chart.addAnnotation(options);
1158
+ },
1159
+ /** @ignore */
1160
+ steps: [
1161
+ bindingsUtils.updateRectSize
1162
+ ]
1163
+ },
1164
+ /**
1165
+ * A measure (y-dimension) annotation bindings. Includes `start` and one
1166
+ * event in `steps` array.
1167
+ *
1168
+ * @type {Highcharts.StockToolsBindingsObject}
1169
+ * @product highstock
1170
+ * @default {"className": "highcharts-measure-y", "start": function() {}, "steps": [function() {}]}
1171
+ */
1172
+ measureY: {
1173
+ /** @ignore */
1174
+ className: 'highcharts-measure-y',
1175
+ /** @ignore */
1176
+ start: function (e) {
1177
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1178
+ y = this.chart.yAxis[0].toValue(e.chartY),
1179
+ options = {
1180
+ langKey: 'measure',
1181
+ type: 'measure',
1182
+ typeOptions: {
1183
+ selectType: 'y',
1184
+ point: {
1185
+ x: x,
1186
+ y: y,
1187
+ xAxis: 0,
1188
+ yAxis: 0
1189
+ },
1190
+ crosshairX: {
1191
+ enabled: false,
1192
+ strokeWidth: 0,
1193
+ stroke: '#000000'
1194
+ },
1195
+ crosshairY: {
1196
+ strokeWidth: 1,
1197
+ stroke: '#000000'
1198
+ },
1199
+ background: {
1200
+ width: 0,
1201
+ height: 0,
1202
+ strokeWidth: 0,
1203
+ stroke: '#ffffff'
1204
+ }
1205
+ },
1206
+ labelOptions: {
1207
+ style: {
1208
+ color: '#666666'
1209
+ }
1210
+ }
1211
+ };
1212
+
1213
+ return this.chart.addAnnotation(options);
1214
+ },
1215
+ /** @ignore */
1216
+ steps: [
1217
+ bindingsUtils.updateRectSize
1218
+ ]
1219
+ },
1220
+ /**
1221
+ * A measure (xy-dimension) annotation bindings. Includes `start` and one
1222
+ * event in `steps` array.
1223
+ *
1224
+ * @type {Highcharts.StockToolsBindingsObject}
1225
+ * @product highstock
1226
+ * @default {"className": "highcharts-measure-xy", "start": function() {}, "steps": [function() {}]}
1227
+ */
1228
+ measureXY: {
1229
+ /** @ignore */
1230
+ className: 'highcharts-measure-xy',
1231
+ /** @ignore */
1232
+ start: function (e) {
1233
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1234
+ y = this.chart.yAxis[0].toValue(e.chartY),
1235
+ options = {
1236
+ langKey: 'measure',
1237
+ type: 'measure',
1238
+ typeOptions: {
1239
+ selectType: 'xy',
1240
+ point: {
1241
+ x: x,
1242
+ y: y,
1243
+ xAxis: 0,
1244
+ yAxis: 0
1245
+ },
1246
+ background: {
1247
+ width: 0,
1248
+ height: 0,
1249
+ strokeWidth: 0,
1250
+ stroke: '#000000'
1251
+ },
1252
+ crosshairX: {
1253
+ strokeWidth: 1,
1254
+ stroke: '#000000'
1255
+ },
1256
+ crosshairY: {
1257
+ strokeWidth: 1,
1258
+ stroke: '#000000'
1259
+ }
1260
+ },
1261
+ labelOptions: {
1262
+ style: {
1263
+ color: '#666666'
1264
+ }
1265
+ }
1266
+ };
1267
+
1268
+ return this.chart.addAnnotation(options);
1269
+ },
1270
+ /** @ignore */
1271
+ steps: [
1272
+ bindingsUtils.updateRectSize
1273
+ ]
1274
+ },
1275
+ // Advanced type annotations:
1276
+ /**
1277
+ * A fibonacci annotation bindings. Includes `start` and two events in
1278
+ * `steps` array (updates second point, then height).
1279
+ *
1280
+ * @type {Highcharts.StockToolsBindingsObject}
1281
+ * @product highstock
1282
+ * @default {"className": "highcharts-fibonacci", "start": function() {}, "steps": [function() {}, function() {}]}
1283
+ */
1284
+ fibonacci: {
1285
+ /** @ignore */
1286
+ className: 'highcharts-fibonacci',
1287
+ /** @ignore */
1288
+ start: function (e) {
1289
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1290
+ y = this.chart.yAxis[0].toValue(e.chartY);
1291
+
1292
+ return this.chart.addAnnotation({
1293
+ langKey: 'fibonacci',
1294
+ type: 'fibonacci',
1295
+ typeOptions: {
1296
+ points: [{
1297
+ x: x,
1298
+ y: y
1299
+ }, {
1300
+ x: x,
1301
+ y: y
1302
+ }]
1303
+ },
1304
+ labelOptions: {
1305
+ style: {
1306
+ color: '#666666'
1307
+ }
1308
+ }
1309
+ });
1310
+ },
1311
+ /** @ignore */
1312
+ steps: [
1313
+ bindingsUtils.updateNthPoint(1),
1314
+ bindingsUtils.updateHeight
1315
+ ]
1316
+ },
1317
+ /**
1318
+ * A parallel channel (tunnel) annotation bindings. Includes `start` and
1319
+ * two events in `steps` array (updates second point, then height).
1320
+ *
1321
+ * @type {Highcharts.StockToolsBindingsObject}
1322
+ * @product highstock
1323
+ * @default {"className": "highcharts-parallel-channel", "start": function() {}, "steps": [function() {}, function() {}]}
1324
+ */
1325
+ parallelChannel: {
1326
+ /** @ignore */
1327
+ className: 'highcharts-parallel-channel',
1328
+ /** @ignore */
1329
+ start: function (e) {
1330
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1331
+ y = this.chart.yAxis[0].toValue(e.chartY);
1332
+
1333
+ return this.chart.addAnnotation({
1334
+ langKey: 'parallelChannel',
1335
+ type: 'tunnel',
1336
+ typeOptions: {
1337
+ points: [{
1338
+ x: x,
1339
+ y: y
1340
+ }, {
1341
+ x: x,
1342
+ y: y
1343
+ }]
1344
+ }
1345
+ });
1346
+ },
1347
+ /** @ignore */
1348
+ steps: [
1349
+ bindingsUtils.updateNthPoint(1),
1350
+ bindingsUtils.updateHeight
1351
+ ]
1352
+ },
1353
+ /**
1354
+ * An Andrew's pitchfork annotation bindings. Includes `start` and two
1355
+ * events in `steps` array (sets second and third control points).
1356
+ *
1357
+ * @type {Highcharts.StockToolsBindingsObject}
1358
+ * @product highstock
1359
+ * @default {"className": "highcharts-pitchfork", "start": function() {}, "steps": [function() {}, function() {}]}
1360
+ */
1361
+ pitchfork: {
1362
+ /** @ignore */
1363
+ className: 'highcharts-pitchfork',
1364
+ /** @ignore */
1365
+ start: function (e) {
1366
+ var x = this.chart.xAxis[0].toValue(e.chartX),
1367
+ y = this.chart.yAxis[0].toValue(e.chartY);
1368
+
1369
+ return this.chart.addAnnotation({
1370
+ langKey: 'pitchfork',
1371
+ type: 'pitchfork',
1372
+ typeOptions: {
1373
+ points: [{
1374
+ x: x,
1375
+ y: y,
1376
+ controlPoint: {
1377
+ style: {
1378
+ fill: 'red'
1379
+ }
1380
+ }
1381
+ }, {
1382
+ x: x,
1383
+ y: y
1384
+ }, {
1385
+ x: x,
1386
+ y: y
1387
+ }],
1388
+ innerBackground: {
1389
+ fill: 'rgba(100, 170, 255, 0.8)'
1390
+ }
1391
+ },
1392
+ shapeOptions: {
1393
+ strokeWidth: 2
1394
+ }
1395
+ });
1396
+ },
1397
+ /** @ignore */
1398
+ steps: [
1399
+ bindingsUtils.updateNthPoint(1),
1400
+ bindingsUtils.updateNthPoint(2)
1401
+ ]
1402
+ },
1403
+ // Labels with arrow and auto increments
1404
+ /**
1405
+ * A vertical counter annotation bindings. Includes `start` event. On click,
1406
+ * finds the closest point and marks it with a numeric annotation -
1407
+ * incrementing counter on each add.
1408
+ *
1409
+ * @type {Highcharts.StockToolsBindingsObject}
1410
+ * @product highstock
1411
+ * @default {"className": "highcharts-vertical-counter", "start": function() {}}
1412
+ */
1413
+ verticalCounter: {
1414
+ /** @ignore */
1415
+ className: 'highcharts-vertical-counter',
1416
+ /** @ignore */
1417
+ start: function (e) {
1418
+ var closestPoint = bindingsUtils.attractToPoint(e, this.chart),
1419
+ annotation;
1420
+
1421
+ if (!defined(this.verticalCounter)) {
1422
+ this.verticalCounter = 0;
1423
+ }
1424
+
1425
+ annotation = this.chart.addAnnotation({
1426
+ langKey: 'verticalCounter',
1427
+ type: 'verticalLine',
1428
+ typeOptions: {
1429
+ point: {
1430
+ x: closestPoint.x,
1431
+ y: closestPoint.y,
1432
+ xAxis: closestPoint.xAxis,
1433
+ yAxis: closestPoint.yAxis
1434
+ },
1435
+ label: {
1436
+ offset: closestPoint.below ? 40 : -40,
1437
+ text: this.verticalCounter.toString()
1438
+ }
1439
+ },
1440
+ labelOptions: {
1441
+ style: {
1442
+ color: '#666666',
1443
+ fontSize: '11px'
1444
+ }
1445
+ },
1446
+ shapeOptions: {
1447
+ stroke: 'rgba(0, 0, 0, 0.75)',
1448
+ strokeWidth: 1
1449
+ }
1450
+ });
1451
+
1452
+ this.verticalCounter++;
1453
+
1454
+ annotation.options.events.click.call(annotation, {});
1455
+ }
1456
+ },
1457
+ /**
1458
+ * A vertical arrow annotation bindings. Includes `start` event. On click,
1459
+ * finds the closest point and marks it with an arrow and a label with
1460
+ * value.
1461
+ *
1462
+ * @type {Highcharts.StockToolsBindingsObject}
1463
+ * @product highstock
1464
+ * @default {"className": "highcharts-vertical-label", "start": function() {}}
1465
+ */
1466
+ verticalLabel: {
1467
+ /** @ignore */
1468
+ className: 'highcharts-vertical-label',
1469
+ /** @ignore */
1470
+ start: function (e) {
1471
+ var closestPoint = bindingsUtils.attractToPoint(e, this.chart),
1472
+ annotation;
1473
+
1474
+ annotation = this.chart.addAnnotation({
1475
+ langKey: 'verticalLabel',
1476
+ type: 'verticalLine',
1477
+ typeOptions: {
1478
+ point: {
1479
+ x: closestPoint.x,
1480
+ y: closestPoint.y,
1481
+ xAxis: closestPoint.xAxis,
1482
+ yAxis: closestPoint.yAxis
1483
+ },
1484
+ label: {
1485
+ offset: closestPoint.below ? 40 : -40
1486
+ }
1487
+ },
1488
+ labelOptions: {
1489
+ style: {
1490
+ color: '#666666',
1491
+ fontSize: '11px'
1492
+ }
1493
+ },
1494
+ shapeOptions: {
1495
+ stroke: 'rgba(0, 0, 0, 0.75)',
1496
+ strokeWidth: 1
1497
+ }
1498
+ });
1499
+
1500
+ annotation.options.events.click.call(annotation, {});
1501
+ }
1502
+ },
1503
+ /**
1504
+ * A vertical arrow annotation bindings. Includes `start` event. On click,
1505
+ * finds the closest point and marks it with an arrow. Green arrow when
1506
+ * pointing from above, red when pointing from below the point.
1507
+ *
1508
+ * @type {Highcharts.StockToolsBindingsObject}
1509
+ * @product highstock
1510
+ * @default {"className": "highcharts-vertical-arrow", "start": function() {}}
1511
+ */
1512
+ verticalArrow: {
1513
+ /** @ignore */
1514
+ className: 'highcharts-vertical-arrow',
1515
+ /** @ignore */
1516
+ start: function (e) {
1517
+ var closestPoint = bindingsUtils.attractToPoint(e, this.chart),
1518
+ annotation;
1519
+
1520
+ annotation = this.chart.addAnnotation({
1521
+ langKey: 'verticalArrow',
1522
+ type: 'verticalLine',
1523
+ typeOptions: {
1524
+ point: {
1525
+ x: closestPoint.x,
1526
+ y: closestPoint.y,
1527
+ xAxis: closestPoint.xAxis,
1528
+ yAxis: closestPoint.yAxis
1529
+ },
1530
+ label: {
1531
+ offset: closestPoint.below ? 40 : -40,
1532
+ format: ' '
1533
+ },
1534
+ connector: {
1535
+ fill: 'none',
1536
+ stroke: closestPoint.below ? 'red' : 'green'
1537
+ }
1538
+ },
1539
+ shapeOptions: {
1540
+ stroke: 'rgba(0, 0, 0, 0.75)',
1541
+ strokeWidth: 1
1542
+ }
1543
+ });
1544
+
1545
+ annotation.options.events.click.call(annotation, {});
1546
+ }
1547
+ },
1548
+ // Flag types:
1549
+ /**
1550
+ * A flag series bindings. Includes `start` event. On click, finds the
1551
+ * closest point and marks it with a flag with `'circlepin'` shape.
1552
+ *
1553
+ * @type {Highcharts.StockToolsBindingsObject}
1554
+ * @product highstock
1555
+ * @default {"className": "highcharts-flag-circlepin", "start": function() {}}
1556
+ */
1557
+ flagCirclepin: {
1558
+ /** @ignore */
1559
+ className: 'highcharts-flag-circlepin',
1560
+ /** @ignore */
1561
+ start: bindingsUtils
1562
+ .addFlagFromForm('circlepin')
1563
+ },
1564
+ /**
1565
+ * A flag series bindings. Includes `start` event. On click, finds the
1566
+ * closest point and marks it with a flag with `'diamondpin'` shape.
1567
+ *
1568
+ * @type {Highcharts.StockToolsBindingsObject}
1569
+ * @product highstock
1570
+ * @default {"className": "highcharts-flag-diamondpin", "start": function() {}}
1571
+ */
1572
+ flagDiamondpin: {
1573
+ /** @ignore */
1574
+ className: 'highcharts-flag-diamondpin',
1575
+ /** @ignore */
1576
+ start: bindingsUtils
1577
+ .addFlagFromForm('flag')
1578
+ },
1579
+ /**
1580
+ * A flag series bindings. Includes `start` event.
1581
+ * On click, finds the closest point and marks it with a flag with
1582
+ * `'squarepin'` shape.
1583
+ *
1584
+ * @type {Highcharts.StockToolsBindingsObject}
1585
+ * @product highstock
1586
+ * @default {"className": "highcharts-flag-squarepin", "start": function() {}}
1587
+ */
1588
+ flagSquarepin: {
1589
+ /** @ignore */
1590
+ className: 'highcharts-flag-squarepin',
1591
+ /** @ignore */
1592
+ start: bindingsUtils
1593
+ .addFlagFromForm('squarepin')
1594
+ },
1595
+ /**
1596
+ * A flag series bindings. Includes `start` event.
1597
+ * On click, finds the closest point and marks it with a flag without pin
1598
+ * shape.
1599
+ *
1600
+ * @type {Highcharts.StockToolsBindingsObject}
1601
+ * @product highstock
1602
+ * @default {"className": "highcharts-flag-simplepin", "start": function() {}}
1603
+ */
1604
+ flagSimplepin: {
1605
+ /** @ignore */
1606
+ className: 'highcharts-flag-simplepin',
1607
+ /** @ignore */
1608
+ start: bindingsUtils
1609
+ .addFlagFromForm('nopin')
1610
+ },
1611
+ // Other tools:
1612
+ /**
1613
+ * Enables zooming in xAxis on a chart. Includes `start` event which
1614
+ * changes [chart.zoomType](#chart.zoomType).
1615
+ *
1616
+ * @type {Highcharts.StockToolsBindingsObject}
1617
+ * @product highstock
1618
+ * @default {"className": "highcharts-zoom-x", "init": function() {}}
1619
+ */
1620
+ zoomX: {
1621
+ /** @ignore */
1622
+ className: 'highcharts-zoom-x',
1623
+ /** @ignore */
1624
+ init: function (button) {
1625
+ this.chart.update({
1626
+ chart: {
1627
+ zoomType: 'x'
1628
+ }
1629
+ });
1630
+
1631
+ fireEvent(
1632
+ this,
1633
+ 'deselectButton',
1634
+ { button: button }
1635
+ );
1636
+ }
1637
+ },
1638
+ /**
1639
+ * Enables zooming in yAxis on a chart. Includes `start` event which
1640
+ * changes [chart.zoomType](#chart.zoomType).
1641
+ *
1642
+ * @type {Highcharts.StockToolsBindingsObject}
1643
+ * @product highstock
1644
+ * @default {"className": "highcharts-zoom-y", "init": function() {}}
1645
+ */
1646
+ zoomY: {
1647
+ /** @ignore */
1648
+ className: 'highcharts-zoom-y',
1649
+ /** @ignore */
1650
+ init: function (button) {
1651
+ this.chart.update({
1652
+ chart: {
1653
+ zoomType: 'y'
1654
+ }
1655
+ });
1656
+ fireEvent(
1657
+ this,
1658
+ 'deselectButton',
1659
+ { button: button }
1660
+ );
1661
+ }
1662
+ },
1663
+ /**
1664
+ * Enables zooming in xAxis and yAxis on a chart. Includes `start` event
1665
+ * which changes [chart.zoomType](#chart.zoomType).
1666
+ *
1667
+ * @type {Highcharts.StockToolsBindingsObject}
1668
+ * @product highstock
1669
+ * @default {"className": "highcharts-zoom-xy", "init": function() {}}
1670
+ */
1671
+ zoomXY: {
1672
+ /** @ignore */
1673
+ className: 'highcharts-zoom-xy',
1674
+ /** @ignore */
1675
+ init: function (button) {
1676
+ this.chart.update({
1677
+ chart: {
1678
+ zoomType: 'xy'
1679
+ }
1680
+ });
1681
+
1682
+ fireEvent(
1683
+ this,
1684
+ 'deselectButton',
1685
+ { button: button }
1686
+ );
1687
+ }
1688
+ },
1689
+ /**
1690
+ * Changes main series to `'line'` type.
1691
+ *
1692
+ * @type {Highcharts.StockToolsBindingsObject}
1693
+ * @product highstock
1694
+ * @default {"className": "highcharts-series-type-line", "init": function() {}}
1695
+ */
1696
+ seriesTypeLine: {
1697
+ /** @ignore */
1698
+ className: 'highcharts-series-type-line',
1699
+ /** @ignore */
1700
+ init: function (button) {
1701
+ this.chart.series[0].update({
1702
+ type: 'line',
1703
+ useOhlcData: true
1704
+ });
1705
+
1706
+ fireEvent(
1707
+ this,
1708
+ 'deselectButton',
1709
+ { button: button }
1710
+ );
1711
+ }
1712
+ },
1713
+ /**
1714
+ * Changes main series to `'ohlc'` type.
1715
+ *
1716
+ * @type {Highcharts.StockToolsBindingsObject}
1717
+ * @product highstock
1718
+ * @default {"className": "highcharts-series-type-ohlc", "init": function() {}}
1719
+ */
1720
+ seriesTypeOhlc: {
1721
+ /** @ignore */
1722
+ className: 'highcharts-series-type-ohlc',
1723
+ /** @ignore */
1724
+ init: function (button) {
1725
+ this.chart.series[0].update({
1726
+ type: 'ohlc'
1727
+ });
1728
+
1729
+ fireEvent(
1730
+ this,
1731
+ 'deselectButton',
1732
+ { button: button }
1733
+ );
1734
+ }
1735
+ },
1736
+ /**
1737
+ * Changes main series to `'candlestick'` type.
1738
+ *
1739
+ * @type {Highcharts.StockToolsBindingsObject}
1740
+ * @product highstock
1741
+ * @default {"className": "highcharts-series-type-candlestick", "init": function() {}}
1742
+ */
1743
+ seriesTypeCandlestick: {
1744
+ /** @ignore */
1745
+ className: 'highcharts-series-type-candlestick',
1746
+ /** @ignore */
1747
+ init: function (button) {
1748
+ this.chart.series[0].update({
1749
+ type: 'candlestick'
1750
+ });
1751
+
1752
+ fireEvent(
1753
+ this,
1754
+ 'deselectButton',
1755
+ { button: button }
1756
+ );
1757
+ }
1758
+ },
1759
+ /**
1760
+ * Displays chart in fullscreen.
1761
+ *
1762
+ * @type {Highcharts.StockToolsBindingsObject}
1763
+ * @product highstock
1764
+ * @default {"className": "highcharts-full-screen", "init": function() {}}
1765
+ */
1766
+ fullScreen: {
1767
+ /** @ignore */
1768
+ className: 'highcharts-full-screen',
1769
+ /** @ignore */
1770
+ init: function (button) {
1771
+ var chart = this.chart;
1772
+
1773
+ chart.fullScreen = new H.FullScreen(chart.container);
1774
+
1775
+ fireEvent(
1776
+ this,
1777
+ 'deselectButton',
1778
+ { button: button }
1779
+ );
1780
+ }
1781
+ },
1782
+ /**
1783
+ * Hides/shows two price indicators:
1784
+ * - last price in the dataset
1785
+ * - last price in the selected range
1786
+ *
1787
+ * @type {Highcharts.StockToolsBindingsObject}
1788
+ * @product highstock
1789
+ * @default {"className": "highcharts-current-price-indicator", "init": function() {}}
1790
+ */
1791
+ currentPriceIndicator: {
1792
+ /** @ignore */
1793
+ className: 'highcharts-current-price-indicator',
1794
+ /** @ignore */
1795
+ init: function (button) {
1796
+ var series = this.chart.series[0],
1797
+ options = series.options,
1798
+ lastVisiblePrice = options.lastVisiblePrice &&
1799
+ options.lastVisiblePrice.enabled,
1800
+ lastPrice = options.lastPrice && options.lastPrice.enabled,
1801
+ gui = this.chart.stockToolbar;
1802
+
1803
+ if (gui && gui.guiEnabled) {
1804
+ if (lastPrice) {
1805
+ button.firstChild.style['background-image'] =
1806
+ 'url("' + gui.options.iconsURL +
1807
+ 'current-price-show.svg")';
1808
+ } else {
1809
+ button.firstChild.style['background-image'] =
1810
+ 'url("' + gui.options.iconsURL +
1811
+ 'current-price-hide.svg")';
1812
+ }
1813
+ }
1814
+
1815
+ series.update({
1816
+ // line
1817
+ lastPrice: {
1818
+ enabled: !lastPrice,
1819
+ color: 'red'
1820
+ },
1821
+ // label
1822
+ lastVisiblePrice: {
1823
+ enabled: !lastVisiblePrice,
1824
+ label: {
1825
+ enabled: true
1826
+ }
1827
+ }
1828
+ });
1829
+
1830
+ fireEvent(
1831
+ this,
1832
+ 'deselectButton',
1833
+ { button: button }
1834
+ );
1835
+ }
1836
+ },
1837
+ /**
1838
+ * Indicators bindings. Includes `init` event to show a popup.
1839
+ *
1840
+ * @type {Highcharts.StockToolsBindingsObject}
1841
+ * @product highstock
1842
+ * @default {"className": "highcharts-indicators", "init": function() {}}
1843
+ */
1844
+ indicators: {
1845
+ /** @ignore */
1846
+ className: 'highcharts-indicators',
1847
+ /** @ignore */
1848
+ init: function () {
1849
+ var navigation = this;
1850
+
1851
+ fireEvent(
1852
+ navigation,
1853
+ 'showPopup',
1854
+ {
1855
+ formType: 'indicators',
1856
+ options: {},
1857
+ // Callback on submit:
1858
+ onSubmit: function (data) {
1859
+ navigation.utils.manageIndicators.call(
1860
+ navigation,
1861
+ data
1862
+ );
1863
+ }
1864
+ }
1865
+ );
1866
+ }
1867
+ },
1868
+ /**
1869
+ * Hides/shows all annotations on a chart.
1870
+ *
1871
+ * @type {Highcharts.StockToolsBindingsObject}
1872
+ * @product highstock
1873
+ * @default {"className": "highcharts-toggle-annotations", "init": function() {}}
1874
+ */
1875
+ toggleAnnotations: {
1876
+ /** @ignore */
1877
+ className: 'highcharts-toggle-annotations',
1878
+ /** @ignore */
1879
+ init: function (button) {
1880
+ var gui = this.chart.stockToolbar;
1881
+
1882
+ this.toggledAnnotations = !this.toggledAnnotations;
1883
+
1884
+ (this.chart.annotations || []).forEach(function (annotation) {
1885
+ annotation.setVisibility(!this.toggledAnnotations);
1886
+ }, this);
1887
+
1888
+ if (gui && gui.guiEnabled) {
1889
+ if (this.toggledAnnotations) {
1890
+ button.firstChild.style['background-image'] =
1891
+ 'url("' + gui.options.iconsURL +
1892
+ 'annotations-hidden.svg")';
1893
+ } else {
1894
+ button.firstChild.style['background-image'] =
1895
+ 'url("' + gui.options.iconsURL +
1896
+ 'annotations-visible.svg")';
1897
+ }
1898
+ }
1899
+
1900
+ fireEvent(
1901
+ this,
1902
+ 'deselectButton',
1903
+ { button: button }
1904
+ );
1905
+ }
1906
+ },
1907
+ /**
1908
+ * Save a chart in localStorage under `highcharts-chart` key.
1909
+ * Stored items:
1910
+ * - annotations
1911
+ * - indicators (with yAxes)
1912
+ * - flags
1913
+ *
1914
+ * @type {Highcharts.StockToolsBindingsObject}
1915
+ * @product highstock
1916
+ * @default {"className": "highcharts-save-chart", "init": function() {}}
1917
+ */
1918
+ saveChart: {
1919
+ /** @ignore */
1920
+ className: 'highcharts-save-chart',
1921
+ /** @ignore */
1922
+ init: function (button) {
1923
+ var navigation = this,
1924
+ chart = navigation.chart,
1925
+ annotations = [],
1926
+ indicators = [],
1927
+ flags = [],
1928
+ yAxes = [];
1929
+
1930
+ chart.annotations.forEach(function (annotation, index) {
1931
+ annotations[index] = annotation.userOptions;
1932
+ });
1933
+
1934
+ chart.series.forEach(function (series) {
1935
+ if (series instanceof H.seriesTypes.sma) {
1936
+ indicators.push(series.userOptions);
1937
+ } else if (series.type === 'flags') {
1938
+ flags.push(series.userOptions);
1939
+ }
1940
+ });
1941
+
1942
+ chart.yAxis.forEach(function (yAxis) {
1943
+ if (navigation.utils.isNotNavigatorYAxis(yAxis)) {
1944
+ yAxes.push(yAxis.options);
1945
+ }
1946
+ });
1947
+
1948
+ H.win.localStorage.setItem(
1949
+ PREFIX + 'chart',
1950
+ JSON.stringify({
1951
+ annotations: annotations,
1952
+ indicators: indicators,
1953
+ flags: flags,
1954
+ yAxes: yAxes
1955
+ })
1956
+ );
1957
+
1958
+ fireEvent(
1959
+ this,
1960
+ 'deselectButton',
1961
+ { button: button }
1962
+ );
1963
+ }
1964
+ }
1965
+ };
1966
+
1967
+ H.setOptions({
1968
+ navigation: {
1969
+ bindings: stockToolsBindings
1970
+ }
1971
+ });
1972
+
1973
+ }(Highcharts));
1974
+ (function (H) {
1975
+ /**
1976
+ * GUI generator for Stock tools
1977
+ *
1978
+ * (c) 2009-2017 Sebastian Bochan
1979
+ *
1980
+ * License: www.highcharts.com/license
1981
+ */
1982
+
1983
+ var addEvent = H.addEvent,
1984
+ createElement = H.createElement,
1985
+ pick = H.pick,
1986
+ isArray = H.isArray,
1987
+ fireEvent = H.fireEvent,
1988
+ getStyle = H.getStyle,
1989
+ merge = H.merge,
1990
+ css = H.css,
1991
+ win = H.win,
1992
+ DIV = 'div',
1993
+ SPAN = 'span',
1994
+ UL = 'ul',
1995
+ LI = 'li',
1996
+ PREFIX = 'highcharts-',
1997
+ activeClass = PREFIX + 'active';
1998
+
1999
+ H.setOptions({
2000
+ /**
2001
+ * @optionparent lang
2002
+ */
2003
+ lang: {
2004
+ /**
2005
+ * Configure the stockTools GUI titles(hints) in the chart. Requires
2006
+ * the `stock-tools.js` module to be loaded.
2007
+ *
2008
+ * @product highstock
2009
+ * @since 7.0.0
2010
+ * @type {Object}
2011
+ */
2012
+ stockTools: {
2013
+ gui: {
2014
+ // Main buttons:
2015
+ simpleShapes: 'Simple shapes',
2016
+ lines: 'Lines',
2017
+ crookedLines: 'Crooked lines',
2018
+ measure: 'Measure',
2019
+ advanced: 'Advanced',
2020
+ toggleAnnotations: 'Toggle annotations',
2021
+ verticalLabels: 'Vertical labels',
2022
+ flags: 'Flags',
2023
+ zoomChange: 'Zoom change',
2024
+ typeChange: 'Type change',
2025
+ saveChart: 'Save chart',
2026
+ indicators: 'Indicators',
2027
+ currentPriceIndicator: 'Current Price Indicators',
2028
+
2029
+ // Other features:
2030
+ zoomX: 'Zoom X',
2031
+ zoomY: 'Zoom Y',
2032
+ zoomXY: 'Zooom XY',
2033
+ fullScreen: 'Fullscreen',
2034
+ typeOHLC: 'OHLC',
2035
+ typeLine: 'Line',
2036
+ typeCandlestick: 'Candlestick',
2037
+
2038
+ // Basic shapes:
2039
+ circle: 'Circle',
2040
+ label: 'Label',
2041
+ rectangle: 'Rectangle',
2042
+
2043
+ // Flags:
2044
+ flagCirclepin: 'Flag circle',
2045
+ flagDiamondpin: 'Flag diamond',
2046
+ flagSquarepin: 'Flag square',
2047
+ flagSimplepin: 'Flag simple',
2048
+
2049
+ // Measures:
2050
+ measureXY: 'Measure XY',
2051
+ measureX: 'Measure X',
2052
+ measureY: 'Measure Y',
2053
+
2054
+ // Segment, ray and line:
2055
+ segment: 'Segment',
2056
+ arrowSegment: 'Arrow segment',
2057
+ ray: 'Ray',
2058
+ arrowRay: 'Arrow ray',
2059
+ line: 'Line',
2060
+ arrowLine: 'Arrow line',
2061
+ horizontalLine: 'Horizontal line',
2062
+ verticalLine: 'Vertical line',
2063
+ infinityLine: 'Infinity line',
2064
+
2065
+ // Crooked lines:
2066
+ crooked3: 'Crooked 3 line',
2067
+ crooked5: 'Crooked 5 line',
2068
+ elliott3: 'Elliott 3 line',
2069
+ elliott5: 'Elliott 5 line',
2070
+
2071
+ // Counters:
2072
+ verticalCounter: 'Vertical counter',
2073
+ verticalLabel: 'Vertical label',
2074
+ verticalArrow: 'Vertical arrow',
2075
+
2076
+ // Advanced:
2077
+ fibonacci: 'Fibonacci',
2078
+ pitchfork: 'Pitchfork',
2079
+ parallelChannel: 'Parallel channel'
2080
+ }
2081
+ },
2082
+ navigation: {
2083
+ popup: {
2084
+ // Annotations:
2085
+ circle: 'Circle',
2086
+ rectangle: 'Rectangle',
2087
+ label: 'Label',
2088
+ segment: 'Segment',
2089
+ arrowSegment: 'Arrow segment',
2090
+ ray: 'Ray',
2091
+ arrowRay: 'Arrow ray',
2092
+ line: 'Line',
2093
+ arrowLine: 'Arrow line',
2094
+ horizontalLine: 'Horizontal line',
2095
+ verticalLine: 'Vertical line',
2096
+ crooked3: 'Crooked 3 line',
2097
+ crooked5: 'Crooked 5 line',
2098
+ elliott3: 'Elliott 3 line',
2099
+ elliott5: 'Elliott 5 line',
2100
+ verticalCounter: 'Vertical counter',
2101
+ verticalLabel: 'Vertical label',
2102
+ verticalArrow: 'Vertical arrow',
2103
+ fibonacci: 'Fibonacci',
2104
+ pitchfork: 'Pitchfork',
2105
+ parallelChannel: 'Parallel channel',
2106
+ infinityLine: 'Infinity line',
2107
+ measure: 'Measure',
2108
+ measureXY: 'Measure XY',
2109
+ measureX: 'Measure X',
2110
+ measureY: 'Measure Y',
2111
+
2112
+ // Flags:
2113
+ flags: 'Flags',
2114
+
2115
+ // GUI elements:
2116
+ addButton: 'add',
2117
+ saveButton: 'save',
2118
+ editButton: 'edit',
2119
+ removeButton: 'remove',
2120
+ series: 'Series',
2121
+ volume: 'Volume',
2122
+ connector: 'Connector',
2123
+
2124
+ // Field names:
2125
+ innerBackground: 'Inner background',
2126
+ outerBackground: 'Outer background',
2127
+ crosshairX: 'Crosshair X',
2128
+ crosshairY: 'Crosshair Y',
2129
+ tunnel: 'Tunnel',
2130
+ background: 'Background'
2131
+ }
2132
+ }
2133
+ },
2134
+ /**
2135
+ * Configure the stockTools gui strings in the chart. Requires the
2136
+ * [stockTools module]() to be loaded. For a description of the module
2137
+ * and information on its features, see [Highcharts StockTools]().
2138
+ *
2139
+ * @product highstock
2140
+ *
2141
+ * @sample stock/demo/stock-tools-gui Stock Tools GUI
2142
+ *
2143
+ * @sample stock/demo/stock-tools-custom-gui Stock Tools customized GUI
2144
+ *
2145
+ * @since 7.0.0
2146
+ * @type {Object}
2147
+ * @optionparent stockTools
2148
+ */
2149
+ stockTools: {
2150
+ /**
2151
+ * Definitions of buttons in Stock Tools GUI.
2152
+ */
2153
+ gui: {
2154
+ /**
2155
+ * Enable or disable the stockTools gui.
2156
+ *
2157
+ * @type {boolean}
2158
+ * @default true
2159
+ */
2160
+ enabled: true,
2161
+ /**
2162
+ * A CSS class name to apply to the stocktools' div,
2163
+ * allowing unique CSS styling for each chart.
2164
+ *
2165
+ * @type {string}
2166
+ * @default 'highcharts-bindings-wrapper'
2167
+ *
2168
+ */
2169
+ className: 'highcharts-bindings-wrapper',
2170
+ /**
2171
+ * A CSS class name to apply to the container of buttons,
2172
+ * allowing unique CSS styling for each chart.
2173
+ *
2174
+ * @type {string}
2175
+ * @default 'stocktools-toolbar'
2176
+ *
2177
+ */
2178
+ toolbarClassName: 'stocktools-toolbar',
2179
+ /**
2180
+ * Path where Highcharts will look for icons. Change this to use
2181
+ * icons from a different server.
2182
+ */
2183
+ iconsURL: 'https://code.highcharts.com/7.0.3/gfx/stock-icons/',
2184
+ /**
2185
+ * A collection of strings pointing to config options for the
2186
+ * toolbar items. Each name refers to unique key from definitions
2187
+ * object.
2188
+ *
2189
+ * @type {array}
2190
+ *
2191
+ * @default [
2192
+ * 'indicators',
2193
+ * 'separator',
2194
+ * 'simpleShapes',
2195
+ * 'lines',
2196
+ * 'crookedLines',
2197
+ * 'measure',
2198
+ * 'advanced',
2199
+ * 'toggleAnnotations',
2200
+ * 'separator',
2201
+ * 'verticalLabels',
2202
+ * 'flags',
2203
+ * 'separator',
2204
+ * 'zoomChange',
2205
+ * 'fullScreen',
2206
+ * 'typeChange',
2207
+ * 'separator',
2208
+ * 'currentPriceIndicator',
2209
+ * 'saveChart'
2210
+ * ]
2211
+ */
2212
+ buttons: [
2213
+ 'indicators',
2214
+ 'separator',
2215
+ 'simpleShapes',
2216
+ 'lines',
2217
+ 'crookedLines',
2218
+ 'measure',
2219
+ 'advanced',
2220
+ 'toggleAnnotations',
2221
+ 'separator',
2222
+ 'verticalLabels',
2223
+ 'flags',
2224
+ 'separator',
2225
+ 'zoomChange',
2226
+ 'fullScreen',
2227
+ 'typeChange',
2228
+ 'separator',
2229
+ 'currentPriceIndicator',
2230
+ 'saveChart'
2231
+ ],
2232
+ /**
2233
+ * An options object of the buttons definitions. Each name refers to
2234
+ * unique key from buttons array.
2235
+ *
2236
+ * @type {object}
2237
+ *
2238
+ */
2239
+ definitions: {
2240
+ separator: {
2241
+ /**
2242
+ * A predefined background symbol for the button.
2243
+ *
2244
+ * @type {string}
2245
+ */
2246
+ symbol: 'separator.svg'
2247
+ },
2248
+ simpleShapes: {
2249
+ /**
2250
+ * A collection of strings pointing to config options for
2251
+ * the items.
2252
+ *
2253
+ * @type {array}
2254
+ * @default [
2255
+ * 'label',
2256
+ * 'circle',
2257
+ * 'rectangle'
2258
+ * ]
2259
+ *
2260
+ */
2261
+ items: [
2262
+ 'label',
2263
+ 'circle',
2264
+ 'rectangle'
2265
+ ],
2266
+ circle: {
2267
+ /**
2268
+ * A predefined background symbol for the button.
2269
+ *
2270
+ * @type {string}
2271
+ *
2272
+ */
2273
+ symbol: 'circle.svg'
2274
+ },
2275
+ rectangle: {
2276
+ /**
2277
+ * A predefined background symbol for the button.
2278
+ *
2279
+ * @type {string}
2280
+ *
2281
+ */
2282
+ symbol: 'rectangle.svg'
2283
+ },
2284
+ label: {
2285
+ /**
2286
+ * A predefined background symbol for the button.
2287
+ *
2288
+ * @type {string}
2289
+ *
2290
+ */
2291
+ symbol: 'label.svg'
2292
+ }
2293
+ },
2294
+ flags: {
2295
+ /**
2296
+ * A collection of strings pointing to config options for
2297
+ * the items.
2298
+ *
2299
+ * @type {array}
2300
+ * @default [
2301
+ * 'flagCirclepin',
2302
+ * 'flagDiamondpin',
2303
+ * 'flagSquarepin',
2304
+ * 'flagSimplepin'
2305
+ * ]
2306
+ *
2307
+ */
2308
+ items: [
2309
+ 'flagCirclepin',
2310
+ 'flagDiamondpin',
2311
+ 'flagSquarepin',
2312
+ 'flagSimplepin'
2313
+ ],
2314
+ flagSimplepin: {
2315
+ /**
2316
+ * A predefined background symbol for the button.
2317
+ *
2318
+ * @type {string}
2319
+ *
2320
+ */
2321
+ symbol: 'flag-basic.svg'
2322
+ },
2323
+ flagDiamondpin: {
2324
+ /**
2325
+ * A predefined background symbol for the button.
2326
+ *
2327
+ * @type {string}
2328
+ *
2329
+ */
2330
+ symbol: 'flag-diamond.svg'
2331
+ },
2332
+ flagSquarepin: {
2333
+ /**
2334
+ * A predefined background symbol for the button.
2335
+ *
2336
+ * @type {string}
2337
+ */
2338
+ symbol: 'flag-trapeze.svg'
2339
+ },
2340
+ flagCirclepin: {
2341
+ /**
2342
+ * A predefined background symbol for the button.
2343
+ *
2344
+ * @type {string}
2345
+ */
2346
+ symbol: 'flag-elipse.svg'
2347
+ }
2348
+ },
2349
+ lines: {
2350
+ /**
2351
+ * A collection of strings pointing to config options for
2352
+ * the items.
2353
+ *
2354
+ * @type {array}
2355
+ * @default [
2356
+ * 'segment',
2357
+ * 'arrowSegment',
2358
+ * 'ray',
2359
+ * 'arrowRay',
2360
+ * 'line',
2361
+ * 'arrowLine',
2362
+ * 'horizontalLine',
2363
+ * 'verticalLine'
2364
+ * ]
2365
+ */
2366
+ items: [
2367
+ 'segment',
2368
+ 'arrowSegment',
2369
+ 'ray',
2370
+ 'arrowRay',
2371
+ 'line',
2372
+ 'arrowLine',
2373
+ 'horizontalLine',
2374
+ 'verticalLine'
2375
+ ],
2376
+ segment: {
2377
+ /**
2378
+ * A predefined background symbol for the button.
2379
+ *
2380
+ * @type {string}
2381
+ */
2382
+ symbol: 'segment.svg'
2383
+ },
2384
+ arrowSegment: {
2385
+ /**
2386
+ * A predefined background symbol for the button.
2387
+ *
2388
+ * @type {string}
2389
+ */
2390
+ symbol: 'arrow-segment.svg'
2391
+ },
2392
+ ray: {
2393
+ /**
2394
+ * A predefined background symbol for the button.
2395
+ *
2396
+ * @type {string}
2397
+ */
2398
+ symbol: 'ray.svg'
2399
+ },
2400
+ arrowRay: {
2401
+ /**
2402
+ * A predefined background symbol for the button.
2403
+ *
2404
+ * @type {string}
2405
+ */
2406
+ symbol: 'arrow-ray.svg'
2407
+ },
2408
+ line: {
2409
+ /**
2410
+ * A predefined background symbol for the button.
2411
+ *
2412
+ * @type {string}
2413
+ */
2414
+ symbol: 'line.svg'
2415
+ },
2416
+ arrowLine: {
2417
+ /**
2418
+ * A predefined background symbol for the button.
2419
+ *
2420
+ * @type {string}
2421
+ */
2422
+ symbol: 'arrow-line.svg'
2423
+ },
2424
+ verticalLine: {
2425
+ /**
2426
+ * A predefined background symbol for the button.
2427
+ *
2428
+ * @type {string}
2429
+ */
2430
+ symbol: 'vertical-line.svg'
2431
+ },
2432
+ horizontalLine: {
2433
+ /**
2434
+ * A predefined background symbol for the button.
2435
+ *
2436
+ * @type {string}
2437
+ */
2438
+ symbol: 'horizontal-line.svg'
2439
+ }
2440
+ },
2441
+ crookedLines: {
2442
+ /**
2443
+ * A collection of strings pointing to config options for
2444
+ * the items.
2445
+ *
2446
+ * @type {array}
2447
+ * @default [
2448
+ * 'elliott3',
2449
+ * 'elliott5',
2450
+ * 'crooked3',
2451
+ * 'crooked5'
2452
+ * ]
2453
+ *
2454
+ */
2455
+ items: [
2456
+ 'elliott3',
2457
+ 'elliott5',
2458
+ 'crooked3',
2459
+ 'crooked5'
2460
+ ],
2461
+ crooked3: {
2462
+ /**
2463
+ * A predefined background symbol for the button.
2464
+ *
2465
+ * @type {string}
2466
+ */
2467
+ symbol: 'crooked-3.svg'
2468
+ },
2469
+ crooked5: {
2470
+ /**
2471
+ * A predefined background symbol for the button.
2472
+ *
2473
+ * @type {string}
2474
+ */
2475
+ symbol: 'crooked-5.svg'
2476
+ },
2477
+ elliott3: {
2478
+ /**
2479
+ * A predefined background symbol for the button.
2480
+ *
2481
+ * @type {string}
2482
+ */
2483
+ symbol: 'elliott-3.svg'
2484
+ },
2485
+ elliott5: {
2486
+ /**
2487
+ * A predefined background symbol for the button.
2488
+ *
2489
+ * @type {string}
2490
+ */
2491
+ symbol: 'elliott-5.svg'
2492
+ }
2493
+ },
2494
+ verticalLabels: {
2495
+ /**
2496
+ * A collection of strings pointing to config options for
2497
+ * the items.
2498
+ *
2499
+ * @type {array}
2500
+ * @default [
2501
+ * 'verticalCounter',
2502
+ * 'verticalLabel',
2503
+ * 'verticalArrow'
2504
+ * ]
2505
+ */
2506
+ items: [
2507
+ 'verticalCounter',
2508
+ 'verticalLabel',
2509
+ 'verticalArrow'
2510
+ ],
2511
+ verticalCounter: {
2512
+ /**
2513
+ * A predefined background symbol for the button.
2514
+ *
2515
+ * @type {string}
2516
+ */
2517
+ symbol: 'vertical-counter.svg'
2518
+ },
2519
+ verticalLabel: {
2520
+ /**
2521
+ * A predefined background symbol for the button.
2522
+ *
2523
+ * @type {string}
2524
+ */
2525
+ symbol: 'vertical-label.svg'
2526
+ },
2527
+ verticalArrow: {
2528
+ /**
2529
+ * A predefined background symbol for the button.
2530
+ *
2531
+ * @type {string}
2532
+ */
2533
+ symbol: 'vertical-arrow.svg'
2534
+ }
2535
+ },
2536
+ advanced: {
2537
+ /**
2538
+ * A collection of strings pointing to config options for
2539
+ * the items.
2540
+ *
2541
+ * @type {array}
2542
+ * @default [
2543
+ * 'fibonacci',
2544
+ * 'pitchfork',
2545
+ * 'parallelChannel'
2546
+ * ]
2547
+ */
2548
+ items: [
2549
+ 'fibonacci',
2550
+ 'pitchfork',
2551
+ 'parallelChannel'
2552
+ ],
2553
+ pitchfork: {
2554
+ /**
2555
+ * A predefined background symbol for the button.
2556
+ *
2557
+ * @type {string}
2558
+ */
2559
+ symbol: 'pitchfork.svg'
2560
+ },
2561
+ fibonacci: {
2562
+ /**
2563
+ * A predefined background symbol for the button.
2564
+ *
2565
+ * @type {string}
2566
+ */
2567
+ symbol: 'fibonacci.svg'
2568
+ },
2569
+ parallelChannel: {
2570
+ /**
2571
+ * A predefined background symbol for the button.
2572
+ *
2573
+ * @type {string}
2574
+ */
2575
+ symbol: 'parallel-channel.svg'
2576
+ }
2577
+ },
2578
+ measure: {
2579
+ /**
2580
+ * A collection of strings pointing to config options for
2581
+ * the items.
2582
+ *
2583
+ * @type {array}
2584
+ * @default [
2585
+ * 'measureXY',
2586
+ * 'measureX',
2587
+ * 'measureY'
2588
+ * ]
2589
+ */
2590
+ items: [
2591
+ 'measureXY',
2592
+ 'measureX',
2593
+ 'measureY'
2594
+ ],
2595
+ measureX: {
2596
+ /**
2597
+ * A predefined background symbol for the button.
2598
+ *
2599
+ * @type {string}
2600
+ */
2601
+ symbol: 'measure-x.svg'
2602
+ },
2603
+ measureY: {
2604
+ /**
2605
+ * A predefined background symbol for the button.
2606
+ *
2607
+ * @type {string}
2608
+ */
2609
+ symbol: 'measure-y.svg'
2610
+ },
2611
+ measureXY: {
2612
+ /**
2613
+ * A predefined background symbol for the button.
2614
+ *
2615
+ * @type {string}
2616
+ */
2617
+ symbol: 'measure-xy.svg'
2618
+ }
2619
+ },
2620
+ toggleAnnotations: {
2621
+ /**
2622
+ * A predefined background symbol for the button.
2623
+ *
2624
+ * @type {string}
2625
+ */
2626
+ symbol: 'annotations-visible.svg'
2627
+ },
2628
+ currentPriceIndicator: {
2629
+ /**
2630
+ * A predefined background symbol for the button.
2631
+ *
2632
+ * @type {string}
2633
+ */
2634
+ symbol: 'current-price-show.svg'
2635
+ },
2636
+ indicators: {
2637
+ /**
2638
+ * A predefined background symbol for the button.
2639
+ *
2640
+ * @type {string}
2641
+ */
2642
+ symbol: 'indicators.svg'
2643
+ },
2644
+ zoomChange: {
2645
+ /**
2646
+ * A collection of strings pointing to config options for
2647
+ * the items.
2648
+ *
2649
+ * @type {array}
2650
+ * @default [
2651
+ * 'zoomX',
2652
+ * 'zoomY',
2653
+ * 'zoomXY'
2654
+ * ]
2655
+ */
2656
+ items: [
2657
+ 'zoomX',
2658
+ 'zoomY',
2659
+ 'zoomXY'
2660
+ ],
2661
+ zoomX: {
2662
+ /**
2663
+ * A predefined background symbol for the button.
2664
+ *
2665
+ * @type {string}
2666
+ */
2667
+ symbol: 'zoom-x.svg'
2668
+ },
2669
+ zoomY: {
2670
+ /**
2671
+ * A predefined background symbol for the button.
2672
+ *
2673
+ * @type {string}
2674
+ */
2675
+ symbol: 'zoom-y.svg'
2676
+ },
2677
+ zoomXY: {
2678
+ /**
2679
+ * A predefined background symbol for the button.
2680
+ *
2681
+ * @type {string}
2682
+ */
2683
+ symbol: 'zoom-xy.svg'
2684
+ }
2685
+ },
2686
+ typeChange: {
2687
+ /**
2688
+ * A collection of strings pointing to config options for
2689
+ * the items.
2690
+ *
2691
+ * @type {array}
2692
+ * @default [
2693
+ * 'typeOHLC',
2694
+ * 'typeLine',
2695
+ * 'typeCandlestick'
2696
+ * ]
2697
+ */
2698
+ items: [
2699
+ 'typeOHLC',
2700
+ 'typeLine',
2701
+ 'typeCandlestick'
2702
+ ],
2703
+ typeOHLC: {
2704
+ /**
2705
+ * A predefined background symbol for the button.
2706
+ *
2707
+ * @type {string}
2708
+ */
2709
+ symbol: 'series-ohlc.svg'
2710
+ },
2711
+ typeLine: {
2712
+ /**
2713
+ * A predefined background symbol for the button.
2714
+ *
2715
+ * @type {string}
2716
+ */
2717
+ symbol: 'series-line.svg'
2718
+ },
2719
+ typeCandlestick: {
2720
+ /**
2721
+ * A predefined background symbol for the button.
2722
+ *
2723
+ * @type {string}
2724
+ */
2725
+ symbol: 'series-candlestick.svg'
2726
+ }
2727
+ },
2728
+ fullScreen: {
2729
+ /**
2730
+ * A predefined background symbol for the button.
2731
+ *
2732
+ * @type {string}
2733
+ */
2734
+ symbol: 'fullscreen.svg'
2735
+ },
2736
+ saveChart: {
2737
+ /**
2738
+ * A predefined background symbol for the button.
2739
+ *
2740
+ * @type {string}
2741
+ */
2742
+ symbol: 'save-chart.svg'
2743
+ }
2744
+ }
2745
+ }
2746
+ }
2747
+ });
2748
+
2749
+ // Run HTML generator
2750
+ addEvent(H.Chart, 'afterGetContainer', function () {
2751
+ this.setStockTools();
2752
+ });
2753
+
2754
+ addEvent(H.Chart, 'getMargins', function () {
2755
+ var offsetWidth = (
2756
+ this.stockTools &&
2757
+ this.stockTools.listWrapper &&
2758
+ this.stockTools.listWrapper.offsetWidth
2759
+ );
2760
+
2761
+ if (offsetWidth && offsetWidth < this.plotWidth) {
2762
+ this.plotLeft += offsetWidth;
2763
+ }
2764
+ });
2765
+
2766
+ addEvent(H.Chart, 'destroy', function () {
2767
+ if (this.stockTools) {
2768
+ this.stockTools.destroy();
2769
+ }
2770
+ });
2771
+
2772
+ addEvent(H.Chart, 'redraw', function () {
2773
+ if (this.stockTools && this.stockTools.guiEnabled) {
2774
+ this.stockTools.redraw();
2775
+ }
2776
+ });
2777
+
2778
+ /*
2779
+ * Toolbar Class
2780
+ *
2781
+ * @param {Object} - options of toolbar
2782
+ * @param {Chart} - Reference to chart
2783
+ *
2784
+ */
2785
+
2786
+ H.Toolbar = function (options, langOptions, chart) {
2787
+ this.chart = chart;
2788
+ this.options = options;
2789
+ this.lang = langOptions;
2790
+
2791
+ this.guiEnabled = options.enabled;
2792
+ this.visible = pick(options.visible, true);
2793
+ this.placed = pick(options.placed, false);
2794
+
2795
+ // General events collection which should be removed upon destroy/update:
2796
+ this.eventsToUnbind = [];
2797
+
2798
+ if (this.guiEnabled) {
2799
+ this.createHTML();
2800
+
2801
+ this.init();
2802
+
2803
+ this.showHideNavigatorion();
2804
+ }
2805
+
2806
+ fireEvent(this, 'afterInit');
2807
+ };
2808
+
2809
+ H.extend(H.Chart.prototype, {
2810
+ /*
2811
+ * Verify if Toolbar should be added.
2812
+ *
2813
+ * @param {Object} - chart options
2814
+ *
2815
+ */
2816
+ setStockTools: function (options) {
2817
+ var chartOptions = this.options,
2818
+ lang = chartOptions.lang,
2819
+ guiOptions = merge(
2820
+ chartOptions.stockTools && chartOptions.stockTools.gui,
2821
+ options && options.gui
2822
+ ),
2823
+ langOptions = lang.stockTools && lang.stockTools.gui;
2824
+
2825
+ this.stockTools = new H.Toolbar(guiOptions, langOptions, this);
2826
+
2827
+ if (this.stockTools.guiEnabled) {
2828
+ this.isDirtyBox = true;
2829
+ }
2830
+ }
2831
+ });
2832
+
2833
+ H.Toolbar.prototype = {
2834
+ /*
2835
+ * Initialize the toolbar. Create buttons and submenu for each option
2836
+ * defined in `stockTools.gui`.
2837
+ *
2838
+ */
2839
+ init: function () {
2840
+ var _self = this,
2841
+ lang = this.lang,
2842
+ guiOptions = this.options,
2843
+ toolbar = this.toolbar,
2844
+ addSubmenu = _self.addSubmenu,
2845
+ buttons = guiOptions.buttons,
2846
+ defs = guiOptions.definitions,
2847
+ allButtons = toolbar.childNodes,
2848
+ inIframe = this.inIframe(),
2849
+ button;
2850
+
2851
+ // create buttons
2852
+ buttons.forEach(function (btnName) {
2853
+
2854
+ button = _self.addButton(toolbar, defs, btnName, lang);
2855
+
2856
+ if (inIframe && btnName === 'fullScreen') {
2857
+ button.buttonWrapper.className += ' ' + PREFIX + 'disabled-btn';
2858
+ }
2859
+
2860
+ ['click', 'touchstart'].forEach(function (eventName) {
2861
+ addEvent(button.buttonWrapper, eventName, function () {
2862
+ _self.eraseActiveButtons(
2863
+ allButtons,
2864
+ button.buttonWrapper
2865
+ );
2866
+ });
2867
+ });
2868
+
2869
+ if (isArray(defs[btnName].items)) {
2870
+ // create submenu buttons
2871
+ addSubmenu.call(_self, button, defs[btnName]);
2872
+ }
2873
+ });
2874
+ },
2875
+ /*
2876
+ * Create submenu (list of buttons) for the option. In example main button
2877
+ * is Line, in submenu will be buttons with types of lines.
2878
+ *
2879
+ * @param {Object} - button which has submenu
2880
+ * @param {Array} - list of all buttons
2881
+ *
2882
+ */
2883
+ addSubmenu: function (parentBtn, button) {
2884
+ var _self = this,
2885
+ submenuArrow = parentBtn.submenuArrow,
2886
+ buttonWrapper = parentBtn.buttonWrapper,
2887
+ buttonWidth = getStyle(buttonWrapper, 'width'),
2888
+ wrapper = this.wrapper,
2889
+ menuWrapper = this.listWrapper,
2890
+ allButtons = this.toolbar.childNodes,
2891
+ topMargin = 0,
2892
+ submenuWrapper;
2893
+
2894
+ // create submenu container
2895
+ this.submenu = submenuWrapper = createElement(UL, {
2896
+ className: PREFIX + 'submenu-wrapper'
2897
+ }, null, buttonWrapper);
2898
+
2899
+ // create submenu buttons and select the first one
2900
+ this.addSubmenuItems(buttonWrapper, button);
2901
+
2902
+ // show / hide submenu
2903
+ ['click', 'touchstart'].forEach(function (eventName) {
2904
+ addEvent(submenuArrow, eventName, function (e) {
2905
+
2906
+ e.stopPropagation();
2907
+ // Erase active class on all other buttons
2908
+ _self.eraseActiveButtons(allButtons, buttonWrapper);
2909
+
2910
+ // hide menu
2911
+ if (buttonWrapper.className.indexOf(PREFIX + 'current') >= 0) {
2912
+ menuWrapper.style.width = menuWrapper.startWidth + 'px';
2913
+ buttonWrapper.classList.remove(PREFIX + 'current');
2914
+ submenuWrapper.style.display = 'none';
2915
+ } else {
2916
+ // show menu
2917
+ // to calculate height of element
2918
+ submenuWrapper.style.display = 'block';
2919
+
2920
+ topMargin = submenuWrapper.offsetHeight -
2921
+ buttonWrapper.offsetHeight - 3;
2922
+
2923
+ // calculate position of submenu in the box
2924
+ // if submenu is inside, reset top margin
2925
+ if (
2926
+ // cut on the bottom
2927
+ !(submenuWrapper.offsetHeight +
2928
+ buttonWrapper.offsetTop >
2929
+ wrapper.offsetHeight &&
2930
+ // cut on the top
2931
+ buttonWrapper.offsetTop > topMargin)
2932
+ ) {
2933
+ topMargin = 0;
2934
+ }
2935
+
2936
+ // apply calculated styles
2937
+ css(submenuWrapper, {
2938
+ top: -topMargin + 'px',
2939
+ left: buttonWidth + 3 + 'px'
2940
+ });
2941
+
2942
+ buttonWrapper.className += ' ' + PREFIX + 'current';
2943
+ menuWrapper.startWidth = wrapper.offsetWidth;
2944
+ menuWrapper.style.width = menuWrapper.startWidth +
2945
+ H.getStyle(menuWrapper, 'padding-left') +
2946
+ submenuWrapper.offsetWidth + 3 + 'px';
2947
+ }
2948
+ });
2949
+ });
2950
+ },
2951
+ /*
2952
+ * Create buttons in submenu
2953
+ *
2954
+ * @param {HTMLDOMElement} - button where submenu is placed
2955
+ * @param {Array} - list of all buttons options
2956
+ *
2957
+ */
2958
+ addSubmenuItems: function (buttonWrapper, button) {
2959
+ var _self = this,
2960
+ submenuWrapper = this.submenu,
2961
+ lang = this.lang,
2962
+ menuWrapper = this.listWrapper,
2963
+ items = button.items,
2964
+ firstSubmenuItem,
2965
+ submenuBtn;
2966
+
2967
+ // add items to submenu
2968
+ items.forEach(function (btnName) {
2969
+ // add buttons to submenu
2970
+ submenuBtn = _self.addButton(
2971
+ submenuWrapper,
2972
+ button,
2973
+ btnName,
2974
+ lang
2975
+ );
2976
+
2977
+ ['click', 'touchstart'].forEach(function (eventName) {
2978
+ addEvent(submenuBtn.mainButton, eventName, function () {
2979
+ _self.switchSymbol(this, buttonWrapper, true);
2980
+ menuWrapper.style.width = menuWrapper.startWidth + 'px';
2981
+ submenuWrapper.style.display = 'none';
2982
+ });
2983
+ });
2984
+ });
2985
+
2986
+ // select first submenu item
2987
+ firstSubmenuItem = submenuWrapper
2988
+ .querySelectorAll('li > .' + PREFIX + 'menu-item-btn')[0];
2989
+
2990
+ // replace current symbol, in main button, with submenu's button style
2991
+ _self.switchSymbol(firstSubmenuItem, false);
2992
+ },
2993
+ /*
2994
+ * Erase active class on all other buttons.
2995
+ *
2996
+ * @param {Array} - Array of HTML buttons
2997
+ * @param {HTMLDOMElement} - Current HTML button
2998
+ *
2999
+ */
3000
+ eraseActiveButtons: function (buttons, currentButton, submenuItems) {
3001
+ [].forEach.call(buttons, function (btn) {
3002
+ if (btn !== currentButton) {
3003
+ btn.classList.remove(PREFIX + 'current');
3004
+ btn.classList.remove(PREFIX + 'active');
3005
+ submenuItems =
3006
+ btn.querySelectorAll('.' + PREFIX + 'submenu-wrapper');
3007
+
3008
+ // hide submenu
3009
+ if (submenuItems.length > 0) {
3010
+ submenuItems[0].style.display = 'none';
3011
+ }
3012
+ }
3013
+ });
3014
+ },
3015
+ /*
3016
+ * Create single button. Consist of `<li>` , `<span>` and (if exists)
3017
+ * submenu container.
3018
+ *
3019
+ * @param {HTMLDOMElement} - HTML reference, where button should be added
3020
+ * @param {Object} - all options, by btnName refer to particular button
3021
+ * @param {String} - name of functionality mapped for specific class
3022
+ * @param {Object} - All titles, by btnName refer to particular button
3023
+ *
3024
+ * @return {Object} - references to all created HTML elements
3025
+ */
3026
+ addButton: function (target, options, btnName, lang) {
3027
+ var guiOptions = this.options,
3028
+ btnOptions = options[btnName],
3029
+ items = btnOptions.items,
3030
+ classMapping = H.Toolbar.prototype.classMapping,
3031
+ userClassName = btnOptions.className || '',
3032
+ mainButton,
3033
+ submenuArrow,
3034
+ buttonWrapper;
3035
+
3036
+ // main button wrapper
3037
+ buttonWrapper = createElement(LI, {
3038
+ className: pick(classMapping[btnName], '') + ' ' + userClassName,
3039
+ title: lang[btnName] || btnName
3040
+ }, null, target);
3041
+
3042
+ // single button
3043
+ mainButton = createElement(SPAN, {
3044
+ className: PREFIX + 'menu-item-btn'
3045
+ }, null, buttonWrapper);
3046
+
3047
+
3048
+ // submenu
3049
+ if (items && items.length > 1) {
3050
+
3051
+ // arrow is a hook to show / hide submenu
3052
+ submenuArrow = createElement(SPAN, {
3053
+ className: PREFIX + 'submenu-item-arrow ' +
3054
+ PREFIX + 'arrow-right'
3055
+ }, null, buttonWrapper);
3056
+ } else {
3057
+ mainButton.style['background-image'] = 'url(' +
3058
+ guiOptions.iconsURL + btnOptions.symbol + ')';
3059
+ }
3060
+
3061
+ return {
3062
+ buttonWrapper: buttonWrapper,
3063
+ mainButton: mainButton,
3064
+ submenuArrow: submenuArrow
3065
+ };
3066
+ },
3067
+ /*
3068
+ * Create navigation's HTML elements: container and arrows.
3069
+ *
3070
+ */
3071
+ addNavigation: function () {
3072
+ var stockToolbar = this,
3073
+ wrapper = stockToolbar.wrapper;
3074
+
3075
+ // arrow wrapper
3076
+ stockToolbar.arrowWrapper = createElement(DIV, {
3077
+ className: PREFIX + 'arrow-wrapper'
3078
+ });
3079
+
3080
+ stockToolbar.arrowUp = createElement(DIV, {
3081
+ className: PREFIX + 'arrow-up'
3082
+ }, null, stockToolbar.arrowWrapper);
3083
+
3084
+ stockToolbar.arrowDown = createElement(DIV, {
3085
+ className: PREFIX + 'arrow-down'
3086
+ }, null, stockToolbar.arrowWrapper);
3087
+
3088
+ wrapper.insertBefore(
3089
+ stockToolbar.arrowWrapper,
3090
+ wrapper.childNodes[0]
3091
+ );
3092
+
3093
+ // attach scroll events
3094
+ stockToolbar.scrollButtons();
3095
+ },
3096
+ /*
3097
+ * Add events to navigation (two arrows) which allows user to scroll
3098
+ * top/down GUI buttons, if container's height is not enough.
3099
+ *
3100
+ */
3101
+ scrollButtons: function () {
3102
+ var targetY = 0,
3103
+ _self = this,
3104
+ wrapper = _self.wrapper,
3105
+ toolbar = _self.toolbar,
3106
+ step = 0.1 * wrapper.offsetHeight; // 0.1 = 10%
3107
+
3108
+ ['click', 'touchstart'].forEach(function (eventName) {
3109
+ addEvent(_self.arrowUp, eventName, function () {
3110
+ if (targetY > 0) {
3111
+ targetY -= step;
3112
+ toolbar.style['margin-top'] = -targetY + 'px';
3113
+ }
3114
+ });
3115
+
3116
+ addEvent(_self.arrowDown, eventName, function () {
3117
+ if (
3118
+ wrapper.offsetHeight + targetY <=
3119
+ toolbar.offsetHeight + step
3120
+ ) {
3121
+ targetY += step;
3122
+ toolbar.style['margin-top'] = -targetY + 'px';
3123
+ }
3124
+ });
3125
+ });
3126
+ },
3127
+ /*
3128
+ * Create stockTools HTML main elements.
3129
+ *
3130
+ */
3131
+ createHTML: function () {
3132
+ var stockToolbar = this,
3133
+ chart = stockToolbar.chart,
3134
+ guiOptions = stockToolbar.options,
3135
+ container = chart.container,
3136
+ listWrapper,
3137
+ toolbar,
3138
+ wrapper;
3139
+
3140
+ // create main container
3141
+ stockToolbar.wrapper = wrapper = createElement(DIV, {
3142
+ className: PREFIX + 'stocktools-wrapper ' +
3143
+ guiOptions.className
3144
+ });
3145
+ container.parentNode.insertBefore(wrapper, container);
3146
+
3147
+ // toolbar
3148
+ stockToolbar.toolbar = toolbar = createElement(UL, {
3149
+ className: PREFIX + 'stocktools-toolbar ' +
3150
+ guiOptions.toolbarClassName
3151
+ });
3152
+
3153
+ // add container for list of buttons
3154
+ stockToolbar.listWrapper = listWrapper = createElement(DIV, {
3155
+ className: PREFIX + 'menu-wrapper'
3156
+ });
3157
+
3158
+ wrapper.insertBefore(listWrapper, wrapper.childNodes[0]);
3159
+ listWrapper.insertBefore(toolbar, listWrapper.childNodes[0]);
3160
+
3161
+ stockToolbar.showHideToolbar();
3162
+
3163
+ // add navigation which allows user to scroll down / top GUI buttons
3164
+ stockToolbar.addNavigation();
3165
+ },
3166
+ /*
3167
+ * Function called in redraw verifies if the navigation should be visible.
3168
+ *
3169
+ */
3170
+ showHideNavigatorion: function () {
3171
+ // arrows
3172
+ // 50px space for arrows
3173
+ if (
3174
+ this.visible &&
3175
+ this.toolbar.offsetHeight > (this.wrapper.offsetHeight - 50)
3176
+ ) {
3177
+ this.arrowWrapper.style.display = 'block';
3178
+ } else {
3179
+ // reset margin if whole toolbar is visible
3180
+ this.toolbar.style.marginTop = '0px';
3181
+
3182
+ // hide arrows
3183
+ this.arrowWrapper.style.display = 'none';
3184
+ }
3185
+ },
3186
+ /*
3187
+ * Create button which shows or hides GUI toolbar.
3188
+ *
3189
+ */
3190
+ showHideToolbar: function () {
3191
+ var stockToolbar = this,
3192
+ chart = this.chart,
3193
+ wrapper = stockToolbar.wrapper,
3194
+ toolbar = this.listWrapper,
3195
+ submenu = this.submenu,
3196
+ visible = this.visible,
3197
+ showhideBtn;
3198
+
3199
+ // Show hide toolbar
3200
+ this.showhideBtn = showhideBtn = createElement(DIV, {
3201
+ className: PREFIX + 'toggle-toolbar ' + PREFIX + 'arrow-left'
3202
+ }, null, wrapper);
3203
+
3204
+ if (!visible) {
3205
+ // hide
3206
+ if (submenu) {
3207
+ submenu.style.display = 'none';
3208
+ }
3209
+ showhideBtn.style.left = '0px';
3210
+ stockToolbar.visible = visible = false;
3211
+
3212
+ toolbar.classList.add(PREFIX + 'hide');
3213
+ showhideBtn.classList.toggle(PREFIX + 'arrow-right');
3214
+ wrapper.style.height = showhideBtn.offsetHeight + 'px';
3215
+ } else {
3216
+ wrapper.style.height = '100%';
3217
+ showhideBtn.style.top = H.getStyle(toolbar, 'padding-top') + 'px';
3218
+ showhideBtn.style.left = (
3219
+ wrapper.offsetWidth +
3220
+ H.getStyle(toolbar, 'padding-left')
3221
+ ) + 'px';
3222
+ }
3223
+
3224
+ // toggle menu
3225
+ ['click', 'touchstart'].forEach(function (eventName) {
3226
+ addEvent(showhideBtn, eventName, function () {
3227
+ chart.update({
3228
+ stockTools: {
3229
+ gui: {
3230
+ visible: !visible,
3231
+ placed: true
3232
+ }
3233
+ }
3234
+ });
3235
+ });
3236
+ });
3237
+ },
3238
+ /*
3239
+ * In main GUI button, replace icon and class with submenu button's
3240
+ * class / symbol.
3241
+ *
3242
+ * @param {HTMLDOMElement} - submenu button
3243
+ * @param {Boolean} - true or false
3244
+ *
3245
+ */
3246
+ switchSymbol: function (button, redraw) {
3247
+ var buttonWrapper = button.parentNode,
3248
+ buttonWrapperClass = buttonWrapper.classList.value,
3249
+ // main button in first level og GUI
3250
+ mainNavButton = buttonWrapper.parentNode.parentNode;
3251
+
3252
+ // set class
3253
+ mainNavButton.className = '';
3254
+ if (buttonWrapperClass) {
3255
+ mainNavButton.classList.add(buttonWrapperClass.trim());
3256
+ }
3257
+
3258
+ // set icon
3259
+ mainNavButton.querySelectorAll('.' + PREFIX + 'menu-item-btn')[0]
3260
+ .style['background-image'] = button.style['background-image'];
3261
+
3262
+ // set active class
3263
+ if (redraw) {
3264
+ this.selectButton(mainNavButton);
3265
+ }
3266
+ },
3267
+ /*
3268
+ * Set select state (active class) on button.
3269
+ *
3270
+ * @param {HTMLDOMElement} - button
3271
+ *
3272
+ */
3273
+ selectButton: function (btn) {
3274
+ if (btn.className.indexOf(activeClass) >= 0) {
3275
+ btn.classList.remove(activeClass);
3276
+ } else {
3277
+ btn.classList.add(activeClass);
3278
+ }
3279
+ },
3280
+ /*
3281
+ * Remove active class from all buttons except defined.
3282
+ *
3283
+ * @param {HTMLDOMElement} - button which should not be deactivated
3284
+ *
3285
+ */
3286
+ unselectAllButtons: function (btn) {
3287
+ var activeButtons = btn.parentNode.querySelectorAll('.' + activeClass);
3288
+
3289
+ [].forEach.call(activeButtons, function (activeBtn) {
3290
+ if (activeBtn !== btn) {
3291
+ activeBtn.classList.remove(activeClass);
3292
+ }
3293
+ });
3294
+ },
3295
+ /*
3296
+ * Verify if chart is in iframe.
3297
+ *
3298
+ * @return {Object} - elements translations.
3299
+ */
3300
+ inIframe: function () {
3301
+ try {
3302
+ return win.self !== win.top;
3303
+ } catch (e) {
3304
+ return true;
3305
+ }
3306
+ },
3307
+ /*
3308
+ * Update GUI with given options.
3309
+ *
3310
+ * @param {Object} - general options for Stock Tools
3311
+ */
3312
+ update: function (options) {
3313
+ merge(true, this.chart.options.stockTools, options);
3314
+ this.destroy();
3315
+ this.chart.setStockTools(options);
3316
+
3317
+ // If Stock Tools are updated, then bindings should be updated too:
3318
+ if (this.chart.navigationBindings) {
3319
+ this.chart.navigationBindings.update();
3320
+ }
3321
+ },
3322
+ /*
3323
+ * Destroy all HTML GUI elements.
3324
+ *
3325
+ */
3326
+ destroy: function () {
3327
+ var stockToolsDiv = this.wrapper,
3328
+ parent = stockToolsDiv && stockToolsDiv.parentNode;
3329
+
3330
+ this.eventsToUnbind.forEach(function (unbinder) {
3331
+ unbinder();
3332
+ });
3333
+
3334
+ // Remove the empty element
3335
+ if (parent) {
3336
+ parent.removeChild(stockToolsDiv);
3337
+ }
3338
+
3339
+ // redraw
3340
+ this.chart.isDirtyBox = true;
3341
+ this.chart.redraw();
3342
+ },
3343
+ /*
3344
+ * Redraw, GUI requires to verify if the navigation should be visible.
3345
+ *
3346
+ */
3347
+ redraw: function () {
3348
+ this.showHideNavigatorion();
3349
+ },
3350
+ /*
3351
+ * Mapping JSON fields to CSS classes.
3352
+ *
3353
+ */
3354
+ classMapping: {
3355
+ circle: PREFIX + 'circle-annotation',
3356
+ rectangle: PREFIX + 'rectangle-annotation',
3357
+ label: PREFIX + 'label-annotation',
3358
+ segment: PREFIX + 'segment',
3359
+ arrowSegment: PREFIX + 'arrow-segment',
3360
+ ray: PREFIX + 'ray',
3361
+ arrowRay: PREFIX + 'arrow-ray',
3362
+ line: PREFIX + 'infinity-line',
3363
+ arrowLine: PREFIX + 'arrow-infinity-line',
3364
+ verticalLine: PREFIX + 'vertical-line',
3365
+ horizontalLine: PREFIX + 'horizontal-line',
3366
+ crooked3: PREFIX + 'crooked3',
3367
+ crooked5: PREFIX + 'crooked5',
3368
+ elliott3: PREFIX + 'elliott3',
3369
+ elliott5: PREFIX + 'elliott5',
3370
+ pitchfork: PREFIX + 'pitchfork',
3371
+ fibonacci: PREFIX + 'fibonacci',
3372
+ parallelChannel: PREFIX + 'parallel-channel',
3373
+ measureX: PREFIX + 'measure-x',
3374
+ measureY: PREFIX + 'measure-y',
3375
+ measureXY: PREFIX + 'measure-xy',
3376
+ verticalCounter: PREFIX + 'vertical-counter',
3377
+ verticalLabel: PREFIX + 'vertical-label',
3378
+ verticalArrow: PREFIX + 'vertical-arrow',
3379
+ currentPriceIndicator: PREFIX + 'current-price-indicator',
3380
+ indicators: PREFIX + 'indicators',
3381
+ flagCirclepin: PREFIX + 'flag-circlepin',
3382
+ flagDiamondpin: PREFIX + 'flag-diamondpin',
3383
+ flagSquarepin: PREFIX + 'flag-squarepin',
3384
+ flagSimplepin: PREFIX + 'flag-simplepin',
3385
+ zoomX: PREFIX + 'zoom-x',
3386
+ zoomY: PREFIX + 'zoom-y',
3387
+ zoomXY: PREFIX + 'zoom-xy',
3388
+ typeLine: PREFIX + 'series-type-line',
3389
+ typeOHLC: PREFIX + 'series-type-ohlc',
3390
+ typeCandlestick: PREFIX + 'series-type-candlestick',
3391
+ fullScreen: PREFIX + 'full-screen',
3392
+ toggleAnnotations: PREFIX + 'toggle-annotations',
3393
+ saveChart: PREFIX + 'save-chart',
3394
+ separator: PREFIX + 'separator'
3395
+ }
3396
+ };
3397
+
3398
+ // Comunication with bindings:
3399
+ addEvent(H.NavigationBindings, 'selectButton', function (event) {
3400
+ var button = event.button,
3401
+ className = PREFIX + 'submenu-wrapper',
3402
+ gui = this.chart.stockTools;
3403
+
3404
+ if (gui && gui.guiEnabled) {
3405
+ // Unslect other active buttons
3406
+ gui.unselectAllButtons(event.button);
3407
+
3408
+ // If clicked on a submenu, select state for it's parent
3409
+ if (button.parentNode.className.indexOf(className) >= 0) {
3410
+ button = button.parentNode.parentNode;
3411
+ }
3412
+ // Set active class on the current button
3413
+ gui.selectButton(button);
3414
+ }
3415
+ });
3416
+
3417
+
3418
+ addEvent(H.NavigationBindings, 'deselectButton', function (event) {
3419
+ var button = event.button,
3420
+ className = PREFIX + 'submenu-wrapper',
3421
+ gui = this.chart.stockTools;
3422
+
3423
+ if (gui && gui.guiEnabled) {
3424
+ // If deselecting a button from a submenu, select state for it's parent
3425
+ if (button.parentNode.className.indexOf(className) >= 0) {
3426
+ button = button.parentNode.parentNode;
3427
+ }
3428
+ gui.selectButton(button);
3429
+ }
3430
+ });
3431
+
3432
+ }(Highcharts));
3433
+ return (function () {
3434
+
3435
+
3436
+ }());
3437
+ }));