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 @@
1
+ {"version":3,"file":"data.js.map","lineCount":36,"mappings":"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","sources":["data.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","H","ajax","H.ajax","attr","options","merge","url","type","dataType","success","error","data","headers","json","xml","text","octet","r","XMLHttpRequest","open","toUpperCase","setRequestHeader","objectEach","val","key","onreadystatechange","r.onreadystatechange","res","readyState","status","responseText","JSON","parse","e","stringify","send","addEvent","Chart","doc","win","document","pick","isNumber","splat","fireEvent","SeriesBuilder","Data","dataOptions","chartOptions","chart","init","extend","prototype","decimalPoint","hasData","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","RegExp","rawColumns","length","dataFound","fetchLiveData","parseCSV","parseTable","parseGoogleSpreadsheet","afterComplete","getColumnDistribution","xColumns","getValueCount","seriesTypes","pointArrayMap","globalType","individualCounts","seriesBuilders","seriesIndex","seriesMapping","series","map","x","i","forEach","push","mapping","builder","numberOfValueColumnsNeeded","addColumnReader","name","hasReader","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","inOptions","parseRow","columnStr","rowNumber","noAdd","callbacks","read","j","c","cl","cn","pushType","dataTypes","column","startColumn","actualColumn","endColumn","token","isNaN","parseFloat","isFinite","Date","replace","trim","itemDelimiter","guessDelimiter","lines","points","commas","guessed","some","inStr","potDelimiters","self","deduceDateFormat","limit","thing","guessedFormat","madeDeduction","stable","max","split","parseInt","calculatedFormat","join","dateFormats","format","csv","startRow","endRow","Number","MAX_VALUE","rowIt","beforeParse","call","lineDelimiter","offset","columnTypes","dateFormat","table","getElementById","getElementsByTagName","tr","rowNo","children","item","colNo","tagName","innerHTML","performFetch","initialFetch","request","done","tp","poll","pollingEnabled","liveDataURL","liveDataTimeout","setTimeout","updateIntervalMs","indexOf","clearTimeout","xhr","maxRetries","currentRetries","originalOptions","csvURL","update","rowsURL","columnsURL","enablePolling","dataRefreshRate","fetchSheet","fn","googleSpreadsheetKey","worksheet","googleSpreadsheetWorksheet","refreshRate","cells","feed","entry","cell","cellCount","colCount","gc","cellInner","Math","gs$cell","col","gr","row","content","numericValue","$t","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","dateVal","backup","descending","columnType","forceCategory","xAxis","isDatetime","isNumeric","parseDate","diff","alternativeFormat","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","UTC","year","getFullYear","d","ret","getTime","getTimezoneOffset","rowsLength","colsLength","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","allSeriesBuilders","shift","populateColumns","index","splice","readers","typeCol","columnIndex","configName","turboThreshold","uniqueNames","redraw","options.afterComplete","Highcharts.data","userOptions","args","callback","hasDataDef","hasOwnProperty","preventDefault","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","Point","setNestedProperty","a","b","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader"]}
@@ -0,0 +1,2565 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * Data module
4
+ *
5
+ * (c) 2012-2019 Torstein Honsi
6
+ *
7
+ * License: www.highcharts.com/license
8
+ */
9
+ 'use strict';
10
+ (function (factory) {
11
+ if (typeof module === 'object' && module.exports) {
12
+ factory['default'] = factory;
13
+ module.exports = factory;
14
+ } else if (typeof define === 'function' && define.amd) {
15
+ define(function () {
16
+ return factory;
17
+ });
18
+ } else {
19
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
20
+ }
21
+ }(function (Highcharts) {
22
+ (function (H) {
23
+ /* *
24
+ * (c) 2010-2017 Christer Vasseng, Torstein Honsi
25
+ *
26
+ * License: www.highcharts.com/license
27
+ */
28
+
29
+
30
+
31
+ /**
32
+ * @interface Highcharts.AjaxSettings
33
+ *//**
34
+ * The URL to call.
35
+ *
36
+ * @name Highcharts.AjaxSettings#url
37
+ * @type {string}
38
+ *//**
39
+ * The verb to use.
40
+ *
41
+ * @name Highcharts.AjaxSettings#type
42
+ * @type {"get"|"post"|"update"|"delete"}
43
+ *//**
44
+ * The data type expected.
45
+ *
46
+ * @name Highcharts.AjaxSettings#dataType
47
+ * @type {"json"|"xml"|"text"|"octet"}
48
+ *//**
49
+ * Function to call on success.
50
+ *
51
+ * @name Highcharts.AjaxSettings#success
52
+ * @type {Function}
53
+ *//**
54
+ * Function to call on error.
55
+ *
56
+ * @name Highcharts.AjaxSettings#error
57
+ * @type {Function}
58
+ *//**
59
+ * The payload to send.
60
+ *
61
+ * @name Highcharts.AjaxSettings#data
62
+ * @type {object}
63
+ *//**
64
+ * The headers; keyed on header name.
65
+ *
66
+ * @name Highcharts.AjaxSettings#headers
67
+ * @type {object}
68
+ */
69
+
70
+ /**
71
+ * Perform an Ajax call.
72
+ *
73
+ * @function Highcharts.ajax
74
+ *
75
+ * @param {Highcharts.AjaxSettings} attr
76
+ * The Ajax settings to use.
77
+ */
78
+ H.ajax = function (attr) {
79
+ var options = H.merge(true, {
80
+ url: false,
81
+ type: 'GET',
82
+ dataType: 'json',
83
+ success: false,
84
+ error: false,
85
+ data: false,
86
+ headers: {}
87
+ }, attr),
88
+ headers = {
89
+ json: 'application/json',
90
+ xml: 'application/xml',
91
+ text: 'text/plain',
92
+ octet: 'application/octet-stream'
93
+ },
94
+ r = new XMLHttpRequest();
95
+
96
+ function handleError(xhr, err) {
97
+ if (options.error) {
98
+ options.error(xhr, err);
99
+ } else {
100
+ // Maybe emit a highcharts error event here
101
+ }
102
+ }
103
+
104
+ if (!options.url) {
105
+ return false;
106
+ }
107
+
108
+ r.open(options.type.toUpperCase(), options.url, true);
109
+ r.setRequestHeader(
110
+ 'Content-Type',
111
+ headers[options.dataType] || headers.text
112
+ );
113
+
114
+ H.objectEach(options.headers, function (val, key) {
115
+ r.setRequestHeader(key, val);
116
+ });
117
+
118
+ r.onreadystatechange = function () {
119
+ var res;
120
+
121
+ if (r.readyState === 4) {
122
+ if (r.status === 200) {
123
+ res = r.responseText;
124
+ if (options.dataType === 'json') {
125
+ try {
126
+ res = JSON.parse(res);
127
+ } catch (e) {
128
+ return handleError(r, e);
129
+ }
130
+ }
131
+ return options.success && options.success(res);
132
+ }
133
+
134
+ handleError(r, r.responseText);
135
+ }
136
+ };
137
+
138
+ try {
139
+ options.data = JSON.stringify(options.data);
140
+ } catch (e) {}
141
+
142
+ r.send(options.data || true);
143
+ };
144
+
145
+ }(Highcharts));
146
+ (function (Highcharts) {
147
+ /**
148
+ * Data module
149
+ *
150
+ * (c) 2012-2019 Torstein Honsi
151
+ *
152
+ * License: www.highcharts.com/license
153
+ */
154
+
155
+ /**
156
+ * Callback function to modify the CSV before parsing it by the data module.
157
+ *
158
+ * @callback Highcharts.DataBeforeParseCallbackFunction
159
+ *
160
+ * @param {string} csv
161
+ * The CSV to modify.
162
+ *
163
+ * @return {string}
164
+ * The CSV to parse.
165
+ */
166
+
167
+ /**
168
+ * Callback function that gets called after parsing data.
169
+ *
170
+ * @callback Highcharts.DataCompleteCallbackFunction
171
+ *
172
+ * @param {Highcharts.ChartOptions} chartOptions
173
+ * The chart options that were used.
174
+ */
175
+
176
+ /**
177
+ * Callback function that returns the correspondig Date object to a match.
178
+ *
179
+ * @callback Highcharts.DataDateFormatCallbackFunction
180
+ *
181
+ * @param {Array<number>} match
182
+ *
183
+ * @return {global.Date}
184
+ */
185
+
186
+ /**
187
+ * Structure for alternative date formats to parse.
188
+ *
189
+ * @interface Highcharts.DataDateFormatObject
190
+ *//**
191
+ * @name Highcharts.DataDateFormatObject#alternative
192
+ * @type {string|undefined}
193
+ *//**
194
+ * @name Highcharts.DataDateFormatObject#parser
195
+ * @type {Highcharts.DataDateFormatCallbackFunction}
196
+ *//**
197
+ * @name Highcharts.DataDateFormatObject#regex
198
+ * @type {global.RegExp}
199
+ */
200
+
201
+ /**
202
+ * Callback function to parse string representations of dates into
203
+ * JavaScript timestamps (milliseconds since 1.1.1970).
204
+ *
205
+ * @callback Highcharts.DataParseDateCallbackFunction
206
+ *
207
+ * @param {string} dateValue
208
+ *
209
+ * @return {number}
210
+ * Timestamp (milliseconds since 1.1.1970) as integer for Date class.
211
+ */
212
+
213
+ /**
214
+ * Callback function to access the parsed columns, the two-dimentional
215
+ * input data array directly, before they are interpreted into series
216
+ * data and categories.
217
+ *
218
+ * @callback Highcharts.DataParsedCallbackFunction
219
+ *
220
+ * @param {Array<Array<*>>} columns
221
+ * The parsed columns by the data module.
222
+ *
223
+ * @return {boolean|undefined}
224
+ * Return `false` to stop completion, or call `this.complete()` to
225
+ * continue async.
226
+ */
227
+
228
+
229
+
230
+ // Utilities
231
+ var addEvent = Highcharts.addEvent,
232
+ Chart = Highcharts.Chart,
233
+ win = Highcharts.win,
234
+ doc = win.document,
235
+ objectEach = Highcharts.objectEach,
236
+ pick = Highcharts.pick,
237
+ isNumber = Highcharts.isNumber,
238
+ merge = Highcharts.merge,
239
+ splat = Highcharts.splat,
240
+ fireEvent = Highcharts.fireEvent,
241
+ SeriesBuilder;
242
+
243
+ /**
244
+ * The Data module provides a simplified interface for adding data to
245
+ * a chart from sources like CVS, HTML tables or grid views. See also
246
+ * the [tutorial article on the Data module](
247
+ * https://www.highcharts.com/docs/working-with-data/data-module).
248
+ *
249
+ * It requires the `modules/data.js` file to be loaded.
250
+ *
251
+ * Please note that the default way of adding data in Highcharts, without
252
+ * the need of a module, is through the [series.data](#series.data)
253
+ * option.
254
+ *
255
+ * @sample {highcharts} highcharts/demo/column-parsed/
256
+ * HTML table
257
+ * @sample {highcharts} highcharts/data/csv/
258
+ * CSV
259
+ *
260
+ * @since 4.0
261
+ * @apioption data
262
+ */
263
+
264
+ /**
265
+ * A callback function to modify the CSV before parsing it. Return the modified
266
+ * string.
267
+ *
268
+ * @sample {highcharts} highcharts/demo/line-ajax/
269
+ * Modify CSV before parse
270
+ *
271
+ * @type {Highcharts.DataBeforeParseCallbackFunction}
272
+ * @since 6.1
273
+ * @apioption data.beforeParse
274
+ */
275
+
276
+ /**
277
+ * A two-dimensional array representing the input data on tabular form.
278
+ * This input can be used when the data is already parsed, for example
279
+ * from a grid view component. Each cell can be a string or number.
280
+ * If not switchRowsAndColumns is set, the columns are interpreted as
281
+ * series.
282
+ *
283
+ * @see [data.rows](#data.rows)
284
+ *
285
+ * @sample {highcharts} highcharts/data/columns/
286
+ * Columns
287
+ *
288
+ * @type {Array<Array<*>>}
289
+ * @since 4.0
290
+ * @apioption data.columns
291
+ */
292
+
293
+ /**
294
+ * The callback that is evaluated when the data is finished loading,
295
+ * optionally from an external source, and parsed. The first argument
296
+ * passed is a finished chart options object, containing the series.
297
+ * These options can be extended with additional options and passed
298
+ * directly to the chart constructor.
299
+ *
300
+ * @see [data.parsed](#data.parsed)
301
+ *
302
+ * @sample {highcharts} highcharts/data/complete/
303
+ * Modify data on complete
304
+ *
305
+ * @type {Highcharts.DataCompleteCallbackFunction}
306
+ * @since 4.0
307
+ * @apioption data.complete
308
+ */
309
+
310
+ /**
311
+ * A comma delimited string to be parsed. Related options are [startRow](
312
+ * #data.startRow), [endRow](#data.endRow), [startColumn](#data.startColumn)
313
+ * and [endColumn](#data.endColumn) to delimit what part of the table
314
+ * is used. The [lineDelimiter](#data.lineDelimiter) and [itemDelimiter](
315
+ * #data.itemDelimiter) options define the CSV delimiter formats.
316
+ *
317
+ * The built-in CSV parser doesn't support all flavours of CSV, so in
318
+ * some cases it may be necessary to use an external CSV parser. See
319
+ * [this example](https://jsfiddle.net/highcharts/u59176h4/) of parsing
320
+ * CSV through the MIT licensed [Papa Parse](http://papaparse.com/)
321
+ * library.
322
+ *
323
+ * @sample {highcharts} highcharts/data/csv/
324
+ * Data from CSV
325
+ *
326
+ * @type {string}
327
+ * @since 4.0
328
+ * @apioption data.csv
329
+ */
330
+
331
+ /**
332
+ * Which of the predefined date formats in Date.prototype.dateFormats
333
+ * to use to parse date values. Defaults to a best guess based on what
334
+ * format gives valid and ordered dates. Valid options include: `YYYY/mm/dd`,
335
+ * `dd/mm/YYYY`, `mm/dd/YYYY`, `dd/mm/YY`, `mm/dd/YY`.
336
+ *
337
+ * @see [data.parseDate](#data.parseDate)
338
+ *
339
+ * @sample {highcharts} highcharts/data/dateformat-auto/
340
+ * Best guess date format
341
+ *
342
+ * @type {string}
343
+ * @since 4.0
344
+ * @validvalue ["YYYY/mm/dd", "dd/mm/YYYY", "mm/dd/YYYY", "dd/mm/YYYY",
345
+ * "dd/mm/YY", "mm/dd/YY"]
346
+ * @apioption data.dateFormat
347
+ */
348
+
349
+ /**
350
+ * The decimal point used for parsing numbers in the CSV.
351
+ *
352
+ * If both this and data.delimiter is set to `undefined`, the parser will
353
+ * attempt to deduce the decimal point automatically.
354
+ *
355
+ * @sample {highcharts} highcharts/data/delimiters/
356
+ * Comma as decimal point
357
+ *
358
+ * @type {string}
359
+ * @default .
360
+ * @since 4.1.0
361
+ * @apioption data.decimalPoint
362
+ */
363
+
364
+ /**
365
+ * In tabular input data, the last column (indexed by 0) to use. Defaults
366
+ * to the last column containing data.
367
+ *
368
+ * @sample {highcharts} highcharts/data/start-end/
369
+ * Limited data
370
+ *
371
+ * @type {number}
372
+ * @since 4.0
373
+ * @apioption data.endColumn
374
+ */
375
+
376
+ /**
377
+ * In tabular input data, the last row (indexed by 0) to use. Defaults
378
+ * to the last row containing data.
379
+ *
380
+ * @sample {highcharts} highcharts/data/start-end/
381
+ * Limited data
382
+ *
383
+ * @type {number}
384
+ * @since 4.0.4
385
+ * @apioption data.endRow
386
+ */
387
+
388
+ /**
389
+ * Whether to use the first row in the data set as series names.
390
+ *
391
+ * @sample {highcharts} highcharts/data/start-end/
392
+ * Don't get series names from the CSV
393
+ * @sample {highstock} highcharts/data/start-end/
394
+ * Don't get series names from the CSV
395
+ *
396
+ * @type {boolean}
397
+ * @default true
398
+ * @since 4.1.0
399
+ * @product highcharts highstock gantt
400
+ * @apioption data.firstRowAsNames
401
+ */
402
+
403
+ /**
404
+ * The key for a Google Spreadsheet to load. See [general information
405
+ * on GS](https://developers.google.com/gdata/samples/spreadsheet_sample).
406
+ *
407
+ * @sample {highcharts} highcharts/data/google-spreadsheet/
408
+ * Load a Google Spreadsheet
409
+ *
410
+ * @type {string}
411
+ * @since 4.0
412
+ * @apioption data.googleSpreadsheetKey
413
+ */
414
+
415
+ /**
416
+ * The Google Spreadsheet worksheet to use in combination with
417
+ * [googleSpreadsheetKey](#data.googleSpreadsheetKey). The available id's from
418
+ * your sheet can be read from `https://spreadsheets.google.com/feeds/worksheets/{key}/public/basic`.
419
+ *
420
+ * @sample {highcharts} highcharts/data/google-spreadsheet/
421
+ * Load a Google Spreadsheet
422
+ *
423
+ * @type {string}
424
+ * @since 4.0
425
+ * @apioption data.googleSpreadsheetWorksheet
426
+ */
427
+
428
+ /**
429
+ * Item or cell delimiter for parsing CSV. Defaults to the tab character
430
+ * `\t` if a tab character is found in the CSV string, if not it defaults
431
+ * to `,`.
432
+ *
433
+ * If this is set to false or undefined, the parser will attempt to deduce
434
+ * the delimiter automatically.
435
+ *
436
+ * @sample {highcharts} highcharts/data/delimiters/
437
+ * Delimiters
438
+ *
439
+ * @type {string}
440
+ * @since 4.0
441
+ * @apioption data.itemDelimiter
442
+ */
443
+
444
+ /**
445
+ * Line delimiter for parsing CSV.
446
+ *
447
+ * @sample {highcharts} highcharts/data/delimiters/
448
+ * Delimiters
449
+ *
450
+ * @type {string}
451
+ * @default \n
452
+ * @since 4.0
453
+ * @apioption data.lineDelimiter
454
+ */
455
+
456
+ /**
457
+ * A callback function to parse string representations of dates into
458
+ * JavaScript timestamps. Should return an integer timestamp on success.
459
+ *
460
+ * @see [dateFormat](#data.dateFormat)
461
+ *
462
+ * @type {Highcharts.DataParseDateCallbackFunction}
463
+ * @since 4.0
464
+ * @apioption data.parseDate
465
+ */
466
+
467
+ /**
468
+ * A callback function to access the parsed columns, the two-dimentional
469
+ * input data array directly, before they are interpreted into series
470
+ * data and categories. Return `false` to stop completion, or call
471
+ * `this.complete()` to continue async.
472
+ *
473
+ * @see [data.complete](#data.complete)
474
+ *
475
+ * @sample {highcharts} highcharts/data/parsed/
476
+ * Modify data after parse
477
+ *
478
+ * @type {Highcharts.DataParsedCallbackFunction}
479
+ * @since 4.0
480
+ * @apioption data.parsed
481
+ */
482
+
483
+ /**
484
+ * The same as the columns input option, but defining rows intead of
485
+ * columns.
486
+ *
487
+ * @see [data.columns](#data.columns)
488
+ *
489
+ * @sample {highcharts} highcharts/data/rows/
490
+ * Data in rows
491
+ *
492
+ * @type {Array<Array<*>>}
493
+ * @since 4.0
494
+ * @apioption data.rows
495
+ */
496
+
497
+ /**
498
+ * An array containing dictionaries for each series. A dictionary exists of
499
+ * Point property names as the key and the CSV column index as the value.
500
+ *
501
+ * @sample {highcharts} highcharts/data/seriesmapping-label/
502
+ * Label from data set
503
+ *
504
+ * @type {Array<Highcharts.Dictionary<number>>}
505
+ * @since 4.0.4
506
+ * @apioption data.seriesMapping
507
+ */
508
+
509
+ /**
510
+ * In tabular input data, the first column (indexed by 0) to use.
511
+ *
512
+ * @sample {highcharts} highcharts/data/start-end/
513
+ * Limited data
514
+ *
515
+ * @type {number}
516
+ * @default 0
517
+ * @since 4.0
518
+ * @apioption data.startColumn
519
+ */
520
+
521
+ /**
522
+ * In tabular input data, the first row (indexed by 0) to use.
523
+ *
524
+ * @sample {highcharts} highcharts/data/start-end/
525
+ * Limited data
526
+ *
527
+ * @type {number}
528
+ * @default 0
529
+ * @since 4.0
530
+ * @apioption data.startRow
531
+ */
532
+
533
+ /**
534
+ * Switch rows and columns of the input data, so that `this.columns`
535
+ * effectively becomes the rows of the data set, and the rows are interpreted
536
+ * as series.
537
+ *
538
+ * @sample {highcharts} highcharts/data/switchrowsandcolumns/
539
+ * Switch rows and columns
540
+ *
541
+ * @type {boolean}
542
+ * @default false
543
+ * @since 4.0
544
+ * @apioption data.switchRowsAndColumns
545
+ */
546
+
547
+ /**
548
+ * An HTML table or the id of such to be parsed as input data. Related
549
+ * options are `startRow`, `endRow`, `startColumn` and `endColumn` to
550
+ * delimit what part of the table is used.
551
+ *
552
+ * @sample {highcharts} highcharts/demo/column-parsed/
553
+ * Parsed table
554
+ *
555
+ * @type {string|global.HTMLElement}
556
+ * @since 4.0
557
+ * @apioption data.table
558
+ */
559
+
560
+ /**
561
+ * An URL to a remote CSV dataset. Will be fetched when the chart is created
562
+ * using Ajax.
563
+ *
564
+ * @sample highcharts/data/livedata-columns
565
+ * Categorized bar chart with CSV and live polling
566
+ * @sample highcharts/data/livedata-csv
567
+ * Time based line chart with CSV and live polling
568
+ *
569
+ * @type {string}
570
+ * @apioption data.csvURL
571
+ */
572
+
573
+ /**
574
+ * A URL to a remote JSON dataset, structured as a row array.
575
+ * Will be fetched when the chart is created using Ajax.
576
+ *
577
+ * @sample highcharts/data/livedata-rows
578
+ * Rows with live polling
579
+ *
580
+ * @type {string}
581
+ * @apioption data.rowsURL
582
+ */
583
+
584
+ /**
585
+ * A URL to a remote JSON dataset, structured as a column array.
586
+ * Will be fetched when the chart is created using Ajax.
587
+ *
588
+ * @sample highcharts/data/livedata-columns
589
+ * Columns with live polling
590
+ *
591
+ * @type {string}
592
+ * @apioption data.columnsURL
593
+ */
594
+
595
+ /**
596
+ * Sets the refresh rate for data polling when importing remote dataset by
597
+ * setting [data.csvURL](data.csvURL), [data.rowsURL](data.rowsURL),
598
+ * [data.columnsURL](data.columnsURL), or
599
+ * [data.googleSpreadsheetKey](data.googleSpreadsheetKey).
600
+ *
601
+ * Note that polling must be enabled by setting
602
+ * [data.enablePolling](data.enablePolling) to true.
603
+ *
604
+ * The value is the number of seconds between pollings.
605
+ * It cannot be set to less than 1 second.
606
+ *
607
+ * @sample highcharts/demo/live-data
608
+ * Live data with user set refresh rate
609
+ *
610
+ * @default 1
611
+ * @type {number}
612
+ * @apioption data.dataRefreshRate
613
+ */
614
+
615
+ /**
616
+ * Enables automatic refetching of remote datasets every _n_ seconds (defined by
617
+ * setting [data.dataRefreshRate](data.dataRefreshRate)).
618
+ *
619
+ * Only works when either [data.csvURL](data.csvURL),
620
+ * [data.rowsURL](data.rowsURL), [data.columnsURL](data.columnsURL), or
621
+ * [data.googleSpreadsheetKey](data.googleSpreadsheetKey).
622
+ *
623
+ * @sample highcharts/demo/live-data
624
+ * Live data
625
+ * @sample highcharts/data/livedata-columns
626
+ * Categorized bar chart with CSV and live polling
627
+ *
628
+ * @type {boolean}
629
+ * @default false
630
+ * @apioption data.enablePolling
631
+ */
632
+
633
+ /**
634
+ * The Data class
635
+ *
636
+ * @requires module:modules/data
637
+ *
638
+ * @class
639
+ * @name Highcharts.Data
640
+ *
641
+ * @param {Highcharts.DataOptions} dataOptions
642
+ *
643
+ * @param {Highcharts.Options} [chartOptions]
644
+ *
645
+ * @param {Highcharts.Chart} [chart]
646
+ */
647
+ var Data = function (dataOptions, chartOptions, chart) {
648
+ this.init(dataOptions, chartOptions, chart);
649
+ };
650
+
651
+ // Set the prototype properties
652
+ Highcharts.extend(Data.prototype, {
653
+
654
+ /**
655
+ * Initialize the Data object with the given options
656
+ *
657
+ * @private
658
+ * @function Highcharts.Data#init
659
+ *
660
+ * @param {Highcharts.DataOptions} options
661
+ *
662
+ * @param {Highcharts.Options} [chartOptions]
663
+ *
664
+ * @param {Highcharts.Chart} [chart]
665
+ */
666
+ init: function (options, chartOptions, chart) {
667
+
668
+ var decimalPoint = options.decimalPoint,
669
+ hasData;
670
+
671
+ if (chartOptions) {
672
+ this.chartOptions = chartOptions;
673
+ }
674
+ if (chart) {
675
+ this.chart = chart;
676
+ }
677
+
678
+ if (decimalPoint !== '.' && decimalPoint !== ',') {
679
+ decimalPoint = undefined;
680
+ }
681
+
682
+ this.options = options;
683
+ this.columns = (
684
+ options.columns ||
685
+ this.rowsToColumns(options.rows) ||
686
+ []
687
+ );
688
+
689
+ this.firstRowAsNames = pick(
690
+ options.firstRowAsNames,
691
+ this.firstRowAsNames,
692
+ true
693
+ );
694
+
695
+ this.decimalRegex = (
696
+ decimalPoint &&
697
+ new RegExp('^(-?[0-9]+)' + decimalPoint + '([0-9]+)$') // eslint-disable-line security/detect-non-literal-regexp
698
+ );
699
+
700
+ // This is a two-dimensional array holding the raw, trimmed string
701
+ // values with the same organisation as the columns array. It makes it
702
+ // possible for example to revert from interpreted timestamps to
703
+ // string-based categories.
704
+ this.rawColumns = [];
705
+
706
+ // No need to parse or interpret anything
707
+ if (this.columns.length) {
708
+ this.dataFound();
709
+ hasData = true;
710
+ }
711
+
712
+ if (!hasData) {
713
+ // Fetch live data
714
+ hasData = this.fetchLiveData();
715
+ }
716
+
717
+ if (!hasData) {
718
+ // Parse a CSV string if options.csv is given. The parseCSV function
719
+ // returns a columns array, if it has no length, we have no data
720
+ hasData = Boolean(this.parseCSV().length);
721
+ }
722
+
723
+ if (!hasData) {
724
+ // Parse a HTML table if options.table is given
725
+ hasData = Boolean(this.parseTable().length);
726
+ }
727
+
728
+ if (!hasData) {
729
+ // Parse a Google Spreadsheet
730
+ hasData = this.parseGoogleSpreadsheet();
731
+ }
732
+
733
+ if (!hasData && options.afterComplete) {
734
+ options.afterComplete();
735
+ }
736
+ },
737
+
738
+ /**
739
+ * Get the column distribution. For example, a line series takes a single
740
+ * column for Y values. A range series takes two columns for low and high
741
+ * values respectively, and an OHLC series takes four columns.
742
+ *
743
+ * @function Highcharts.Data#getColumnDistribution
744
+ */
745
+ getColumnDistribution: function () {
746
+ var chartOptions = this.chartOptions,
747
+ options = this.options,
748
+ xColumns = [],
749
+ getValueCount = function (type) {
750
+ return (
751
+ Highcharts.seriesTypes[type || 'line'].prototype
752
+ .pointArrayMap ||
753
+ [0]
754
+ ).length;
755
+ },
756
+ getPointArrayMap = function (type) {
757
+ return Highcharts.seriesTypes[type || 'line']
758
+ .prototype.pointArrayMap;
759
+ },
760
+ globalType = (
761
+ chartOptions &&
762
+ chartOptions.chart &&
763
+ chartOptions.chart.type
764
+ ),
765
+ individualCounts = [],
766
+ seriesBuilders = [],
767
+ seriesIndex = 0,
768
+
769
+ // If no series mapping is defined, check if the series array is
770
+ // defined with types.
771
+ seriesMapping = (
772
+ (options && options.seriesMapping) ||
773
+ (
774
+ chartOptions &&
775
+ chartOptions.series &&
776
+ chartOptions.series.map(function () {
777
+ return { x: 0 };
778
+ })
779
+ ) ||
780
+ []
781
+ ),
782
+ i;
783
+
784
+ ((chartOptions && chartOptions.series) || []).forEach(
785
+ function (series) {
786
+ individualCounts.push(getValueCount(series.type || globalType));
787
+ }
788
+ );
789
+
790
+ // Collect the x-column indexes from seriesMapping
791
+ seriesMapping.forEach(function (mapping) {
792
+ xColumns.push(mapping.x || 0);
793
+ });
794
+
795
+ // If there are no defined series with x-columns, use the first column
796
+ // as x column
797
+ if (xColumns.length === 0) {
798
+ xColumns.push(0);
799
+ }
800
+
801
+ // Loop all seriesMappings and constructs SeriesBuilders from
802
+ // the mapping options.
803
+ seriesMapping.forEach(function (mapping) {
804
+ var builder = new SeriesBuilder(),
805
+ numberOfValueColumnsNeeded = individualCounts[seriesIndex] ||
806
+ getValueCount(globalType),
807
+ seriesArr = (chartOptions && chartOptions.series) || [],
808
+ series = seriesArr[seriesIndex] || {},
809
+ pointArrayMap = getPointArrayMap(series.type || globalType) ||
810
+ ['y'];
811
+
812
+ // Add an x reader from the x property or from an undefined column
813
+ // if the property is not set. It will then be auto populated later.
814
+ builder.addColumnReader(mapping.x, 'x');
815
+
816
+ // Add all column mappings
817
+ objectEach(mapping, function (val, name) {
818
+ if (name !== 'x') {
819
+ builder.addColumnReader(val, name);
820
+ }
821
+ });
822
+
823
+ // Add missing columns
824
+ for (i = 0; i < numberOfValueColumnsNeeded; i++) {
825
+ if (!builder.hasReader(pointArrayMap[i])) {
826
+ // Create and add a column reader for the next free column
827
+ // index
828
+ builder.addColumnReader(undefined, pointArrayMap[i]);
829
+ }
830
+ }
831
+
832
+ seriesBuilders.push(builder);
833
+ seriesIndex++;
834
+ });
835
+
836
+ var globalPointArrayMap = getPointArrayMap(globalType);
837
+
838
+ if (globalPointArrayMap === undefined) {
839
+ globalPointArrayMap = ['y'];
840
+ }
841
+
842
+ this.valueCount = {
843
+ global: getValueCount(globalType),
844
+ xColumns: xColumns,
845
+ individual: individualCounts,
846
+ seriesBuilders: seriesBuilders,
847
+ globalPointArrayMap: globalPointArrayMap
848
+ };
849
+ },
850
+
851
+ /**
852
+ * When the data is parsed into columns, either by CSV, table, GS or direct
853
+ * input, continue with other operations.
854
+ *
855
+ * @private
856
+ * @function Highcharts.Data#dataFound
857
+ */
858
+ dataFound: function () {
859
+ if (this.options.switchRowsAndColumns) {
860
+ this.columns = this.rowsToColumns(this.columns);
861
+ }
862
+
863
+ // Interpret the info about series and columns
864
+ this.getColumnDistribution();
865
+
866
+ // Interpret the values into right types
867
+ this.parseTypes();
868
+
869
+ // Handle columns if a handleColumns callback is given
870
+ if (this.parsed() !== false) {
871
+
872
+ // Complete if a complete callback is given
873
+ this.complete();
874
+ }
875
+
876
+ },
877
+
878
+ /**
879
+ * Parse a CSV input string
880
+ *
881
+ * @function Highcharts.Data#parseCSV
882
+ *
883
+ * @param {Highcharts.DataOptions} inOptions
884
+ *
885
+ * @return {Array<Array<*>>}
886
+ */
887
+ parseCSV: function (inOptions) {
888
+ var self = this,
889
+ options = inOptions || this.options,
890
+ csv = options.csv,
891
+ columns,
892
+ startRow = (
893
+ typeof options.startRow !== 'undefined' && options.startRow ?
894
+ options.startRow :
895
+ 0
896
+ ),
897
+ endRow = options.endRow || Number.MAX_VALUE,
898
+ startColumn = (
899
+ typeof options.startColumn !== 'undefined' &&
900
+ options.startColumn
901
+ ) ? options.startColumn : 0,
902
+ endColumn = options.endColumn || Number.MAX_VALUE,
903
+ itemDelimiter,
904
+ lines,
905
+ rowIt = 0,
906
+ // activeRowNo = 0,
907
+ dataTypes = [],
908
+ // We count potential delimiters in the prepass, and use the
909
+ // result as the basis of half-intelligent guesses.
910
+ potDelimiters = {
911
+ ',': 0,
912
+ ';': 0,
913
+ '\t': 0
914
+ };
915
+
916
+ columns = this.columns = [];
917
+
918
+ /*
919
+ This implementation is quite verbose. It will be shortened once
920
+ it's stable and passes all the test.
921
+
922
+ It's also not written with speed in mind, instead everything is
923
+ very seggregated, and there a several redundant loops.
924
+ This is to make it easier to stabilize the code initially.
925
+
926
+ We do a pre-pass on the first 4 rows to make some intelligent
927
+ guesses on the set. Guessed delimiters are in this pass counted.
928
+
929
+ Auto detecting delimiters
930
+ - If we meet a quoted string, the next symbol afterwards
931
+ (that's not \s, \t) is the delimiter
932
+ - If we meet a date, the next symbol afterwards is the delimiter
933
+
934
+ Date formats
935
+ - If we meet a column with date formats, check all of them to
936
+ see if one of the potential months crossing 12. If it does,
937
+ we now know the format
938
+
939
+ It would make things easier to guess the delimiter before
940
+ doing the actual parsing.
941
+
942
+ General rules:
943
+ - Quoting is allowed, e.g: "Col 1",123,321
944
+ - Quoting is optional, e.g.: Col1,123,321
945
+ - Doubble quoting is escaping, e.g. "Col ""Hello world""",123
946
+ - Spaces are considered part of the data: Col1 ,123
947
+ - New line is always the row delimiter
948
+ - Potential column delimiters are , ; \t
949
+ - First row may optionally contain headers
950
+ - The last row may or may not have a row delimiter
951
+ - Comments are optionally supported, in which case the comment
952
+ must start at the first column, and the rest of the line will
953
+ be ignored
954
+ */
955
+
956
+ // Parse a single row
957
+ function parseRow(columnStr, rowNumber, noAdd, callbacks) {
958
+ var i = 0,
959
+ c = '',
960
+ cl = '',
961
+ cn = '',
962
+ token = '',
963
+ actualColumn = 0,
964
+ column = 0;
965
+
966
+ function read(j) {
967
+ c = columnStr[j];
968
+ cl = columnStr[j - 1];
969
+ cn = columnStr[j + 1];
970
+ }
971
+
972
+ function pushType(type) {
973
+ if (dataTypes.length < column + 1) {
974
+ dataTypes.push([type]);
975
+ }
976
+ if (dataTypes[column][dataTypes[column].length - 1] !== type) {
977
+ dataTypes[column].push(type);
978
+ }
979
+ }
980
+
981
+ function push() {
982
+ if (startColumn > actualColumn || actualColumn > endColumn) {
983
+ // Skip this column, but increment the column count (#7272)
984
+ ++actualColumn;
985
+ token = '';
986
+ return;
987
+ }
988
+
989
+ if (!isNaN(parseFloat(token)) && isFinite(token)) {
990
+ token = parseFloat(token);
991
+ pushType('number');
992
+ } else if (!isNaN(Date.parse(token))) {
993
+ token = token.replace(/\//g, '-');
994
+ pushType('date');
995
+ } else {
996
+ pushType('string');
997
+ }
998
+
999
+ if (columns.length < column + 1) {
1000
+ columns.push([]);
1001
+ }
1002
+
1003
+ if (!noAdd) {
1004
+ // Don't push - if there's a varrying amount of columns
1005
+ // for each row, pushing will skew everything down n slots
1006
+ columns[column][rowNumber] = token;
1007
+ }
1008
+
1009
+ token = '';
1010
+ ++column;
1011
+ ++actualColumn;
1012
+ }
1013
+
1014
+ if (!columnStr.trim().length) {
1015
+ return;
1016
+ }
1017
+
1018
+ if (columnStr.trim()[0] === '#') {
1019
+ return;
1020
+ }
1021
+
1022
+ for (; i < columnStr.length; i++) {
1023
+ read(i);
1024
+
1025
+ // Quoted string
1026
+ if (c === '#') {
1027
+ // The rest of the row is a comment
1028
+ push();
1029
+ return;
1030
+ }
1031
+
1032
+ if (c === '"') {
1033
+ read(++i);
1034
+
1035
+ while (i < columnStr.length) {
1036
+ if (c === '"' && cl !== '"' && cn !== '"') {
1037
+ break;
1038
+ }
1039
+
1040
+ if (c !== '"' || (c === '"' && cl !== '"')) {
1041
+ token += c;
1042
+ }
1043
+
1044
+ read(++i);
1045
+ }
1046
+
1047
+ // Perform "plugin" handling
1048
+ } else if (callbacks && callbacks[c]) {
1049
+ if (callbacks[c](c, token)) {
1050
+ push();
1051
+ }
1052
+
1053
+ // Delimiter - push current token
1054
+ } else if (c === itemDelimiter) {
1055
+ push();
1056
+
1057
+ // Actual column data
1058
+ } else {
1059
+ token += c;
1060
+ }
1061
+ }
1062
+
1063
+ push();
1064
+
1065
+ }
1066
+
1067
+ // Attempt to guess the delimiter
1068
+ // We do a separate parse pass here because we need
1069
+ // to count potential delimiters softly without making any assumptions.
1070
+ function guessDelimiter(lines) {
1071
+ var points = 0,
1072
+ commas = 0,
1073
+ guessed = false;
1074
+
1075
+ lines.some(function (columnStr, i) {
1076
+ var inStr = false,
1077
+ c,
1078
+ cn,
1079
+ cl,
1080
+ token = '';
1081
+
1082
+
1083
+ // We should be able to detect dateformats within 13 rows
1084
+ if (i > 13) {
1085
+ return true;
1086
+ }
1087
+
1088
+ for (var j = 0; j < columnStr.length; j++) {
1089
+ c = columnStr[j];
1090
+ cn = columnStr[j + 1];
1091
+ cl = columnStr[j - 1];
1092
+
1093
+ if (c === '#') {
1094
+ // Skip the rest of the line - it's a comment
1095
+ return;
1096
+ }
1097
+
1098
+ if (c === '"') {
1099
+ if (inStr) {
1100
+ if (cl !== '"' && cn !== '"') {
1101
+ while (cn === ' ' && j < columnStr.length) {
1102
+ cn = columnStr[++j];
1103
+ }
1104
+
1105
+ // After parsing a string, the next non-blank
1106
+ // should be a delimiter if the CSV is properly
1107
+ // formed.
1108
+
1109
+ if (typeof potDelimiters[cn] !== 'undefined') {
1110
+ potDelimiters[cn]++;
1111
+ }
1112
+
1113
+ inStr = false;
1114
+ }
1115
+ } else {
1116
+ inStr = true;
1117
+ }
1118
+ } else if (typeof potDelimiters[c] !== 'undefined') {
1119
+
1120
+ token = token.trim();
1121
+
1122
+ if (!isNaN(Date.parse(token))) {
1123
+ potDelimiters[c]++;
1124
+ } else if (isNaN(token) || !isFinite(token)) {
1125
+ potDelimiters[c]++;
1126
+ }
1127
+
1128
+ token = '';
1129
+
1130
+ } else {
1131
+ token += c;
1132
+ }
1133
+
1134
+ if (c === ',') {
1135
+ commas++;
1136
+ }
1137
+
1138
+ if (c === '.') {
1139
+ points++;
1140
+ }
1141
+ }
1142
+ });
1143
+
1144
+ // Count the potential delimiters.
1145
+ // This could be improved by checking if the number of delimiters
1146
+ // equals the number of columns - 1
1147
+
1148
+ if (potDelimiters[';'] > potDelimiters[',']) {
1149
+ guessed = ';';
1150
+ } else if (potDelimiters[','] > potDelimiters[';']) {
1151
+ guessed = ',';
1152
+ } else {
1153
+ // No good guess could be made..
1154
+ guessed = ',';
1155
+ }
1156
+
1157
+ // Try to deduce the decimal point if it's not explicitly set.
1158
+ // If both commas or points is > 0 there is likely an issue
1159
+ if (!options.decimalPoint) {
1160
+ if (points > commas) {
1161
+ options.decimalPoint = '.';
1162
+ } else {
1163
+ options.decimalPoint = ',';
1164
+ }
1165
+
1166
+ // Apply a new decimal regex based on the presumed decimal sep.
1167
+ self.decimalRegex = new RegExp( // eslint-disable-line security/detect-non-literal-regexp
1168
+ '^(-?[0-9]+)' +
1169
+ options.decimalPoint +
1170
+ '([0-9]+)$'
1171
+ );
1172
+ }
1173
+
1174
+ return guessed;
1175
+ }
1176
+
1177
+ /* Tries to guess the date format
1178
+ * - Check if either month candidate exceeds 12
1179
+ * - Check if year is missing (use current year)
1180
+ * - Check if a shortened year format is used (e.g. 1/1/99)
1181
+ * - If no guess can be made, the user must be prompted
1182
+ * data is the data to deduce a format based on
1183
+ */
1184
+ function deduceDateFormat(data, limit) {
1185
+ var format = 'YYYY/mm/dd',
1186
+ thing,
1187
+ guessedFormat,
1188
+ calculatedFormat,
1189
+ i = 0,
1190
+ madeDeduction = false,
1191
+ // candidates = {},
1192
+ stable = [],
1193
+ max = [],
1194
+ j;
1195
+
1196
+ if (!limit || limit > data.length) {
1197
+ limit = data.length;
1198
+ }
1199
+
1200
+ for (; i < limit; i++) {
1201
+ if (
1202
+ typeof data[i] !== 'undefined' &&
1203
+ data[i] && data[i].length
1204
+ ) {
1205
+ thing = data[i]
1206
+ .trim()
1207
+ .replace(/\//g, ' ')
1208
+ .replace(/\-/g, ' ')
1209
+ .replace(/\./g, ' ')
1210
+ .split(' ');
1211
+
1212
+ guessedFormat = [
1213
+ '',
1214
+ '',
1215
+ ''
1216
+ ];
1217
+
1218
+
1219
+ for (j = 0; j < thing.length; j++) {
1220
+ if (j < guessedFormat.length) {
1221
+ thing[j] = parseInt(thing[j], 10);
1222
+
1223
+ if (thing[j]) {
1224
+
1225
+ max[j] = (!max[j] || max[j] < thing[j]) ?
1226
+ thing[j] :
1227
+ max[j];
1228
+
1229
+ if (typeof stable[j] !== 'undefined') {
1230
+ if (stable[j] !== thing[j]) {
1231
+ stable[j] = false;
1232
+ }
1233
+ } else {
1234
+ stable[j] = thing[j];
1235
+ }
1236
+
1237
+ if (thing[j] > 31) {
1238
+ if (thing[j] < 100) {
1239
+ guessedFormat[j] = 'YY';
1240
+ } else {
1241
+ guessedFormat[j] = 'YYYY';
1242
+ }
1243
+ // madeDeduction = true;
1244
+ } else if (thing[j] > 12 && thing[j] <= 31) {
1245
+ guessedFormat[j] = 'dd';
1246
+ madeDeduction = true;
1247
+ } else if (!guessedFormat[j].length) {
1248
+ guessedFormat[j] = 'mm';
1249
+ }
1250
+ }
1251
+ }
1252
+ }
1253
+ }
1254
+ }
1255
+
1256
+ if (madeDeduction) {
1257
+
1258
+ // This handles a few edge cases with hard to guess dates
1259
+ for (j = 0; j < stable.length; j++) {
1260
+ if (stable[j] !== false) {
1261
+ if (
1262
+ max[j] > 12 &&
1263
+ guessedFormat[j] !== 'YY' &&
1264
+ guessedFormat[j] !== 'YYYY'
1265
+ ) {
1266
+ guessedFormat[j] = 'YY';
1267
+ }
1268
+ } else if (max[j] > 12 && guessedFormat[j] === 'mm') {
1269
+ guessedFormat[j] = 'dd';
1270
+ }
1271
+ }
1272
+
1273
+ // If the middle one is dd, and the last one is dd,
1274
+ // the last should likely be year.
1275
+ if (guessedFormat.length === 3 &&
1276
+ guessedFormat[1] === 'dd' &&
1277
+ guessedFormat[2] === 'dd') {
1278
+ guessedFormat[2] = 'YY';
1279
+ }
1280
+
1281
+ calculatedFormat = guessedFormat.join('/');
1282
+
1283
+ // If the caculated format is not valid, we need to present an
1284
+ // error.
1285
+
1286
+ if (
1287
+ !(options.dateFormats || self.dateFormats)[calculatedFormat]
1288
+ ) {
1289
+ // This should emit an event instead
1290
+ fireEvent('deduceDateFailed');
1291
+ return format;
1292
+ }
1293
+
1294
+ return calculatedFormat;
1295
+ }
1296
+
1297
+ return format;
1298
+ }
1299
+
1300
+ /* Figure out the best axis types for the data
1301
+ * - If the first column is a number, we're good
1302
+ * - If the first column is a date, set to date/time
1303
+ * - If the first column is a string, set to categories
1304
+ */
1305
+ function deduceAxisTypes() {
1306
+
1307
+ }
1308
+
1309
+ if (csv && options.beforeParse) {
1310
+ csv = options.beforeParse.call(this, csv);
1311
+ }
1312
+
1313
+ if (csv) {
1314
+
1315
+ lines = csv
1316
+ .replace(/\r\n/g, '\n') // Unix
1317
+ .replace(/\r/g, '\n') // Mac
1318
+ .split(options.lineDelimiter || '\n');
1319
+
1320
+ if (!startRow || startRow < 0) {
1321
+ startRow = 0;
1322
+ }
1323
+
1324
+ if (!endRow || endRow >= lines.length) {
1325
+ endRow = lines.length - 1;
1326
+ }
1327
+
1328
+ if (options.itemDelimiter) {
1329
+ itemDelimiter = options.itemDelimiter;
1330
+ } else {
1331
+ itemDelimiter = null;
1332
+ itemDelimiter = guessDelimiter(lines);
1333
+ }
1334
+
1335
+ var offset = 0;
1336
+
1337
+ for (rowIt = startRow; rowIt <= endRow; rowIt++) {
1338
+ if (lines[rowIt][0] === '#') {
1339
+ offset++;
1340
+ } else {
1341
+ parseRow(lines[rowIt], rowIt - startRow - offset);
1342
+ }
1343
+ }
1344
+
1345
+ // //Make sure that there's header columns for everything
1346
+ // columns.forEach(function (col) {
1347
+
1348
+ // });
1349
+
1350
+ deduceAxisTypes();
1351
+
1352
+ if ((!options.columnTypes || options.columnTypes.length === 0) &&
1353
+ dataTypes.length &&
1354
+ dataTypes[0].length &&
1355
+ dataTypes[0][1] === 'date' &&
1356
+ !options.dateFormat) {
1357
+ options.dateFormat = deduceDateFormat(columns[0]);
1358
+ }
1359
+
1360
+
1361
+ // lines.forEach(function (line, rowNo) {
1362
+ // var trimmed = self.trim(line),
1363
+ // isComment = trimmed.indexOf('#') === 0,
1364
+ // isBlank = trimmed === '',
1365
+ // items;
1366
+
1367
+ // if (
1368
+ // rowNo >= startRow &&
1369
+ // rowNo <= endRow &&
1370
+ // !isComment && !isBlank
1371
+ // ) {
1372
+ // items = line.split(itemDelimiter);
1373
+ // items.forEach(function (item, colNo) {
1374
+ // if (colNo >= startColumn && colNo <= endColumn) {
1375
+ // if (!columns[colNo - startColumn]) {
1376
+ // columns[colNo - startColumn] = [];
1377
+ // }
1378
+
1379
+ // columns[colNo - startColumn][activeRowNo] = item;
1380
+ // }
1381
+ // });
1382
+ // activeRowNo += 1;
1383
+ // }
1384
+ // });
1385
+ //
1386
+
1387
+ this.dataFound();
1388
+ }
1389
+
1390
+ return columns;
1391
+ },
1392
+
1393
+ /**
1394
+ * Parse a HTML table
1395
+ *
1396
+ * @function Highcharts.Data#parseTable
1397
+ *
1398
+ * @return {Array<Array<*>>}
1399
+ */
1400
+ parseTable: function () {
1401
+ var options = this.options,
1402
+ table = options.table,
1403
+ columns = this.columns,
1404
+ startRow = options.startRow || 0,
1405
+ endRow = options.endRow || Number.MAX_VALUE,
1406
+ startColumn = options.startColumn || 0,
1407
+ endColumn = options.endColumn || Number.MAX_VALUE;
1408
+
1409
+ if (table) {
1410
+
1411
+ if (typeof table === 'string') {
1412
+ table = doc.getElementById(table);
1413
+ }
1414
+
1415
+ [].forEach.call(
1416
+ table.getElementsByTagName('tr'),
1417
+ function (tr, rowNo) {
1418
+ if (rowNo >= startRow && rowNo <= endRow) {
1419
+ [].forEach.call(tr.children, function (item, colNo) {
1420
+ if (
1421
+ (
1422
+ item.tagName === 'TD' ||
1423
+ item.tagName === 'TH'
1424
+ ) &&
1425
+ colNo >= startColumn &&
1426
+ colNo <= endColumn
1427
+ ) {
1428
+ if (!columns[colNo - startColumn]) {
1429
+ columns[colNo - startColumn] = [];
1430
+ }
1431
+
1432
+ columns[colNo - startColumn][rowNo - startRow] =
1433
+ item.innerHTML;
1434
+ }
1435
+ });
1436
+ }
1437
+ }
1438
+ );
1439
+
1440
+ this.dataFound(); // continue
1441
+ }
1442
+ return columns;
1443
+ },
1444
+
1445
+
1446
+ /**
1447
+ * Fetch or refetch live data
1448
+ *
1449
+ * @function Highcharts.Data#fetchLiveData
1450
+ *
1451
+ * @return {string}
1452
+ * The first URL that was tried.
1453
+ */
1454
+ fetchLiveData: function () {
1455
+ var chart = this.chart,
1456
+ options = this.options,
1457
+ maxRetries = 3,
1458
+ currentRetries = 0,
1459
+ pollingEnabled = options.enablePolling,
1460
+ updateIntervalMs = (options.dataRefreshRate || 2) * 1000,
1461
+ originalOptions = merge(options);
1462
+
1463
+ if (!options ||
1464
+ (!options.csvURL && !options.rowsURL && !options.columnsURL)
1465
+ ) {
1466
+ return false;
1467
+ }
1468
+
1469
+ // Do not allow polling more than once a second
1470
+ if (updateIntervalMs < 1000) {
1471
+ updateIntervalMs = 1000;
1472
+ }
1473
+
1474
+ delete options.csvURL;
1475
+ delete options.rowsURL;
1476
+ delete options.columnsURL;
1477
+
1478
+ function performFetch(initialFetch) {
1479
+
1480
+ // Helper function for doing the data fetch + polling
1481
+ function request(url, done, tp) {
1482
+ if (!url || url.indexOf('http') !== 0) {
1483
+ if (url && options.error) {
1484
+ options.error('Invalid URL');
1485
+ }
1486
+ return false;
1487
+ }
1488
+
1489
+ if (initialFetch) {
1490
+ clearTimeout(chart.liveDataTimeout);
1491
+ chart.liveDataURL = url;
1492
+ }
1493
+
1494
+ function poll() {
1495
+ // Poll
1496
+ if (pollingEnabled && chart.liveDataURL === url) {
1497
+ // We need to stop doing this if the URL has changed
1498
+ chart.liveDataTimeout =
1499
+ setTimeout(performFetch, updateIntervalMs);
1500
+ }
1501
+ }
1502
+
1503
+ Highcharts.ajax({
1504
+ url: url,
1505
+ dataType: tp || 'json',
1506
+ success: function (res) {
1507
+ if (chart && chart.series) {
1508
+ done(res);
1509
+ }
1510
+
1511
+ poll();
1512
+
1513
+ },
1514
+ error: function (xhr, text) {
1515
+ if (++currentRetries < maxRetries) {
1516
+ poll();
1517
+ }
1518
+
1519
+ return options.error && options.error(text, xhr);
1520
+ }
1521
+ });
1522
+
1523
+ return true;
1524
+ }
1525
+
1526
+ if (!request(originalOptions.csvURL, function (res) {
1527
+ chart.update({
1528
+ data: {
1529
+ csv: res
1530
+ }
1531
+ });
1532
+ }, 'text')) {
1533
+ if (!request(originalOptions.rowsURL, function (res) {
1534
+ chart.update({
1535
+ data: {
1536
+ rows: res
1537
+ }
1538
+ });
1539
+ })) {
1540
+ request(originalOptions.columnsURL, function (res) {
1541
+ chart.update({
1542
+ data: {
1543
+ columns: res
1544
+ }
1545
+ });
1546
+ });
1547
+ }
1548
+ }
1549
+ }
1550
+
1551
+ performFetch(true);
1552
+
1553
+ return (options &&
1554
+ (options.csvURL || options.rowsURL || options.columnsURL)
1555
+ );
1556
+ },
1557
+
1558
+
1559
+ /**
1560
+ * Parse a Google spreadsheet.
1561
+ *
1562
+ * @function Highcharts.Data#parseGoogleSpreadsheet
1563
+ *
1564
+ * @return {boolean}
1565
+ * Always returns false, because it is an intermediate fetch.
1566
+ */
1567
+ parseGoogleSpreadsheet: function () {
1568
+ var data = this,
1569
+ options = this.options,
1570
+ googleSpreadsheetKey = options.googleSpreadsheetKey,
1571
+ chart = this.chart,
1572
+ // use sheet 1 as the default rather than od6
1573
+ // as the latter sometimes cause issues (it looks like it can
1574
+ // be renamed in some cases, ref. a fogbugz case).
1575
+ worksheet = options.googleSpreadsheetWorksheet || 1,
1576
+ startRow = options.startRow || 0,
1577
+ endRow = options.endRow || Number.MAX_VALUE,
1578
+ startColumn = options.startColumn || 0,
1579
+ endColumn = options.endColumn || Number.MAX_VALUE,
1580
+ refreshRate = (options.dataRefreshRate || 2) * 1000;
1581
+
1582
+ if (refreshRate < 4000) {
1583
+ refreshRate = 4000;
1584
+ }
1585
+
1586
+ /*
1587
+ * Fetch the actual spreadsheet using XMLHttpRequest
1588
+ */
1589
+ function fetchSheet(fn) {
1590
+ var url = [
1591
+ 'https://spreadsheets.google.com/feeds/cells',
1592
+ googleSpreadsheetKey,
1593
+ worksheet,
1594
+ 'public/values?alt=json'
1595
+ ].join('/');
1596
+
1597
+ Highcharts.ajax({
1598
+ url: url,
1599
+ dataType: 'json',
1600
+ success: function (json) {
1601
+ fn(json);
1602
+
1603
+ if (options.enablePolling) {
1604
+ setTimeout(function () {
1605
+ fetchSheet(fn);
1606
+ }, options.dataRefreshRate);
1607
+ }
1608
+ },
1609
+ error: function (xhr, text) {
1610
+ return options.error && options.error(text, xhr);
1611
+ }
1612
+ });
1613
+ }
1614
+
1615
+ if (googleSpreadsheetKey) {
1616
+
1617
+ delete options.googleSpreadsheetKey;
1618
+
1619
+ fetchSheet(function (json) {
1620
+ // Prepare the data from the spreadsheat
1621
+ var columns = [],
1622
+ cells = json.feed.entry,
1623
+ cell,
1624
+ cellCount = (cells || []).length,
1625
+ colCount = 0,
1626
+ rowCount = 0,
1627
+ val,
1628
+ gr,
1629
+ gc,
1630
+ cellInner,
1631
+ i;
1632
+
1633
+ if (!cells || cells.length === 0) {
1634
+ return false;
1635
+ }
1636
+
1637
+ // First, find the total number of columns and rows that
1638
+ // are actually filled with data
1639
+ for (i = 0; i < cellCount; i++) {
1640
+ cell = cells[i];
1641
+ colCount = Math.max(colCount, cell.gs$cell.col);
1642
+ rowCount = Math.max(rowCount, cell.gs$cell.row);
1643
+ }
1644
+
1645
+ // Set up arrays containing the column data
1646
+ for (i = 0; i < colCount; i++) {
1647
+ if (i >= startColumn && i <= endColumn) {
1648
+ // Create new columns with the length of either
1649
+ // end-start or rowCount
1650
+ columns[i - startColumn] = [];
1651
+ }
1652
+ }
1653
+
1654
+ // Loop over the cells and assign the value to the right
1655
+ // place in the column arrays
1656
+ for (i = 0; i < cellCount; i++) {
1657
+ cell = cells[i];
1658
+ gr = cell.gs$cell.row - 1; // rows start at 1
1659
+ gc = cell.gs$cell.col - 1; // columns start at 1
1660
+
1661
+ // If both row and col falls inside start and end set the
1662
+ // transposed cell value in the newly created columns
1663
+ if (gc >= startColumn && gc <= endColumn &&
1664
+ gr >= startRow && gr <= endRow) {
1665
+
1666
+ cellInner = cell.gs$cell || cell.content;
1667
+
1668
+ val = null;
1669
+
1670
+ if (cellInner.numericValue) {
1671
+ if (cellInner.$t.indexOf('/') >= 0 ||
1672
+ cellInner.$t.indexOf('-') >= 0) {
1673
+ // This is a date - for future reference.
1674
+ val = cellInner.$t;
1675
+ } else if (cellInner.$t.indexOf('%') > 0) {
1676
+ // Percentage
1677
+ val = parseFloat(cellInner.numericValue) * 100;
1678
+ } else {
1679
+ val = parseFloat(cellInner.numericValue);
1680
+ }
1681
+ } else if (cellInner.$t && cellInner.$t.length) {
1682
+ val = cellInner.$t;
1683
+ }
1684
+
1685
+ columns[gc - startColumn][gr - startRow] = val;
1686
+ }
1687
+ }
1688
+
1689
+ // Insert null for empty spreadsheet cells (#5298)
1690
+ columns.forEach(function (column) {
1691
+ for (i = 0; i < column.length; i++) {
1692
+ if (column[i] === undefined) {
1693
+ column[i] = null;
1694
+ }
1695
+ }
1696
+ });
1697
+
1698
+ if (chart && chart.series) {
1699
+ chart.update({
1700
+ data: {
1701
+ columns: columns
1702
+ }
1703
+ });
1704
+ } else { // #8245
1705
+ data.columns = columns;
1706
+ data.dataFound();
1707
+ }
1708
+ });
1709
+ }
1710
+
1711
+ // This is an intermediate fetch, so always return false.
1712
+ return false;
1713
+ },
1714
+
1715
+ /**
1716
+ * Trim a string from whitespaces.
1717
+ *
1718
+ * @function Highcharts.Data#trim
1719
+ *
1720
+ * @param {string} str
1721
+ * String to trim
1722
+ *
1723
+ * @param {boolean} [inside=false]
1724
+ * Remove all spaces between numbers.
1725
+ *
1726
+ * @return {string}
1727
+ * Trimed string
1728
+ */
1729
+ trim: function (str, inside) {
1730
+ if (typeof str === 'string') {
1731
+ str = str.replace(/^\s+|\s+$/g, '');
1732
+
1733
+ // Clear white space insdie the string, like thousands separators
1734
+ if (inside && /^[0-9\s]+$/.test(str)) {
1735
+ str = str.replace(/\s/g, '');
1736
+ }
1737
+
1738
+ if (this.decimalRegex) {
1739
+ str = str.replace(this.decimalRegex, '$1.$2');
1740
+ }
1741
+ }
1742
+ return str;
1743
+ },
1744
+
1745
+ /**
1746
+ * Parse numeric cells in to number types and date types in to true dates.
1747
+ *
1748
+ * @function Highcharts.Data#parseTypes
1749
+ */
1750
+ parseTypes: function () {
1751
+ var columns = this.columns,
1752
+ col = columns.length;
1753
+
1754
+ while (col--) {
1755
+ this.parseColumn(columns[col], col);
1756
+ }
1757
+
1758
+ },
1759
+
1760
+ /**
1761
+ * Parse a single column. Set properties like .isDatetime and .isNumeric.
1762
+ *
1763
+ * @function Highcharts.Data#parseColumn
1764
+ *
1765
+ * @param {Array<*>} column
1766
+ * Column to parse
1767
+ *
1768
+ * @param {number} col
1769
+ * Column index
1770
+ */
1771
+ parseColumn: function (column, col) {
1772
+ var rawColumns = this.rawColumns,
1773
+ columns = this.columns,
1774
+ row = column.length,
1775
+ val,
1776
+ floatVal,
1777
+ trimVal,
1778
+ trimInsideVal,
1779
+ firstRowAsNames = this.firstRowAsNames,
1780
+ isXColumn = this.valueCount.xColumns.indexOf(col) !== -1,
1781
+ dateVal,
1782
+ backup = [],
1783
+ diff,
1784
+ chartOptions = this.chartOptions,
1785
+ descending,
1786
+ columnTypes = this.options.columnTypes || [],
1787
+ columnType = columnTypes[col],
1788
+ forceCategory = isXColumn && ((
1789
+ chartOptions &&
1790
+ chartOptions.xAxis &&
1791
+ splat(chartOptions.xAxis)[0].type === 'category'
1792
+ ) || columnType === 'string');
1793
+
1794
+ if (!rawColumns[col]) {
1795
+ rawColumns[col] = [];
1796
+ }
1797
+ while (row--) {
1798
+ val = backup[row] || column[row];
1799
+
1800
+ trimVal = this.trim(val);
1801
+ trimInsideVal = this.trim(val, true);
1802
+ floatVal = parseFloat(trimInsideVal);
1803
+
1804
+ // Set it the first time
1805
+ if (rawColumns[col][row] === undefined) {
1806
+ rawColumns[col][row] = trimVal;
1807
+ }
1808
+
1809
+ // Disable number or date parsing by setting the X axis type to
1810
+ // category
1811
+ if (forceCategory || (row === 0 && firstRowAsNames)) {
1812
+ column[row] = '' + trimVal;
1813
+
1814
+ } else if (+trimInsideVal === floatVal) { // is numeric
1815
+
1816
+ column[row] = floatVal;
1817
+
1818
+ // If the number is greater than milliseconds in a year, assume
1819
+ // datetime
1820
+ if (
1821
+ floatVal > 365 * 24 * 3600 * 1000 &&
1822
+ columnType !== 'float'
1823
+ ) {
1824
+ column.isDatetime = true;
1825
+ } else {
1826
+ column.isNumeric = true;
1827
+ }
1828
+
1829
+ if (column[row + 1] !== undefined) {
1830
+ descending = floatVal > column[row + 1];
1831
+ }
1832
+
1833
+ // String, continue to determine if it is a date string or really a
1834
+ // string
1835
+ } else {
1836
+ if (trimVal && trimVal.length) {
1837
+ dateVal = this.parseDate(val);
1838
+ }
1839
+
1840
+ // Only allow parsing of dates if this column is an x-column
1841
+ if (isXColumn && isNumber(dateVal) && columnType !== 'float') {
1842
+ backup[row] = val;
1843
+ column[row] = dateVal;
1844
+ column.isDatetime = true;
1845
+
1846
+ // Check if the dates are uniformly descending or ascending.
1847
+ // If they are not, chances are that they are a different
1848
+ // time format, so check for alternative.
1849
+ if (column[row + 1] !== undefined) {
1850
+ diff = dateVal > column[row + 1];
1851
+ if (diff !== descending && descending !== undefined) {
1852
+ if (this.alternativeFormat) {
1853
+ this.dateFormat = this.alternativeFormat;
1854
+ row = column.length;
1855
+ this.alternativeFormat =
1856
+ this.dateFormats[this.dateFormat]
1857
+ .alternative;
1858
+ } else {
1859
+ column.unsorted = true;
1860
+ }
1861
+ }
1862
+ descending = diff;
1863
+ }
1864
+
1865
+ } else { // string
1866
+ column[row] = trimVal === '' ? null : trimVal;
1867
+ if (row !== 0 && (column.isDatetime || column.isNumeric)) {
1868
+ column.mixed = true;
1869
+ }
1870
+ }
1871
+ }
1872
+ }
1873
+
1874
+ // If strings are intermixed with numbers or dates in a parsed column,
1875
+ // it is an indication that parsing went wrong or the data was not
1876
+ // intended to display as numbers or dates and parsing is too
1877
+ // aggressive. Fall back to categories. Demonstrated in the
1878
+ // highcharts/demo/column-drilldown sample.
1879
+ if (isXColumn && column.mixed) {
1880
+ columns[col] = rawColumns[col];
1881
+ }
1882
+
1883
+ // If the 0 column is date or number and descending, reverse all
1884
+ // columns.
1885
+ if (isXColumn && descending && this.options.sort) {
1886
+ for (col = 0; col < columns.length; col++) {
1887
+ columns[col].reverse();
1888
+ if (firstRowAsNames) {
1889
+ columns[col].unshift(columns[col].pop());
1890
+ }
1891
+ }
1892
+ }
1893
+ },
1894
+
1895
+ /**
1896
+ * A collection of available date formats, extendable from the outside to
1897
+ * support custom date formats.
1898
+ *
1899
+ * @name Highcharts.Data#dateFormats
1900
+ * @type {Highcharts.Dictionary<Highcharts.DataDateFormatObject>}
1901
+ */
1902
+ dateFormats: {
1903
+ 'YYYY/mm/dd': {
1904
+ regex: /^([0-9]{4})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{1,2})$/,
1905
+ parser: function (match) {
1906
+ return Date.UTC(+match[1], match[2] - 1, +match[3]);
1907
+ }
1908
+ },
1909
+ 'dd/mm/YYYY': {
1910
+ regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
1911
+ parser: function (match) {
1912
+ return Date.UTC(+match[3], match[2] - 1, +match[1]);
1913
+ },
1914
+ alternative: 'mm/dd/YYYY' // different format with the same regex
1915
+ },
1916
+ 'mm/dd/YYYY': {
1917
+ regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
1918
+ parser: function (match) {
1919
+ return Date.UTC(+match[3], match[1] - 1, +match[2]);
1920
+ }
1921
+ },
1922
+ 'dd/mm/YY': {
1923
+ regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
1924
+ parser: function (match) {
1925
+ var year = +match[3],
1926
+ d = new Date();
1927
+
1928
+ if (year > (d.getFullYear() - 2000)) {
1929
+ year += 1900;
1930
+ } else {
1931
+ year += 2000;
1932
+ }
1933
+
1934
+ return Date.UTC(year, match[2] - 1, +match[1]);
1935
+ },
1936
+ alternative: 'mm/dd/YY' // different format with the same regex
1937
+ },
1938
+ 'mm/dd/YY': {
1939
+ regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
1940
+ parser: function (match) {
1941
+ return Date.UTC(+match[3] + 2000, match[1] - 1, +match[2]);
1942
+ }
1943
+ }
1944
+ },
1945
+
1946
+ /**
1947
+ * Parse a date and return it as a number. Overridable through
1948
+ * `options.parseDate`.
1949
+ *
1950
+ * @function Highcharts.Data#parseDate
1951
+ *
1952
+ * @param {string} val
1953
+ *
1954
+ * @return {global.Date}
1955
+ */
1956
+ parseDate: function (val) {
1957
+ var parseDate = this.options.parseDate,
1958
+ ret,
1959
+ key,
1960
+ format,
1961
+ dateFormat = this.options.dateFormat || this.dateFormat,
1962
+ match;
1963
+
1964
+ if (parseDate) {
1965
+ ret = parseDate(val);
1966
+
1967
+ } else if (typeof val === 'string') {
1968
+ // Auto-detect the date format the first time
1969
+ if (!dateFormat) {
1970
+ for (key in this.dateFormats) {
1971
+ format = this.dateFormats[key];
1972
+ match = val.match(format.regex);
1973
+ if (match) {
1974
+ this.dateFormat = dateFormat = key;
1975
+ this.alternativeFormat = format.alternative;
1976
+ ret = format.parser(match);
1977
+ break;
1978
+ }
1979
+ }
1980
+ // Next time, use the one previously found
1981
+ } else {
1982
+ format = this.dateFormats[dateFormat];
1983
+
1984
+
1985
+ if (!format) {
1986
+ // The selected format is invalid
1987
+ format = this.dateFormats['YYYY/mm/dd'];
1988
+ }
1989
+
1990
+ match = val.match(format.regex);
1991
+ if (match) {
1992
+ ret = format.parser(match);
1993
+ }
1994
+
1995
+ }
1996
+ // Fall back to Date.parse
1997
+ if (!match) {
1998
+ match = Date.parse(val);
1999
+ // External tools like Date.js and MooTools extend Date object
2000
+ // and returns a date.
2001
+ if (
2002
+ typeof match === 'object' &&
2003
+ match !== null &&
2004
+ match.getTime
2005
+ ) {
2006
+ ret = match.getTime() - match.getTimezoneOffset() * 60000;
2007
+
2008
+ // Timestamp
2009
+ } else if (isNumber(match)) {
2010
+ ret = match - (new Date(match)).getTimezoneOffset() * 60000;
2011
+ }
2012
+ }
2013
+ }
2014
+ return ret;
2015
+ },
2016
+
2017
+ /**
2018
+ * Reorganize rows into columns.
2019
+ *
2020
+ * @function Highcharts.Data#rowsToColumns
2021
+ *
2022
+ * @param {Array<Array<*>>} rows
2023
+ *
2024
+ * @return {Array<Array<*>>}
2025
+ */
2026
+ rowsToColumns: function (rows) {
2027
+ var row,
2028
+ rowsLength,
2029
+ col,
2030
+ colsLength,
2031
+ columns;
2032
+
2033
+ if (rows) {
2034
+ columns = [];
2035
+ rowsLength = rows.length;
2036
+ for (row = 0; row < rowsLength; row++) {
2037
+ colsLength = rows[row].length;
2038
+ for (col = 0; col < colsLength; col++) {
2039
+ if (!columns[col]) {
2040
+ columns[col] = [];
2041
+ }
2042
+ columns[col][row] = rows[row][col];
2043
+ }
2044
+ }
2045
+ }
2046
+ return columns;
2047
+ },
2048
+
2049
+ /**
2050
+ * A hook for working directly on the parsed columns
2051
+ *
2052
+ * @function Highcharts.Data#parsed
2053
+ *
2054
+ * @return {*}
2055
+ */
2056
+ parsed: function () {
2057
+ if (this.options.parsed) {
2058
+ return this.options.parsed.call(this, this.columns);
2059
+ }
2060
+ },
2061
+
2062
+ /**
2063
+ * @private
2064
+ * @function Highcharts.Data#getFreeIndexes
2065
+ */
2066
+ getFreeIndexes: function (numberOfColumns, seriesBuilders) {
2067
+ var s,
2068
+ i,
2069
+ freeIndexes = [],
2070
+ freeIndexValues = [],
2071
+ referencedIndexes;
2072
+
2073
+ // Add all columns as free
2074
+ for (i = 0; i < numberOfColumns; i = i + 1) {
2075
+ freeIndexes.push(true);
2076
+ }
2077
+
2078
+ // Loop all defined builders and remove their referenced columns
2079
+ for (s = 0; s < seriesBuilders.length; s = s + 1) {
2080
+ referencedIndexes = seriesBuilders[s].getReferencedColumnIndexes();
2081
+
2082
+ for (i = 0; i < referencedIndexes.length; i = i + 1) {
2083
+ freeIndexes[referencedIndexes[i]] = false;
2084
+ }
2085
+ }
2086
+
2087
+ // Collect the values for the free indexes
2088
+ for (i = 0; i < freeIndexes.length; i = i + 1) {
2089
+ if (freeIndexes[i]) {
2090
+ freeIndexValues.push(i);
2091
+ }
2092
+ }
2093
+
2094
+ return freeIndexValues;
2095
+ },
2096
+
2097
+ /**
2098
+ * If a complete callback function is provided in the options, interpret the
2099
+ * columns into a Highcharts options object.
2100
+ *
2101
+ * @function Highcharts.Data#complete
2102
+ */
2103
+ complete: function () {
2104
+
2105
+ var columns = this.columns,
2106
+ xColumns = [],
2107
+ type,
2108
+ options = this.options,
2109
+ series,
2110
+ data,
2111
+ i,
2112
+ j,
2113
+ r,
2114
+ seriesIndex,
2115
+ chartOptions,
2116
+ allSeriesBuilders = [],
2117
+ builder,
2118
+ freeIndexes,
2119
+ typeCol,
2120
+ index;
2121
+
2122
+ xColumns.length = columns.length;
2123
+ if (options.complete || options.afterComplete) {
2124
+
2125
+ // Get the names and shift the top row
2126
+ if (this.firstRowAsNames) {
2127
+ for (i = 0; i < columns.length; i++) {
2128
+ columns[i].name = columns[i].shift();
2129
+ }
2130
+ }
2131
+
2132
+ // Use the next columns for series
2133
+ series = [];
2134
+ freeIndexes = this.getFreeIndexes(
2135
+ columns.length,
2136
+ this.valueCount.seriesBuilders
2137
+ );
2138
+
2139
+ // Populate defined series
2140
+ for (
2141
+ seriesIndex = 0;
2142
+ seriesIndex < this.valueCount.seriesBuilders.length;
2143
+ seriesIndex++
2144
+ ) {
2145
+ builder = this.valueCount.seriesBuilders[seriesIndex];
2146
+
2147
+ // If the builder can be populated with remaining columns, then
2148
+ // add it to allBuilders
2149
+ if (builder.populateColumns(freeIndexes)) {
2150
+ allSeriesBuilders.push(builder);
2151
+ }
2152
+ }
2153
+
2154
+ // Populate dynamic series
2155
+ while (freeIndexes.length > 0) {
2156
+ builder = new SeriesBuilder();
2157
+ builder.addColumnReader(0, 'x');
2158
+
2159
+ // Mark index as used (not free)
2160
+ index = freeIndexes.indexOf(0);
2161
+ if (index !== -1) {
2162
+ freeIndexes.splice(index, 1);
2163
+ }
2164
+
2165
+ for (i = 0; i < this.valueCount.global; i++) {
2166
+ // Create and add a column reader for the next free column
2167
+ // index
2168
+ builder.addColumnReader(
2169
+ undefined,
2170
+ this.valueCount.globalPointArrayMap[i]
2171
+ );
2172
+ }
2173
+
2174
+ // If the builder can be populated with remaining columns, then
2175
+ // add it to allBuilders
2176
+ if (builder.populateColumns(freeIndexes)) {
2177
+ allSeriesBuilders.push(builder);
2178
+ }
2179
+ }
2180
+
2181
+ // Get the data-type from the first series x column
2182
+ if (
2183
+ allSeriesBuilders.length > 0 &&
2184
+ allSeriesBuilders[0].readers.length > 0
2185
+ ) {
2186
+ typeCol = columns[allSeriesBuilders[0].readers[0].columnIndex];
2187
+ if (typeCol !== undefined) {
2188
+ if (typeCol.isDatetime) {
2189
+ type = 'datetime';
2190
+ } else if (!typeCol.isNumeric) {
2191
+ type = 'category';
2192
+ }
2193
+ }
2194
+ }
2195
+ // Axis type is category, then the "x" column should be called
2196
+ // "name"
2197
+ if (type === 'category') {
2198
+ for (
2199
+ seriesIndex = 0;
2200
+ seriesIndex < allSeriesBuilders.length;
2201
+ seriesIndex++
2202
+ ) {
2203
+ builder = allSeriesBuilders[seriesIndex];
2204
+ for (r = 0; r < builder.readers.length; r++) {
2205
+ if (builder.readers[r].configName === 'x') {
2206
+ builder.readers[r].configName = 'name';
2207
+ }
2208
+ }
2209
+ }
2210
+ }
2211
+
2212
+ // Read data for all builders
2213
+ for (
2214
+ seriesIndex = 0;
2215
+ seriesIndex < allSeriesBuilders.length;
2216
+ seriesIndex++
2217
+ ) {
2218
+ builder = allSeriesBuilders[seriesIndex];
2219
+
2220
+ // Iterate down the cells of each column and add data to the
2221
+ // series
2222
+ data = [];
2223
+ for (j = 0; j < columns[0].length; j++) {
2224
+ data[j] = builder.read(columns, j);
2225
+ }
2226
+
2227
+ // Add the series
2228
+ series[seriesIndex] = {
2229
+ data: data
2230
+ };
2231
+ if (builder.name) {
2232
+ series[seriesIndex].name = builder.name;
2233
+ }
2234
+ if (type === 'category') {
2235
+ series[seriesIndex].turboThreshold = 0;
2236
+ }
2237
+ }
2238
+
2239
+
2240
+ // Do the callback
2241
+ chartOptions = {
2242
+ series: series
2243
+ };
2244
+ if (type) {
2245
+ chartOptions.xAxis = {
2246
+ type: type
2247
+ };
2248
+ if (type === 'category') {
2249
+ chartOptions.xAxis.uniqueNames = false;
2250
+ }
2251
+ }
2252
+
2253
+ if (options.complete) {
2254
+ options.complete(chartOptions);
2255
+ }
2256
+
2257
+ // The afterComplete hook is used internally to avoid conflict with
2258
+ // the externally available complete option.
2259
+ if (options.afterComplete) {
2260
+ options.afterComplete(chartOptions);
2261
+ }
2262
+ }
2263
+
2264
+ },
2265
+
2266
+ /**
2267
+ * Updates the chart with new data options.
2268
+ *
2269
+ * @function Highcharts.Data#update
2270
+ *
2271
+ * @param {Highcharts.DataOptions} options
2272
+ *
2273
+ * @param {boolean} [redraw=true]
2274
+ */
2275
+ update: function (options, redraw) {
2276
+ var chart = this.chart;
2277
+
2278
+ if (options) {
2279
+ // Set the complete handler
2280
+ options.afterComplete = function (dataOptions) {
2281
+ // Avoid setting axis options unless the type changes. Running
2282
+ // Axis.update will cause the whole structure to be destroyed
2283
+ // and rebuilt, and animation is lost.
2284
+ if (
2285
+ dataOptions.xAxis &&
2286
+ chart.xAxis[0] &&
2287
+ dataOptions.xAxis.type === chart.xAxis[0].options.type
2288
+ ) {
2289
+ delete dataOptions.xAxis;
2290
+ }
2291
+
2292
+ chart.update(dataOptions, redraw, true);
2293
+ };
2294
+ // Apply it
2295
+ merge(true, this.options, options);
2296
+ this.init(this.options);
2297
+ }
2298
+ }
2299
+ });
2300
+
2301
+ // Register the Data prototype and data function on Highcharts
2302
+ Highcharts.Data = Data;
2303
+
2304
+ /**
2305
+ * Creates a data object to parse data for a chart.
2306
+ *
2307
+ * @function Highcharts.data
2308
+ *
2309
+ * @param {Highcharts.DataOptions} dataOptions
2310
+ *
2311
+ * @param {Highcharts.Options} [chartOptions]
2312
+ *
2313
+ * @param {Highcharts.Chart} [chart]
2314
+ *
2315
+ * @return {Highcharts.Data}
2316
+ */
2317
+ Highcharts.data = function (dataOptions, chartOptions, chart) {
2318
+ return new Data(dataOptions, chartOptions, chart);
2319
+ };
2320
+
2321
+ // Extend Chart.init so that the Chart constructor accepts a new configuration
2322
+ // option group, data.
2323
+ addEvent(
2324
+ Chart,
2325
+ 'init',
2326
+ function (e) {
2327
+ var chart = this,
2328
+ userOptions = e.args[0],
2329
+ callback = e.args[1];
2330
+
2331
+ if (userOptions && userOptions.data && !chart.hasDataDef) {
2332
+ chart.hasDataDef = true;
2333
+ /**
2334
+ * The data parser for this chart.
2335
+ *
2336
+ * @name Highcharts.Chart#data
2337
+ * @type {Highcharts.Data|undefined}
2338
+ */
2339
+ chart.data = new Data(Highcharts.extend(userOptions.data, {
2340
+
2341
+ afterComplete: function (dataOptions) {
2342
+ var i, series;
2343
+
2344
+ // Merge series configs
2345
+ if (userOptions.hasOwnProperty('series')) {
2346
+ if (typeof userOptions.series === 'object') {
2347
+ i = Math.max(
2348
+ userOptions.series.length,
2349
+ dataOptions && dataOptions.series ?
2350
+ dataOptions.series.length :
2351
+ 0
2352
+ );
2353
+ while (i--) {
2354
+ series = userOptions.series[i] || {};
2355
+ userOptions.series[i] = merge(
2356
+ series,
2357
+ dataOptions && dataOptions.series ?
2358
+ dataOptions.series[i] :
2359
+ {}
2360
+ );
2361
+ }
2362
+ } else { // Allow merging in dataOptions.series (#2856)
2363
+ delete userOptions.series;
2364
+ }
2365
+ }
2366
+
2367
+ // Do the merge
2368
+ userOptions = merge(dataOptions, userOptions);
2369
+
2370
+ // Run chart.init again
2371
+ chart.init(userOptions, callback);
2372
+ }
2373
+ }), userOptions, chart);
2374
+
2375
+ e.preventDefault();
2376
+ }
2377
+ }
2378
+ );
2379
+
2380
+ /**
2381
+ * Creates a new SeriesBuilder. A SeriesBuilder consists of a number
2382
+ * of ColumnReaders that reads columns and give them a name.
2383
+ * Ex: A series builder can be constructed to read column 3 as 'x' and
2384
+ * column 7 and 8 as 'y1' and 'y2'.
2385
+ * The output would then be points/rows of the form {x: 11, y1: 22, y2: 33}
2386
+ *
2387
+ * The name of the builder is taken from the second column. In the above
2388
+ * example it would be the column with index 7.
2389
+ *
2390
+ * @private
2391
+ * @class
2392
+ * @name SeriesBuilder
2393
+ */
2394
+ SeriesBuilder = function () {
2395
+ this.readers = [];
2396
+ this.pointIsArray = true;
2397
+ };
2398
+
2399
+ /**
2400
+ * Populates readers with column indexes. A reader can be added without
2401
+ * a specific index and for those readers the index is taken sequentially
2402
+ * from the free columns (this is handled by the ColumnCursor instance).
2403
+ *
2404
+ * @function SeriesBuilder#populateColumns
2405
+ *
2406
+ * @param {Array<number>} freeIndexes
2407
+ *
2408
+ * @returns {boolean}
2409
+ */
2410
+ SeriesBuilder.prototype.populateColumns = function (freeIndexes) {
2411
+ var builder = this,
2412
+ enoughColumns = true;
2413
+
2414
+ // Loop each reader and give it an index if its missing.
2415
+ // The freeIndexes.shift() will return undefined if there
2416
+ // are no more columns.
2417
+ builder.readers.forEach(function (reader) {
2418
+ if (reader.columnIndex === undefined) {
2419
+ reader.columnIndex = freeIndexes.shift();
2420
+ }
2421
+ });
2422
+
2423
+ // Now, all readers should have columns mapped. If not
2424
+ // then return false to signal that this series should
2425
+ // not be added.
2426
+ builder.readers.forEach(function (reader) {
2427
+ if (reader.columnIndex === undefined) {
2428
+ enoughColumns = false;
2429
+ }
2430
+ });
2431
+
2432
+ return enoughColumns;
2433
+ };
2434
+
2435
+ /**
2436
+ * Reads a row from the dataset and returns a point or array depending
2437
+ * on the names of the readers.
2438
+ *
2439
+ * @function SeriesBuilder#read
2440
+ *
2441
+ * @param {Array<Array<*>>} columns
2442
+ *
2443
+ * @param {number} rowIndex
2444
+ *
2445
+ * @returns {Array<*>|*}
2446
+ */
2447
+ SeriesBuilder.prototype.read = function (columns, rowIndex) {
2448
+ var builder = this,
2449
+ pointIsArray = builder.pointIsArray,
2450
+ point = pointIsArray ? [] : {},
2451
+ columnIndexes;
2452
+
2453
+ // Loop each reader and ask it to read its value.
2454
+ // Then, build an array or point based on the readers names.
2455
+ builder.readers.forEach(function (reader) {
2456
+ var value = columns[reader.columnIndex][rowIndex];
2457
+
2458
+ if (pointIsArray) {
2459
+ point.push(value);
2460
+ } else {
2461
+ if (reader.configName.indexOf('.') > 0) {
2462
+ // Handle nested property names
2463
+ Highcharts.Point.prototype.setNestedProperty(
2464
+ point, value, reader.configName
2465
+ );
2466
+ } else {
2467
+ point[reader.configName] = value;
2468
+ }
2469
+ }
2470
+ });
2471
+
2472
+ // The name comes from the first column (excluding the x column)
2473
+ if (this.name === undefined && builder.readers.length >= 2) {
2474
+ columnIndexes = builder.getReferencedColumnIndexes();
2475
+ if (columnIndexes.length >= 2) {
2476
+ // remove the first one (x col)
2477
+ columnIndexes.shift();
2478
+
2479
+ // Sort the remaining
2480
+ columnIndexes.sort(function (a, b) {
2481
+ return a - b;
2482
+ });
2483
+
2484
+ // Now use the lowest index as name column
2485
+ this.name = columns[columnIndexes.shift()].name;
2486
+ }
2487
+ }
2488
+
2489
+ return point;
2490
+ };
2491
+
2492
+ /**
2493
+ * Creates and adds ColumnReader from the given columnIndex and configName.
2494
+ * ColumnIndex can be undefined and in that case the reader will be given
2495
+ * an index when columns are populated.
2496
+ *
2497
+ * @function SeriesBuilder#addColumnReader
2498
+ *
2499
+ * @param {number} columnIndex
2500
+ *
2501
+ * @param {string} configName
2502
+ */
2503
+ SeriesBuilder.prototype.addColumnReader = function (columnIndex, configName) {
2504
+ this.readers.push({
2505
+ columnIndex: columnIndex,
2506
+ configName: configName
2507
+ });
2508
+
2509
+ if (
2510
+ !(configName === 'x' || configName === 'y' || configName === undefined)
2511
+ ) {
2512
+ this.pointIsArray = false;
2513
+ }
2514
+ };
2515
+
2516
+ /**
2517
+ * Returns an array of column indexes that the builder will use when
2518
+ * reading data.
2519
+ *
2520
+ * @function SeriesBuilder#getReferencedColumnIndexes
2521
+ *
2522
+ * @returns {Array<number>}
2523
+ */
2524
+ SeriesBuilder.prototype.getReferencedColumnIndexes = function () {
2525
+ var i,
2526
+ referencedColumnIndexes = [],
2527
+ columnReader;
2528
+
2529
+ for (i = 0; i < this.readers.length; i = i + 1) {
2530
+ columnReader = this.readers[i];
2531
+ if (columnReader.columnIndex !== undefined) {
2532
+ referencedColumnIndexes.push(columnReader.columnIndex);
2533
+ }
2534
+ }
2535
+
2536
+ return referencedColumnIndexes;
2537
+ };
2538
+
2539
+ /**
2540
+ * Returns true if the builder has a reader for the given configName.
2541
+ *
2542
+ * @function SeriesBuider#hasReader
2543
+ *
2544
+ * @param {string} configName
2545
+ *
2546
+ * @returns {boolean}
2547
+ */
2548
+ SeriesBuilder.prototype.hasReader = function (configName) {
2549
+ var i, columnReader;
2550
+
2551
+ for (i = 0; i < this.readers.length; i = i + 1) {
2552
+ columnReader = this.readers[i];
2553
+ if (columnReader.configName === configName) {
2554
+ return true;
2555
+ }
2556
+ }
2557
+ // Else return undefined
2558
+ };
2559
+
2560
+ }(Highcharts));
2561
+ return (function () {
2562
+
2563
+
2564
+ }());
2565
+ }));