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