highcharts 9.1.1 → 9.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/annotations/popup.css +29 -28
- package/css/annotations/popup.scss +29 -27
- package/css/highcharts.css +15 -0
- package/css/highcharts.scss +12 -0
- package/css/stocktools/gui.css +1 -0
- package/css/stocktools/gui.scss +1 -0
- package/css/themes/dark-unica.css +15 -0
- package/css/themes/grid-light.css +15 -0
- package/css/themes/sand-signika.css +15 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +8 -2
- package/es-modules/Accessibility/Components/LegendComponent.js +19 -8
- package/es-modules/Accessibility/Components/MenuComponent.js +19 -13
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -8
- package/es-modules/Accessibility/FocusBorder.js +1 -3
- package/es-modules/Accessibility/Options/LangOptions.js +3 -3
- package/es-modules/Accessibility/Utils/Announcer.js +22 -5
- package/es-modules/Accessibility/Utils/ChartUtilities.js +6 -1
- package/es-modules/Core/Animation/AnimationUtilities.js +12 -4
- package/es-modules/Core/Animation/Fx.js +15 -12
- package/es-modules/Core/Axis/Axis.js +25 -13
- package/es-modules/Core/Axis/AxisDefaults.js +0 -1
- package/es-modules/Core/Axis/BrokenAxis.js +32 -15
- package/es-modules/Core/Axis/Color/ColorAxis.js +665 -0
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +237 -0
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +434 -0
- package/es-modules/Core/Axis/DateTimeAxis.js +163 -133
- package/es-modules/Core/Axis/GridAxis.js +8 -3
- package/es-modules/Core/Axis/LogarithmicAxis.js +159 -117
- package/es-modules/Core/Axis/OrdinalAxis.js +666 -460
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +874 -0
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +292 -0
- package/es-modules/Core/Axis/RadialAxis.js +858 -745
- package/es-modules/Core/Axis/ScrollbarAxis.js +7 -0
- package/es-modules/Core/Axis/StackingAxis.js +159 -140
- package/es-modules/Core/Axis/Tick.js +17 -27
- package/es-modules/Core/Chart/Chart.js +24 -38
- package/es-modules/Core/Chart/ChartDefaults.js +1 -1
- package/es-modules/Core/Chart/StockChart.js +12 -0
- package/es-modules/Core/Color/Color.js +96 -104
- package/es-modules/Core/DefaultOptions.js +269 -248
- package/es-modules/Core/Foundation.js +9 -8
- package/es-modules/Core/Geometry/CircleUtilities.js +385 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +83 -0
- package/es-modules/Core/Globals.js +23 -1
- package/es-modules/{Extensions/Ajax.js → Core/HttpUtilities.js} +86 -42
- package/es-modules/Core/{Legend.js → Legend/Legend.js} +142 -116
- package/es-modules/{Mixins → Core/Legend}/LegendSymbol.js +54 -38
- package/es-modules/Core/Navigator.js +3 -0
- package/es-modules/Core/Pointer.js +9 -0
- package/es-modules/Core/Renderer/HTML/AST.js +100 -82
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +17 -7
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +26 -9
- package/es-modules/Core/Renderer/RendererRegistry.js +9 -4
- package/es-modules/Core/Renderer/RendererUtilities.js +159 -0
- package/es-modules/Core/Renderer/SVG/SVGElement.js +13 -7
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +9 -29
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +2 -2
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -16
- package/es-modules/Core/Responsive.js +166 -148
- package/es-modules/Core/Series/DataLabel.js +564 -0
- package/es-modules/Core/Series/Point.js +233 -209
- package/es-modules/Core/Series/Series.js +174 -2339
- package/es-modules/Core/Series/SeriesDefaults.js +2293 -0
- package/es-modules/Core/Series/SeriesRegistry.js +3 -9
- package/es-modules/Core/Time.js +78 -2
- package/es-modules/Core/Tooltip.js +178 -236
- package/es-modules/Core/Utilities.js +409 -394
- package/es-modules/Extensions/Annotations/Annotations.js +102 -49
- package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +9 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +30 -25
- package/es-modules/Extensions/Annotations/Popup.js +16 -7
- package/es-modules/Extensions/Boost/BoostOverrides.js +5 -1
- package/es-modules/Extensions/Boost/WGLRenderer.js +5 -4
- package/es-modules/Extensions/Boost/WGLVBuffer.js +3 -0
- package/es-modules/Extensions/BoostCanvas.js +1 -1
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +82 -76
- package/es-modules/Extensions/DataGrouping.js +225 -184
- package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
- package/es-modules/Extensions/DraggablePoints.js +13 -5
- package/es-modules/Extensions/Drilldown.js +41 -14
- package/es-modules/Extensions/ExportData.js +7 -4
- package/es-modules/Extensions/Exporting/Exporting.js +1273 -0
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +803 -0
- package/es-modules/Extensions/Exporting/ExportingSymbols.js +73 -0
- package/es-modules/Extensions/FullScreen.js +7 -5
- package/es-modules/Extensions/NoDataToDisplay.js +1 -1
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +617 -0
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +58 -0
- package/es-modules/Extensions/Oldie/Oldie.js +1 -1
- package/es-modules/Extensions/Pane.js +0 -1
- package/es-modules/Extensions/PatternFill.js +23 -10
- package/es-modules/Extensions/Polar.js +2 -1
- package/es-modules/Extensions/RangeSelector.js +1 -1
- package/es-modules/Extensions/Themes/Avocado.js +49 -20
- package/es-modules/Extensions/Themes/DarkBlue.js +226 -203
- package/es-modules/Extensions/Themes/DarkGreen.js +231 -203
- package/es-modules/Extensions/Themes/DarkUnica.js +201 -172
- package/es-modules/Extensions/Themes/Gray.js +228 -205
- package/es-modules/Extensions/Themes/Grid.js +109 -81
- package/es-modules/Extensions/Themes/GridLight.js +83 -55
- package/es-modules/Extensions/Themes/HighContrastDark.js +192 -164
- package/es-modules/Extensions/Themes/HighContrastLight.js +49 -21
- package/es-modules/Extensions/Themes/SandSignika.js +115 -86
- package/es-modules/Extensions/Themes/Skies.js +102 -74
- package/es-modules/Extensions/Themes/Sunset.js +47 -19
- package/es-modules/Mixins/ColorSeries.js +0 -1
- package/es-modules/Mixins/MultipleLines.js +6 -0
- package/es-modules/Mixins/TreeSeries.js +1 -1
- package/es-modules/Series/Area/AreaSeries.js +2 -2
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +2 -2
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +279 -0
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +267 -0
- package/es-modules/Series/Bubble/BubbleLegendItem.js +472 -0
- package/es-modules/Series/Bubble/BubbleSeries.js +6 -2
- package/es-modules/Series/Column/ColumnDataLabel.js +109 -0
- package/es-modules/Series/Column/ColumnSeries.js +39 -26
- package/es-modules/Series/Column3D/Column3DComposition.js +5 -2
- package/es-modules/Series/Flags/FlagsSeries.js +8 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapSeries.js +9 -5
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +60 -0
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +277 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +83 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +370 -0
- package/es-modules/Series/Line/LineSeries.js +12 -8
- package/es-modules/Series/Map/MapSeries.js +5 -3
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +6 -5
- package/es-modules/Series/OHLC/OHLCPoint.js +11 -0
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
- package/es-modules/Series/Pie/PieDataLabel.js +448 -0
- package/es-modules/Series/Pie/PiePoint.js +35 -34
- package/es-modules/Series/Pie/PieSeries.js +19 -16
- package/es-modules/Series/Polygon/PolygonSeries.js +3 -3
- package/es-modules/Series/Sankey/SankeySeries.js +9 -7
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
- package/es-modules/Series/Sunburst/SunburstSeries.js +1 -14
- package/es-modules/Series/Timeline/TimelinePoint.js +6 -0
- package/es-modules/Series/Timeline/TimelineSeries.js +14 -17
- package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
- package/es-modules/Series/Venn/VennSeries.js +4 -4
- package/es-modules/Series/Venn/VennUtils.js +10 -16
- package/es-modules/Series/Waterfall/WaterfallSeries.js +40 -35
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -0
- package/es-modules/Series/XRange/XRangeSeries.js +4 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +92 -75
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +20 -8
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +17 -4
- package/es-modules/Stock/StockToolsBindings.js +77 -38
- package/es-modules/Stock/StockToolsGui.js +28 -3
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +11 -7
- package/es-modules/masters/highcharts.src.js +25 -9
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ema.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +6 -2
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +8 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +10 -2
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +9 -4
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +6 -2
- package/es-modules/masters/modules/heikinashi.src.js +14 -0
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +14 -0
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +10 -6
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +8 -2
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +3 -2
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +5 -2
- package/es-modules/masters/themes/dark-blue.src.js +5 -2
- package/es-modules/masters/themes/dark-green.src.js +5 -2
- package/es-modules/masters/themes/dark-unica.src.js +5 -2
- package/es-modules/masters/themes/gray.src.js +5 -2
- package/es-modules/masters/themes/grid-light.src.js +5 -2
- package/es-modules/masters/themes/grid.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-dark.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-light.src.js +5 -2
- package/es-modules/masters/themes/sand-signika.src.js +5 -2
- package/es-modules/masters/themes/skies.src.js +5 -2
- package/es-modules/masters/themes/sunset.src.js +5 -2
- package/gfx/stock-icons/annotations-hidden.svg +1 -1
- package/gfx/stock-icons/annotations-visible.svg +2 -2
- package/gfx/stock-icons/arrow-bottom.svg +1 -1
- package/gfx/stock-icons/arrow-left.svg +1 -1
- package/gfx/stock-icons/arrow-line.svg +1 -1
- package/gfx/stock-icons/arrow-ray.svg +1 -1
- package/gfx/stock-icons/arrow-right.svg +1 -1
- package/gfx/stock-icons/arrow-segment.svg +1 -2
- package/gfx/stock-icons/circle.svg +1 -1
- package/gfx/stock-icons/close.svg +2 -2
- package/gfx/stock-icons/crooked-3.svg +1 -1
- package/gfx/stock-icons/crooked-5.svg +1 -1
- package/gfx/stock-icons/current-price-hide.svg +3 -3
- package/gfx/stock-icons/current-price-show.svg +2 -2
- package/gfx/stock-icons/destroy.svg +1 -1
- package/gfx/stock-icons/drawing.svg +18 -0
- package/gfx/stock-icons/edit.svg +1 -1
- package/gfx/stock-icons/elliott-3.svg +1 -1
- package/gfx/stock-icons/elliott-5.svg +1 -1
- package/gfx/stock-icons/ellipse.svg +11 -0
- package/gfx/stock-icons/fibonacci-timezone.svg +16 -0
- package/gfx/stock-icons/fibonacci.svg +1 -1
- package/gfx/stock-icons/flag-basic.svg +1 -1
- package/gfx/stock-icons/flag-diamond.svg +2 -2
- package/gfx/stock-icons/flag-elipse.svg +1 -1
- package/gfx/stock-icons/flag-trapeze.svg +2 -2
- package/gfx/stock-icons/fullscreen.svg +4 -4
- package/gfx/stock-icons/horizontal-line.svg +1 -1
- package/gfx/stock-icons/indicators.svg +3 -3
- package/gfx/stock-icons/label.svg +4 -4
- package/gfx/stock-icons/line.svg +1 -1
- package/gfx/stock-icons/linear.svg +11 -0
- package/gfx/stock-icons/logarithmic.svg +1 -0
- package/gfx/stock-icons/measure-x.svg +2 -2
- package/gfx/stock-icons/measure-xy.svg +1 -1
- package/gfx/stock-icons/measure-y.svg +1 -1
- package/gfx/stock-icons/panning.svg +17 -0
- package/gfx/stock-icons/parallel-channel.svg +1 -1
- package/gfx/stock-icons/pitchfork.svg +1 -1
- package/gfx/stock-icons/ray.svg +1 -1
- package/gfx/stock-icons/rectangle.svg +1 -1
- package/gfx/stock-icons/remove-annotations.svg +2 -2
- package/gfx/stock-icons/save-chart.svg +3 -3
- package/gfx/stock-icons/segment.svg +1 -1
- package/gfx/stock-icons/separator.svg +1 -1
- package/gfx/stock-icons/series-candlestick.svg +1 -1
- package/gfx/stock-icons/series-heikin-ashi.svg +1 -0
- package/gfx/stock-icons/series-hlc.svg +1 -0
- package/gfx/stock-icons/series-hollow-candlestick.svg +1 -0
- package/gfx/stock-icons/series-line.svg +1 -1
- package/gfx/stock-icons/series-ohlc.svg +4 -4
- package/gfx/stock-icons/time-cycles.svg +35 -0
- package/gfx/stock-icons/vertical-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-counter.svg +1 -1
- package/gfx/stock-icons/vertical-double-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-label.svg +3 -3
- package/gfx/stock-icons/vertical-line.svg +1 -1
- package/gfx/stock-icons/zoom-x.svg +2 -2
- package/gfx/stock-icons/zoom-xy.svg +2 -2
- package/gfx/stock-icons/zoom-y.svg +2 -2
- package/highcharts-3d.js +24 -24
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +6 -3
- package/highcharts-gantt.js +800 -792
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +16535 -15918
- package/highcharts-more.d.ts +73 -1
- package/highcharts-more.js +193 -192
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +73 -1
- package/highcharts-more.src.js +8044 -7839
- package/highcharts.d.ts +3850 -177
- package/highcharts.js +589 -581
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3850 -177
- package/highcharts.src.js +16635 -16060
- package/highmaps.js +708 -698
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +17419 -16521
- package/highstock.js +782 -769
- package/highstock.js.map +1 -1
- package/highstock.src.js +28867 -27975
- package/indicators/acceleration-bands.js +9 -9
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +7 -1
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +1 -1
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +9 -9
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +7 -1
- package/indicators/aroon.js +9 -9
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +7 -1
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +9 -9
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +7 -1
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +1 -1
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/cmo.js +1 -1
- package/indicators/cmo.src.js +1 -1
- package/indicators/dema.js +1 -1
- package/indicators/dema.src.js +1 -1
- package/indicators/disparity-index.js +1 -1
- package/indicators/disparity-index.src.js +1 -1
- package/indicators/dmi.js +11 -11
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +7 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +203 -200
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +206 -104
- package/indicators/indicators.js +12 -11
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +108 -90
- package/indicators/keltner-channels.js +9 -9
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +7 -1
- package/indicators/klinger.js +13 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +7 -1
- package/indicators/macd.js +1 -1
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +1 -1
- package/indicators/natr.src.js +1 -1
- package/indicators/obv.js +1 -1
- package/indicators/obv.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +9 -9
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +7 -1
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/slow-stochastic.js +1 -1
- package/indicators/slow-stochastic.src.js +1 -1
- package/indicators/stochastic.js +10 -10
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +7 -1
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +23 -10
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trendline.js +1 -1
- package/indicators/trendline.src.js +1 -1
- package/indicators/trix.js +1 -1
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +17 -15
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +71 -6
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +203 -202
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +89 -49
- package/modules/annotations-advanced.js +164 -163
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +162 -87
- package/modules/annotations.js +111 -111
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +162 -87
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +2 -2
- package/modules/boost.js +52 -52
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +15 -7
- package/modules/broken-axis.js +13 -13
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +34 -15
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +24 -22
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +954 -774
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +2 -2
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.src.js +1 -1
- package/modules/data.js +33 -32
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +182 -134
- package/modules/datagrouping.d.ts +5 -0
- package/modules/datagrouping.js +20 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.d.ts +5 -0
- package/modules/datagrouping.src.js +270 -228
- package/modules/debugger.js +3 -3
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +3 -3
- package/modules/dependency-wheel.js +1 -1
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +34 -34
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +14 -5
- package/modules/drilldown.d.ts +27 -0
- package/modules/drilldown.js +18 -18
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +27 -0
- package/modules/drilldown.src.js +42 -16
- package/modules/dumbbell.js +1 -1
- package/modules/dumbbell.src.js +1 -1
- package/modules/export-data.js +20 -20
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +8 -5
- package/modules/exporting.d.ts +29 -0
- package/modules/exporting.js +38 -35
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.d.ts +29 -0
- package/modules/exporting.src.js +1937 -1614
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +8 -6
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +1 -1
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +218 -217
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +74 -32
- package/modules/grid-axis.js +23 -22
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +9 -4
- package/modules/heatmap.js +39 -37
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +963 -779
- package/modules/heikinashi.js +17 -0
- package/modules/heikinashi.js.map +1 -0
- package/modules/heikinashi.src.js +394 -0
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.src.js +1 -1
- package/modules/hollowcandlestick.js +18 -0
- package/modules/hollowcandlestick.js.map +1 -0
- package/modules/hollowcandlestick.src.js +504 -0
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +1 -1
- package/modules/lollipop.src.js +1 -1
- package/modules/map.d.ts +9 -0
- package/modules/map.js +122 -119
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +9 -0
- package/modules/map.src.js +1655 -1332
- package/modules/marker-clusters.js +1 -1
- package/modules/marker-clusters.src.js +1 -1
- package/modules/networkgraph.js +1 -1
- package/modules/networkgraph.src.js +1 -1
- package/modules/no-data-to-display.js +3 -3
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +2 -2
- package/modules/offline-exporting.js +18 -16
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +623 -562
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +1 -1
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +1 -1
- package/modules/organization.src.js +1 -1
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +1 -1
- package/modules/pareto.src.js +1 -1
- package/modules/pathfinder.js +1 -1
- package/modules/pathfinder.src.js +1 -1
- package/modules/pattern-fill.js +14 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +24 -12
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +1 -1
- package/modules/sankey.js +28 -28
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +11 -11
- package/modules/series-label.js +1 -1
- package/modules/series-label.src.js +1 -1
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +3 -3
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +159 -157
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +253 -123
- package/modules/stock.d.ts +5 -0
- package/modules/stock.js +196 -191
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.d.ts +5 -0
- package/modules/stock.src.js +7749 -7432
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +5 -5
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +6 -19
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +18 -17
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +21 -24
- package/modules/treegrid.js +57 -57
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +43 -19
- package/modules/treemap.js +5 -5
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +5 -5
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.src.js +1 -1
- package/modules/vector.js +1 -1
- package/modules/vector.src.js +1 -1
- package/modules/venn.js +31 -30
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +508 -424
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +4 -4
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +2 -1
- package/modules/xrange.js +17 -17
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +7 -4
- package/package.json +1 -1
- package/themes/avocado.d.ts +6 -1
- package/themes/avocado.js +3 -3
- package/themes/avocado.js.map +1 -1
- package/themes/avocado.src.d.ts +6 -1
- package/themes/avocado.src.js +53 -22
- package/themes/dark-blue.d.ts +6 -1
- package/themes/dark-blue.js +3 -3
- package/themes/dark-blue.js.map +1 -1
- package/themes/dark-blue.src.d.ts +6 -1
- package/themes/dark-blue.src.js +231 -205
- package/themes/dark-green.d.ts +6 -1
- package/themes/dark-green.js +4 -4
- package/themes/dark-green.js.map +1 -1
- package/themes/dark-green.src.d.ts +6 -1
- package/themes/dark-green.src.js +236 -205
- package/themes/dark-unica.d.ts +6 -1
- package/themes/dark-unica.js +7 -7
- package/themes/dark-unica.js.map +1 -1
- package/themes/dark-unica.src.d.ts +6 -1
- package/themes/dark-unica.src.js +206 -174
- package/themes/gray.d.ts +6 -1
- package/themes/gray.js +3 -3
- package/themes/gray.js.map +1 -1
- package/themes/gray.src.d.ts +6 -1
- package/themes/gray.src.js +233 -207
- package/themes/grid-light.d.ts +6 -1
- package/themes/grid-light.js +4 -4
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.d.ts +6 -1
- package/themes/grid-light.src.js +88 -57
- package/themes/grid.d.ts +6 -1
- package/themes/grid.js +3 -3
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.d.ts +6 -1
- package/themes/grid.src.js +114 -83
- package/themes/high-contrast-dark.js +5 -4
- package/themes/high-contrast-dark.js.map +1 -1
- package/themes/high-contrast-dark.src.js +197 -166
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.js.map +1 -1
- package/themes/high-contrast-light.src.js +54 -23
- package/themes/sand-signika.d.ts +6 -1
- package/themes/sand-signika.js +5 -5
- package/themes/sand-signika.js.map +1 -1
- package/themes/sand-signika.src.d.ts +6 -1
- package/themes/sand-signika.src.js +119 -88
- package/themes/skies.d.ts +6 -1
- package/themes/skies.js +5 -5
- package/themes/skies.js.map +1 -1
- package/themes/skies.src.d.ts +6 -1
- package/themes/skies.src.js +107 -76
- package/themes/sunset.d.ts +6 -1
- package/themes/sunset.js +3 -3
- package/themes/sunset.js.map +1 -1
- package/themes/sunset.src.d.ts +6 -1
- package/themes/sunset.src.js +52 -21
- package/es-modules/Core/Axis/ColorAxis.js +0 -1164
- package/es-modules/Core/Axis/HiddenAxis.js +0 -46
- package/es-modules/Core/Axis/PlotLineOrBand.js +0 -1051
- package/es-modules/Core/Series/DataLabels.js +0 -1173
- package/es-modules/Extensions/Exporting.js +0 -2024
- package/es-modules/Extensions/OfflineExporting.js +0 -621
- package/es-modules/Mixins/Geometry.js +0 -56
- package/es-modules/Mixins/GeometryCircles.js +0 -320
- package/es-modules/Series/Bubble/BubbleLegend.js +0 -893
package/modules/heatmap.src.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highmaps JS v9.
|
|
2
|
+
* @license Highmaps JS v9.2.2 (2021-08-24)
|
|
3
3
|
*
|
|
4
4
|
* (c) 2009-2021 Torstein Honsi
|
|
5
5
|
*
|
|
@@ -71,7 +71,6 @@
|
|
|
71
71
|
*/
|
|
72
72
|
var colorSeriesMixin = {
|
|
73
73
|
optionalAxis: 'colorAxis',
|
|
74
|
-
colorAxis: 0,
|
|
75
74
|
/* eslint-disable valid-jsdoc */
|
|
76
75
|
/**
|
|
77
76
|
* In choropleth maps,
|
|
@@ -114,7 +113,7 @@
|
|
|
114
113
|
|
|
115
114
|
return exports;
|
|
116
115
|
});
|
|
117
|
-
_registerModule(_modules, 'Core/Axis/
|
|
116
|
+
_registerModule(_modules, 'Core/Axis/Color/ColorAxisComposition.js', [_modules['Core/Color/Color.js'], _modules['Mixins/ColorSeries.js'], _modules['Core/Utilities.js']], function (Color, ColorSeriesMixins, U) {
|
|
118
117
|
/* *
|
|
119
118
|
*
|
|
120
119
|
* (c) 2010-2021 Torstein Honsi
|
|
@@ -124,715 +123,310 @@
|
|
|
124
123
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
125
124
|
*
|
|
126
125
|
* */
|
|
127
|
-
var __extends = (this && this.__extends) || (function () {
|
|
128
|
-
var extendStatics = function (d,
|
|
129
|
-
b) {
|
|
130
|
-
extendStatics = Object.setPrototypeOf ||
|
|
131
|
-
({ __proto__: [] } instanceof Array && function (d,
|
|
132
|
-
b) { d.__proto__ = b; }) ||
|
|
133
|
-
function (d,
|
|
134
|
-
b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
135
|
-
return extendStatics(d, b);
|
|
136
|
-
};
|
|
137
|
-
return function (d, b) {
|
|
138
|
-
extendStatics(d, b);
|
|
139
|
-
function __() { this.constructor = d; }
|
|
140
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
141
|
-
};
|
|
142
|
-
})();
|
|
143
126
|
var color = Color.parse;
|
|
144
|
-
var colorPointMixin =
|
|
145
|
-
colorSeriesMixin =
|
|
146
|
-
var noop = H.noop;
|
|
127
|
+
var colorPointMixin = ColorSeriesMixins.colorPointMixin,
|
|
128
|
+
colorSeriesMixin = ColorSeriesMixins.colorSeriesMixin;
|
|
147
129
|
var addEvent = U.addEvent,
|
|
148
|
-
erase = U.erase,
|
|
149
130
|
extend = U.extend,
|
|
150
|
-
isNumber = U.isNumber,
|
|
151
131
|
merge = U.merge,
|
|
152
132
|
pick = U.pick,
|
|
153
133
|
splat = U.splat;
|
|
154
|
-
|
|
155
|
-
* Color axis types
|
|
156
|
-
*
|
|
157
|
-
* @typedef {"linear"|"logarithmic"} Highcharts.ColorAxisTypeValue
|
|
158
|
-
*/
|
|
159
|
-
''; // detach doclet above
|
|
160
|
-
extend(Series.prototype, colorSeriesMixin);
|
|
161
|
-
extend(Point.prototype, colorPointMixin);
|
|
162
|
-
Chart.prototype.collectionsWithUpdate.push('colorAxis');
|
|
163
|
-
Chart.prototype.collectionsWithInit.colorAxis = [Chart.prototype.addColorAxis];
|
|
164
|
-
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
165
|
-
/**
|
|
166
|
-
* The ColorAxis object for inclusion in gradient legends.
|
|
167
|
-
*
|
|
168
|
-
* @class
|
|
169
|
-
* @name Highcharts.ColorAxis
|
|
170
|
-
* @augments Highcharts.Axis
|
|
134
|
+
/* *
|
|
171
135
|
*
|
|
172
|
-
*
|
|
173
|
-
* The related chart of the color axis.
|
|
136
|
+
* Composition
|
|
174
137
|
*
|
|
175
|
-
*
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var ColorAxis = /** @class */ (function (_super) {
|
|
179
|
-
__extends(ColorAxis, _super);
|
|
138
|
+
* */
|
|
139
|
+
var ColorAxisComposition;
|
|
140
|
+
(function (ColorAxisComposition) {
|
|
180
141
|
/* *
|
|
181
142
|
*
|
|
182
|
-
*
|
|
143
|
+
* Constants
|
|
183
144
|
*
|
|
184
145
|
* */
|
|
185
|
-
|
|
186
|
-
* @private
|
|
187
|
-
*/
|
|
188
|
-
function ColorAxis(chart, userOptions) {
|
|
189
|
-
var _this = _super.call(this,
|
|
190
|
-
chart,
|
|
191
|
-
userOptions) || this;
|
|
192
|
-
_this.beforePadding = false; // Prevents unnecessary padding with `hc-more`
|
|
193
|
-
_this.chart = void 0;
|
|
194
|
-
_this.coll = 'colorAxis';
|
|
195
|
-
_this.dataClasses = void 0;
|
|
196
|
-
_this.legendItem = void 0;
|
|
197
|
-
_this.legendItems = void 0;
|
|
198
|
-
_this.name = ''; // Prevents 'undefined' in legend in IE8
|
|
199
|
-
_this.options = void 0;
|
|
200
|
-
_this.stops = void 0;
|
|
201
|
-
_this.visible = true;
|
|
202
|
-
_this.init(chart, userOptions);
|
|
203
|
-
return _this;
|
|
204
|
-
}
|
|
146
|
+
var composedClasses = [];
|
|
205
147
|
/* *
|
|
206
148
|
*
|
|
207
|
-
*
|
|
149
|
+
* Variables
|
|
208
150
|
*
|
|
209
151
|
* */
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
*
|
|
213
|
-
* @function Highcharts.ColorAxis#init
|
|
152
|
+
var ColorAxisClass;
|
|
153
|
+
/* *
|
|
214
154
|
*
|
|
215
|
-
*
|
|
216
|
-
* The related chart of the color axis.
|
|
155
|
+
* Functions
|
|
217
156
|
*
|
|
218
|
-
*
|
|
219
|
-
|
|
157
|
+
* */
|
|
158
|
+
/* eslint-disable valid-jsdoc */
|
|
159
|
+
/**
|
|
160
|
+
* @private
|
|
220
161
|
*/
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
162
|
+
function compose(ColorAxisType, ChartClass, FxClass, LegendClass, SeriesClass) {
|
|
163
|
+
if (!ColorAxisClass) {
|
|
164
|
+
ColorAxisClass = ColorAxisType;
|
|
165
|
+
}
|
|
166
|
+
if (composedClasses.indexOf(ChartClass) === -1) {
|
|
167
|
+
composedClasses.push(ChartClass);
|
|
168
|
+
var chartProto = ChartClass.prototype;
|
|
169
|
+
chartProto.collectionsWithUpdate.push('colorAxis');
|
|
170
|
+
chartProto.collectionsWithInit.colorAxis = [chartProto.addColorAxis];
|
|
171
|
+
addEvent(ChartClass, 'afterGetAxes', onChartAfterGetAxes);
|
|
172
|
+
wrapChartCreateAxis(ChartClass);
|
|
173
|
+
}
|
|
174
|
+
if (composedClasses.indexOf(FxClass) === -1) {
|
|
175
|
+
composedClasses.push(FxClass);
|
|
176
|
+
var fxProto = FxClass.prototype;
|
|
177
|
+
fxProto.fillSetter = wrapFxFillSetter;
|
|
178
|
+
fxProto.strokeSetter = wrapFxStrokeSetter;
|
|
179
|
+
}
|
|
180
|
+
if (composedClasses.indexOf(LegendClass) === -1) {
|
|
181
|
+
composedClasses.push(LegendClass);
|
|
182
|
+
addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);
|
|
183
|
+
addEvent(LegendClass, 'afterColorizeItem', onLegendAfterColorizeItem);
|
|
184
|
+
addEvent(LegendClass, 'afterUpdate', onLegendAfterUpdate);
|
|
185
|
+
}
|
|
186
|
+
if (composedClasses.indexOf(SeriesClass) === -1) {
|
|
187
|
+
composedClasses.push(SeriesClass);
|
|
188
|
+
extend(SeriesClass.prototype, colorSeriesMixin);
|
|
189
|
+
extend(SeriesClass.prototype.pointClass.prototype, colorPointMixin);
|
|
190
|
+
addEvent(SeriesClass, 'afterTranslate', onSeriesAfterTranslate);
|
|
191
|
+
addEvent(SeriesClass, 'bindAxes', onSeriesBindAxes);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
ColorAxisComposition.compose = compose;
|
|
195
|
+
/**
|
|
196
|
+
* Extend the chart getAxes method to also get the color axis.
|
|
197
|
+
* @private
|
|
198
|
+
*/
|
|
199
|
+
function onChartAfterGetAxes() {
|
|
200
|
+
var _this = this;
|
|
201
|
+
var options = this.options;
|
|
202
|
+
this.colorAxis = [];
|
|
203
|
+
if (options.colorAxis) {
|
|
204
|
+
options.colorAxis = splat(options.colorAxis);
|
|
205
|
+
options.colorAxis.forEach(function (axisOptions, i) {
|
|
206
|
+
axisOptions.index = i;
|
|
207
|
+
new ColorAxisClass(_this, axisOptions); // eslint-disable-line no-new
|
|
233
208
|
});
|
|
234
|
-
axis.coll = 'colorAxis';
|
|
235
|
-
axis.side = userOptions.side || horiz ? 2 : 1;
|
|
236
|
-
axis.reversed = userOptions.reversed || !horiz;
|
|
237
|
-
axis.opposite = !horiz;
|
|
238
|
-
_super.prototype.init.call(this, chart, options);
|
|
239
|
-
// Base init() pushes it to the xAxis array, now pop it again
|
|
240
|
-
// chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
|
|
241
|
-
// Prepare data classes
|
|
242
|
-
if (userOptions.dataClasses) {
|
|
243
|
-
axis.initDataClasses(userOptions);
|
|
244
209
|
}
|
|
245
|
-
|
|
246
|
-
// Override original axis properties
|
|
247
|
-
axis.horiz = horiz;
|
|
248
|
-
axis.zoomEnabled = false;
|
|
249
|
-
};
|
|
210
|
+
}
|
|
250
211
|
/**
|
|
212
|
+
* Add the color axis. This also removes the axis' own series to prevent
|
|
213
|
+
* them from showing up individually.
|
|
251
214
|
* @private
|
|
252
215
|
*/
|
|
253
|
-
|
|
254
|
-
var
|
|
255
|
-
var
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
axis.legendItems = [];
|
|
263
|
-
userOptions.dataClasses.forEach(function (dataClass, i) {
|
|
264
|
-
var colors;
|
|
265
|
-
dataClass = merge(dataClass);
|
|
266
|
-
dataClasses.push(dataClass);
|
|
267
|
-
if (!chart.styledMode && dataClass.color) {
|
|
268
|
-
return;
|
|
216
|
+
function onLegendAfterGetAllItems(e) {
|
|
217
|
+
var _this = this;
|
|
218
|
+
var colorAxes = this.chart.colorAxis || [],
|
|
219
|
+
destroyItem = function (item) {
|
|
220
|
+
var i = e.allItems.indexOf(item);
|
|
221
|
+
if (i !== -1) {
|
|
222
|
+
// #15436
|
|
223
|
+
_this.destroyItem(e.allItems[i]);
|
|
224
|
+
e.allItems.splice(i, 1);
|
|
269
225
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
226
|
+
};
|
|
227
|
+
var colorAxisItems = [],
|
|
228
|
+
options,
|
|
229
|
+
i;
|
|
230
|
+
colorAxes.forEach(function (colorAxis) {
|
|
231
|
+
options = colorAxis.options;
|
|
232
|
+
if (options && options.showInLegend) {
|
|
233
|
+
// Data classes
|
|
234
|
+
if (options.dataClasses && options.visible) {
|
|
235
|
+
colorAxisItems = colorAxisItems.concat(colorAxis.getDataClassLegendSymbols());
|
|
236
|
+
// Gradient legend
|
|
275
237
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
if (colorCounter === colorCount) {
|
|
280
|
-
colorCounter = 0;
|
|
238
|
+
else if (options.visible) {
|
|
239
|
+
// Add this axis on top
|
|
240
|
+
colorAxisItems.push(colorAxis);
|
|
281
241
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
242
|
+
// If dataClasses are defined or showInLegend option is not set
|
|
243
|
+
// to true, do not add color axis' series to legend.
|
|
244
|
+
colorAxis.series.forEach(function (series) {
|
|
245
|
+
if (!series.options.showInLegend || options.dataClasses) {
|
|
246
|
+
if (series.options.legendType === 'point') {
|
|
247
|
+
series.points.forEach(function (point) {
|
|
248
|
+
destroyItem(point);
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
destroyItem(series);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
});
|
|
286
256
|
}
|
|
287
257
|
});
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
*
|
|
294
|
-
* @return {boolean}
|
|
295
|
-
* True, if the series has points, otherwise false.
|
|
296
|
-
*/
|
|
297
|
-
ColorAxis.prototype.hasData = function () {
|
|
298
|
-
return !!(this.tickPositions || []).length;
|
|
299
|
-
};
|
|
258
|
+
i = colorAxisItems.length;
|
|
259
|
+
while (i--) {
|
|
260
|
+
e.allItems.unshift(colorAxisItems[i]);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
300
263
|
/**
|
|
301
|
-
* Override so that ticks are not added in data class axes (#6914)
|
|
302
264
|
* @private
|
|
303
265
|
*/
|
|
304
|
-
|
|
305
|
-
if (
|
|
306
|
-
|
|
266
|
+
function onLegendAfterColorizeItem(e) {
|
|
267
|
+
if (e.visible && e.item.legendColor) {
|
|
268
|
+
e.item.legendSymbol.attr({
|
|
269
|
+
fill: e.item.legendColor
|
|
270
|
+
});
|
|
307
271
|
}
|
|
308
|
-
}
|
|
272
|
+
}
|
|
309
273
|
/**
|
|
274
|
+
* Updates in the legend need to be reflected in the color axis. (#6888)
|
|
310
275
|
* @private
|
|
311
276
|
*/
|
|
312
|
-
|
|
313
|
-
var
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
});
|
|
321
|
-
};
|
|
277
|
+
function onLegendAfterUpdate() {
|
|
278
|
+
var colorAxes = this.chart.colorAxis;
|
|
279
|
+
if (colorAxes) {
|
|
280
|
+
colorAxes.forEach(function (colorAxis) {
|
|
281
|
+
colorAxis.update({}, arguments[2]);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
322
285
|
/**
|
|
323
|
-
*
|
|
286
|
+
* Calculate and set colors for points.
|
|
324
287
|
* @private
|
|
325
288
|
*/
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
289
|
+
function onSeriesAfterTranslate() {
|
|
290
|
+
if (this.chart.colorAxis &&
|
|
291
|
+
this.chart.colorAxis.length ||
|
|
292
|
+
this.colorAttribs) {
|
|
293
|
+
this.translateColors();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
331
296
|
/**
|
|
297
|
+
* Add colorAxis to series axisTypes.
|
|
332
298
|
* @private
|
|
333
299
|
*/
|
|
334
|
-
|
|
335
|
-
var
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
var legendOptions = chart.options.legend || {};
|
|
339
|
-
var x,
|
|
340
|
-
y,
|
|
341
|
-
width,
|
|
342
|
-
height;
|
|
343
|
-
if (symbol) {
|
|
344
|
-
this.left = x = symbol.attr('x');
|
|
345
|
-
this.top = y = symbol.attr('y');
|
|
346
|
-
this.width = width = symbol.attr('width');
|
|
347
|
-
this.height = height = symbol.attr('height');
|
|
348
|
-
this.right = chart.chartWidth - x - width;
|
|
349
|
-
this.bottom = chart.chartHeight - y - height;
|
|
350
|
-
this.len = this.horiz ? width : height;
|
|
351
|
-
this.pos = this.horiz ? x : y;
|
|
300
|
+
function onSeriesBindAxes() {
|
|
301
|
+
var axisTypes = this.axisTypes;
|
|
302
|
+
if (!axisTypes) {
|
|
303
|
+
this.axisTypes = ['colorAxis'];
|
|
352
304
|
}
|
|
353
|
-
else {
|
|
354
|
-
|
|
355
|
-
// and such (#5205)
|
|
356
|
-
this.len = (this.horiz ?
|
|
357
|
-
legendOptions.symbolWidth :
|
|
358
|
-
legendOptions.symbolHeight) || ColorAxis.defaultLegendLength;
|
|
305
|
+
else if (axisTypes.indexOf('colorAxis') === -1) {
|
|
306
|
+
axisTypes.push('colorAxis');
|
|
359
307
|
}
|
|
360
|
-
}
|
|
308
|
+
}
|
|
361
309
|
/**
|
|
362
310
|
* @private
|
|
363
311
|
*/
|
|
364
|
-
|
|
365
|
-
var
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
312
|
+
function wrapChartCreateAxis(ChartClass) {
|
|
313
|
+
var superCreateAxis = ChartClass.prototype.createAxis;
|
|
314
|
+
ChartClass.prototype.createAxis = function (type, options) {
|
|
315
|
+
if (type !== 'colorAxis') {
|
|
316
|
+
return superCreateAxis.apply(this, arguments);
|
|
317
|
+
}
|
|
318
|
+
var axis = new ColorAxisClass(this,
|
|
319
|
+
merge(options.axis, {
|
|
320
|
+
index: this[type].length,
|
|
321
|
+
isX: false
|
|
322
|
+
}));
|
|
323
|
+
this.isDirtyLegend = true;
|
|
324
|
+
// Clear before 'bindAxes' (#11924)
|
|
325
|
+
this.axes.forEach(function (axis) {
|
|
326
|
+
axis.series = [];
|
|
327
|
+
});
|
|
328
|
+
this.series.forEach(function (series) {
|
|
329
|
+
series.bindAxes();
|
|
330
|
+
series.isDirtyData = true;
|
|
331
|
+
});
|
|
332
|
+
if (pick(options.redraw, true)) {
|
|
333
|
+
this.redraw(options.animation);
|
|
334
|
+
}
|
|
335
|
+
return axis;
|
|
336
|
+
};
|
|
337
|
+
}
|
|
372
338
|
/**
|
|
373
|
-
*
|
|
339
|
+
* Handle animation of the color attributes directly.
|
|
374
340
|
* @private
|
|
375
341
|
*/
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
var stops = axis.stops;
|
|
380
|
-
var pos,
|
|
381
|
-
from,
|
|
382
|
-
to,
|
|
383
|
-
color,
|
|
384
|
-
dataClass,
|
|
385
|
-
i;
|
|
386
|
-
if (dataClasses) {
|
|
387
|
-
i = dataClasses.length;
|
|
388
|
-
while (i--) {
|
|
389
|
-
dataClass = dataClasses[i];
|
|
390
|
-
from = dataClass.from;
|
|
391
|
-
to = dataClass.to;
|
|
392
|
-
if ((typeof from === 'undefined' || value >= from) &&
|
|
393
|
-
(typeof to === 'undefined' || value <= to)) {
|
|
394
|
-
color = dataClass.color;
|
|
395
|
-
if (point) {
|
|
396
|
-
point.dataClass = i;
|
|
397
|
-
point.colorIndex = dataClass.colorIndex;
|
|
398
|
-
}
|
|
399
|
-
break;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
pos = axis.normalizedValue(value);
|
|
405
|
-
i = stops.length;
|
|
406
|
-
while (i--) {
|
|
407
|
-
if (pos > stops[i][0]) {
|
|
408
|
-
break;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
from = stops[i] || stops[i + 1];
|
|
412
|
-
to = stops[i + 1] || from;
|
|
413
|
-
// The position within the gradient
|
|
414
|
-
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
|
|
415
|
-
color = from.color.tweenTo(to.color, pos);
|
|
416
|
-
}
|
|
417
|
-
return color;
|
|
418
|
-
};
|
|
419
|
-
/**
|
|
420
|
-
* Override the getOffset method to add the whole axis groups inside the
|
|
421
|
-
* legend.
|
|
422
|
-
* @private
|
|
423
|
-
*/
|
|
424
|
-
ColorAxis.prototype.getOffset = function () {
|
|
425
|
-
var axis = this;
|
|
426
|
-
var group = axis.legendGroup;
|
|
427
|
-
var sideOffset = axis.chart.axisOffset[axis.side];
|
|
428
|
-
if (group) {
|
|
429
|
-
// Hook for the getOffset method to add groups to this parent
|
|
430
|
-
// group
|
|
431
|
-
axis.axisParent = group;
|
|
432
|
-
// Call the base
|
|
433
|
-
_super.prototype.getOffset.call(this);
|
|
434
|
-
// First time only
|
|
435
|
-
if (!axis.added) {
|
|
436
|
-
axis.added = true;
|
|
437
|
-
axis.labelLeft = 0;
|
|
438
|
-
axis.labelRight = axis.width;
|
|
439
|
-
}
|
|
440
|
-
// Reset it to avoid color axis reserving space
|
|
441
|
-
axis.chart.axisOffset[axis.side] = sideOffset;
|
|
442
|
-
}
|
|
443
|
-
};
|
|
444
|
-
/**
|
|
445
|
-
* Create the color gradient.
|
|
446
|
-
* @private
|
|
447
|
-
*/
|
|
448
|
-
ColorAxis.prototype.setLegendColor = function () {
|
|
449
|
-
var axis = this;
|
|
450
|
-
var horiz = axis.horiz;
|
|
451
|
-
var reversed = axis.reversed;
|
|
452
|
-
var one = reversed ? 1 : 0;
|
|
453
|
-
var zero = reversed ? 0 : 1;
|
|
454
|
-
var grad = horiz ? [one, 0,
|
|
455
|
-
zero, 0] : [0,
|
|
456
|
-
zero, 0,
|
|
457
|
-
one]; // #3190
|
|
458
|
-
axis.legendColor = {
|
|
459
|
-
linearGradient: {
|
|
460
|
-
x1: grad[0],
|
|
461
|
-
y1: grad[1],
|
|
462
|
-
x2: grad[2],
|
|
463
|
-
y2: grad[3]
|
|
464
|
-
},
|
|
465
|
-
stops: axis.stops
|
|
466
|
-
};
|
|
467
|
-
};
|
|
468
|
-
/**
|
|
469
|
-
* The color axis appears inside the legend and has its own legend symbol.
|
|
470
|
-
* @private
|
|
471
|
-
*/
|
|
472
|
-
ColorAxis.prototype.drawLegendSymbol = function (legend, item) {
|
|
473
|
-
var axis = this;
|
|
474
|
-
var padding = legend.padding;
|
|
475
|
-
var legendOptions = legend.options;
|
|
476
|
-
var horiz = axis.horiz;
|
|
477
|
-
var width = pick(legendOptions.symbolWidth,
|
|
478
|
-
horiz ? ColorAxis.defaultLegendLength : 12);
|
|
479
|
-
var height = pick(legendOptions.symbolHeight,
|
|
480
|
-
horiz ? 12 : ColorAxis.defaultLegendLength);
|
|
481
|
-
var labelPadding = pick(legendOptions.labelPadding,
|
|
482
|
-
horiz ? 16 : 30);
|
|
483
|
-
var itemDistance = pick(legendOptions.itemDistance, 10);
|
|
484
|
-
this.setLegendColor();
|
|
485
|
-
// Create the gradient
|
|
486
|
-
item.legendSymbol = this.chart.renderer.rect(0, legend.baseline - 11, width, height).attr({
|
|
487
|
-
zIndex: 1
|
|
488
|
-
}).add(item.legendGroup);
|
|
489
|
-
// Set how much space this legend item takes up
|
|
490
|
-
axis.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
|
|
491
|
-
axis.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
|
|
492
|
-
};
|
|
493
|
-
/**
|
|
494
|
-
* Fool the legend.
|
|
495
|
-
* @private
|
|
496
|
-
*/
|
|
497
|
-
ColorAxis.prototype.setState = function (state) {
|
|
498
|
-
this.series.forEach(function (series) {
|
|
499
|
-
series.setState(state);
|
|
500
|
-
});
|
|
501
|
-
};
|
|
502
|
-
/**
|
|
503
|
-
* @private
|
|
504
|
-
*/
|
|
505
|
-
ColorAxis.prototype.setVisible = function () {
|
|
506
|
-
};
|
|
507
|
-
/**
|
|
508
|
-
* @private
|
|
509
|
-
*/
|
|
510
|
-
ColorAxis.prototype.getSeriesExtremes = function () {
|
|
511
|
-
var axis = this;
|
|
512
|
-
var series = axis.series;
|
|
513
|
-
var colorValArray,
|
|
514
|
-
colorKey,
|
|
515
|
-
colorValIndex,
|
|
516
|
-
pointArrayMap,
|
|
517
|
-
calculatedExtremes,
|
|
518
|
-
cSeries,
|
|
519
|
-
i = series.length,
|
|
520
|
-
yData,
|
|
521
|
-
j;
|
|
522
|
-
this.dataMin = Infinity;
|
|
523
|
-
this.dataMax = -Infinity;
|
|
524
|
-
while (i--) { // x, y, value, other
|
|
525
|
-
cSeries = series[i];
|
|
526
|
-
colorKey = cSeries.colorKey = pick(cSeries.options.colorKey, cSeries.colorKey, cSeries.pointValKey, cSeries.zoneAxis, 'y');
|
|
527
|
-
pointArrayMap = cSeries.pointArrayMap;
|
|
528
|
-
calculatedExtremes = cSeries[colorKey + 'Min'] &&
|
|
529
|
-
cSeries[colorKey + 'Max'];
|
|
530
|
-
if (cSeries[colorKey + 'Data']) {
|
|
531
|
-
colorValArray = cSeries[colorKey + 'Data'];
|
|
532
|
-
}
|
|
533
|
-
else {
|
|
534
|
-
if (!pointArrayMap) {
|
|
535
|
-
colorValArray = cSeries.yData;
|
|
536
|
-
}
|
|
537
|
-
else {
|
|
538
|
-
colorValArray = [];
|
|
539
|
-
colorValIndex = pointArrayMap.indexOf(colorKey);
|
|
540
|
-
yData = cSeries.yData;
|
|
541
|
-
if (colorValIndex >= 0 && yData) {
|
|
542
|
-
for (j = 0; j < yData.length; j++) {
|
|
543
|
-
colorValArray.push(pick(yData[j][colorValIndex], yData[j]));
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
// If color key extremes are already calculated, use them.
|
|
549
|
-
if (calculatedExtremes) {
|
|
550
|
-
cSeries.minColorValue = cSeries[colorKey + 'Min'];
|
|
551
|
-
cSeries.maxColorValue = cSeries[colorKey + 'Max'];
|
|
552
|
-
}
|
|
553
|
-
else {
|
|
554
|
-
var cExtremes = Series.prototype.getExtremes.call(cSeries,
|
|
555
|
-
colorValArray);
|
|
556
|
-
cSeries.minColorValue = cExtremes.dataMin;
|
|
557
|
-
cSeries.maxColorValue = cExtremes.dataMax;
|
|
558
|
-
}
|
|
559
|
-
if (typeof cSeries.minColorValue !== 'undefined') {
|
|
560
|
-
this.dataMin =
|
|
561
|
-
Math.min(this.dataMin, cSeries.minColorValue);
|
|
562
|
-
this.dataMax =
|
|
563
|
-
Math.max(this.dataMax, cSeries.maxColorValue);
|
|
564
|
-
}
|
|
565
|
-
if (!calculatedExtremes) {
|
|
566
|
-
Series.prototype.applyExtremes.call(cSeries);
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
};
|
|
570
|
-
/**
|
|
571
|
-
* Internal function to draw a crosshair.
|
|
572
|
-
*
|
|
573
|
-
* @function Highcharts.ColorAxis#drawCrosshair
|
|
574
|
-
*
|
|
575
|
-
* @param {Highcharts.PointerEventObject} [e]
|
|
576
|
-
* The event arguments from the modified pointer event, extended with
|
|
577
|
-
* `chartX` and `chartY`
|
|
578
|
-
*
|
|
579
|
-
* @param {Highcharts.Point} [point]
|
|
580
|
-
* The Point object if the crosshair snaps to points.
|
|
581
|
-
*
|
|
582
|
-
* @fires Highcharts.ColorAxis#event:afterDrawCrosshair
|
|
583
|
-
* @fires Highcharts.ColorAxis#event:drawCrosshair
|
|
584
|
-
*/
|
|
585
|
-
ColorAxis.prototype.drawCrosshair = function (e, point) {
|
|
586
|
-
var axis = this;
|
|
587
|
-
var plotX = point && point.plotX;
|
|
588
|
-
var plotY = point && point.plotY;
|
|
589
|
-
var axisPos = axis.pos;
|
|
590
|
-
var axisLen = axis.len;
|
|
591
|
-
var crossPos;
|
|
592
|
-
if (point) {
|
|
593
|
-
crossPos = axis.toPixels(point.getNestedProperty(point.series.colorKey));
|
|
594
|
-
if (crossPos < axisPos) {
|
|
595
|
-
crossPos = axisPos - 2;
|
|
596
|
-
}
|
|
597
|
-
else if (crossPos > axisPos + axisLen) {
|
|
598
|
-
crossPos = axisPos + axisLen + 2;
|
|
599
|
-
}
|
|
600
|
-
point.plotX = crossPos;
|
|
601
|
-
point.plotY = axis.len - crossPos;
|
|
602
|
-
_super.prototype.drawCrosshair.call(this, e, point);
|
|
603
|
-
point.plotX = plotX;
|
|
604
|
-
point.plotY = plotY;
|
|
605
|
-
if (axis.cross &&
|
|
606
|
-
!axis.cross.addedToColorAxis &&
|
|
607
|
-
axis.legendGroup) {
|
|
608
|
-
axis.cross
|
|
609
|
-
.addClass('highcharts-coloraxis-marker')
|
|
610
|
-
.add(axis.legendGroup);
|
|
611
|
-
axis.cross.addedToColorAxis = true;
|
|
612
|
-
if (!axis.chart.styledMode &&
|
|
613
|
-
typeof axis.crosshair === 'object') {
|
|
614
|
-
axis.cross.attr({
|
|
615
|
-
fill: axis.crosshair.color
|
|
616
|
-
});
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
};
|
|
342
|
+
function wrapFxFillSetter() {
|
|
343
|
+
this.elem.attr('fill', color(this.start).tweenTo(color(this.end), this.pos), void 0, true);
|
|
344
|
+
}
|
|
621
345
|
/**
|
|
346
|
+
* Handle animation of the color attributes directly.
|
|
622
347
|
* @private
|
|
623
348
|
*/
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
* @function Highcharts.ColorAxis#remove
|
|
706
|
-
*
|
|
707
|
-
* @param {boolean} [redraw=true]
|
|
708
|
-
* Whether to redraw the chart following the remove.
|
|
709
|
-
*/
|
|
710
|
-
ColorAxis.prototype.remove = function (redraw) {
|
|
711
|
-
this.destroyItems();
|
|
712
|
-
_super.prototype.remove.call(this, redraw);
|
|
713
|
-
};
|
|
714
|
-
/**
|
|
715
|
-
* Get the legend item symbols for data classes.
|
|
716
|
-
* @private
|
|
717
|
-
*/
|
|
718
|
-
ColorAxis.prototype.getDataClassLegendSymbols = function () {
|
|
719
|
-
var axis = this;
|
|
720
|
-
var chart = axis.chart;
|
|
721
|
-
var legendItems = axis.legendItems;
|
|
722
|
-
var legendOptions = chart.options.legend;
|
|
723
|
-
var valueDecimals = legendOptions.valueDecimals;
|
|
724
|
-
var valueSuffix = legendOptions.valueSuffix || '';
|
|
725
|
-
var name;
|
|
726
|
-
if (!legendItems.length) {
|
|
727
|
-
axis.dataClasses.forEach(function (dataClass, i) {
|
|
728
|
-
var vis = true,
|
|
729
|
-
from = dataClass.from,
|
|
730
|
-
to = dataClass.to;
|
|
731
|
-
var numberFormatter = chart.numberFormatter;
|
|
732
|
-
// Assemble the default name. This can be overridden
|
|
733
|
-
// by legend.options.labelFormatter
|
|
734
|
-
name = '';
|
|
735
|
-
if (typeof from === 'undefined') {
|
|
736
|
-
name = '< ';
|
|
737
|
-
}
|
|
738
|
-
else if (typeof to === 'undefined') {
|
|
739
|
-
name = '> ';
|
|
740
|
-
}
|
|
741
|
-
if (typeof from !== 'undefined') {
|
|
742
|
-
name += numberFormatter(from, valueDecimals) + valueSuffix;
|
|
743
|
-
}
|
|
744
|
-
if (typeof from !== 'undefined' && typeof to !== 'undefined') {
|
|
745
|
-
name += ' - ';
|
|
746
|
-
}
|
|
747
|
-
if (typeof to !== 'undefined') {
|
|
748
|
-
name += numberFormatter(to, valueDecimals) + valueSuffix;
|
|
749
|
-
}
|
|
750
|
-
// Add a mock object to the legend items
|
|
751
|
-
legendItems.push(extend({
|
|
752
|
-
chart: chart,
|
|
753
|
-
name: name,
|
|
754
|
-
options: {},
|
|
755
|
-
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
|
|
756
|
-
visible: true,
|
|
757
|
-
setState: noop,
|
|
758
|
-
isDataClass: true,
|
|
759
|
-
setVisible: function () {
|
|
760
|
-
vis = axis.visible = !vis;
|
|
761
|
-
axis.series.forEach(function (series) {
|
|
762
|
-
series.points.forEach(function (point) {
|
|
763
|
-
if (point.dataClass === i) {
|
|
764
|
-
point.setVisible(vis);
|
|
765
|
-
}
|
|
766
|
-
});
|
|
767
|
-
});
|
|
768
|
-
chart.legend.colorizeItem(this, vis);
|
|
769
|
-
}
|
|
770
|
-
}, dataClass));
|
|
771
|
-
});
|
|
772
|
-
}
|
|
773
|
-
return legendItems;
|
|
774
|
-
};
|
|
775
|
-
/* *
|
|
776
|
-
*
|
|
777
|
-
* Static Functions
|
|
778
|
-
*
|
|
779
|
-
* */
|
|
780
|
-
ColorAxis.defaultLegendLength = 200;
|
|
781
|
-
/**
|
|
782
|
-
* A color axis for series. Visually, the color
|
|
783
|
-
* axis will appear as a gradient or as separate items inside the
|
|
784
|
-
* legend, depending on whether the axis is scalar or based on data
|
|
785
|
-
* classes.
|
|
786
|
-
*
|
|
787
|
-
* For supported color formats, see the
|
|
788
|
-
* [docs article about colors](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
789
|
-
*
|
|
790
|
-
* A scalar color axis is represented by a gradient. The colors either
|
|
791
|
-
* range between the [minColor](#colorAxis.minColor) and the
|
|
792
|
-
* [maxColor](#colorAxis.maxColor), or for more fine grained control the
|
|
793
|
-
* colors can be defined in [stops](#colorAxis.stops). Often times, the
|
|
794
|
-
* color axis needs to be adjusted to get the right color spread for the
|
|
795
|
-
* data. In addition to stops, consider using a logarithmic
|
|
796
|
-
* [axis type](#colorAxis.type), or setting [min](#colorAxis.min) and
|
|
797
|
-
* [max](#colorAxis.max) to avoid the colors being determined by
|
|
798
|
-
* outliers.
|
|
799
|
-
*
|
|
800
|
-
* When [dataClasses](#colorAxis.dataClasses) are used, the ranges are
|
|
801
|
-
* subdivided into separate classes like categories based on their
|
|
802
|
-
* values. This can be used for ranges between two values, but also for
|
|
803
|
-
* a true category. However, when your data is categorized, it may be as
|
|
804
|
-
* convenient to add each category to a separate series.
|
|
805
|
-
*
|
|
806
|
-
* Color axis does not work with: `sankey`, `sunburst`, `dependencywheel`,
|
|
807
|
-
* `networkgraph`, `wordcloud`, `venn`, `gauge` and `solidgauge` series
|
|
808
|
-
* types.
|
|
809
|
-
*
|
|
810
|
-
* Since v7.2.0 `colorAxis` can also be an array of options objects.
|
|
811
|
-
*
|
|
812
|
-
* See [the Axis object](/class-reference/Highcharts.Axis) for
|
|
813
|
-
* programmatic access to the axis.
|
|
814
|
-
*
|
|
815
|
-
* @sample {highcharts} highcharts/coloraxis/custom-color-key
|
|
816
|
-
* Column chart with color axis
|
|
817
|
-
* @sample {highcharts} highcharts/coloraxis/horizontal-layout
|
|
818
|
-
* Horizontal layout
|
|
819
|
-
* @sample {highmaps} maps/coloraxis/dataclasscolor
|
|
820
|
-
* With data classes
|
|
821
|
-
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor
|
|
822
|
-
* Min color and max color
|
|
823
|
-
*
|
|
824
|
-
* @extends xAxis
|
|
825
|
-
* @excluding alignTicks, allowDecimals, alternateGridColor, breaks,
|
|
826
|
-
* categories, crosshair, dateTimeLabelFormats, height, left,
|
|
827
|
-
* lineWidth, linkedTo, maxZoom, minRange, minTickInterval,
|
|
828
|
-
* offset, opposite, pane, plotBands, plotLines,
|
|
829
|
-
* reversedStacks, showEmpty, title, top, width, zoomEnabled
|
|
830
|
-
* @product highcharts highstock highmaps
|
|
831
|
-
* @type {*|Array<*>}
|
|
832
|
-
* @optionparent colorAxis
|
|
833
|
-
* @ignore
|
|
834
|
-
*/
|
|
835
|
-
ColorAxis.defaultColorAxisOptions = {
|
|
349
|
+
function wrapFxStrokeSetter() {
|
|
350
|
+
this.elem.attr('stroke', color(this.start).tweenTo(color(this.end), this.pos), void 0, true);
|
|
351
|
+
}
|
|
352
|
+
})(ColorAxisComposition || (ColorAxisComposition = {}));
|
|
353
|
+
/* *
|
|
354
|
+
*
|
|
355
|
+
* Default Export
|
|
356
|
+
*
|
|
357
|
+
* */
|
|
358
|
+
|
|
359
|
+
return ColorAxisComposition;
|
|
360
|
+
});
|
|
361
|
+
_registerModule(_modules, 'Core/Axis/Color/ColorAxisDefaults.js', [_modules['Core/Color/Palette.js']], function (Palette) {
|
|
362
|
+
/* *
|
|
363
|
+
*
|
|
364
|
+
* (c) 2010-2021 Torstein Honsi
|
|
365
|
+
*
|
|
366
|
+
* License: www.highcharts.com/license
|
|
367
|
+
*
|
|
368
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
369
|
+
*
|
|
370
|
+
* */
|
|
371
|
+
/* *
|
|
372
|
+
*
|
|
373
|
+
* API Options
|
|
374
|
+
*
|
|
375
|
+
* */
|
|
376
|
+
/**
|
|
377
|
+
* A color axis for series. Visually, the color
|
|
378
|
+
* axis will appear as a gradient or as separate items inside the
|
|
379
|
+
* legend, depending on whether the axis is scalar or based on data
|
|
380
|
+
* classes.
|
|
381
|
+
*
|
|
382
|
+
* For supported color formats, see the
|
|
383
|
+
* [docs article about colors](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
384
|
+
*
|
|
385
|
+
* A scalar color axis is represented by a gradient. The colors either
|
|
386
|
+
* range between the [minColor](#colorAxis.minColor) and the
|
|
387
|
+
* [maxColor](#colorAxis.maxColor), or for more fine grained control the
|
|
388
|
+
* colors can be defined in [stops](#colorAxis.stops). Often times, the
|
|
389
|
+
* color axis needs to be adjusted to get the right color spread for the
|
|
390
|
+
* data. In addition to stops, consider using a logarithmic
|
|
391
|
+
* [axis type](#colorAxis.type), or setting [min](#colorAxis.min) and
|
|
392
|
+
* [max](#colorAxis.max) to avoid the colors being determined by
|
|
393
|
+
* outliers.
|
|
394
|
+
*
|
|
395
|
+
* When [dataClasses](#colorAxis.dataClasses) are used, the ranges are
|
|
396
|
+
* subdivided into separate classes like categories based on their
|
|
397
|
+
* values. This can be used for ranges between two values, but also for
|
|
398
|
+
* a true category. However, when your data is categorized, it may be as
|
|
399
|
+
* convenient to add each category to a separate series.
|
|
400
|
+
*
|
|
401
|
+
* Color axis does not work with: `sankey`, `sunburst`, `dependencywheel`,
|
|
402
|
+
* `networkgraph`, `wordcloud`, `venn`, `gauge` and `solidgauge` series
|
|
403
|
+
* types.
|
|
404
|
+
*
|
|
405
|
+
* Since v7.2.0 `colorAxis` can also be an array of options objects.
|
|
406
|
+
*
|
|
407
|
+
* See [the Axis object](/class-reference/Highcharts.Axis) for
|
|
408
|
+
* programmatic access to the axis.
|
|
409
|
+
*
|
|
410
|
+
* @sample {highcharts} highcharts/coloraxis/custom-color-key
|
|
411
|
+
* Column chart with color axis
|
|
412
|
+
* @sample {highcharts} highcharts/coloraxis/horizontal-layout
|
|
413
|
+
* Horizontal layout
|
|
414
|
+
* @sample {highmaps} maps/coloraxis/dataclasscolor
|
|
415
|
+
* With data classes
|
|
416
|
+
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor
|
|
417
|
+
* Min color and max color
|
|
418
|
+
*
|
|
419
|
+
* @extends xAxis
|
|
420
|
+
* @excluding alignTicks, allowDecimals, alternateGridColor, breaks,
|
|
421
|
+
* categories, crosshair, dateTimeLabelFormats, height, left,
|
|
422
|
+
* lineWidth, linkedTo, maxZoom, minRange, minTickInterval,
|
|
423
|
+
* offset, opposite, pane, plotBands, plotLines,
|
|
424
|
+
* reversedStacks, showEmpty, title, top, width, zoomEnabled
|
|
425
|
+
* @product highcharts highstock highmaps
|
|
426
|
+
* @type {*|Array<*>}
|
|
427
|
+
* @optionparent colorAxis
|
|
428
|
+
*/
|
|
429
|
+
var colorAxisDefaults = {
|
|
836
430
|
/**
|
|
837
431
|
* Whether to allow decimals on the color axis.
|
|
838
432
|
* @type {boolean}
|
|
@@ -1062,7 +656,7 @@
|
|
|
1062
656
|
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
1063
657
|
* @product highcharts highstock highmaps
|
|
1064
658
|
*/
|
|
1065
|
-
color:
|
|
659
|
+
color: Palette.neutralColor40
|
|
1066
660
|
},
|
|
1067
661
|
/**
|
|
1068
662
|
* The axis labels show the number for each tick.
|
|
@@ -1104,7 +698,7 @@
|
|
|
1104
698
|
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
1105
699
|
* @product highcharts highstock highmaps
|
|
1106
700
|
*/
|
|
1107
|
-
minColor:
|
|
701
|
+
minColor: Palette.highlightColor10,
|
|
1108
702
|
/**
|
|
1109
703
|
* The color to represent the maximum of the color axis. Unless
|
|
1110
704
|
* [dataClasses](#colorAxis.dataClasses) or
|
|
@@ -1123,7 +717,7 @@
|
|
|
1123
717
|
* @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
|
|
1124
718
|
* @product highcharts highstock highmaps
|
|
1125
719
|
*/
|
|
1126
|
-
maxColor:
|
|
720
|
+
maxColor: Palette.highlightColor100,
|
|
1127
721
|
/**
|
|
1128
722
|
* Color stops for the gradient of a scalar color axis. Use this in
|
|
1129
723
|
* cases where a linear gradient between a `minColor` and `maxColor`
|
|
@@ -1191,6 +785,681 @@
|
|
|
1191
785
|
*/
|
|
1192
786
|
showInLegend: true
|
|
1193
787
|
};
|
|
788
|
+
/* *
|
|
789
|
+
*
|
|
790
|
+
* Default Export
|
|
791
|
+
*
|
|
792
|
+
* */
|
|
793
|
+
|
|
794
|
+
return colorAxisDefaults;
|
|
795
|
+
});
|
|
796
|
+
_registerModule(_modules, 'Core/Axis/Color/ColorAxis.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Color/Color.js'], _modules['Core/Axis/Color/ColorAxisComposition.js'], _modules['Core/Axis/Color/ColorAxisDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Axis, Color, ColorAxisComposition, ColorAxisDefaults, H, LegendSymbol, SeriesRegistry, U) {
|
|
797
|
+
/* *
|
|
798
|
+
*
|
|
799
|
+
* (c) 2010-2021 Torstein Honsi
|
|
800
|
+
*
|
|
801
|
+
* License: www.highcharts.com/license
|
|
802
|
+
*
|
|
803
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
804
|
+
*
|
|
805
|
+
* */
|
|
806
|
+
var __extends = (this && this.__extends) || (function () {
|
|
807
|
+
var extendStatics = function (d,
|
|
808
|
+
b) {
|
|
809
|
+
extendStatics = Object.setPrototypeOf ||
|
|
810
|
+
({ __proto__: [] } instanceof Array && function (d,
|
|
811
|
+
b) { d.__proto__ = b; }) ||
|
|
812
|
+
function (d,
|
|
813
|
+
b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
814
|
+
return extendStatics(d, b);
|
|
815
|
+
};
|
|
816
|
+
return function (d, b) {
|
|
817
|
+
extendStatics(d, b);
|
|
818
|
+
function __() { this.constructor = d; }
|
|
819
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
820
|
+
};
|
|
821
|
+
})();
|
|
822
|
+
var color = Color.parse;
|
|
823
|
+
var noop = H.noop;
|
|
824
|
+
var Series = SeriesRegistry.series;
|
|
825
|
+
var extend = U.extend,
|
|
826
|
+
isNumber = U.isNumber,
|
|
827
|
+
merge = U.merge,
|
|
828
|
+
pick = U.pick;
|
|
829
|
+
/* *
|
|
830
|
+
*
|
|
831
|
+
* Class
|
|
832
|
+
*
|
|
833
|
+
* */
|
|
834
|
+
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
835
|
+
/**
|
|
836
|
+
* The ColorAxis object for inclusion in gradient legends.
|
|
837
|
+
*
|
|
838
|
+
* @class
|
|
839
|
+
* @name Highcharts.ColorAxis
|
|
840
|
+
* @augments Highcharts.Axis
|
|
841
|
+
*
|
|
842
|
+
* @param {Highcharts.Chart} chart
|
|
843
|
+
* The related chart of the color axis.
|
|
844
|
+
*
|
|
845
|
+
* @param {Highcharts.ColorAxisOptions} userOptions
|
|
846
|
+
* The color axis options for initialization.
|
|
847
|
+
*/
|
|
848
|
+
var ColorAxis = /** @class */ (function (_super) {
|
|
849
|
+
__extends(ColorAxis, _super);
|
|
850
|
+
/* *
|
|
851
|
+
*
|
|
852
|
+
* Constructors
|
|
853
|
+
*
|
|
854
|
+
* */
|
|
855
|
+
/**
|
|
856
|
+
* @private
|
|
857
|
+
*/
|
|
858
|
+
function ColorAxis(chart, userOptions) {
|
|
859
|
+
var _this = _super.call(this,
|
|
860
|
+
chart,
|
|
861
|
+
userOptions) || this;
|
|
862
|
+
_this.beforePadding = false; // Prevents unnecessary padding with `hc-more`
|
|
863
|
+
_this.chart = void 0;
|
|
864
|
+
_this.coll = 'colorAxis';
|
|
865
|
+
_this.dataClasses = void 0;
|
|
866
|
+
_this.legendItem = void 0;
|
|
867
|
+
_this.legendItems = void 0;
|
|
868
|
+
_this.name = ''; // Prevents 'undefined' in legend in IE8
|
|
869
|
+
_this.options = void 0;
|
|
870
|
+
_this.stops = void 0;
|
|
871
|
+
_this.visible = true;
|
|
872
|
+
_this.init(chart, userOptions);
|
|
873
|
+
return _this;
|
|
874
|
+
}
|
|
875
|
+
/* *
|
|
876
|
+
*
|
|
877
|
+
* Static Functions
|
|
878
|
+
*
|
|
879
|
+
* */
|
|
880
|
+
ColorAxis.compose = function (ChartClass, FxClass, LegendClass, SeriesClass) {
|
|
881
|
+
ColorAxisComposition.compose(ColorAxis, ChartClass, FxClass, LegendClass, SeriesClass);
|
|
882
|
+
};
|
|
883
|
+
/* *
|
|
884
|
+
*
|
|
885
|
+
* Functions
|
|
886
|
+
*
|
|
887
|
+
* */
|
|
888
|
+
/**
|
|
889
|
+
* Initializes the color axis.
|
|
890
|
+
*
|
|
891
|
+
* @function Highcharts.ColorAxis#init
|
|
892
|
+
*
|
|
893
|
+
* @param {Highcharts.Chart} chart
|
|
894
|
+
* The related chart of the color axis.
|
|
895
|
+
*
|
|
896
|
+
* @param {Highcharts.ColorAxisOptions} userOptions
|
|
897
|
+
* The color axis options for initialization.
|
|
898
|
+
*/
|
|
899
|
+
ColorAxis.prototype.init = function (chart, userOptions) {
|
|
900
|
+
var axis = this;
|
|
901
|
+
var legend = chart.options.legend || {},
|
|
902
|
+
horiz = userOptions.layout ?
|
|
903
|
+
userOptions.layout !== 'vertical' :
|
|
904
|
+
legend.layout !== 'vertical',
|
|
905
|
+
visible = userOptions.visible;
|
|
906
|
+
var options = merge(ColorAxis.defaultColorAxisOptions,
|
|
907
|
+
userOptions, {
|
|
908
|
+
showEmpty: false,
|
|
909
|
+
title: null,
|
|
910
|
+
visible: legend.enabled && visible !== false
|
|
911
|
+
});
|
|
912
|
+
axis.coll = 'colorAxis';
|
|
913
|
+
axis.side = userOptions.side || horiz ? 2 : 1;
|
|
914
|
+
axis.reversed = userOptions.reversed || !horiz;
|
|
915
|
+
axis.opposite = !horiz;
|
|
916
|
+
_super.prototype.init.call(this, chart, options);
|
|
917
|
+
// #16053: Restore the actual userOptions.visible so the color axis
|
|
918
|
+
// doesnt stay hidden forever when hiding and showing legend
|
|
919
|
+
axis.userOptions.visible = visible;
|
|
920
|
+
// Base init() pushes it to the xAxis array, now pop it again
|
|
921
|
+
// chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
|
|
922
|
+
// Prepare data classes
|
|
923
|
+
if (userOptions.dataClasses) {
|
|
924
|
+
axis.initDataClasses(userOptions);
|
|
925
|
+
}
|
|
926
|
+
axis.initStops();
|
|
927
|
+
// Override original axis properties
|
|
928
|
+
axis.horiz = horiz;
|
|
929
|
+
axis.zoomEnabled = false;
|
|
930
|
+
};
|
|
931
|
+
/**
|
|
932
|
+
* @private
|
|
933
|
+
*/
|
|
934
|
+
ColorAxis.prototype.initDataClasses = function (userOptions) {
|
|
935
|
+
var axis = this,
|
|
936
|
+
chart = axis.chart,
|
|
937
|
+
options = axis.options,
|
|
938
|
+
len = userOptions.dataClasses.length;
|
|
939
|
+
var dataClasses,
|
|
940
|
+
colorCounter = 0,
|
|
941
|
+
colorCount = chart.options.chart.colorCount;
|
|
942
|
+
axis.dataClasses = dataClasses = [];
|
|
943
|
+
axis.legendItems = [];
|
|
944
|
+
(userOptions.dataClasses || []).forEach(function (dataClass, i) {
|
|
945
|
+
var colors;
|
|
946
|
+
dataClass = merge(dataClass);
|
|
947
|
+
dataClasses.push(dataClass);
|
|
948
|
+
if (!chart.styledMode && dataClass.color) {
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
if (options.dataClassColor === 'category') {
|
|
952
|
+
if (!chart.styledMode) {
|
|
953
|
+
colors = chart.options.colors;
|
|
954
|
+
colorCount = colors.length;
|
|
955
|
+
dataClass.color = colors[colorCounter];
|
|
956
|
+
}
|
|
957
|
+
dataClass.colorIndex = colorCounter;
|
|
958
|
+
// increase and loop back to zero
|
|
959
|
+
colorCounter++;
|
|
960
|
+
if (colorCounter === colorCount) {
|
|
961
|
+
colorCounter = 0;
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
else {
|
|
965
|
+
dataClass.color = color(options.minColor).tweenTo(color(options.maxColor), len < 2 ? 0.5 : i / (len - 1) // #3219
|
|
966
|
+
);
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
};
|
|
970
|
+
/**
|
|
971
|
+
* Returns true if the series has points at all.
|
|
972
|
+
*
|
|
973
|
+
* @function Highcharts.ColorAxis#hasData
|
|
974
|
+
*
|
|
975
|
+
* @return {boolean}
|
|
976
|
+
* True, if the series has points, otherwise false.
|
|
977
|
+
*/
|
|
978
|
+
ColorAxis.prototype.hasData = function () {
|
|
979
|
+
return !!(this.tickPositions || []).length;
|
|
980
|
+
};
|
|
981
|
+
/**
|
|
982
|
+
* Override so that ticks are not added in data class axes (#6914)
|
|
983
|
+
* @private
|
|
984
|
+
*/
|
|
985
|
+
ColorAxis.prototype.setTickPositions = function () {
|
|
986
|
+
if (!this.dataClasses) {
|
|
987
|
+
return _super.prototype.setTickPositions.call(this);
|
|
988
|
+
}
|
|
989
|
+
};
|
|
990
|
+
/**
|
|
991
|
+
* @private
|
|
992
|
+
*/
|
|
993
|
+
ColorAxis.prototype.initStops = function () {
|
|
994
|
+
var axis = this;
|
|
995
|
+
axis.stops = axis.options.stops || [
|
|
996
|
+
[0, axis.options.minColor],
|
|
997
|
+
[1, axis.options.maxColor]
|
|
998
|
+
];
|
|
999
|
+
axis.stops.forEach(function (stop) {
|
|
1000
|
+
stop.color = color(stop[1]);
|
|
1001
|
+
});
|
|
1002
|
+
};
|
|
1003
|
+
/**
|
|
1004
|
+
* Extend the setOptions method to process extreme colors and color stops.
|
|
1005
|
+
* @private
|
|
1006
|
+
*/
|
|
1007
|
+
ColorAxis.prototype.setOptions = function (userOptions) {
|
|
1008
|
+
var axis = this;
|
|
1009
|
+
_super.prototype.setOptions.call(this, userOptions);
|
|
1010
|
+
axis.options.crosshair = axis.options.marker;
|
|
1011
|
+
};
|
|
1012
|
+
/**
|
|
1013
|
+
* @private
|
|
1014
|
+
*/
|
|
1015
|
+
ColorAxis.prototype.setAxisSize = function () {
|
|
1016
|
+
var axis = this;
|
|
1017
|
+
var symbol = axis.legendSymbol;
|
|
1018
|
+
var chart = axis.chart;
|
|
1019
|
+
var legendOptions = chart.options.legend || {};
|
|
1020
|
+
var x,
|
|
1021
|
+
y,
|
|
1022
|
+
width,
|
|
1023
|
+
height;
|
|
1024
|
+
if (symbol) {
|
|
1025
|
+
this.left = x = symbol.attr('x');
|
|
1026
|
+
this.top = y = symbol.attr('y');
|
|
1027
|
+
this.width = width = symbol.attr('width');
|
|
1028
|
+
this.height = height = symbol.attr('height');
|
|
1029
|
+
this.right = chart.chartWidth - x - width;
|
|
1030
|
+
this.bottom = chart.chartHeight - y - height;
|
|
1031
|
+
this.len = this.horiz ? width : height;
|
|
1032
|
+
this.pos = this.horiz ? x : y;
|
|
1033
|
+
}
|
|
1034
|
+
else {
|
|
1035
|
+
// Fake length for disabled legend to avoid tick issues
|
|
1036
|
+
// and such (#5205)
|
|
1037
|
+
this.len = (this.horiz ?
|
|
1038
|
+
legendOptions.symbolWidth :
|
|
1039
|
+
legendOptions.symbolHeight) || ColorAxis.defaultLegendLength;
|
|
1040
|
+
}
|
|
1041
|
+
};
|
|
1042
|
+
/**
|
|
1043
|
+
* @private
|
|
1044
|
+
*/
|
|
1045
|
+
ColorAxis.prototype.normalizedValue = function (value) {
|
|
1046
|
+
var axis = this;
|
|
1047
|
+
if (axis.logarithmic) {
|
|
1048
|
+
value = axis.logarithmic.log2lin(value);
|
|
1049
|
+
}
|
|
1050
|
+
return 1 - ((axis.max - value) /
|
|
1051
|
+
((axis.max - axis.min) || 1));
|
|
1052
|
+
};
|
|
1053
|
+
/**
|
|
1054
|
+
* Translate from a value to a color.
|
|
1055
|
+
* @private
|
|
1056
|
+
*/
|
|
1057
|
+
ColorAxis.prototype.toColor = function (value, point) {
|
|
1058
|
+
var axis = this;
|
|
1059
|
+
var dataClasses = axis.dataClasses;
|
|
1060
|
+
var stops = axis.stops;
|
|
1061
|
+
var pos,
|
|
1062
|
+
from,
|
|
1063
|
+
to,
|
|
1064
|
+
color,
|
|
1065
|
+
dataClass,
|
|
1066
|
+
i;
|
|
1067
|
+
if (dataClasses) {
|
|
1068
|
+
i = dataClasses.length;
|
|
1069
|
+
while (i--) {
|
|
1070
|
+
dataClass = dataClasses[i];
|
|
1071
|
+
from = dataClass.from;
|
|
1072
|
+
to = dataClass.to;
|
|
1073
|
+
if ((typeof from === 'undefined' || value >= from) &&
|
|
1074
|
+
(typeof to === 'undefined' || value <= to)) {
|
|
1075
|
+
color = dataClass.color;
|
|
1076
|
+
if (point) {
|
|
1077
|
+
point.dataClass = i;
|
|
1078
|
+
point.colorIndex = dataClass.colorIndex;
|
|
1079
|
+
}
|
|
1080
|
+
break;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
else {
|
|
1085
|
+
pos = axis.normalizedValue(value);
|
|
1086
|
+
i = stops.length;
|
|
1087
|
+
while (i--) {
|
|
1088
|
+
if (pos > stops[i][0]) {
|
|
1089
|
+
break;
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
from = stops[i] || stops[i + 1];
|
|
1093
|
+
to = stops[i + 1] || from;
|
|
1094
|
+
// The position within the gradient
|
|
1095
|
+
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
|
|
1096
|
+
color = from.color.tweenTo(to.color, pos);
|
|
1097
|
+
}
|
|
1098
|
+
return color;
|
|
1099
|
+
};
|
|
1100
|
+
/**
|
|
1101
|
+
* Override the getOffset method to add the whole axis groups inside the
|
|
1102
|
+
* legend.
|
|
1103
|
+
* @private
|
|
1104
|
+
*/
|
|
1105
|
+
ColorAxis.prototype.getOffset = function () {
|
|
1106
|
+
var axis = this;
|
|
1107
|
+
var group = axis.legendGroup;
|
|
1108
|
+
var sideOffset = axis.chart.axisOffset[axis.side];
|
|
1109
|
+
if (group) {
|
|
1110
|
+
// Hook for the getOffset method to add groups to this parent
|
|
1111
|
+
// group
|
|
1112
|
+
axis.axisParent = group;
|
|
1113
|
+
// Call the base
|
|
1114
|
+
_super.prototype.getOffset.call(this);
|
|
1115
|
+
// First time only
|
|
1116
|
+
if (!axis.added) {
|
|
1117
|
+
axis.added = true;
|
|
1118
|
+
axis.labelLeft = 0;
|
|
1119
|
+
axis.labelRight = axis.width;
|
|
1120
|
+
}
|
|
1121
|
+
// Reset it to avoid color axis reserving space
|
|
1122
|
+
axis.chart.axisOffset[axis.side] = sideOffset;
|
|
1123
|
+
}
|
|
1124
|
+
};
|
|
1125
|
+
/**
|
|
1126
|
+
* Create the color gradient.
|
|
1127
|
+
* @private
|
|
1128
|
+
*/
|
|
1129
|
+
ColorAxis.prototype.setLegendColor = function () {
|
|
1130
|
+
var axis = this;
|
|
1131
|
+
var horiz = axis.horiz;
|
|
1132
|
+
var reversed = axis.reversed;
|
|
1133
|
+
var one = reversed ? 1 : 0;
|
|
1134
|
+
var zero = reversed ? 0 : 1;
|
|
1135
|
+
var grad = horiz ? [one, 0,
|
|
1136
|
+
zero, 0] : [0,
|
|
1137
|
+
zero, 0,
|
|
1138
|
+
one]; // #3190
|
|
1139
|
+
axis.legendColor = {
|
|
1140
|
+
linearGradient: {
|
|
1141
|
+
x1: grad[0],
|
|
1142
|
+
y1: grad[1],
|
|
1143
|
+
x2: grad[2],
|
|
1144
|
+
y2: grad[3]
|
|
1145
|
+
},
|
|
1146
|
+
stops: axis.stops
|
|
1147
|
+
};
|
|
1148
|
+
};
|
|
1149
|
+
/**
|
|
1150
|
+
* The color axis appears inside the legend and has its own legend symbol.
|
|
1151
|
+
* @private
|
|
1152
|
+
*/
|
|
1153
|
+
ColorAxis.prototype.drawLegendSymbol = function (legend, item) {
|
|
1154
|
+
var axis = this;
|
|
1155
|
+
var padding = legend.padding;
|
|
1156
|
+
var legendOptions = legend.options;
|
|
1157
|
+
var horiz = axis.horiz;
|
|
1158
|
+
var width = pick(legendOptions.symbolWidth,
|
|
1159
|
+
horiz ? ColorAxis.defaultLegendLength : 12);
|
|
1160
|
+
var height = pick(legendOptions.symbolHeight,
|
|
1161
|
+
horiz ? 12 : ColorAxis.defaultLegendLength);
|
|
1162
|
+
var labelPadding = pick(legendOptions.labelPadding,
|
|
1163
|
+
horiz ? 16 : 30);
|
|
1164
|
+
var itemDistance = pick(legendOptions.itemDistance, 10);
|
|
1165
|
+
this.setLegendColor();
|
|
1166
|
+
// Create the gradient
|
|
1167
|
+
item.legendSymbol = this.chart.renderer.rect(0, legend.baseline - 11, width, height).attr({
|
|
1168
|
+
zIndex: 1
|
|
1169
|
+
}).add(item.legendGroup);
|
|
1170
|
+
// Set how much space this legend item takes up
|
|
1171
|
+
axis.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
|
|
1172
|
+
axis.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
|
|
1173
|
+
};
|
|
1174
|
+
/**
|
|
1175
|
+
* Fool the legend.
|
|
1176
|
+
* @private
|
|
1177
|
+
*/
|
|
1178
|
+
ColorAxis.prototype.setState = function (state) {
|
|
1179
|
+
this.series.forEach(function (series) {
|
|
1180
|
+
series.setState(state);
|
|
1181
|
+
});
|
|
1182
|
+
};
|
|
1183
|
+
/**
|
|
1184
|
+
* @private
|
|
1185
|
+
*/
|
|
1186
|
+
ColorAxis.prototype.setVisible = function () {
|
|
1187
|
+
};
|
|
1188
|
+
/**
|
|
1189
|
+
* @private
|
|
1190
|
+
*/
|
|
1191
|
+
ColorAxis.prototype.getSeriesExtremes = function () {
|
|
1192
|
+
var axis = this;
|
|
1193
|
+
var series = axis.series;
|
|
1194
|
+
var colorValArray,
|
|
1195
|
+
colorKey,
|
|
1196
|
+
colorValIndex,
|
|
1197
|
+
pointArrayMap,
|
|
1198
|
+
calculatedExtremes,
|
|
1199
|
+
cSeries,
|
|
1200
|
+
i = series.length,
|
|
1201
|
+
yData,
|
|
1202
|
+
j;
|
|
1203
|
+
this.dataMin = Infinity;
|
|
1204
|
+
this.dataMax = -Infinity;
|
|
1205
|
+
while (i--) { // x, y, value, other
|
|
1206
|
+
cSeries = series[i];
|
|
1207
|
+
colorKey = cSeries.colorKey = pick(cSeries.options.colorKey, cSeries.colorKey, cSeries.pointValKey, cSeries.zoneAxis, 'y');
|
|
1208
|
+
pointArrayMap = cSeries.pointArrayMap;
|
|
1209
|
+
calculatedExtremes = cSeries[colorKey + 'Min'] &&
|
|
1210
|
+
cSeries[colorKey + 'Max'];
|
|
1211
|
+
if (cSeries[colorKey + 'Data']) {
|
|
1212
|
+
colorValArray = cSeries[colorKey + 'Data'];
|
|
1213
|
+
}
|
|
1214
|
+
else {
|
|
1215
|
+
if (!pointArrayMap) {
|
|
1216
|
+
colorValArray = cSeries.yData;
|
|
1217
|
+
}
|
|
1218
|
+
else {
|
|
1219
|
+
colorValArray = [];
|
|
1220
|
+
colorValIndex = pointArrayMap.indexOf(colorKey);
|
|
1221
|
+
yData = cSeries.yData;
|
|
1222
|
+
if (colorValIndex >= 0 && yData) {
|
|
1223
|
+
for (j = 0; j < yData.length; j++) {
|
|
1224
|
+
colorValArray.push(pick(yData[j][colorValIndex], yData[j]));
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
// If color key extremes are already calculated, use them.
|
|
1230
|
+
if (calculatedExtremes) {
|
|
1231
|
+
cSeries.minColorValue = cSeries[colorKey + 'Min'];
|
|
1232
|
+
cSeries.maxColorValue = cSeries[colorKey + 'Max'];
|
|
1233
|
+
}
|
|
1234
|
+
else {
|
|
1235
|
+
var cExtremes = Series.prototype.getExtremes.call(cSeries,
|
|
1236
|
+
colorValArray);
|
|
1237
|
+
cSeries.minColorValue = cExtremes.dataMin;
|
|
1238
|
+
cSeries.maxColorValue = cExtremes.dataMax;
|
|
1239
|
+
}
|
|
1240
|
+
if (typeof cSeries.minColorValue !== 'undefined') {
|
|
1241
|
+
this.dataMin =
|
|
1242
|
+
Math.min(this.dataMin, cSeries.minColorValue);
|
|
1243
|
+
this.dataMax =
|
|
1244
|
+
Math.max(this.dataMax, cSeries.maxColorValue);
|
|
1245
|
+
}
|
|
1246
|
+
if (!calculatedExtremes) {
|
|
1247
|
+
Series.prototype.applyExtremes.call(cSeries);
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
};
|
|
1251
|
+
/**
|
|
1252
|
+
* Internal function to draw a crosshair.
|
|
1253
|
+
*
|
|
1254
|
+
* @function Highcharts.ColorAxis#drawCrosshair
|
|
1255
|
+
*
|
|
1256
|
+
* @param {Highcharts.PointerEventObject} [e]
|
|
1257
|
+
* The event arguments from the modified pointer event, extended with
|
|
1258
|
+
* `chartX` and `chartY`
|
|
1259
|
+
*
|
|
1260
|
+
* @param {Highcharts.Point} [point]
|
|
1261
|
+
* The Point object if the crosshair snaps to points.
|
|
1262
|
+
*
|
|
1263
|
+
* @fires Highcharts.ColorAxis#event:afterDrawCrosshair
|
|
1264
|
+
* @fires Highcharts.ColorAxis#event:drawCrosshair
|
|
1265
|
+
*/
|
|
1266
|
+
ColorAxis.prototype.drawCrosshair = function (e, point) {
|
|
1267
|
+
var axis = this;
|
|
1268
|
+
var plotX = point && point.plotX;
|
|
1269
|
+
var plotY = point && point.plotY;
|
|
1270
|
+
var axisPos = axis.pos;
|
|
1271
|
+
var axisLen = axis.len;
|
|
1272
|
+
var crossPos;
|
|
1273
|
+
if (point) {
|
|
1274
|
+
crossPos = axis.toPixels(point.getNestedProperty(point.series.colorKey));
|
|
1275
|
+
if (crossPos < axisPos) {
|
|
1276
|
+
crossPos = axisPos - 2;
|
|
1277
|
+
}
|
|
1278
|
+
else if (crossPos > axisPos + axisLen) {
|
|
1279
|
+
crossPos = axisPos + axisLen + 2;
|
|
1280
|
+
}
|
|
1281
|
+
point.plotX = crossPos;
|
|
1282
|
+
point.plotY = axis.len - crossPos;
|
|
1283
|
+
_super.prototype.drawCrosshair.call(this, e, point);
|
|
1284
|
+
point.plotX = plotX;
|
|
1285
|
+
point.plotY = plotY;
|
|
1286
|
+
if (axis.cross &&
|
|
1287
|
+
!axis.cross.addedToColorAxis &&
|
|
1288
|
+
axis.legendGroup) {
|
|
1289
|
+
axis.cross
|
|
1290
|
+
.addClass('highcharts-coloraxis-marker')
|
|
1291
|
+
.add(axis.legendGroup);
|
|
1292
|
+
axis.cross.addedToColorAxis = true;
|
|
1293
|
+
if (!axis.chart.styledMode &&
|
|
1294
|
+
typeof axis.crosshair === 'object') {
|
|
1295
|
+
axis.cross.attr({
|
|
1296
|
+
fill: axis.crosshair.color
|
|
1297
|
+
});
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
};
|
|
1302
|
+
/**
|
|
1303
|
+
* @private
|
|
1304
|
+
*/
|
|
1305
|
+
ColorAxis.prototype.getPlotLinePath = function (options) {
|
|
1306
|
+
var axis = this,
|
|
1307
|
+
left = axis.left,
|
|
1308
|
+
pos = options.translatedValue,
|
|
1309
|
+
top = axis.top;
|
|
1310
|
+
// crosshairs only
|
|
1311
|
+
return isNumber(pos) ? // pos can be 0 (#3969)
|
|
1312
|
+
(axis.horiz ? [
|
|
1313
|
+
['M', pos - 4, top - 6],
|
|
1314
|
+
['L', pos + 4, top - 6],
|
|
1315
|
+
['L', pos, top],
|
|
1316
|
+
['Z']
|
|
1317
|
+
] : [
|
|
1318
|
+
['M', left, pos],
|
|
1319
|
+
['L', left - 6, pos + 6],
|
|
1320
|
+
['L', left - 6, pos - 6],
|
|
1321
|
+
['Z']
|
|
1322
|
+
]) :
|
|
1323
|
+
_super.prototype.getPlotLinePath.call(this, options);
|
|
1324
|
+
};
|
|
1325
|
+
/**
|
|
1326
|
+
* Updates a color axis instance with a new set of options. The options are
|
|
1327
|
+
* merged with the existing options, so only new or altered options need to
|
|
1328
|
+
* be specified.
|
|
1329
|
+
*
|
|
1330
|
+
* @function Highcharts.ColorAxis#update
|
|
1331
|
+
*
|
|
1332
|
+
* @param {Highcharts.ColorAxisOptions} newOptions
|
|
1333
|
+
* The new options that will be merged in with existing options on the color
|
|
1334
|
+
* axis.
|
|
1335
|
+
*
|
|
1336
|
+
* @param {boolean} [redraw]
|
|
1337
|
+
* Whether to redraw the chart after the color axis is altered. If doing
|
|
1338
|
+
* more operations on the chart, it is a good idea to set redraw to `false`
|
|
1339
|
+
* and call {@link Highcharts.Chart#redraw} after.
|
|
1340
|
+
*/
|
|
1341
|
+
ColorAxis.prototype.update = function (newOptions, redraw) {
|
|
1342
|
+
var axis = this,
|
|
1343
|
+
chart = axis.chart,
|
|
1344
|
+
legend = chart.legend;
|
|
1345
|
+
this.series.forEach(function (series) {
|
|
1346
|
+
// Needed for Axis.update when choropleth colors change
|
|
1347
|
+
series.isDirtyData = true;
|
|
1348
|
+
});
|
|
1349
|
+
// When updating data classes, destroy old items and make sure new
|
|
1350
|
+
// ones are created (#3207)
|
|
1351
|
+
if (newOptions.dataClasses && legend.allItems || axis.dataClasses) {
|
|
1352
|
+
axis.destroyItems();
|
|
1353
|
+
}
|
|
1354
|
+
_super.prototype.update.call(this, newOptions, redraw);
|
|
1355
|
+
if (axis.legendItem) {
|
|
1356
|
+
axis.setLegendColor();
|
|
1357
|
+
legend.colorizeItem(this, true);
|
|
1358
|
+
}
|
|
1359
|
+
};
|
|
1360
|
+
/**
|
|
1361
|
+
* Destroy color axis legend items.
|
|
1362
|
+
* @private
|
|
1363
|
+
*/
|
|
1364
|
+
ColorAxis.prototype.destroyItems = function () {
|
|
1365
|
+
var axis = this;
|
|
1366
|
+
var chart = axis.chart;
|
|
1367
|
+
if (axis.legendItem) {
|
|
1368
|
+
chart.legend.destroyItem(axis);
|
|
1369
|
+
}
|
|
1370
|
+
else if (axis.legendItems) {
|
|
1371
|
+
axis.legendItems.forEach(function (item) {
|
|
1372
|
+
chart.legend.destroyItem(item);
|
|
1373
|
+
});
|
|
1374
|
+
}
|
|
1375
|
+
chart.isDirtyLegend = true;
|
|
1376
|
+
};
|
|
1377
|
+
// Removing the whole axis (#14283)
|
|
1378
|
+
ColorAxis.prototype.destroy = function () {
|
|
1379
|
+
this.chart.isDirtyLegend = true;
|
|
1380
|
+
this.destroyItems();
|
|
1381
|
+
_super.prototype.destroy.apply(this, [].slice.call(arguments));
|
|
1382
|
+
};
|
|
1383
|
+
/**
|
|
1384
|
+
* Removes the color axis and the related legend item.
|
|
1385
|
+
*
|
|
1386
|
+
* @function Highcharts.ColorAxis#remove
|
|
1387
|
+
*
|
|
1388
|
+
* @param {boolean} [redraw=true]
|
|
1389
|
+
* Whether to redraw the chart following the remove.
|
|
1390
|
+
*/
|
|
1391
|
+
ColorAxis.prototype.remove = function (redraw) {
|
|
1392
|
+
this.destroyItems();
|
|
1393
|
+
_super.prototype.remove.call(this, redraw);
|
|
1394
|
+
};
|
|
1395
|
+
/**
|
|
1396
|
+
* Get the legend item symbols for data classes.
|
|
1397
|
+
* @private
|
|
1398
|
+
*/
|
|
1399
|
+
ColorAxis.prototype.getDataClassLegendSymbols = function () {
|
|
1400
|
+
var axis = this;
|
|
1401
|
+
var chart = axis.chart;
|
|
1402
|
+
var legendItems = axis.legendItems;
|
|
1403
|
+
var legendOptions = chart.options.legend;
|
|
1404
|
+
var valueDecimals = legendOptions.valueDecimals;
|
|
1405
|
+
var valueSuffix = legendOptions.valueSuffix || '';
|
|
1406
|
+
var name;
|
|
1407
|
+
if (!legendItems.length) {
|
|
1408
|
+
axis.dataClasses.forEach(function (dataClass, i) {
|
|
1409
|
+
var from = dataClass.from,
|
|
1410
|
+
to = dataClass.to,
|
|
1411
|
+
numberFormatter = chart.numberFormatter;
|
|
1412
|
+
var vis = true;
|
|
1413
|
+
// Assemble the default name. This can be overridden
|
|
1414
|
+
// by legend.options.labelFormatter
|
|
1415
|
+
name = '';
|
|
1416
|
+
if (typeof from === 'undefined') {
|
|
1417
|
+
name = '< ';
|
|
1418
|
+
}
|
|
1419
|
+
else if (typeof to === 'undefined') {
|
|
1420
|
+
name = '> ';
|
|
1421
|
+
}
|
|
1422
|
+
if (typeof from !== 'undefined') {
|
|
1423
|
+
name += numberFormatter(from, valueDecimals) + valueSuffix;
|
|
1424
|
+
}
|
|
1425
|
+
if (typeof from !== 'undefined' && typeof to !== 'undefined') {
|
|
1426
|
+
name += ' - ';
|
|
1427
|
+
}
|
|
1428
|
+
if (typeof to !== 'undefined') {
|
|
1429
|
+
name += numberFormatter(to, valueDecimals) + valueSuffix;
|
|
1430
|
+
}
|
|
1431
|
+
// Add a mock object to the legend items
|
|
1432
|
+
legendItems.push(extend({
|
|
1433
|
+
chart: chart,
|
|
1434
|
+
name: name,
|
|
1435
|
+
options: {},
|
|
1436
|
+
drawLegendSymbol: LegendSymbol.drawRectangle,
|
|
1437
|
+
visible: true,
|
|
1438
|
+
setState: noop,
|
|
1439
|
+
isDataClass: true,
|
|
1440
|
+
setVisible: function () {
|
|
1441
|
+
vis = axis.visible = !vis;
|
|
1442
|
+
axis.series.forEach(function (series) {
|
|
1443
|
+
series.points.forEach(function (point) {
|
|
1444
|
+
if (point.dataClass === i) {
|
|
1445
|
+
point.setVisible(vis);
|
|
1446
|
+
}
|
|
1447
|
+
});
|
|
1448
|
+
});
|
|
1449
|
+
chart.legend.colorizeItem(this, vis);
|
|
1450
|
+
}
|
|
1451
|
+
}, dataClass));
|
|
1452
|
+
});
|
|
1453
|
+
}
|
|
1454
|
+
return legendItems;
|
|
1455
|
+
};
|
|
1456
|
+
/* *
|
|
1457
|
+
*
|
|
1458
|
+
* Static Properties
|
|
1459
|
+
*
|
|
1460
|
+
* */
|
|
1461
|
+
ColorAxis.defaultColorAxisOptions = ColorAxisDefaults;
|
|
1462
|
+
ColorAxis.defaultLegendLength = 200;
|
|
1194
1463
|
/**
|
|
1195
1464
|
* @private
|
|
1196
1465
|
*/
|
|
@@ -1203,121 +1472,29 @@
|
|
|
1203
1472
|
];
|
|
1204
1473
|
return ColorAxis;
|
|
1205
1474
|
}(Axis));
|
|
1475
|
+
/* *
|
|
1476
|
+
*
|
|
1477
|
+
* Registry
|
|
1478
|
+
*
|
|
1479
|
+
* */
|
|
1206
1480
|
// Properties to preserve after destroy, for Axis.update (#5881, #6025).
|
|
1207
1481
|
Array.prototype.push.apply(Axis.keepProps, ColorAxis.keepProps);
|
|
1208
|
-
|
|
1482
|
+
/* *
|
|
1483
|
+
*
|
|
1484
|
+
* Default Export
|
|
1485
|
+
*
|
|
1486
|
+
* */
|
|
1487
|
+
/* *
|
|
1488
|
+
*
|
|
1489
|
+
* API Declarations
|
|
1490
|
+
*
|
|
1491
|
+
* */
|
|
1209
1492
|
/**
|
|
1210
|
-
*
|
|
1493
|
+
* Color axis types
|
|
1211
1494
|
*
|
|
1212
|
-
* @
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
* Handle animation of the color attributes directly
|
|
1216
|
-
*
|
|
1217
|
-
* @private
|
|
1218
|
-
* @function Highcharts.Fx#strokeSetter
|
|
1219
|
-
*/
|
|
1220
|
-
['fill', 'stroke'].forEach(function (prop) {
|
|
1221
|
-
Fx.prototype[prop + 'Setter'] = function () {
|
|
1222
|
-
this.elem.attr(prop, color(this.start).tweenTo(color(this.end), this.pos), null, true);
|
|
1223
|
-
};
|
|
1224
|
-
});
|
|
1225
|
-
// Extend the chart getAxes method to also get the color axis
|
|
1226
|
-
addEvent(Chart, 'afterGetAxes', function () {
|
|
1227
|
-
var chart = this,
|
|
1228
|
-
options = chart.options;
|
|
1229
|
-
this.colorAxis = [];
|
|
1230
|
-
if (options.colorAxis) {
|
|
1231
|
-
options.colorAxis = splat(options.colorAxis);
|
|
1232
|
-
options.colorAxis.forEach(function (axisOptions, i) {
|
|
1233
|
-
axisOptions.index = i;
|
|
1234
|
-
new ColorAxis(chart, axisOptions); // eslint-disable-line no-new
|
|
1235
|
-
});
|
|
1236
|
-
}
|
|
1237
|
-
});
|
|
1238
|
-
// Add colorAxis to series axisTypes
|
|
1239
|
-
addEvent(Series, 'bindAxes', function () {
|
|
1240
|
-
var axisTypes = this.axisTypes;
|
|
1241
|
-
if (!axisTypes) {
|
|
1242
|
-
this.axisTypes = ['colorAxis'];
|
|
1243
|
-
}
|
|
1244
|
-
else if (axisTypes.indexOf('colorAxis') === -1) {
|
|
1245
|
-
axisTypes.push('colorAxis');
|
|
1246
|
-
}
|
|
1247
|
-
});
|
|
1248
|
-
// Add the color axis. This also removes the axis' own series to prevent
|
|
1249
|
-
// them from showing up individually.
|
|
1250
|
-
addEvent(Legend, 'afterGetAllItems', function (e) {
|
|
1251
|
-
var _this = this;
|
|
1252
|
-
var colorAxisItems = [],
|
|
1253
|
-
colorAxes = this.chart.colorAxis || [],
|
|
1254
|
-
options,
|
|
1255
|
-
i;
|
|
1256
|
-
var destroyItem = function (item) {
|
|
1257
|
-
var i = e.allItems.indexOf(item);
|
|
1258
|
-
if (i !== -1) {
|
|
1259
|
-
// #15436
|
|
1260
|
-
_this.destroyItem(e.allItems[i]);
|
|
1261
|
-
e.allItems.splice(i, 1);
|
|
1262
|
-
}
|
|
1263
|
-
};
|
|
1264
|
-
colorAxes.forEach(function (colorAxis) {
|
|
1265
|
-
options = colorAxis.options;
|
|
1266
|
-
if (options && options.showInLegend) {
|
|
1267
|
-
// Data classes
|
|
1268
|
-
if (options.dataClasses && options.visible) {
|
|
1269
|
-
colorAxisItems = colorAxisItems.concat(colorAxis.getDataClassLegendSymbols());
|
|
1270
|
-
// Gradient legend
|
|
1271
|
-
}
|
|
1272
|
-
else if (options.visible) {
|
|
1273
|
-
// Add this axis on top
|
|
1274
|
-
colorAxisItems.push(colorAxis);
|
|
1275
|
-
}
|
|
1276
|
-
// If dataClasses are defined or showInLegend option is not set to
|
|
1277
|
-
// true, do not add color axis' series to legend.
|
|
1278
|
-
colorAxis.series.forEach(function (series) {
|
|
1279
|
-
if (!series.options.showInLegend || options.dataClasses) {
|
|
1280
|
-
if (series.options.legendType === 'point') {
|
|
1281
|
-
series.points.forEach(function (point) {
|
|
1282
|
-
destroyItem(point);
|
|
1283
|
-
});
|
|
1284
|
-
}
|
|
1285
|
-
else {
|
|
1286
|
-
destroyItem(series);
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
});
|
|
1290
|
-
}
|
|
1291
|
-
});
|
|
1292
|
-
i = colorAxisItems.length;
|
|
1293
|
-
while (i--) {
|
|
1294
|
-
e.allItems.unshift(colorAxisItems[i]);
|
|
1295
|
-
}
|
|
1296
|
-
});
|
|
1297
|
-
addEvent(Legend, 'afterColorizeItem', function (e) {
|
|
1298
|
-
if (e.visible && e.item.legendColor) {
|
|
1299
|
-
e.item.legendSymbol.attr({
|
|
1300
|
-
fill: e.item.legendColor
|
|
1301
|
-
});
|
|
1302
|
-
}
|
|
1303
|
-
});
|
|
1304
|
-
// Updates in the legend need to be reflected in the color axis (6888)
|
|
1305
|
-
addEvent(Legend, 'afterUpdate', function () {
|
|
1306
|
-
var colorAxes = this.chart.colorAxis;
|
|
1307
|
-
if (colorAxes) {
|
|
1308
|
-
colorAxes.forEach(function (colorAxis) {
|
|
1309
|
-
colorAxis.update({}, arguments[2]);
|
|
1310
|
-
});
|
|
1311
|
-
}
|
|
1312
|
-
});
|
|
1313
|
-
// Calculate and set colors for points
|
|
1314
|
-
addEvent(Series, 'afterTranslate', function () {
|
|
1315
|
-
if (this.chart.colorAxis &&
|
|
1316
|
-
this.chart.colorAxis.length ||
|
|
1317
|
-
this.colorAttribs) {
|
|
1318
|
-
this.translateColors();
|
|
1319
|
-
}
|
|
1320
|
-
});
|
|
1495
|
+
* @typedef {"linear"|"logarithmic"} Highcharts.ColorAxisTypeValue
|
|
1496
|
+
*/
|
|
1497
|
+
''; // detach doclet above
|
|
1321
1498
|
|
|
1322
1499
|
return ColorAxis;
|
|
1323
1500
|
});
|
|
@@ -1585,7 +1762,7 @@
|
|
|
1585
1762
|
|
|
1586
1763
|
return HeatmapPoint;
|
|
1587
1764
|
});
|
|
1588
|
-
_registerModule(_modules, 'Series/Heatmap/HeatmapSeries.js', [_modules['Core/Color/Color.js'], _modules['Mixins/ColorMapSeries.js'], _modules['Series/Heatmap/HeatmapPoint.js'], _modules['
|
|
1765
|
+
_registerModule(_modules, 'Series/Heatmap/HeatmapSeries.js', [_modules['Core/Color/Color.js'], _modules['Mixins/ColorMapSeries.js'], _modules['Series/Heatmap/HeatmapPoint.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Color/Palette.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (Color, ColorMapMixin, HeatmapPoint, LegendSymbol, palette, SeriesRegistry, SVGRenderer, U) {
|
|
1589
1766
|
/* *
|
|
1590
1767
|
*
|
|
1591
1768
|
* (c) 2010-2021 Torstein Honsi
|
|
@@ -1792,10 +1969,12 @@
|
|
|
1792
1969
|
stateOptions,
|
|
1793
1970
|
brightness,
|
|
1794
1971
|
// Get old properties in order to keep backward compatibility
|
|
1795
|
-
borderColor =
|
|
1972
|
+
borderColor = (point && point.options.borderColor) ||
|
|
1973
|
+
seriesOptions.borderColor ||
|
|
1796
1974
|
heatmapPlotOptions.borderColor ||
|
|
1797
1975
|
seriesPlotOptions.borderColor,
|
|
1798
|
-
borderWidth =
|
|
1976
|
+
borderWidth = (point && point.options.borderWidth) ||
|
|
1977
|
+
seriesOptions.borderWidth ||
|
|
1799
1978
|
heatmapPlotOptions.borderWidth ||
|
|
1800
1979
|
seriesPlotOptions.borderWidth ||
|
|
1801
1980
|
attr['stroke-width'];
|
|
@@ -1978,7 +2157,9 @@
|
|
|
1978
2157
|
nullColor: palette.neutralColor3,
|
|
1979
2158
|
dataLabels: {
|
|
1980
2159
|
formatter: function () {
|
|
1981
|
-
|
|
2160
|
+
var numberFormatter = this.series.chart.numberFormatter;
|
|
2161
|
+
var value = this.point.value;
|
|
2162
|
+
return isNumber(value) ? numberFormatter(value, -1) : '';
|
|
1982
2163
|
},
|
|
1983
2164
|
inside: true,
|
|
1984
2165
|
verticalAlign: 'middle',
|
|
@@ -2165,7 +2346,7 @@
|
|
|
2165
2346
|
/**
|
|
2166
2347
|
* @private
|
|
2167
2348
|
*/
|
|
2168
|
-
drawLegendSymbol:
|
|
2349
|
+
drawLegendSymbol: LegendSymbol.drawRectangle,
|
|
2169
2350
|
getExtremesFromAll: true,
|
|
2170
2351
|
getSymbol: Series.prototype.getSymbol,
|
|
2171
2352
|
parallelArrays: colorMapSeriesMixin.parallelArrays,
|
|
@@ -2544,8 +2725,11 @@
|
|
|
2544
2725
|
|
|
2545
2726
|
return HeatmapSeries;
|
|
2546
2727
|
});
|
|
2547
|
-
_registerModule(_modules, 'masters/modules/heatmap.src.js', [], function () {
|
|
2728
|
+
_registerModule(_modules, 'masters/modules/heatmap.src.js', [_modules['Core/Globals.js'], _modules['Core/Axis/Color/ColorAxis.js']], function (Highcharts, ColorAxis) {
|
|
2548
2729
|
|
|
2730
|
+
var G = Highcharts;
|
|
2731
|
+
G.ColorAxis = ColorAxis;
|
|
2732
|
+
ColorAxis.compose(G.Chart, G.Fx, G.Legend, G.Series);
|
|
2549
2733
|
|
|
2550
2734
|
});
|
|
2551
2735
|
}));
|