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