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
|
@@ -147,6 +147,109 @@ var approximations = H.approximations = {
|
|
|
147
147
|
// else, return is undefined
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
|
+
var applyGrouping = function () {
|
|
151
|
+
var series = this, chart = series.chart, options = series.options, dataGroupingOptions = options.dataGrouping, groupingEnabled = series.allowDG !== false && dataGroupingOptions &&
|
|
152
|
+
pick(dataGroupingOptions.enabled, chart.options.isStock), visible = (series.visible || !chart.options.chart.ignoreHiddenSeries), hasGroupedData, skip, lastDataGrouping = this.currentDataGrouping, currentDataGrouping, croppedData, revertRequireSorting = false;
|
|
153
|
+
// Data needs to be sorted for dataGrouping
|
|
154
|
+
if (groupingEnabled && !series.requireSorting) {
|
|
155
|
+
series.requireSorting = revertRequireSorting = true;
|
|
156
|
+
}
|
|
157
|
+
// Skip if processData returns false or if grouping is disabled (in that
|
|
158
|
+
// order)
|
|
159
|
+
skip = skipDataGrouping(series) || !groupingEnabled;
|
|
160
|
+
// Revert original requireSorting value if changed
|
|
161
|
+
if (revertRequireSorting) {
|
|
162
|
+
series.requireSorting = false;
|
|
163
|
+
}
|
|
164
|
+
if (!skip) {
|
|
165
|
+
series.destroyGroupedData();
|
|
166
|
+
var i = void 0, processedXData = dataGroupingOptions.groupAll ?
|
|
167
|
+
series.xData :
|
|
168
|
+
series.processedXData, processedYData = dataGroupingOptions.groupAll ?
|
|
169
|
+
series.yData :
|
|
170
|
+
series.processedYData, plotSizeX = chart.plotSizeX, xAxis = series.xAxis, ordinal = xAxis.options.ordinal, groupPixelWidth = series.groupPixelWidth;
|
|
171
|
+
// Execute grouping if the amount of points is greater than the limit
|
|
172
|
+
// defined in groupPixelWidth
|
|
173
|
+
if (groupPixelWidth &&
|
|
174
|
+
processedXData &&
|
|
175
|
+
processedXData.length) {
|
|
176
|
+
hasGroupedData = true;
|
|
177
|
+
// Force recreation of point instances in series.translate, #5699
|
|
178
|
+
series.isDirty = true;
|
|
179
|
+
series.points = null; // #6709
|
|
180
|
+
var extremes = xAxis.getExtremes(), xMin = extremes.min, xMax = extremes.max, groupIntervalFactor = (ordinal &&
|
|
181
|
+
xAxis.ordinal &&
|
|
182
|
+
xAxis.ordinal.getGroupIntervalFactor(xMin, xMax, series)) || 1, interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) *
|
|
183
|
+
groupIntervalFactor, groupPositions = xAxis.getTimeTicks(DateTimeAxis.Additions.prototype.normalizeTimeTickInterval(interval, dataGroupingOptions.units ||
|
|
184
|
+
defaultDataGroupingUnits),
|
|
185
|
+
// Processed data may extend beyond axis (#4907)
|
|
186
|
+
Math.min(xMin, processedXData[0]), Math.max(xMax, processedXData[processedXData.length - 1]), xAxis.options.startOfWeek, processedXData, series.closestPointRange), groupedData = seriesProto.groupData.apply(series, [
|
|
187
|
+
processedXData,
|
|
188
|
+
processedYData,
|
|
189
|
+
groupPositions,
|
|
190
|
+
dataGroupingOptions.approximation
|
|
191
|
+
]), groupedXData = groupedData.groupedXData, groupedYData = groupedData.groupedYData, gapSize = 0;
|
|
192
|
+
// The smoothed option is deprecated, instead,
|
|
193
|
+
// there is a fallback to the new anchoring mechanism. #12455.
|
|
194
|
+
if (dataGroupingOptions && dataGroupingOptions.smoothed && groupedXData.length) {
|
|
195
|
+
dataGroupingOptions.firstAnchor = 'firstPoint';
|
|
196
|
+
dataGroupingOptions.anchor = 'middle';
|
|
197
|
+
dataGroupingOptions.lastAnchor = 'lastPoint';
|
|
198
|
+
error(32, false, chart, { 'dataGrouping.smoothed': 'use dataGrouping.anchor' });
|
|
199
|
+
}
|
|
200
|
+
anchorPoints(series, groupedXData, xMax);
|
|
201
|
+
// Record what data grouping values were used
|
|
202
|
+
for (i = 1; i < groupPositions.length; i++) {
|
|
203
|
+
// The grouped gapSize needs to be the largest distance between
|
|
204
|
+
// the group to capture varying group sizes like months or DST
|
|
205
|
+
// crossing (#10000). Also check that the gap is not at the
|
|
206
|
+
// start of a segment.
|
|
207
|
+
if (!groupPositions.info.segmentStarts ||
|
|
208
|
+
groupPositions.info.segmentStarts.indexOf(i) === -1) {
|
|
209
|
+
gapSize = Math.max(groupPositions[i] - groupPositions[i - 1], gapSize);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
currentDataGrouping = groupPositions.info;
|
|
213
|
+
currentDataGrouping.gapSize = gapSize;
|
|
214
|
+
series.closestPointRange = groupPositions.info.totalRange;
|
|
215
|
+
series.groupMap = groupedData.groupMap;
|
|
216
|
+
if (visible) {
|
|
217
|
+
adjustExtremes(xAxis, groupedXData);
|
|
218
|
+
}
|
|
219
|
+
// We calculated all group positions but we should render
|
|
220
|
+
// only the ones within the visible range
|
|
221
|
+
if (dataGroupingOptions.groupAll) {
|
|
222
|
+
// Keep the reference to all grouped points
|
|
223
|
+
// for further calculation (eg. heikinashi).
|
|
224
|
+
series.allGroupedData = groupedYData;
|
|
225
|
+
croppedData = series.cropData(groupedXData, groupedYData, xAxis.min, xAxis.max, 1 // Ordinal xAxis will remove left-most points otherwise
|
|
226
|
+
);
|
|
227
|
+
groupedXData = croppedData.xData;
|
|
228
|
+
groupedYData = croppedData.yData;
|
|
229
|
+
series.cropStart = croppedData.start; // #15005
|
|
230
|
+
}
|
|
231
|
+
// Set series props
|
|
232
|
+
series.processedXData = groupedXData;
|
|
233
|
+
series.processedYData = groupedYData;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
series.groupMap = null;
|
|
237
|
+
}
|
|
238
|
+
series.hasGroupedData = hasGroupedData;
|
|
239
|
+
series.currentDataGrouping = currentDataGrouping;
|
|
240
|
+
series.preventGraphAnimation =
|
|
241
|
+
(lastDataGrouping && lastDataGrouping.totalRange) !==
|
|
242
|
+
(currentDataGrouping && currentDataGrouping.totalRange);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
var skipDataGrouping = function (series) {
|
|
246
|
+
if (series.isCartesian &&
|
|
247
|
+
!series.isDirty &&
|
|
248
|
+
!series.xAxis.isDirty &&
|
|
249
|
+
!series.yAxis.isDirty) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
150
253
|
var groupData = function (xData, yData, groupPositions, approximation) {
|
|
151
254
|
var series = this, data = series.data, dataOptions = series.options && series.options.data, groupedXData = [], groupedYData = [], groupMap = [], dataLength = xData.length, pointX, pointY, groupedY,
|
|
152
255
|
// when grouping the fake extended axis for panning,
|
|
@@ -419,6 +522,10 @@ commonOptions = {
|
|
|
419
522
|
},
|
|
420
523
|
ohlc: {
|
|
421
524
|
groupPixelWidth: 5
|
|
525
|
+
},
|
|
526
|
+
// Move to HeikinAshiSeries.ts aftre refactoring data grouping.
|
|
527
|
+
heikinashi: {
|
|
528
|
+
groupPixelWidth: 10
|
|
422
529
|
}
|
|
423
530
|
},
|
|
424
531
|
// units are defined in a separate array to allow complete overriding in
|
|
@@ -482,106 +589,15 @@ seriesProto.getDGApproximation = function () {
|
|
|
482
589
|
* @return {void}
|
|
483
590
|
*/
|
|
484
591
|
seriesProto.groupData = groupData;
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
// Data needs to be sorted for dataGrouping
|
|
495
|
-
if (groupingEnabled && !series.requireSorting) {
|
|
496
|
-
series.requireSorting = revertRequireSorting = true;
|
|
497
|
-
}
|
|
498
|
-
// Skip if processData returns false or if grouping is disabled (in that
|
|
499
|
-
// order)
|
|
500
|
-
skip = (baseProcessData.apply(series, arguments) === false ||
|
|
501
|
-
!groupingEnabled);
|
|
502
|
-
// Revert original requireSorting value if changed
|
|
503
|
-
if (revertRequireSorting) {
|
|
504
|
-
series.requireSorting = false;
|
|
505
|
-
}
|
|
506
|
-
if (!skip) {
|
|
507
|
-
series.destroyGroupedData();
|
|
508
|
-
var i = void 0, processedXData = dataGroupingOptions.groupAll ?
|
|
509
|
-
series.xData :
|
|
510
|
-
series.processedXData, processedYData = dataGroupingOptions.groupAll ?
|
|
511
|
-
series.yData :
|
|
512
|
-
series.processedYData, plotSizeX = chart.plotSizeX, xAxis = series.xAxis, ordinal = xAxis.options.ordinal, groupPixelWidth = series.groupPixelWidth =
|
|
513
|
-
xAxis.getGroupPixelWidth && xAxis.getGroupPixelWidth();
|
|
514
|
-
// Execute grouping if the amount of points is greater than the limit
|
|
515
|
-
// defined in groupPixelWidth
|
|
516
|
-
if (groupPixelWidth &&
|
|
517
|
-
processedXData &&
|
|
518
|
-
processedXData.length) {
|
|
519
|
-
hasGroupedData = true;
|
|
520
|
-
// Force recreation of point instances in series.translate, #5699
|
|
521
|
-
series.isDirty = true;
|
|
522
|
-
series.points = null; // #6709
|
|
523
|
-
var extremes = xAxis.getExtremes(), xMin = extremes.min, xMax = extremes.max, groupIntervalFactor = (ordinal &&
|
|
524
|
-
xAxis.ordinal &&
|
|
525
|
-
xAxis.ordinal.getGroupIntervalFactor(xMin, xMax, series)) || 1, interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) *
|
|
526
|
-
groupIntervalFactor, groupPositions = xAxis.getTimeTicks(DateTimeAxis.AdditionsClass.prototype.normalizeTimeTickInterval(interval, dataGroupingOptions.units ||
|
|
527
|
-
defaultDataGroupingUnits),
|
|
528
|
-
// Processed data may extend beyond axis (#4907)
|
|
529
|
-
Math.min(xMin, processedXData[0]), Math.max(xMax, processedXData[processedXData.length - 1]), xAxis.options.startOfWeek, processedXData, series.closestPointRange), groupedData = seriesProto.groupData.apply(series, [
|
|
530
|
-
processedXData,
|
|
531
|
-
processedYData,
|
|
532
|
-
groupPositions,
|
|
533
|
-
dataGroupingOptions.approximation
|
|
534
|
-
]), groupedXData = groupedData.groupedXData, groupedYData = groupedData.groupedYData, gapSize = 0;
|
|
535
|
-
// The smoothed option is deprecated, instead,
|
|
536
|
-
// there is a fallback to the new anchoring mechanism. #12455.
|
|
537
|
-
if (dataGroupingOptions && dataGroupingOptions.smoothed && groupedXData.length) {
|
|
538
|
-
dataGroupingOptions.firstAnchor = 'firstPoint';
|
|
539
|
-
dataGroupingOptions.anchor = 'middle';
|
|
540
|
-
dataGroupingOptions.lastAnchor = 'lastPoint';
|
|
541
|
-
error(32, false, chart, { 'dataGrouping.smoothed': 'use dataGrouping.anchor' });
|
|
542
|
-
}
|
|
543
|
-
anchorPoints(series, groupedXData, xMax);
|
|
544
|
-
// Record what data grouping values were used
|
|
545
|
-
for (i = 1; i < groupPositions.length; i++) {
|
|
546
|
-
// The grouped gapSize needs to be the largest distance between
|
|
547
|
-
// the group to capture varying group sizes like months or DST
|
|
548
|
-
// crossing (#10000). Also check that the gap is not at the
|
|
549
|
-
// start of a segment.
|
|
550
|
-
if (!groupPositions.info.segmentStarts ||
|
|
551
|
-
groupPositions.info.segmentStarts.indexOf(i) === -1) {
|
|
552
|
-
gapSize = Math.max(groupPositions[i] - groupPositions[i - 1], gapSize);
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
currentDataGrouping = groupPositions.info;
|
|
556
|
-
currentDataGrouping.gapSize = gapSize;
|
|
557
|
-
series.closestPointRange = groupPositions.info.totalRange;
|
|
558
|
-
series.groupMap = groupedData.groupMap;
|
|
559
|
-
if (visible) {
|
|
560
|
-
adjustExtremes(xAxis, groupedXData);
|
|
561
|
-
}
|
|
562
|
-
// We calculated all group positions but we should render
|
|
563
|
-
// only the ones within the visible range
|
|
564
|
-
if (dataGroupingOptions.groupAll) {
|
|
565
|
-
croppedData = series.cropData(groupedXData, groupedYData, xAxis.min, xAxis.max, 1 // Ordinal xAxis will remove left-most points otherwise
|
|
566
|
-
);
|
|
567
|
-
groupedXData = croppedData.xData;
|
|
568
|
-
groupedYData = croppedData.yData;
|
|
569
|
-
series.cropStart = croppedData.start; // #15005
|
|
570
|
-
}
|
|
571
|
-
// Set series props
|
|
572
|
-
series.processedXData = groupedXData;
|
|
573
|
-
series.processedYData = groupedYData;
|
|
574
|
-
}
|
|
575
|
-
else {
|
|
576
|
-
series.groupMap = null;
|
|
577
|
-
}
|
|
578
|
-
series.hasGroupedData = hasGroupedData;
|
|
579
|
-
series.currentDataGrouping = currentDataGrouping;
|
|
580
|
-
series.preventGraphAnimation =
|
|
581
|
-
(lastDataGrouping && lastDataGrouping.totalRange) !==
|
|
582
|
-
(currentDataGrouping && currentDataGrouping.totalRange);
|
|
583
|
-
}
|
|
584
|
-
};
|
|
592
|
+
/**
|
|
593
|
+
* For the processed data, calculate the grouped data if needed.
|
|
594
|
+
*
|
|
595
|
+
* @private
|
|
596
|
+
* @function Highcharts.Series#applyGrouping
|
|
597
|
+
*
|
|
598
|
+
* @return {void}
|
|
599
|
+
*/
|
|
600
|
+
seriesProto.applyGrouping = applyGrouping;
|
|
585
601
|
// Destroy the grouped data points. #622, #740
|
|
586
602
|
seriesProto.destroyGroupedData = function () {
|
|
587
603
|
// Clear previous groups
|
|
@@ -607,6 +623,112 @@ seriesProto.generatePoints = function () {
|
|
|
607
623
|
this.destroyGroupedData(); // #622
|
|
608
624
|
this.groupedData = this.hasGroupedData ? this.points : null;
|
|
609
625
|
};
|
|
626
|
+
/**
|
|
627
|
+
* Check the groupPixelWidth and apply the grouping if needed.
|
|
628
|
+
* Fired only after processing the data.
|
|
629
|
+
*
|
|
630
|
+
* @product highstock
|
|
631
|
+
*
|
|
632
|
+
* @function Highcharts.Axis#applyGrouping
|
|
633
|
+
*/
|
|
634
|
+
Axis.prototype.applyGrouping = function () {
|
|
635
|
+
var axis = this, series = axis.series;
|
|
636
|
+
series.forEach(function (series) {
|
|
637
|
+
// Reset the groupPixelWidth, then calculate if needed.
|
|
638
|
+
series.groupPixelWidth = void 0; // #2110
|
|
639
|
+
series.groupPixelWidth = axis.getGroupPixelWidth && axis.getGroupPixelWidth();
|
|
640
|
+
if (series.groupPixelWidth) {
|
|
641
|
+
series.hasProcessed = true; // #2692
|
|
642
|
+
}
|
|
643
|
+
// Fire independing on series.groupPixelWidth to always set a proper
|
|
644
|
+
// dataGrouping state, (#16238)
|
|
645
|
+
series.applyGrouping();
|
|
646
|
+
});
|
|
647
|
+
};
|
|
648
|
+
// Get the data grouping pixel width based on the greatest defined individual
|
|
649
|
+
// width of the axis' series, and if whether one of the axes need grouping.
|
|
650
|
+
Axis.prototype.getGroupPixelWidth = function () {
|
|
651
|
+
var series = this.series, len = series.length, i, groupPixelWidth = 0, doGrouping = false, dataLength, dgOptions;
|
|
652
|
+
// If multiple series are compared on the same x axis, give them the same
|
|
653
|
+
// group pixel width (#334)
|
|
654
|
+
i = len;
|
|
655
|
+
while (i--) {
|
|
656
|
+
dgOptions = series[i].options.dataGrouping;
|
|
657
|
+
if (dgOptions) {
|
|
658
|
+
groupPixelWidth = Math.max(groupPixelWidth,
|
|
659
|
+
// Fallback to commonOptions (#9693)
|
|
660
|
+
pick(dgOptions.groupPixelWidth, commonOptions.groupPixelWidth));
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
// If one of the series needs grouping, apply it to all (#1634)
|
|
664
|
+
i = len;
|
|
665
|
+
while (i--) {
|
|
666
|
+
dgOptions = series[i].options.dataGrouping;
|
|
667
|
+
if (dgOptions) { // #2692
|
|
668
|
+
dataLength = (series[i].processedXData || series[i].data).length;
|
|
669
|
+
// Execute grouping if the amount of points is greater than the
|
|
670
|
+
// limit defined in groupPixelWidth
|
|
671
|
+
if (series[i].groupPixelWidth ||
|
|
672
|
+
dataLength >
|
|
673
|
+
(this.chart.plotSizeX / groupPixelWidth) ||
|
|
674
|
+
(dataLength && dgOptions.forced)) {
|
|
675
|
+
doGrouping = true;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return doGrouping ? groupPixelWidth : 0;
|
|
680
|
+
};
|
|
681
|
+
/**
|
|
682
|
+
* Highcharts Stock only. Force data grouping on all the axis' series.
|
|
683
|
+
*
|
|
684
|
+
* @product highstock
|
|
685
|
+
*
|
|
686
|
+
* @function Highcharts.Axis#setDataGrouping
|
|
687
|
+
*
|
|
688
|
+
* @param {boolean|Highcharts.DataGroupingOptionsObject} [dataGrouping]
|
|
689
|
+
* A `dataGrouping` configuration. Use `false` to disable data grouping
|
|
690
|
+
* dynamically.
|
|
691
|
+
*
|
|
692
|
+
* @param {boolean} [redraw=true]
|
|
693
|
+
* Whether to redraw the chart or wait for a later call to
|
|
694
|
+
* {@link Chart#redraw}.
|
|
695
|
+
*/
|
|
696
|
+
Axis.prototype.setDataGrouping = function (dataGrouping, redraw) {
|
|
697
|
+
var axis = this;
|
|
698
|
+
var i;
|
|
699
|
+
redraw = pick(redraw, true);
|
|
700
|
+
if (!dataGrouping) {
|
|
701
|
+
dataGrouping = {
|
|
702
|
+
forced: false,
|
|
703
|
+
units: null
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
// Axis is instantiated, update all series
|
|
707
|
+
if (this instanceof Axis) {
|
|
708
|
+
i = this.series.length;
|
|
709
|
+
while (i--) {
|
|
710
|
+
this.series[i].update({
|
|
711
|
+
dataGrouping: dataGrouping
|
|
712
|
+
}, false);
|
|
713
|
+
}
|
|
714
|
+
// Axis not yet instanciated, alter series options
|
|
715
|
+
}
|
|
716
|
+
else {
|
|
717
|
+
this.chart.options.series.forEach(function (seriesOptions) {
|
|
718
|
+
seriesOptions.dataGrouping = dataGrouping;
|
|
719
|
+
}, false);
|
|
720
|
+
}
|
|
721
|
+
// Clear ordinal slope, so we won't accidentaly use the old one (#7827)
|
|
722
|
+
if (axis.ordinal) {
|
|
723
|
+
axis.ordinal.slope = void 0;
|
|
724
|
+
}
|
|
725
|
+
if (redraw) {
|
|
726
|
+
this.chart.redraw();
|
|
727
|
+
}
|
|
728
|
+
};
|
|
729
|
+
// When all series are processed, calculate the group pixel width and then
|
|
730
|
+
// if this value is different than zero apply groupings.
|
|
731
|
+
addEvent(Axis, 'postProcessData', Axis.prototype.applyGrouping);
|
|
610
732
|
// Override point prototype to throw a warning when trying to update grouped
|
|
611
733
|
// points.
|
|
612
734
|
addEvent(Point, 'update', function () {
|
|
@@ -618,7 +740,7 @@ addEvent(Point, 'update', function () {
|
|
|
618
740
|
// Extend the original method, make the tooltip's header reflect the grouped
|
|
619
741
|
// range.
|
|
620
742
|
addEvent(Tooltip, 'headerFormatter', function (e) {
|
|
621
|
-
var tooltip = this, chart = this.chart, time = chart.time, labelConfig = e.labelConfig, series = labelConfig.series, options = series.options, tooltipOptions = series.tooltipOptions, dataGroupingOptions = options.dataGrouping, xDateFormat = tooltipOptions.xDateFormat, xDateFormatEnd, xAxis = series.xAxis, currentDataGrouping, dateTimeLabelFormats, labelFormats, formattedKey, formatString = tooltipOptions[
|
|
743
|
+
var tooltip = this, chart = this.chart, time = chart.time, labelConfig = e.labelConfig, series = labelConfig.series, options = series.options, tooltipOptions = series.tooltipOptions, dataGroupingOptions = options.dataGrouping, xDateFormat = tooltipOptions.xDateFormat, xDateFormatEnd, xAxis = series.xAxis, currentDataGrouping, dateTimeLabelFormats, labelFormats, formattedKey, formatString = tooltipOptions[e.isFooter ? 'footerFormat' : 'headerFormat'];
|
|
622
744
|
// apply only to grouped series
|
|
623
745
|
if (xAxis &&
|
|
624
746
|
xAxis.options.type === 'datetime' &&
|
|
@@ -645,8 +767,8 @@ addEvent(Tooltip, 'headerFormatter', function (e) {
|
|
|
645
767
|
// best fit, so if the least distance between points is one minute, show
|
|
646
768
|
// it, but if the least distance is one day, skip hours and minutes etc.
|
|
647
769
|
}
|
|
648
|
-
else if (!xDateFormat && dateTimeLabelFormats) {
|
|
649
|
-
xDateFormat =
|
|
770
|
+
else if (!xDateFormat && dateTimeLabelFormats && xAxis.dateTime) {
|
|
771
|
+
xDateFormat = xAxis.dateTime.getXDateFormat(labelConfig.x, tooltipOptions.dateTimeLabelFormats);
|
|
650
772
|
}
|
|
651
773
|
// now format the key
|
|
652
774
|
formattedKey = time.dateFormat(xDateFormat, labelConfig.key);
|
|
@@ -695,87 +817,6 @@ addEvent(Axis, 'afterSetScale', function () {
|
|
|
695
817
|
series.hasProcessed = false;
|
|
696
818
|
});
|
|
697
819
|
});
|
|
698
|
-
// Get the data grouping pixel width based on the greatest defined individual
|
|
699
|
-
// width of the axis' series, and if whether one of the axes need grouping.
|
|
700
|
-
Axis.prototype.getGroupPixelWidth = function () {
|
|
701
|
-
var series = this.series, len = series.length, i, groupPixelWidth = 0, doGrouping = false, dataLength, dgOptions;
|
|
702
|
-
// If multiple series are compared on the same x axis, give them the same
|
|
703
|
-
// group pixel width (#334)
|
|
704
|
-
i = len;
|
|
705
|
-
while (i--) {
|
|
706
|
-
dgOptions = series[i].options.dataGrouping;
|
|
707
|
-
if (dgOptions) {
|
|
708
|
-
groupPixelWidth = Math.max(groupPixelWidth,
|
|
709
|
-
// Fallback to commonOptions (#9693)
|
|
710
|
-
pick(dgOptions.groupPixelWidth, commonOptions.groupPixelWidth));
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
// If one of the series needs grouping, apply it to all (#1634)
|
|
714
|
-
i = len;
|
|
715
|
-
while (i--) {
|
|
716
|
-
dgOptions = series[i].options.dataGrouping;
|
|
717
|
-
if (dgOptions && series[i].hasProcessed) { // #2692
|
|
718
|
-
dataLength = (series[i].processedXData || series[i].data).length;
|
|
719
|
-
// Execute grouping if the amount of points is greater than the
|
|
720
|
-
// limit defined in groupPixelWidth
|
|
721
|
-
if (series[i].groupPixelWidth ||
|
|
722
|
-
dataLength >
|
|
723
|
-
(this.chart.plotSizeX / groupPixelWidth) ||
|
|
724
|
-
(dataLength && dgOptions.forced)) {
|
|
725
|
-
doGrouping = true;
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
return doGrouping ? groupPixelWidth : 0;
|
|
730
|
-
};
|
|
731
|
-
/**
|
|
732
|
-
* Highcharts Stock only. Force data grouping on all the axis' series.
|
|
733
|
-
*
|
|
734
|
-
* @product highstock
|
|
735
|
-
*
|
|
736
|
-
* @function Highcharts.Axis#setDataGrouping
|
|
737
|
-
*
|
|
738
|
-
* @param {boolean|Highcharts.DataGroupingOptionsObject} [dataGrouping]
|
|
739
|
-
* A `dataGrouping` configuration. Use `false` to disable data grouping
|
|
740
|
-
* dynamically.
|
|
741
|
-
*
|
|
742
|
-
* @param {boolean} [redraw=true]
|
|
743
|
-
* Whether to redraw the chart or wait for a later call to
|
|
744
|
-
* {@link Chart#redraw}.
|
|
745
|
-
*/
|
|
746
|
-
Axis.prototype.setDataGrouping = function (dataGrouping, redraw) {
|
|
747
|
-
var axis = this;
|
|
748
|
-
var i;
|
|
749
|
-
redraw = pick(redraw, true);
|
|
750
|
-
if (!dataGrouping) {
|
|
751
|
-
dataGrouping = {
|
|
752
|
-
forced: false,
|
|
753
|
-
units: null
|
|
754
|
-
};
|
|
755
|
-
}
|
|
756
|
-
// Axis is instantiated, update all series
|
|
757
|
-
if (this instanceof Axis) {
|
|
758
|
-
i = this.series.length;
|
|
759
|
-
while (i--) {
|
|
760
|
-
this.series[i].update({
|
|
761
|
-
dataGrouping: dataGrouping
|
|
762
|
-
}, false);
|
|
763
|
-
}
|
|
764
|
-
// Axis not yet instanciated, alter series options
|
|
765
|
-
}
|
|
766
|
-
else {
|
|
767
|
-
this.chart.options.series.forEach(function (seriesOptions) {
|
|
768
|
-
seriesOptions.dataGrouping = dataGrouping;
|
|
769
|
-
}, false);
|
|
770
|
-
}
|
|
771
|
-
// Clear ordinal slope, so we won't accidentaly use the old one (#7827)
|
|
772
|
-
if (axis.ordinal) {
|
|
773
|
-
axis.ordinal.slope = void 0;
|
|
774
|
-
}
|
|
775
|
-
if (redraw) {
|
|
776
|
-
this.chart.redraw();
|
|
777
|
-
}
|
|
778
|
-
};
|
|
779
820
|
H.dataGrouping = dataGrouping;
|
|
780
821
|
export default dataGrouping;
|
|
781
822
|
/* eslint-enable no-invalid-this, valid-jsdoc */
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
var errorMessages = {
|
|
12
12
|
"10": {
|
|
13
13
|
"title": "Can't plot zero or subzero values on a logarithmic axis",
|
|
14
|
-
"text": "<h1>Can't plot zero or subzero values on a logarithmic axis</h1><p>This error occurs in the following situations: </p><ul><li>If a zero or subzero data value is added to a logarithmic axis</li><li>If the minimum of a logarithimic axis is set to 0 or less</li><li>If the threshold is set to 0 or less</li></ul><p>Note: As of Highcharts 5.0.8 it's possible to bypass this error message by setting <code>Axis.prototype.allowNegativeLog</code> to true, and add custom conversion functions. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/samples/highcharts/yaxis/type-log-negative/\">View live demo</a>. It is also possible to use a similar workaround for colorAxis. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/samples/highcharts/coloraxis/logarithmic-with-emulate-negative-values/\">View live demo</a>.</p>",
|
|
15
|
-
"enduser": "<h1>Can't plot zero or subzero values on a logarithmic axis</h1><p>This error occurs in the following situations:</p><ul><li>If a zero or subzero data value is added to a logarithmic axis</li><li>If the minimum of a logarithimic axis is set to 0 or less</li><li>If the threshold is set to 0 or less</li></ul><p>As of Highcharts 5.0.8 it's possible to bypass this error message by setting <code>Axis.prototype.allowNegativeLog</code> to <code>true</code> and add custom conversion functions. <a href=\"http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/samples/highcharts/yaxis/type-log-negative/\">\">View Live Demo</a>. It is also possible to use a similar workaround for colorAxis. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/samples/highcharts/coloraxis/logarithmic-with-emulate-negative-values/\">View live demo</a>.</p>"
|
|
14
|
+
"text": "<h1>Can't plot zero or subzero values on a logarithmic axis</h1><p>This error occurs in the following situations: </p><ul><li>If a zero or subzero data value is added to a logarithmic axis</li><li>If the minimum of a logarithimic axis is set to 0 or less</li><li>If the threshold is set to 0 or less</li></ul><p>Note: As of Highcharts 5.0.8 it's possible to bypass this error message by setting <code>Axis.prototype.allowNegativeLog</code> to true, and add custom conversion functions. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/yaxis/type-log-negative/\">View live demo</a>. It is also possible to use a similar workaround for colorAxis. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/coloraxis/logarithmic-with-emulate-negative-values/\">View live demo</a>.</p>",
|
|
15
|
+
"enduser": "<h1>Can't plot zero or subzero values on a logarithmic axis</h1><p>This error occurs in the following situations:</p><ul><li>If a zero or subzero data value is added to a logarithmic axis</li><li>If the minimum of a logarithimic axis is set to 0 or less</li><li>If the threshold is set to 0 or less</li></ul><p>As of Highcharts 5.0.8 it's possible to bypass this error message by setting <code>Axis.prototype.allowNegativeLog</code> to <code>true</code> and add custom conversion functions. <a href=\"http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/yaxis/type-log-negative/\">\">View Live Demo</a>. It is also possible to use a similar workaround for colorAxis. <a href=\"https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/coloraxis/logarithmic-with-emulate-negative-values/\">View live demo</a>.</p>"
|
|
16
16
|
},
|
|
17
17
|
"11": {
|
|
18
18
|
"title": "Can't link axes of different type",
|
|
@@ -19,7 +19,7 @@ import Series from '../Core/Series/Series.js';
|
|
|
19
19
|
import SeriesRegistry from '../Core/Series/SeriesRegistry.js';
|
|
20
20
|
var seriesTypes = SeriesRegistry.seriesTypes;
|
|
21
21
|
import U from '../Core/Utilities.js';
|
|
22
|
-
var addEvent = U.addEvent, clamp = U.clamp, merge = U.merge, objectEach = U.objectEach, pick = U.pick;
|
|
22
|
+
var addEvent = U.addEvent, clamp = U.clamp, isNumber = U.isNumber, merge = U.merge, objectEach = U.objectEach, pick = U.pick;
|
|
23
23
|
/**
|
|
24
24
|
* Flip a side property, used with resizeRect. If input side is "left", return
|
|
25
25
|
* "right" etc.
|
|
@@ -1631,11 +1631,19 @@ Series.prototype.getGuideBox = function (points) {
|
|
|
1631
1631
|
// Find bounding box of all points
|
|
1632
1632
|
points.forEach(function (point) {
|
|
1633
1633
|
var bBox = point.graphic && point.graphic.getBBox() || point.shapeArgs;
|
|
1634
|
-
if (bBox
|
|
1634
|
+
if (bBox) {
|
|
1635
|
+
var plotX2 = void 0;
|
|
1636
|
+
var x2 = point.x2;
|
|
1637
|
+
if (isNumber(x2)) {
|
|
1638
|
+
plotX2 = point.series.xAxis.translate(x2, false, false, false, true);
|
|
1639
|
+
}
|
|
1640
|
+
// Avoid a 0 min when some of the points being dragged are
|
|
1641
|
+
// completely outside the plot
|
|
1642
|
+
var skipBBox = !(bBox.width || bBox.height || bBox.x || bBox.y);
|
|
1635
1643
|
changed = true;
|
|
1636
|
-
minX = Math.min(point.plotX || 0, bBox.x || 0, minX);
|
|
1637
|
-
maxX = Math.max((bBox.x || 0) + (bBox.width || 0), maxX);
|
|
1638
|
-
minY = Math.min(point.plotY || 0, bBox.y || 0, minY);
|
|
1644
|
+
minX = Math.min(point.plotX || 0, plotX2 || 0, skipBBox ? Infinity : bBox.x || 0, minX);
|
|
1645
|
+
maxX = Math.max(point.plotX || 0, plotX2 || 0, (bBox.x || 0) + (bBox.width || 0), maxX);
|
|
1646
|
+
minY = Math.min(point.plotY || 0, skipBBox ? Infinity : bBox.y || 0, minY);
|
|
1639
1647
|
maxY = Math.max((bBox.y || 0) + (bBox.height || 0), maxY);
|
|
1640
1648
|
}
|
|
1641
1649
|
});
|
|
@@ -521,7 +521,7 @@ Chart.prototype.addSingleSeriesAsDrilldown = function (point, ddOptions) {
|
|
|
521
521
|
// no graphic in line series with markers disabled
|
|
522
522
|
bBox: point.graphic ? point.graphic.getBBox() : {},
|
|
523
523
|
color: point.isNull ?
|
|
524
|
-
|
|
524
|
+
Color.parse(colorProp.color).setOpacity(0).get() :
|
|
525
525
|
colorProp.color,
|
|
526
526
|
lowerSeriesOptions: ddOptions,
|
|
527
527
|
pointOptions: oldSeries.options.data[pointIndex],
|
|
@@ -586,7 +586,7 @@ Chart.prototype.getDrilldownBackText = function () {
|
|
|
586
586
|
if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
|
|
587
587
|
lastLevel = drilldownLevels[drilldownLevels.length - 1];
|
|
588
588
|
lastLevel.series = lastLevel.seriesOptions;
|
|
589
|
-
return format(this.options.lang.drillUpText, lastLevel);
|
|
589
|
+
return format(this.options.lang.drillUpText || '', lastLevel);
|
|
590
590
|
}
|
|
591
591
|
};
|
|
592
592
|
Chart.prototype.showDrillUpButton = function () {
|
|
@@ -623,6 +623,9 @@ Chart.prototype.showDrillUpButton = function () {
|
|
|
623
623
|
* @requires modules/drilldown
|
|
624
624
|
*
|
|
625
625
|
* @function Highcharts.Chart#drillUp
|
|
626
|
+
*
|
|
627
|
+
* @sample {highcharts} highcharts/drilldown/programmatic
|
|
628
|
+
* Programmatic drilldown
|
|
626
629
|
*/
|
|
627
630
|
Chart.prototype.drillUp = function () {
|
|
628
631
|
if (!this.drilldownLevels || this.drilldownLevels.length === 0) {
|
|
@@ -935,8 +938,26 @@ if (PieSeries) {
|
|
|
935
938
|
}
|
|
936
939
|
});
|
|
937
940
|
}
|
|
938
|
-
|
|
939
|
-
|
|
941
|
+
/**
|
|
942
|
+
* Perform drilldown on a point instance. The [drilldown](https://api.highcharts.com/highcharts/series.line.data.drilldown)
|
|
943
|
+
* property must be set on the point options.
|
|
944
|
+
*
|
|
945
|
+
* To drill down multiple points in the same category, use
|
|
946
|
+
* `Axis.drilldownCategory` instead.
|
|
947
|
+
*
|
|
948
|
+
* @requires modules/drilldown
|
|
949
|
+
*
|
|
950
|
+
* @function Highcharts.Point#doDrilldown
|
|
951
|
+
*
|
|
952
|
+
* @sample {highcharts} highcharts/drilldown/programmatic
|
|
953
|
+
* Programmatic drilldown
|
|
954
|
+
*/
|
|
955
|
+
Point.prototype.doDrilldown = function () {
|
|
956
|
+
this.runDrilldown();
|
|
957
|
+
};
|
|
958
|
+
Point.prototype.runDrilldown = function (holdRedraw, category, originalEvent) {
|
|
959
|
+
var series = this.series, chart = series.chart, drilldown = chart.options.drilldown;
|
|
960
|
+
var i = (drilldown.series || []).length, seriesOptions;
|
|
940
961
|
if (!chart.ddDupes) {
|
|
941
962
|
chart.ddDupes = [];
|
|
942
963
|
}
|
|
@@ -959,7 +980,7 @@ Point.prototype.doDrilldown = function (_holdRedraw, category, originalEvent) {
|
|
|
959
980
|
}, function (e) {
|
|
960
981
|
var chart = e.point.series && e.point.series.chart, seriesOptions = e.seriesOptions;
|
|
961
982
|
if (chart && seriesOptions) {
|
|
962
|
-
if (
|
|
983
|
+
if (holdRedraw) {
|
|
963
984
|
chart.addSingleSeriesAsDrilldown(e.point, seriesOptions);
|
|
964
985
|
}
|
|
965
986
|
else {
|
|
@@ -970,22 +991,28 @@ Point.prototype.doDrilldown = function (_holdRedraw, category, originalEvent) {
|
|
|
970
991
|
};
|
|
971
992
|
/**
|
|
972
993
|
* Drill down to a given category. This is the same as clicking on an axis
|
|
973
|
-
* label.
|
|
994
|
+
* label. If multiple series with drilldown are present, all will drill down to
|
|
995
|
+
* the given category.
|
|
996
|
+
*
|
|
997
|
+
* See also `Point.doDrilldown` for drilling down on a single point instance.
|
|
974
998
|
*
|
|
975
|
-
* @private
|
|
976
999
|
* @function Highcharts.Axis#drilldownCategory
|
|
1000
|
+
*
|
|
1001
|
+
* @sample {highcharts} highcharts/drilldown/programmatic
|
|
1002
|
+
* Programmatic drilldown
|
|
1003
|
+
*
|
|
977
1004
|
* @param {number} x
|
|
978
|
-
*
|
|
979
|
-
* @param {global.MouseEvent}
|
|
980
|
-
*
|
|
1005
|
+
* The index of the category
|
|
1006
|
+
* @param {global.MouseEvent} [originalEvent]
|
|
1007
|
+
* The original event, used internally.
|
|
981
1008
|
*/
|
|
982
|
-
Axis.prototype.drilldownCategory = function (x,
|
|
1009
|
+
Axis.prototype.drilldownCategory = function (x, originalEvent) {
|
|
983
1010
|
this.getDDPoints(x).forEach(function (point) {
|
|
984
1011
|
if (point &&
|
|
985
1012
|
point.series &&
|
|
986
1013
|
point.series.visible &&
|
|
987
|
-
point.
|
|
988
|
-
point.
|
|
1014
|
+
point.runDrilldown) { // #3197
|
|
1015
|
+
point.runDrilldown(true, x, originalEvent);
|
|
989
1016
|
}
|
|
990
1017
|
});
|
|
991
1018
|
this.chart.applyDrilldown();
|
|
@@ -1071,7 +1098,7 @@ var handlePointClick = function (e) {
|
|
|
1071
1098
|
series.xAxis.drilldownCategory(point.x, e);
|
|
1072
1099
|
}
|
|
1073
1100
|
else {
|
|
1074
|
-
point.
|
|
1101
|
+
point.runDrilldown(void 0, void 0, e);
|
|
1075
1102
|
}
|
|
1076
1103
|
};
|
|
1077
1104
|
addEvent(Series, 'afterDrawDataLabels', function () {
|
|
@@ -835,7 +835,7 @@ function getBlobFromContent(content, type) {
|
|
|
835
835
|
nav.userAgent.indexOf('Chrome') < 0), domurl = win.URL || win.webkitURL || win;
|
|
836
836
|
try {
|
|
837
837
|
// MS specific
|
|
838
|
-
if (nav.msSaveOrOpenBlob && win.MSBlobBuilder) {
|
|
838
|
+
if ((nav.msSaveOrOpenBlob) && win.MSBlobBuilder) {
|
|
839
839
|
var blob = new win.MSBlobBuilder();
|
|
840
840
|
blob.append(content);
|
|
841
841
|
return blob.getBlob('image/svg+xml');
|
|
@@ -851,6 +851,7 @@ function getBlobFromContent(content, type) {
|
|
|
851
851
|
// Ignore
|
|
852
852
|
}
|
|
853
853
|
}
|
|
854
|
+
/* eslint-disable valid-jsdoc */
|
|
854
855
|
/**
|
|
855
856
|
* Generates a data URL of CSV for local download in the browser. This is the
|
|
856
857
|
* default action for a click on the 'Download CSV' button.
|
|
@@ -949,9 +950,11 @@ Chart.prototype.toggleDataTable = function (show) {
|
|
|
949
950
|
lang.viewData &&
|
|
950
951
|
lang.hideData &&
|
|
951
952
|
menuItems &&
|
|
952
|
-
exportDivElements
|
|
953
|
-
exportDivElements.
|
|
954
|
-
|
|
953
|
+
exportDivElements) {
|
|
954
|
+
var exportDivElement = exportDivElements[menuItems.indexOf('viewData')];
|
|
955
|
+
if (exportDivElement) {
|
|
956
|
+
AST.setElementHTML(exportDivElement, this.isDataTableVisible ? lang.hideData : lang.viewData);
|
|
957
|
+
}
|
|
955
958
|
}
|
|
956
959
|
};
|
|
957
960
|
// Add "Download CSV" to the exporting menu.
|