highcharts 10.1.0 → 10.2.0
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/es-modules/Accessibility/Accessibility.js +2 -3
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
- package/es-modules/Accessibility/Components/ContainerComponent.js +3 -1
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +5 -3
- package/es-modules/Accessibility/Components/LegendComponent.js +3 -3
- package/es-modules/Accessibility/Components/MenuComponent.js +3 -1
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +3 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +12 -6
- package/es-modules/Accessibility/Components/ZoomComponent.js +30 -70
- package/es-modules/Accessibility/HighContrastMode.js +1 -1
- package/es-modules/Accessibility/KeyboardNavigation.js +2 -2
- package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +6 -1
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
- package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +10 -0
- package/es-modules/Accessibility/Utils/ChartUtilities.js +1 -1
- package/es-modules/Core/Animation/Fx.js +1 -1
- package/es-modules/Core/Axis/Axis.js +18 -19
- package/es-modules/Core/Axis/AxisDefaults.js +8 -8
- package/es-modules/Core/Axis/Color/ColorAxis.js +4 -2
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +3 -3
- package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
- package/es-modules/Core/Axis/GridAxis.js +817 -821
- package/es-modules/Core/Axis/OrdinalAxis.js +23 -1
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +2 -2
- package/es-modules/Core/Axis/Tick.js +20 -16
- package/es-modules/Core/Axis/TreeGridTick.js +2 -2
- package/es-modules/Core/Axis/ZAxis.js +3 -1
- package/es-modules/Core/Chart/Chart.js +13 -12
- package/es-modules/Core/Chart/ChartDefaults.js +3 -3
- package/es-modules/Core/Chart/GanttChart.js +3 -1
- package/es-modules/Core/Chart/MapChart.js +3 -1
- package/es-modules/Core/Chart/StockChart.js +6 -4
- package/es-modules/Core/Color/Color.js +1 -1
- package/es-modules/Core/DefaultOptions.js +11 -11
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/HttpUtilities.js +39 -37
- package/es-modules/Core/Legend/Legend.js +3 -3
- package/es-modules/Core/MSPointer.js +3 -1
- package/es-modules/Core/Navigator.js +6 -6
- package/es-modules/Core/Pointer.js +1 -1
- package/es-modules/Core/Renderer/HTML/AST.js +1 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +7 -7
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +3 -1
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +37 -35
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +3 -1
- package/es-modules/Core/ScrollbarDefaults.js +8 -8
- package/es-modules/Core/Series/DataLabel.js +2 -2
- package/es-modules/Core/Series/Point.js +9 -0
- package/es-modules/Core/Series/Series.js +5 -5
- package/es-modules/Core/Series/Series3D.js +3 -1
- package/es-modules/Core/Series/SeriesDefaults.js +3 -3
- package/es-modules/Core/Time.js +6 -7
- package/es-modules/Core/Tooltip.js +3 -3
- package/es-modules/Core/Utilities.js +5 -5
- package/es-modules/Data/DataConverter.js +1 -1
- package/es-modules/Data/DataTable.js +12 -10
- package/es-modules/Data/Modifiers/ChainModifier.js +3 -1
- package/es-modules/Data/Modifiers/GroupModifier.js +3 -1
- package/es-modules/Data/Modifiers/InvertModifier.js +9 -7
- package/es-modules/Data/Modifiers/RangeModifier.js +3 -1
- package/es-modules/Data/Modifiers/SeriesPointsModifier.js +3 -1
- package/es-modules/Data/Modifiers/SortModifier.js +3 -1
- package/es-modules/Data/Parsers/CSVParser.js +3 -1
- package/es-modules/Data/Parsers/DataParser.js +1 -1
- package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
- package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
- package/es-modules/Data/Stores/CSVStore.js +8 -5
- package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
- package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
- package/es-modules/Extensions/Annotations/{Annotations.js → Annotation.js} +21 -9
- package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +5 -2
- package/es-modules/Extensions/Annotations/NavigationBindings.js +8 -5
- package/es-modules/Extensions/Annotations/Popup.js +2 -2
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +13 -9
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -2
- package/es-modules/Extensions/Annotations/Types/ElliottWave.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Fibonacci.js +5 -3
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +4 -2
- package/es-modules/Extensions/Annotations/Types/InfinityLine.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Measure.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Pitchfork.js +4 -2
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +5 -2
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +4 -2
- package/es-modules/Extensions/Boost/BoostAttach.js +5 -1
- package/es-modules/Extensions/Boost/BoostInit.js +3 -2
- package/es-modules/Extensions/BoostCanvas.js +11 -5
- package/es-modules/Extensions/Breadcrumbs.js +31 -6
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +638 -602
- package/es-modules/Extensions/DownloadURL.js +3 -3
- package/es-modules/Extensions/DragPanes.js +1 -1
- package/es-modules/Extensions/Drilldown.js +2 -2
- package/es-modules/Extensions/ExportData.js +57 -7
- package/es-modules/Extensions/Exporting/Exporting.js +3 -3
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +7 -7
- package/es-modules/Extensions/GeoJSON.js +0 -2
- package/es-modules/Extensions/MarkerClusters.js +3 -3
- package/es-modules/Extensions/NoDataToDisplay.js +1 -1
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +2 -2
- package/es-modules/Extensions/Pane.js +3 -3
- package/es-modules/Extensions/ParallelCoordinates.js +1 -1
- package/es-modules/Extensions/PatternFill.js +14 -2
- package/es-modules/Extensions/RangeSelector.js +29 -18
- package/es-modules/Extensions/ScrollablePlotArea.js +3 -3
- package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +262 -384
- package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
- package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
- package/es-modules/Extensions/Sonification/Earcon.js +1 -1
- package/es-modules/Extensions/Stacking.js +1 -1
- package/es-modules/Maps/MapNavigation.js +2 -2
- package/es-modules/Maps/MapView.js +23 -16
- package/es-modules/Maps/MapViewInsetsOptionsDefault.js +1 -1
- package/es-modules/Maps/Projection.js +13 -11
- package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +3 -1
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +3 -1
- package/es-modules/Series/Area/AreaSeries.js +21 -14
- package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +154 -147
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
- package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
- package/es-modules/Series/Bar/BarSeries.js +3 -1
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
- package/es-modules/Series/Bubble/BubblePoint.js +3 -1
- package/es-modules/Series/Bubble/BubbleSeries.js +15 -6
- package/es-modules/Series/Bullet/BulletPoint.js +3 -1
- package/es-modules/Series/Bullet/BulletSeries.js +4 -3
- package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
- package/es-modules/Series/CenteredUtilities.js +2 -1
- package/es-modules/Series/ColorMapComposition.js +111 -0
- package/es-modules/Series/Column/ColumnSeries.js +6 -4
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +3 -1
- package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
- package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
- package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +3 -1
- package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
- package/es-modules/Series/DrawPointUtilities.js +87 -0
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
- package/es-modules/Series/Flags/FlagsPoint.js +4 -1
- package/es-modules/Series/Flags/FlagsSeries.js +6 -4
- package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
- package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +3 -1
- package/es-modules/Series/Gantt/GanttPoint.js +3 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -1
- package/es-modules/Series/Gauge/GaugePoint.js +3 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +195 -173
- package/es-modules/Series/HLC/HLCPoint.js +3 -1
- package/es-modules/Series/HLC/HLCSeries.js +4 -2
- package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
- package/es-modules/Series/Heatmap/HeatmapSeries.js +16 -13
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
- package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
- package/es-modules/Series/Item/ItemPoint.js +3 -1
- package/es-modules/Series/Item/ItemSeries.js +3 -1
- package/es-modules/Series/Line/LineSeries.js +4 -2
- package/es-modules/Series/Lollipop/LollipopPoint.js +3 -1
- package/es-modules/Series/Lollipop/LollipopSeries.js +3 -1
- package/es-modules/Series/Map/MapPoint.js +8 -6
- package/es-modules/Series/Map/MapSeries.js +98 -26
- package/es-modules/Series/MapBubble/MapBubblePoint.js +3 -1
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +3 -1
- package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
- package/es-modules/Series/MapPoint/MapPointPoint.js +4 -2
- package/es-modules/Series/MapPoint/MapPointSeries.js +10 -2
- package/es-modules/Series/Networkgraph/Networkgraph.js +3 -1
- package/es-modules/Series/NodesComposition.js +45 -40
- package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
- package/es-modules/Series/OHLC/OHLCSeries.js +3 -1
- package/es-modules/Series/Organization/OrganizationPoint.js +3 -1
- package/es-modules/Series/Organization/OrganizationSeries.js +5 -3
- package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +0 -2
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +3 -1
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
- package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
- package/es-modules/Series/Pie/PieDataLabel.js +1 -1
- package/es-modules/Series/Pie/PiePoint.js +3 -1
- package/es-modules/Series/Pie/PieSeries.js +39 -36
- package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +3 -1
- package/es-modules/Series/PolarComposition.js +819 -0
- package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
- package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
- package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
- package/es-modules/Series/Sankey/SankeyPoint.js +3 -1
- package/es-modules/Series/Sankey/SankeySeries.js +22 -8
- package/es-modules/Series/Scatter/ScatterSeries.js +10 -5
- package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
- package/es-modules/Series/Scatter3D/Scatter3DSeries.js +3 -1
- package/es-modules/Series/SeriesOnPointComposition.js +391 -0
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +5 -3
- package/es-modules/Series/Spline/SplineSeries.js +13 -4
- package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
- package/es-modules/Series/Sunburst/SunburstPoint.js +3 -3
- package/es-modules/Series/Sunburst/SunburstSeries.js +7 -2
- package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
- package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
- package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
- package/es-modules/Series/Timeline/TimelineSeries.js +6 -4
- package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
- package/es-modules/Series/Treemap/TreemapSeries.js +9 -7
- package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
- package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
- package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
- package/es-modules/Series/Vector/VectorSeries.js +3 -1
- package/es-modules/Series/Venn/VennPoint.js +5 -5
- package/es-modules/Series/Venn/VennSeries.js +9 -6
- package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
- package/es-modules/Series/Waterfall/WaterfallSeries.js +14 -12
- package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
- package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
- package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +7 -4
- package/es-modules/Series/XRange/XRangePoint.js +3 -1
- package/es-modules/Series/XRange/XRangeSeries.js +3 -1
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AO/AOIndicator.js +5 -3
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +3 -1
- package/es-modules/Stock/Indicators/BB/BBIndicator.js +6 -4
- package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +3 -1
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +13 -7
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -1
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +3 -1
- package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +26 -13
- package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +3 -1
- package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +3 -1
- package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +3 -1
- package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +3 -1
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +6 -4
- package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +3 -1
- package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +3 -1
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +3 -1
- package/es-modules/Stock/Indicators/VBP/VBPPoint.js +3 -1
- package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +3 -1
- package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +3 -1
- package/es-modules/Stock/StockToolsBindings.js +20 -19
- package/es-modules/Stock/StockToolsGui.js +1 -1
- 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 +4 -4
- package/es-modules/masters/highcharts.src.js +1 -1
- 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/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 +2 -2
- package/es-modules/masters/modules/annotations.src.js +2 -2
- package/es-modules/masters/modules/arc-diagram.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 +1 -1
- 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 +2 -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 +1 -1
- 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 +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +5 -2
- package/es-modules/masters/modules/series-on-point.src.js +16 -0
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +2 -6
- 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 +1 -1
- 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 +1 -1
- package/es-modules/masters/themes/brand-dark.src.js +1 -1
- package/es-modules/masters/themes/brand-light.src.js +1 -1
- package/es-modules/masters/themes/dark-blue.src.js +1 -1
- package/es-modules/masters/themes/dark-green.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/gray.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/grid.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/skies.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/highcharts-3d.js +1 -1
- package/highcharts-3d.src.js +1 -1
- package/highcharts-gantt.js +811 -809
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +1271 -1213
- package/highcharts-more.d.ts +10 -0
- package/highcharts-more.js +194 -195
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +10 -0
- package/highcharts-more.src.js +5649 -5515
- package/highcharts.d.ts +9118 -429
- package/highcharts.js +595 -594
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +9118 -429
- package/highcharts.src.js +335 -285
- package/highmaps.js +763 -760
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +640 -448
- package/highstock.js +797 -794
- package/highstock.js.map +1 -1
- package/highstock.src.js +414 -327
- package/indicators/acceleration-bands.d.ts +1 -17
- package/indicators/acceleration-bands.js +11 -12
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.d.ts +1 -17
- package/indicators/acceleration-bands.src.js +89 -99
- 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 +3 -3
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.d.ts +1 -17
- package/indicators/aroon-oscillator.js +10 -10
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.d.ts +1 -17
- package/indicators/aroon-oscillator.src.js +89 -99
- package/indicators/aroon.d.ts +1 -17
- package/indicators/aroon.js +11 -11
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.d.ts +1 -17
- package/indicators/aroon.src.js +89 -99
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.d.ts +1 -17
- package/indicators/bollinger-bands.js +11 -12
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.d.ts +1 -17
- package/indicators/bollinger-bands.src.js +92 -102
- 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 +12 -12
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +99 -105
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.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.d.ts +1 -17
- package/indicators/indicators-all.js +195 -194
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.d.ts +1 -17
- package/indicators/indicators-all.src.js +131 -125
- package/indicators/indicators.js +1 -1
- package/indicators/indicators.src.js +1 -1
- package/indicators/keltner-channels.d.ts +1 -17
- package/indicators/keltner-channels.js +11 -12
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.d.ts +1 -17
- package/indicators/keltner-channels.src.js +89 -99
- package/indicators/klinger.js +14 -14
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +89 -99
- package/indicators/macd.js +10 -9
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +25 -13
- 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.d.ts +1 -17
- package/indicators/price-channel.js +11 -11
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.d.ts +1 -17
- package/indicators/price-channel.src.js +89 -99
- 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.d.ts +1 -17
- package/indicators/stochastic.js +12 -12
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.d.ts +1 -17
- package/indicators/stochastic.src.js +89 -99
- package/indicators/supertrend.js +1 -1
- package/indicators/supertrend.src.js +4 -4
- 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 +1 -1
- package/indicators/volume-by-price.src.js +1 -1
- 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 +230 -229
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +110 -115
- package/modules/annotations-advanced.js +187 -187
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +62 -39
- package/modules/annotations.js +61 -61
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +38 -20
- package/modules/arc-diagram.js +1 -1
- package/modules/arc-diagram.src.js +1 -1
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +12 -11
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +12 -6
- package/modules/boost.js +81 -80
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +20 -9
- package/modules/broken-axis.js +1 -1
- package/modules/broken-axis.src.js +1 -1
- package/modules/bullet.js +1 -1
- package/modules/bullet.js.map +1 -1
- package/modules/bullet.src.js +2 -5
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +5 -5
- package/modules/current-date-indicator.js +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.d.ts +12 -12
- package/modules/data.js +33 -34
- package/modules/data.js.map +1 -1
- package/modules/data.src.d.ts +12 -12
- package/modules/data.src.js +862 -829
- package/modules/datagrouping.js +1 -1
- package/modules/datagrouping.src.js +1 -1
- package/modules/debugger.js +1 -1
- package/modules/debugger.src.js +1 -1
- 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 +2 -2
- package/modules/draggable-points.js +1 -1
- package/modules/draggable-points.src.js +1 -1
- package/modules/drilldown.js +37 -36
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.js +40 -9
- package/modules/dumbbell.d.ts +4 -0
- package/modules/dumbbell.js +17 -17
- package/modules/dumbbell.js.map +1 -1
- package/modules/dumbbell.src.d.ts +4 -0
- package/modules/dumbbell.src.js +24 -12
- package/modules/export-data.js +24 -22
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +76 -11
- package/modules/exporting.d.ts +8 -8
- package/modules/exporting.js +36 -36
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.d.ts +8 -8
- package/modules/exporting.src.js +50 -50
- package/modules/full-screen.js +1 -1
- package/modules/full-screen.src.js +1 -1
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +3 -3
- package/modules/funnel3d.js +1 -1
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +218 -218
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +935 -927
- package/modules/grid-axis.js +23 -23
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +886 -890
- package/modules/heatmap.js +40 -40
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +115 -87
- package/modules/heikinashi.js +1 -1
- package/modules/heikinashi.src.js +1 -1
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.src.js +1 -1
- package/modules/hollowcandlestick.js +1 -1
- package/modules/hollowcandlestick.src.js +9 -9
- 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.js +171 -169
- package/modules/map.js.map +1 -1
- package/modules/map.src.js +306 -164
- package/modules/marker-clusters.js +1 -1
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +2 -6
- package/modules/networkgraph.d.ts +1 -17
- package/modules/networkgraph.js +49 -49
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.d.ts +1 -17
- package/modules/networkgraph.src.js +55 -45
- package/modules/no-data-to-display.js +1 -1
- package/modules/no-data-to-display.src.js +2 -2
- package/modules/offline-exporting.js +3 -3
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +5 -5
- 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 +3 -3
- package/modules/organization.js +1 -1
- package/modules/organization.src.js +3 -3
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.js.map +1 -1
- package/modules/parallel-coordinates.src.js +2 -2
- 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 +15 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +15 -2
- 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.d.ts +1 -17
- package/modules/sankey.js +32 -32
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.d.ts +1 -17
- package/modules/sankey.src.js +86 -55
- package/modules/series-label.js +18 -18
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +472 -385
- package/modules/series-on-point.js +18 -0
- package/modules/series-on-point.js.map +1 -0
- package/modules/series-on-point.src.js +464 -0
- package/modules/solid-gauge.js +4 -4
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +5 -5
- package/modules/sonification.js +1 -1
- package/modules/sonification.js.map +1 -1
- package/modules/sonification.src.js +3 -7
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +142 -142
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +57 -38
- package/modules/stock.js +205 -204
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.js +80 -43
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +73 -73
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +211 -177
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +1 -1
- package/modules/timeline.src.js +4 -4
- package/modules/treegrid.js +56 -56
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +888 -892
- package/modules/treemap.js +54 -53
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +208 -176
- 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 -31
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +78 -107
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +23 -24
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +78 -107
- package/modules/xrange.js +1 -1
- package/modules/xrange.src.js +1 -1
- package/package.json +1 -1
- package/themes/avocado.js +1 -1
- package/themes/avocado.src.js +1 -1
- package/themes/brand-dark.js +1 -1
- package/themes/brand-dark.src.js +1 -1
- package/themes/brand-light.js +1 -1
- package/themes/brand-light.src.js +1 -1
- package/themes/dark-blue.js +1 -1
- package/themes/dark-blue.src.js +1 -1
- package/themes/dark-green.js +1 -1
- package/themes/dark-green.src.js +1 -1
- package/themes/dark-unica.js +1 -1
- package/themes/dark-unica.src.js +1 -1
- package/themes/gray.js +1 -1
- package/themes/gray.src.js +1 -1
- package/themes/grid-light.js +1 -1
- package/themes/grid-light.src.js +1 -1
- package/themes/grid.js +1 -1
- package/themes/grid.src.js +1 -1
- package/themes/high-contrast-dark.js +1 -1
- package/themes/high-contrast-dark.src.js +1 -1
- package/themes/high-contrast-light.js +1 -1
- package/themes/high-contrast-light.src.js +1 -1
- package/themes/sand-signika.js +1 -1
- package/themes/sand-signika.src.js +1 -1
- package/themes/skies.js +1 -1
- package/themes/skies.src.js +1 -1
- package/themes/sunset.js +1 -1
- package/themes/sunset.src.js +1 -1
- package/es-modules/Extensions/Polar.js +0 -743
- package/es-modules/Series/ColorMapMixin.js +0 -84
- package/es-modules/Series/DrawPointComposition.js +0 -114
package/modules/grid-axis.src.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts Gantt JS v10.
|
|
2
|
+
* @license Highcharts Gantt JS v10.2.0 (2022-07-05)
|
|
3
3
|
*
|
|
4
4
|
* GridAxis
|
|
5
5
|
*
|
|
@@ -59,19 +59,49 @@
|
|
|
59
59
|
pick = U.pick,
|
|
60
60
|
timeUnits = U.timeUnits,
|
|
61
61
|
wrap = U.wrap;
|
|
62
|
+
/* *
|
|
63
|
+
*
|
|
64
|
+
* Enums
|
|
65
|
+
*
|
|
66
|
+
* */
|
|
67
|
+
/**
|
|
68
|
+
* Enum for which side the axis is on. Maps to axis.side.
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
var GridAxisSide;
|
|
72
|
+
(function (GridAxisSide) {
|
|
73
|
+
GridAxisSide[GridAxisSide["top"] = 0] = "top";
|
|
74
|
+
GridAxisSide[GridAxisSide["right"] = 1] = "right";
|
|
75
|
+
GridAxisSide[GridAxisSide["bottom"] = 2] = "bottom";
|
|
76
|
+
GridAxisSide[GridAxisSide["left"] = 3] = "left";
|
|
77
|
+
})(GridAxisSide || (GridAxisSide = {}));
|
|
78
|
+
/* *
|
|
79
|
+
*
|
|
80
|
+
* Constants
|
|
81
|
+
*
|
|
82
|
+
* */
|
|
83
|
+
var composedClasses = [];
|
|
62
84
|
/* *
|
|
63
85
|
*
|
|
64
86
|
* Functions
|
|
65
87
|
*
|
|
66
88
|
* */
|
|
67
|
-
|
|
89
|
+
/**
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
68
92
|
function argsToArray(args) {
|
|
69
93
|
return Array.prototype.slice.call(args, 1);
|
|
70
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
71
98
|
function isObject(x) {
|
|
72
99
|
// Always use strict mode
|
|
73
100
|
return U.isObject(x, true);
|
|
74
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
75
105
|
function applyGridOptions(axis) {
|
|
76
106
|
var options = axis.options;
|
|
77
107
|
// Center-align by default
|
|
@@ -96,962 +126,925 @@
|
|
|
96
126
|
options.labels.rotation = 0;
|
|
97
127
|
}
|
|
98
128
|
/**
|
|
99
|
-
*
|
|
129
|
+
* Extends axis class with grid support.
|
|
100
130
|
* @private
|
|
101
131
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
*
|
|
124
|
-
* */
|
|
125
|
-
/* eslint-disable valid-jsdoc */
|
|
126
|
-
/**
|
|
127
|
-
* Extends axis class with grid support.
|
|
128
|
-
* @private
|
|
129
|
-
*/
|
|
130
|
-
function compose(AxisClass, ChartClass, TickClass) {
|
|
131
|
-
if (AxisClass.keepProps.indexOf('grid') === -1) {
|
|
132
|
-
AxisClass.keepProps.push('grid');
|
|
133
|
-
AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
|
|
134
|
-
wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
|
|
135
|
-
// Add event handlers
|
|
136
|
-
addEvent(AxisClass, 'init', onInit);
|
|
137
|
-
addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
|
|
138
|
-
addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
|
|
139
|
-
addEvent(AxisClass, 'afterInit', onAfterInit);
|
|
140
|
-
addEvent(AxisClass, 'afterRender', onAfterRender);
|
|
141
|
-
addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
|
|
142
|
-
addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
|
|
143
|
-
addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
|
|
144
|
-
addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
|
|
145
|
-
addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
|
|
146
|
-
addEvent(AxisClass, 'trimTicks', onTrimTicks);
|
|
147
|
-
addEvent(AxisClass, 'destroy', onDestroy);
|
|
148
|
-
}
|
|
132
|
+
function compose(AxisClass, ChartClass, TickClass) {
|
|
133
|
+
if (composedClasses.indexOf(AxisClass) === -1) {
|
|
134
|
+
composedClasses.push(AxisClass);
|
|
135
|
+
AxisClass.keepProps.push('grid');
|
|
136
|
+
AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
|
|
137
|
+
wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
|
|
138
|
+
// Add event handlers
|
|
139
|
+
addEvent(AxisClass, 'init', onInit);
|
|
140
|
+
addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
|
|
141
|
+
addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
|
|
142
|
+
addEvent(AxisClass, 'afterInit', onAfterInit);
|
|
143
|
+
addEvent(AxisClass, 'afterRender', onAfterRender);
|
|
144
|
+
addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
|
|
145
|
+
addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
|
|
146
|
+
addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
|
|
147
|
+
addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
|
|
148
|
+
addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
|
|
149
|
+
addEvent(AxisClass, 'trimTicks', onTrimTicks);
|
|
150
|
+
addEvent(AxisClass, 'destroy', onDestroy);
|
|
151
|
+
}
|
|
152
|
+
if (composedClasses.indexOf(ChartClass) === -1) {
|
|
149
153
|
addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
|
|
154
|
+
}
|
|
155
|
+
if (composedClasses.indexOf(TickClass) === -1) {
|
|
150
156
|
addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);
|
|
151
157
|
addEvent(TickClass, 'labelFormat', onTickLabelFormat);
|
|
152
|
-
return AxisClass;
|
|
153
158
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
labelWidth = isNumber(label.textPxLength) ?
|
|
190
|
-
// Math.round ensures crisp lines
|
|
191
|
-
Math.round(label.textPxLength) :
|
|
192
|
-
0;
|
|
193
|
-
if (label.textStr) {
|
|
194
|
-
// Set the tickWidth same as the label width after ellipsis
|
|
195
|
-
// applied #10281
|
|
196
|
-
labelWidth = Math.round(label.getBBox().width);
|
|
197
|
-
}
|
|
198
|
-
// Update the result if width and/or height are larger
|
|
199
|
-
dimensions.height = Math.max(labelHeight, dimensions.height);
|
|
200
|
-
dimensions.width = Math.max(labelWidth, dimensions.width);
|
|
159
|
+
return AxisClass;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get the largest label width and height.
|
|
163
|
+
*
|
|
164
|
+
* @private
|
|
165
|
+
* @function Highcharts.Axis#getMaxLabelDimensions
|
|
166
|
+
*
|
|
167
|
+
* @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
|
|
168
|
+
* All the ticks on one axis.
|
|
169
|
+
*
|
|
170
|
+
* @param {Array<number|string>} tickPositions
|
|
171
|
+
* All the tick positions on one axis.
|
|
172
|
+
*
|
|
173
|
+
* @return {Highcharts.SizeObject}
|
|
174
|
+
* Object containing the properties height and width.
|
|
175
|
+
*
|
|
176
|
+
* @todo Move this to the generic axis implementation, as it is used there.
|
|
177
|
+
*/
|
|
178
|
+
function getMaxLabelDimensions(ticks, tickPositions) {
|
|
179
|
+
var dimensions = {
|
|
180
|
+
width: 0,
|
|
181
|
+
height: 0
|
|
182
|
+
};
|
|
183
|
+
tickPositions.forEach(function (pos) {
|
|
184
|
+
var tick = ticks[pos];
|
|
185
|
+
var labelHeight = 0,
|
|
186
|
+
labelWidth = 0,
|
|
187
|
+
label;
|
|
188
|
+
if (isObject(tick)) {
|
|
189
|
+
label = isObject(tick.label) ? tick.label : {};
|
|
190
|
+
// Find width and height of label
|
|
191
|
+
labelHeight = label.getBBox ? label.getBBox().height : 0;
|
|
192
|
+
if (label.textStr && !isNumber(label.textPxLength)) {
|
|
193
|
+
label.textPxLength = label.getBBox().width;
|
|
201
194
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
195
|
+
labelWidth = isNumber(label.textPxLength) ?
|
|
196
|
+
// Math.round ensures crisp lines
|
|
197
|
+
Math.round(label.textPxLength) :
|
|
198
|
+
0;
|
|
199
|
+
if (label.textStr) {
|
|
200
|
+
// Set the tickWidth same as the label width after ellipsis
|
|
201
|
+
// applied #10281
|
|
202
|
+
labelWidth = Math.round(label.getBBox().width);
|
|
203
|
+
}
|
|
204
|
+
// Update the result if width and/or height are larger
|
|
205
|
+
dimensions.height = Math.max(labelHeight, dimensions.height);
|
|
206
|
+
dimensions.width = Math.max(labelWidth, dimensions.width);
|
|
210
207
|
}
|
|
211
|
-
|
|
208
|
+
});
|
|
209
|
+
// For tree grid, add indentation
|
|
210
|
+
if (this.options.type === 'treegrid' &&
|
|
211
|
+
this.treeGrid &&
|
|
212
|
+
this.treeGrid.mapOfPosToGridNode) {
|
|
213
|
+
var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
|
|
214
|
+
dimensions.width += (this.options.labels.indentation *
|
|
215
|
+
(treeDepth - 1));
|
|
212
216
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
217
|
+
return dimensions;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Handle columns and getOffset.
|
|
221
|
+
* @private
|
|
222
|
+
*/
|
|
223
|
+
function onAfterGetOffset() {
|
|
224
|
+
var grid = this.grid;
|
|
225
|
+
(grid && grid.columns || []).forEach(function (column) {
|
|
226
|
+
column.getOffset();
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* @private
|
|
231
|
+
*/
|
|
232
|
+
function onAfterGetTitlePosition(e) {
|
|
233
|
+
var axis = this;
|
|
234
|
+
var options = axis.options;
|
|
235
|
+
var gridOptions = options.grid || {};
|
|
236
|
+
if (gridOptions.enabled === true) {
|
|
237
|
+
// compute anchor points for each of the title align options
|
|
238
|
+
var axisTitle = axis.axisTitle,
|
|
239
|
+
axisHeight = axis.height,
|
|
240
|
+
horiz = axis.horiz,
|
|
241
|
+
axisLeft = axis.left,
|
|
242
|
+
offset = axis.offset,
|
|
243
|
+
opposite = axis.opposite,
|
|
244
|
+
options_1 = axis.options,
|
|
245
|
+
axisTop = axis.top,
|
|
246
|
+
axisWidth = axis.width;
|
|
247
|
+
var tickSize = axis.tickSize();
|
|
248
|
+
var titleWidth = axisTitle && axisTitle.getBBox().width;
|
|
249
|
+
var xOption = options_1.title.x;
|
|
250
|
+
var yOption = options_1.title.y;
|
|
251
|
+
var titleMargin = pick(options_1.title.margin,
|
|
252
|
+
horiz ? 5 : 10);
|
|
253
|
+
var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
|
|
254
|
+
axisTitle).f;
|
|
255
|
+
var crispCorr = tickSize ? tickSize[0] / 2 : 0;
|
|
256
|
+
// TODO account for alignment
|
|
257
|
+
// the position in the perpendicular direction of the axis
|
|
258
|
+
var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
|
|
259
|
+
(horiz ? 1 : -1) * // horizontal axis reverses the margin
|
|
260
|
+
(opposite ? -1 : 1) * // so does opposite axes
|
|
261
|
+
crispCorr +
|
|
262
|
+
(axis.side === GridAxisSide.bottom ? titleFontSize : 0));
|
|
263
|
+
e.titlePosition.x = horiz ?
|
|
264
|
+
axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
|
|
265
|
+
offAxis + (opposite ? axisWidth : 0) + offset + xOption;
|
|
266
|
+
e.titlePosition.y = horiz ?
|
|
267
|
+
(offAxis -
|
|
268
|
+
(opposite ? axisHeight : 0) +
|
|
269
|
+
(opposite ? titleFontSize : -titleFontSize) / 2 +
|
|
270
|
+
offset +
|
|
271
|
+
yOption) :
|
|
272
|
+
axisTop - titleMargin + yOption;
|
|
222
273
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
axisLeft = axis.left,
|
|
236
|
-
offset = axis.offset,
|
|
237
|
-
opposite = axis.opposite,
|
|
238
|
-
options_1 = axis.options,
|
|
239
|
-
axisTop = axis.top,
|
|
240
|
-
axisWidth = axis.width;
|
|
241
|
-
var tickSize = axis.tickSize();
|
|
242
|
-
var titleWidth = axisTitle && axisTitle.getBBox().width;
|
|
243
|
-
var xOption = options_1.title.x;
|
|
244
|
-
var yOption = options_1.title.y;
|
|
245
|
-
var titleMargin = pick(options_1.title.margin,
|
|
246
|
-
horiz ? 5 : 10);
|
|
247
|
-
var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
|
|
248
|
-
axisTitle).f;
|
|
249
|
-
var crispCorr = tickSize ? tickSize[0] / 2 : 0;
|
|
250
|
-
// TODO account for alignment
|
|
251
|
-
// the position in the perpendicular direction of the axis
|
|
252
|
-
var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
|
|
253
|
-
(horiz ? 1 : -1) * // horizontal axis reverses the margin
|
|
254
|
-
(opposite ? -1 : 1) * // so does opposite axes
|
|
255
|
-
crispCorr +
|
|
256
|
-
(axis.side === GridAxis.Side.bottom ? titleFontSize : 0));
|
|
257
|
-
e.titlePosition.x = horiz ?
|
|
258
|
-
axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
|
|
259
|
-
offAxis + (opposite ? axisWidth : 0) + offset + xOption;
|
|
260
|
-
e.titlePosition.y = horiz ?
|
|
261
|
-
(offAxis -
|
|
262
|
-
(opposite ? axisHeight : 0) +
|
|
263
|
-
(opposite ? titleFontSize : -titleFontSize) / 2 +
|
|
264
|
-
offset +
|
|
265
|
-
yOption) :
|
|
266
|
-
axisTop - titleMargin + yOption;
|
|
267
|
-
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* @private
|
|
277
|
+
*/
|
|
278
|
+
function onAfterInit() {
|
|
279
|
+
var axis = this;
|
|
280
|
+
var chart = axis.chart,
|
|
281
|
+
_a = axis.options.grid,
|
|
282
|
+
gridOptions = _a === void 0 ? {} : _a,
|
|
283
|
+
userOptions = axis.userOptions;
|
|
284
|
+
if (gridOptions.enabled) {
|
|
285
|
+
applyGridOptions(axis);
|
|
268
286
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
delete columnOptions.grid.columns; // Prevent recursion
|
|
297
|
-
var column = new Axis(axis.chart,
|
|
298
|
-
columnOptions);
|
|
299
|
-
column.grid.isColumn = true;
|
|
300
|
-
column.grid.columnIndex = columnIndex;
|
|
301
|
-
// Remove column axis from chart axes array, and place it
|
|
302
|
-
// in the columns array.
|
|
303
|
-
erase(chart.axes, column);
|
|
304
|
-
erase(chart[axis.coll], column);
|
|
305
|
-
columns.push(column);
|
|
306
|
-
}
|
|
287
|
+
if (gridOptions.columns) {
|
|
288
|
+
var columns = axis.grid.columns = [];
|
|
289
|
+
var columnIndex = axis.grid.columnIndex = 0;
|
|
290
|
+
// Handle columns, each column is a grid axis
|
|
291
|
+
while (++columnIndex < gridOptions.columns.length) {
|
|
292
|
+
var columnOptions = merge(userOptions,
|
|
293
|
+
gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
|
|
294
|
+
linkedTo: 0,
|
|
295
|
+
// Force to behave like category axis
|
|
296
|
+
type: 'category',
|
|
297
|
+
// Disable by default the scrollbar on the grid axis
|
|
298
|
+
scrollbar: {
|
|
299
|
+
enabled: false
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
delete columnOptions.grid.columns; // Prevent recursion
|
|
303
|
+
var column = new Axis(axis.chart,
|
|
304
|
+
columnOptions);
|
|
305
|
+
column.grid.isColumn = true;
|
|
306
|
+
column.grid.columnIndex = columnIndex;
|
|
307
|
+
// Remove column axis from chart axes array, and place it
|
|
308
|
+
// in the columns array.
|
|
309
|
+
erase(chart.axes, column);
|
|
310
|
+
erase(chart[axis.coll], column);
|
|
311
|
+
columns.push(column);
|
|
307
312
|
}
|
|
308
313
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Draw an extra line on the far side of the outermost axis,
|
|
317
|
+
* creating floor/roof/wall of a grid. And some padding.
|
|
318
|
+
* ```
|
|
319
|
+
* Make this:
|
|
320
|
+
* (axis.min) __________________________ (axis.max)
|
|
321
|
+
* | | | | |
|
|
322
|
+
* Into this:
|
|
323
|
+
* (axis.min) __________________________ (axis.max)
|
|
324
|
+
* ___|____|____|____|____|__
|
|
325
|
+
* ```
|
|
326
|
+
* @private
|
|
327
|
+
*/
|
|
328
|
+
function onAfterRender() {
|
|
329
|
+
var axis = this,
|
|
330
|
+
grid = axis.grid,
|
|
331
|
+
options = axis.options,
|
|
332
|
+
gridOptions = options.grid || {};
|
|
333
|
+
if (gridOptions.enabled === true) {
|
|
334
|
+
var min = axis.min || 0,
|
|
335
|
+
max = axis.max || 0;
|
|
336
|
+
// @todo acutual label padding (top, bottom, left, right)
|
|
337
|
+
axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
|
|
338
|
+
// Remove right wall before rendering if updating
|
|
339
|
+
if (axis.rightWall) {
|
|
340
|
+
axis.rightWall.destroy();
|
|
341
|
+
}
|
|
342
|
+
/*
|
|
343
|
+
Draw an extra axis line on outer axes
|
|
344
|
+
>
|
|
345
|
+
Make this: |______|______|______|___
|
|
340
346
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
}
|
|
361
|
-
else {
|
|
362
|
-
startPoint[1] += distance;
|
|
363
|
-
endPoint[1] += distance;
|
|
364
|
-
}
|
|
347
|
+
> _________________________
|
|
348
|
+
Into this: |______|______|______|__|
|
|
349
|
+
*/
|
|
350
|
+
if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
|
|
351
|
+
var lineWidth = options.lineWidth;
|
|
352
|
+
if (lineWidth) {
|
|
353
|
+
var linePath = axis.getLinePath(lineWidth),
|
|
354
|
+
startPoint = linePath[0],
|
|
355
|
+
endPoint = linePath[1],
|
|
356
|
+
// Negate distance if top or left axis
|
|
357
|
+
// Subtract 1px to draw the line at the end of the tick
|
|
358
|
+
tickLength = (axis.tickSize('tick') || [1])[0],
|
|
359
|
+
distance = (tickLength - 1) * ((axis.side === GridAxisSide.top ||
|
|
360
|
+
axis.side === GridAxisSide.left) ? -1 : 1);
|
|
361
|
+
// If axis is horizontal, reposition line path vertically
|
|
362
|
+
if (startPoint[0] === 'M' && endPoint[0] === 'L') {
|
|
363
|
+
if (axis.horiz) {
|
|
364
|
+
startPoint[2] += distance;
|
|
365
|
+
endPoint[2] += distance;
|
|
365
366
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
var upperBorderStartPoint = startPoint,
|
|
370
|
-
upperBorderEndPoint = [
|
|
371
|
-
'L',
|
|
372
|
-
axis.left,
|
|
373
|
-
startPoint[2] || 0
|
|
374
|
-
],
|
|
375
|
-
upperBorderPath = [
|
|
376
|
-
upperBorderStartPoint,
|
|
377
|
-
upperBorderEndPoint
|
|
378
|
-
],
|
|
379
|
-
lowerBorderEndPoint = [
|
|
380
|
-
'L',
|
|
381
|
-
axis.chart.chartWidth - axis.chart.marginRight,
|
|
382
|
-
axis.toPixels(max + axis.tickmarkOffset)
|
|
383
|
-
],
|
|
384
|
-
lowerBorderStartPoint = [
|
|
385
|
-
'M',
|
|
386
|
-
endPoint[1] || 0,
|
|
387
|
-
axis.toPixels(max + axis.tickmarkOffset)
|
|
388
|
-
],
|
|
389
|
-
lowerBorderPath = [
|
|
390
|
-
lowerBorderStartPoint,
|
|
391
|
-
lowerBorderEndPoint
|
|
392
|
-
];
|
|
393
|
-
if (!axis.grid.upperBorder && min % 1 !== 0) {
|
|
394
|
-
axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
|
|
395
|
-
}
|
|
396
|
-
if (axis.grid.upperBorder) {
|
|
397
|
-
axis.grid.upperBorder.attr({
|
|
398
|
-
stroke: options.lineColor,
|
|
399
|
-
'stroke-width': options.lineWidth
|
|
400
|
-
});
|
|
401
|
-
axis.grid.upperBorder.animate({
|
|
402
|
-
d: upperBorderPath
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
if (!axis.grid.lowerBorder && max % 1 !== 0) {
|
|
406
|
-
axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
|
|
407
|
-
}
|
|
408
|
-
if (axis.grid.lowerBorder) {
|
|
409
|
-
axis.grid.lowerBorder.attr({
|
|
410
|
-
stroke: options.lineColor,
|
|
411
|
-
'stroke-width': options.lineWidth
|
|
412
|
-
});
|
|
413
|
-
axis.grid.lowerBorder.animate({
|
|
414
|
-
d: lowerBorderPath
|
|
415
|
-
});
|
|
416
|
-
}
|
|
367
|
+
else {
|
|
368
|
+
startPoint[1] += distance;
|
|
369
|
+
endPoint[1] += distance;
|
|
417
370
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
371
|
+
}
|
|
372
|
+
// If it doesn't exist, add an upper and lower border
|
|
373
|
+
// for the vertical grid axis.
|
|
374
|
+
if (!axis.horiz && axis.chart.marginRight) {
|
|
375
|
+
var upperBorderStartPoint = startPoint,
|
|
376
|
+
upperBorderEndPoint = [
|
|
377
|
+
'L',
|
|
378
|
+
axis.left,
|
|
379
|
+
startPoint[2] || 0
|
|
380
|
+
],
|
|
381
|
+
upperBorderPath = [
|
|
382
|
+
upperBorderStartPoint,
|
|
383
|
+
upperBorderEndPoint
|
|
384
|
+
],
|
|
385
|
+
lowerBorderEndPoint = [
|
|
386
|
+
'L',
|
|
387
|
+
axis.chart.chartWidth - axis.chart.marginRight,
|
|
388
|
+
axis.toPixels(max + axis.tickmarkOffset)
|
|
389
|
+
],
|
|
390
|
+
lowerBorderStartPoint = [
|
|
391
|
+
'M',
|
|
392
|
+
endPoint[1] || 0,
|
|
393
|
+
axis.toPixels(max + axis.tickmarkOffset)
|
|
394
|
+
],
|
|
395
|
+
lowerBorderPath = [
|
|
396
|
+
lowerBorderStartPoint,
|
|
397
|
+
lowerBorderEndPoint
|
|
398
|
+
];
|
|
399
|
+
if (!axis.grid.upperBorder && min % 1 !== 0) {
|
|
400
|
+
axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
|
|
422
401
|
}
|
|
423
|
-
|
|
424
|
-
axis.grid.
|
|
402
|
+
if (axis.grid.upperBorder) {
|
|
403
|
+
axis.grid.upperBorder.attr({
|
|
404
|
+
stroke: options.lineColor,
|
|
405
|
+
'stroke-width': options.lineWidth
|
|
406
|
+
});
|
|
407
|
+
axis.grid.upperBorder.animate({
|
|
408
|
+
d: upperBorderPath
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
if (!axis.grid.lowerBorder && max % 1 !== 0) {
|
|
412
|
+
axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
|
|
413
|
+
}
|
|
414
|
+
if (axis.grid.lowerBorder) {
|
|
415
|
+
axis.grid.lowerBorder.attr({
|
|
425
416
|
stroke: options.lineColor,
|
|
426
417
|
'stroke-width': options.lineWidth
|
|
427
418
|
});
|
|
428
|
-
axis.grid.
|
|
429
|
-
d:
|
|
419
|
+
axis.grid.lowerBorder.animate({
|
|
420
|
+
d: lowerBorderPath
|
|
430
421
|
});
|
|
431
422
|
}
|
|
432
|
-
// show or hide the line depending on options.showEmpty
|
|
433
|
-
axis.axisLine[axis.showAxis ? 'show' : 'hide']();
|
|
434
423
|
}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
// Manipulate the tick mark visibility
|
|
440
|
-
// based on the axis.max- allows smooth scrolling.
|
|
441
|
-
if (!axis.horiz &&
|
|
442
|
-
axis.chart.hasRendered &&
|
|
443
|
-
(axis.scrollbar ||
|
|
444
|
-
(axis.linkedParent && axis.linkedParent.scrollbar))) {
|
|
445
|
-
var tickmarkOffset = axis.tickmarkOffset,
|
|
446
|
-
lastTick = axis.tickPositions[axis.tickPositions.length - 1],
|
|
447
|
-
firstTick = axis.tickPositions[0];
|
|
448
|
-
var label = void 0,
|
|
449
|
-
tickMark = void 0;
|
|
450
|
-
while ((label = axis.hiddenLabels.pop()) && label.element) {
|
|
451
|
-
label.show(); // #15453
|
|
424
|
+
// Render an extra line parallel to the existing axes, to
|
|
425
|
+
// close the grid.
|
|
426
|
+
if (!axis.grid.axisLineExtra) {
|
|
427
|
+
axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
|
|
452
428
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
429
|
+
else {
|
|
430
|
+
axis.grid.axisLineExtra.attr({
|
|
431
|
+
stroke: options.lineColor,
|
|
432
|
+
'stroke-width': options.lineWidth
|
|
433
|
+
});
|
|
434
|
+
axis.grid.axisLineExtra.animate({
|
|
435
|
+
d: linePath
|
|
436
|
+
});
|
|
456
437
|
}
|
|
457
|
-
//
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
438
|
+
// show or hide the line depending on options.showEmpty
|
|
439
|
+
axis.axisLine[axis.showAxis ? 'show' : 'hide']();
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
(grid && grid.columns || []).forEach(function (column) { return column.render(); });
|
|
443
|
+
// Manipulate the tick mark visibility
|
|
444
|
+
// based on the axis.max- allows smooth scrolling.
|
|
445
|
+
if (!axis.horiz &&
|
|
446
|
+
axis.chart.hasRendered &&
|
|
447
|
+
(axis.scrollbar ||
|
|
448
|
+
(axis.linkedParent && axis.linkedParent.scrollbar))) {
|
|
449
|
+
var tickmarkOffset = axis.tickmarkOffset,
|
|
450
|
+
lastTick = axis.tickPositions[axis.tickPositions.length - 1],
|
|
451
|
+
firstTick = axis.tickPositions[0];
|
|
452
|
+
var label = void 0,
|
|
453
|
+
tickMark = void 0;
|
|
454
|
+
while ((label = axis.hiddenLabels.pop()) && label.element) {
|
|
455
|
+
label.show(); // #15453
|
|
456
|
+
}
|
|
457
|
+
while ((tickMark = axis.hiddenMarks.pop()) &&
|
|
458
|
+
tickMark.element) {
|
|
459
|
+
tickMark.show(); // #16439
|
|
460
|
+
}
|
|
461
|
+
// Hide/show firts tick label.
|
|
462
|
+
label = axis.ticks[firstTick].label;
|
|
463
|
+
if (label) {
|
|
464
|
+
if (min - firstTick > tickmarkOffset) {
|
|
465
|
+
axis.hiddenLabels.push(label.hide());
|
|
466
466
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (label) {
|
|
470
|
-
if (lastTick - max > tickmarkOffset) {
|
|
471
|
-
axis.hiddenLabels.push(label.hide());
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
label.show();
|
|
475
|
-
}
|
|
467
|
+
else {
|
|
468
|
+
label.show();
|
|
476
469
|
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
470
|
+
}
|
|
471
|
+
// Hide/show last tick mark/label.
|
|
472
|
+
label = axis.ticks[lastTick].label;
|
|
473
|
+
if (label) {
|
|
474
|
+
if (lastTick - max > tickmarkOffset) {
|
|
475
|
+
axis.hiddenLabels.push(label.hide());
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
label.show();
|
|
482
479
|
}
|
|
483
480
|
}
|
|
481
|
+
var mark = axis.ticks[lastTick].mark;
|
|
482
|
+
if (mark &&
|
|
483
|
+
lastTick - max < tickmarkOffset &&
|
|
484
|
+
lastTick - max > 0 && axis.ticks[lastTick].isLast) {
|
|
485
|
+
axis.hiddenMarks.push(mark.hide());
|
|
486
|
+
}
|
|
484
487
|
}
|
|
485
488
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* @private
|
|
492
|
+
*/
|
|
493
|
+
function onAfterSetAxisTranslation() {
|
|
494
|
+
var axis = this;
|
|
495
|
+
var tickInfo = axis.tickPositions && axis.tickPositions.info;
|
|
496
|
+
var options = axis.options;
|
|
497
|
+
var gridOptions = options.grid || {};
|
|
498
|
+
var userLabels = axis.userOptions.labels || {};
|
|
499
|
+
// Fire this only for the Gantt type chart, #14868.
|
|
500
|
+
if (gridOptions.enabled) {
|
|
501
|
+
if (axis.horiz) {
|
|
502
|
+
axis.series.forEach(function (series) {
|
|
503
|
+
series.options.pointRange = 0;
|
|
504
|
+
});
|
|
505
|
+
// Lower level time ticks, like hours or minutes, represent
|
|
506
|
+
// points in time and not ranges. These should be aligned
|
|
507
|
+
// left in the grid cell by default. The same applies to
|
|
508
|
+
// years of higher order.
|
|
509
|
+
if (tickInfo &&
|
|
510
|
+
options.dateTimeLabelFormats &&
|
|
511
|
+
options.labels &&
|
|
512
|
+
!defined(userLabels.align) &&
|
|
513
|
+
(options.dateTimeLabelFormats[tickInfo.unitName]
|
|
514
|
+
.range === false ||
|
|
515
|
+
tickInfo.count > 1 // years
|
|
516
|
+
)) {
|
|
517
|
+
options.labels.align = 'left';
|
|
518
|
+
if (!defined(userLabels.x)) {
|
|
519
|
+
options.labels.x = 3;
|
|
517
520
|
}
|
|
518
521
|
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
// Don't trim ticks which not in min/max range but
|
|
525
|
+
// they are still in the min/max plus tickInterval.
|
|
526
|
+
if (this.options.type !== 'treegrid' &&
|
|
527
|
+
axis.grid &&
|
|
528
|
+
axis.grid.columns) {
|
|
529
|
+
this.minPointOffset = this.tickInterval;
|
|
527
530
|
}
|
|
528
531
|
}
|
|
529
532
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
day: {
|
|
553
|
-
list: ['%A, %e. %B', '%a, %e. %b', '%E']
|
|
554
|
-
},
|
|
555
|
-
week: {
|
|
556
|
-
list: ['Week %W', 'W%W']
|
|
557
|
-
},
|
|
558
|
-
month: {
|
|
559
|
-
list: ['%B', '%b', '%o']
|
|
560
|
-
}
|
|
561
|
-
},
|
|
562
|
-
grid: {
|
|
563
|
-
borderWidth: 1
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Creates a left and right wall on horizontal axes:
|
|
536
|
+
* - Places leftmost tick at the start of the axis, to create a left
|
|
537
|
+
* wall
|
|
538
|
+
* - Ensures that the rightmost tick is at the end of the axis, to
|
|
539
|
+
* create a right wall.
|
|
540
|
+
* @private
|
|
541
|
+
*/
|
|
542
|
+
function onAfterSetOptions(e) {
|
|
543
|
+
var options = this.options,
|
|
544
|
+
userOptions = e.userOptions,
|
|
545
|
+
gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
|
|
546
|
+
var gridAxisOptions;
|
|
547
|
+
if (gridOptions.enabled === true) {
|
|
548
|
+
// Merge the user options into default grid axis options so
|
|
549
|
+
// that when a user option is set, it takes presedence.
|
|
550
|
+
gridAxisOptions = merge(true, {
|
|
551
|
+
className: ('highcharts-grid-axis ' + (userOptions.className || '')),
|
|
552
|
+
dateTimeLabelFormats: {
|
|
553
|
+
hour: {
|
|
554
|
+
list: ['%H:%M', '%H']
|
|
564
555
|
},
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
style: {
|
|
568
|
-
fontSize: '13px'
|
|
569
|
-
}
|
|
556
|
+
day: {
|
|
557
|
+
list: ['%A, %e. %B', '%a, %e. %b', '%E']
|
|
570
558
|
},
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
text: null,
|
|
574
|
-
reserveSpace: false,
|
|
575
|
-
rotation: 0
|
|
559
|
+
week: {
|
|
560
|
+
list: ['Week %W', 'W%W']
|
|
576
561
|
},
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
// two days.
|
|
580
|
-
units: [[
|
|
581
|
-
'millisecond',
|
|
582
|
-
[1, 10, 100]
|
|
583
|
-
], [
|
|
584
|
-
'second',
|
|
585
|
-
[1, 10]
|
|
586
|
-
], [
|
|
587
|
-
'minute',
|
|
588
|
-
[1, 5, 15]
|
|
589
|
-
], [
|
|
590
|
-
'hour',
|
|
591
|
-
[1, 6]
|
|
592
|
-
], [
|
|
593
|
-
'day',
|
|
594
|
-
[1]
|
|
595
|
-
], [
|
|
596
|
-
'week',
|
|
597
|
-
[1]
|
|
598
|
-
], [
|
|
599
|
-
'month',
|
|
600
|
-
[1]
|
|
601
|
-
], [
|
|
602
|
-
'year',
|
|
603
|
-
null
|
|
604
|
-
]]
|
|
605
|
-
}, userOptions);
|
|
606
|
-
// X-axis specific options
|
|
607
|
-
if (this.coll === 'xAxis') {
|
|
608
|
-
// For linked axes, tickPixelInterval is used only if
|
|
609
|
-
// the tickPositioner below doesn't run or returns
|
|
610
|
-
// undefined (like multiple years)
|
|
611
|
-
if (defined(userOptions.linkedTo) &&
|
|
612
|
-
!defined(userOptions.tickPixelInterval)) {
|
|
613
|
-
gridAxisOptions.tickPixelInterval = 350;
|
|
562
|
+
month: {
|
|
563
|
+
list: ['%B', '%b', '%o']
|
|
614
564
|
}
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
!defined(userOptions.tickInterval)) {
|
|
624
|
-
gridAxisOptions.tickPositioner = function (min, max) {
|
|
625
|
-
var parentInfo = (this.linkedParent &&
|
|
626
|
-
this.linkedParent.tickPositions &&
|
|
627
|
-
this.linkedParent.tickPositions.info);
|
|
628
|
-
if (parentInfo) {
|
|
629
|
-
var units = (gridAxisOptions.units || []);
|
|
630
|
-
var unitIdx = void 0,
|
|
631
|
-
count = void 0,
|
|
632
|
-
unitName = void 0;
|
|
633
|
-
for (var i = 0; i < units.length; i++) {
|
|
634
|
-
if (units[i][0] ===
|
|
635
|
-
parentInfo.unitName) {
|
|
636
|
-
unitIdx = i;
|
|
637
|
-
break;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
// Get the first allowed count on the next
|
|
641
|
-
// unit.
|
|
642
|
-
if (units[unitIdx + 1]) {
|
|
643
|
-
unitName = units[unitIdx + 1][0];
|
|
644
|
-
count =
|
|
645
|
-
(units[unitIdx + 1][1] || [1])[0];
|
|
646
|
-
// In case the base X axis shows years, make
|
|
647
|
-
// the secondary axis show ten times the
|
|
648
|
-
// years (#11427)
|
|
649
|
-
}
|
|
650
|
-
else if (parentInfo.unitName === 'year') {
|
|
651
|
-
unitName = 'year';
|
|
652
|
-
count = parentInfo.count * 10;
|
|
653
|
-
}
|
|
654
|
-
var unitRange = timeUnits[unitName];
|
|
655
|
-
this.tickInterval = unitRange * count;
|
|
656
|
-
return this.getTimeTicks({
|
|
657
|
-
unitRange: unitRange,
|
|
658
|
-
count: count,
|
|
659
|
-
unitName: unitName
|
|
660
|
-
}, min, max, this.options.startOfWeek);
|
|
661
|
-
}
|
|
662
|
-
};
|
|
565
|
+
},
|
|
566
|
+
grid: {
|
|
567
|
+
borderWidth: 1
|
|
568
|
+
},
|
|
569
|
+
labels: {
|
|
570
|
+
padding: 2,
|
|
571
|
+
style: {
|
|
572
|
+
fontSize: '13px'
|
|
663
573
|
}
|
|
574
|
+
},
|
|
575
|
+
margin: 0,
|
|
576
|
+
title: {
|
|
577
|
+
text: null,
|
|
578
|
+
reserveSpace: false,
|
|
579
|
+
rotation: 0
|
|
580
|
+
},
|
|
581
|
+
// In a grid axis, only allow one unit of certain types,
|
|
582
|
+
// for example we shouln't have one grid cell spanning
|
|
583
|
+
// two days.
|
|
584
|
+
units: [[
|
|
585
|
+
'millisecond',
|
|
586
|
+
[1, 10, 100]
|
|
587
|
+
], [
|
|
588
|
+
'second',
|
|
589
|
+
[1, 10]
|
|
590
|
+
], [
|
|
591
|
+
'minute',
|
|
592
|
+
[1, 5, 15]
|
|
593
|
+
], [
|
|
594
|
+
'hour',
|
|
595
|
+
[1, 6]
|
|
596
|
+
], [
|
|
597
|
+
'day',
|
|
598
|
+
[1]
|
|
599
|
+
], [
|
|
600
|
+
'week',
|
|
601
|
+
[1]
|
|
602
|
+
], [
|
|
603
|
+
'month',
|
|
604
|
+
[1]
|
|
605
|
+
], [
|
|
606
|
+
'year',
|
|
607
|
+
null
|
|
608
|
+
]]
|
|
609
|
+
}, userOptions);
|
|
610
|
+
// X-axis specific options
|
|
611
|
+
if (this.coll === 'xAxis') {
|
|
612
|
+
// For linked axes, tickPixelInterval is used only if
|
|
613
|
+
// the tickPositioner below doesn't run or returns
|
|
614
|
+
// undefined (like multiple years)
|
|
615
|
+
if (defined(userOptions.linkedTo) &&
|
|
616
|
+
!defined(userOptions.tickPixelInterval)) {
|
|
617
|
+
gridAxisOptions.tickPixelInterval = 350;
|
|
664
618
|
}
|
|
665
|
-
//
|
|
666
|
-
|
|
667
|
-
if (
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
619
|
+
// For the secondary grid axis, use the primary axis'
|
|
620
|
+
// tick intervals and return ticks one level higher.
|
|
621
|
+
if (
|
|
622
|
+
// Check for tick pixel interval in options
|
|
623
|
+
!defined(userOptions.tickPixelInterval) &&
|
|
624
|
+
// Only for linked axes
|
|
625
|
+
defined(userOptions.linkedTo) &&
|
|
626
|
+
!defined(userOptions.tickPositioner) &&
|
|
627
|
+
!defined(userOptions.tickInterval)) {
|
|
628
|
+
gridAxisOptions.tickPositioner = function (min, max) {
|
|
629
|
+
var parentInfo = (this.linkedParent &&
|
|
630
|
+
this.linkedParent.tickPositions &&
|
|
631
|
+
this.linkedParent.tickPositions.info);
|
|
632
|
+
if (parentInfo) {
|
|
633
|
+
var units = (gridAxisOptions.units || []);
|
|
634
|
+
var unitIdx = void 0,
|
|
635
|
+
count = 1,
|
|
636
|
+
unitName = 'year';
|
|
637
|
+
for (var i = 0; i < units.length; i++) {
|
|
638
|
+
var unit_1 = units[i];
|
|
639
|
+
if (unit_1 && unit_1[0] === parentInfo.unitName) {
|
|
640
|
+
unitIdx = i;
|
|
641
|
+
break;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
// Get the first allowed count on the next unit.
|
|
645
|
+
var unit = (isNumber(unitIdx) && units[unitIdx + 1]);
|
|
646
|
+
if (unit) {
|
|
647
|
+
unitName = unit[0] || 'year';
|
|
648
|
+
var counts = unit[1];
|
|
649
|
+
count = counts && counts[0] || 1;
|
|
650
|
+
// In case the base X axis shows years, make the
|
|
651
|
+
// secondary axis show ten times the years (#11427)
|
|
652
|
+
}
|
|
653
|
+
else if (parentInfo.unitName === 'year') {
|
|
654
|
+
// unitName is 'year'
|
|
655
|
+
count = parentInfo.count * 10;
|
|
656
|
+
}
|
|
657
|
+
var unitRange = timeUnits[unitName];
|
|
658
|
+
this.tickInterval = unitRange * count;
|
|
659
|
+
return this.chart.time.getTimeTicks({ unitRange: unitRange, count: count, unitName: unitName }, min, max, this.options.startOfWeek);
|
|
660
|
+
}
|
|
661
|
+
};
|
|
682
662
|
}
|
|
683
663
|
}
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
664
|
+
// Now merge the combined options into the axis options
|
|
665
|
+
merge(true, this.options, gridAxisOptions);
|
|
666
|
+
if (this.horiz) {
|
|
667
|
+
/* _________________________
|
|
668
|
+
Make this: ___|_____|_____|_____|__|
|
|
669
|
+
^ ^
|
|
670
|
+
_________________________
|
|
671
|
+
Into this: |_____|_____|_____|_____|
|
|
672
|
+
^ ^ */
|
|
673
|
+
options.minPadding = pick(userOptions.minPadding, 0);
|
|
674
|
+
options.maxPadding = pick(userOptions.maxPadding, 0);
|
|
675
|
+
}
|
|
676
|
+
// If borderWidth is set, then use its value for tick and
|
|
677
|
+
// line width.
|
|
678
|
+
if (isNumber(options.grid.borderWidth)) {
|
|
679
|
+
options.tickWidth = options.lineWidth =
|
|
680
|
+
gridOptions.borderWidth;
|
|
697
681
|
}
|
|
698
682
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* @private
|
|
686
|
+
*/
|
|
687
|
+
function onAfterSetOptions2(e) {
|
|
688
|
+
var axis = this;
|
|
689
|
+
var userOptions = e.userOptions;
|
|
690
|
+
var gridOptions = userOptions && userOptions.grid || {};
|
|
691
|
+
var columns = gridOptions.columns;
|
|
692
|
+
// Add column options to the parent axis. Children has their column
|
|
693
|
+
// options set on init in onGridAxisAfterInit.
|
|
694
|
+
if (gridOptions.enabled && columns) {
|
|
695
|
+
merge(true, axis.options, columns[columns.length - 1]);
|
|
708
696
|
}
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Handle columns and setScale.
|
|
700
|
+
* @private
|
|
701
|
+
*/
|
|
702
|
+
function onAfterSetScale() {
|
|
703
|
+
var axis = this;
|
|
704
|
+
(axis.grid.columns || []).forEach(function (column) { return column.setScale(); });
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Draw vertical axis ticks extra long to create cell floors and roofs.
|
|
708
|
+
* Overrides the tickLength for vertical axes.
|
|
709
|
+
* @private
|
|
710
|
+
*/
|
|
711
|
+
function onAfterTickSize(e) {
|
|
712
|
+
var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
|
|
713
|
+
var _a = this,
|
|
714
|
+
horiz = _a.horiz,
|
|
715
|
+
maxLabelDimensions = _a.maxLabelDimensions,
|
|
716
|
+
_b = _a.options.grid,
|
|
717
|
+
gridOptions = _b === void 0 ? {} : _b;
|
|
718
|
+
if (gridOptions.enabled && maxLabelDimensions) {
|
|
719
|
+
var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
|
|
720
|
+
var distance = horiz ?
|
|
721
|
+
(gridOptions.cellHeight ||
|
|
722
|
+
labelPadding + maxLabelDimensions.height) :
|
|
723
|
+
labelPadding + maxLabelDimensions.width;
|
|
724
|
+
if (isArray(e.tickSize)) {
|
|
725
|
+
e.tickSize[0] = distance;
|
|
726
|
+
}
|
|
727
|
+
else {
|
|
728
|
+
e.tickSize = [distance, 0];
|
|
733
729
|
}
|
|
734
730
|
}
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* @private
|
|
734
|
+
*/
|
|
735
|
+
function onChartAfterSetChartSize() {
|
|
736
|
+
this.axes.forEach(function (axis) {
|
|
737
|
+
(axis.grid && axis.grid.columns || []).forEach(function (column) {
|
|
738
|
+
column.setAxisSize();
|
|
739
|
+
column.setAxisTranslation();
|
|
744
740
|
});
|
|
741
|
+
});
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* @private
|
|
745
|
+
*/
|
|
746
|
+
function onDestroy(e) {
|
|
747
|
+
var grid = this.grid;
|
|
748
|
+
(grid.columns || []).forEach(function (column) { return column.destroy(e.keepEvents); });
|
|
749
|
+
grid.columns = void 0;
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Wraps axis init to draw cell walls on vertical axes.
|
|
753
|
+
* @private
|
|
754
|
+
*/
|
|
755
|
+
function onInit(e) {
|
|
756
|
+
var axis = this;
|
|
757
|
+
var userOptions = e.userOptions || {};
|
|
758
|
+
var gridOptions = userOptions.grid || {};
|
|
759
|
+
if (gridOptions.enabled && defined(gridOptions.borderColor)) {
|
|
760
|
+
userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
|
|
745
761
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
*/
|
|
749
|
-
function onDestroy(e) {
|
|
750
|
-
var grid = this.grid;
|
|
751
|
-
(grid.columns || []).forEach(function (column) {
|
|
752
|
-
column.destroy(e.keepEvents);
|
|
753
|
-
});
|
|
754
|
-
grid.columns = void 0;
|
|
762
|
+
if (!axis.grid) {
|
|
763
|
+
axis.grid = new GridAxisAdditions(axis);
|
|
755
764
|
}
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
765
|
+
axis.hiddenLabels = [];
|
|
766
|
+
axis.hiddenMarks = [];
|
|
767
|
+
}
|
|
768
|
+
/**
|
|
769
|
+
* Center tick labels in cells.
|
|
770
|
+
* @private
|
|
771
|
+
*/
|
|
772
|
+
function onTickAfterGetLabelPosition(e) {
|
|
773
|
+
var tick = this,
|
|
774
|
+
label = tick.label,
|
|
775
|
+
axis = tick.axis,
|
|
776
|
+
reversed = axis.reversed,
|
|
777
|
+
chart = axis.chart,
|
|
778
|
+
options = axis.options,
|
|
779
|
+
gridOptions = options.grid || {},
|
|
780
|
+
labelOpts = axis.options.labels,
|
|
781
|
+
align = labelOpts.align,
|
|
782
|
+
// verticalAlign is currently not supported for axis.labels.
|
|
783
|
+
verticalAlign = 'middle', // labelOpts.verticalAlign,
|
|
784
|
+
side = GridAxisSide[axis.side],
|
|
785
|
+
tickmarkOffset = e.tickmarkOffset,
|
|
786
|
+
tickPositions = axis.tickPositions,
|
|
787
|
+
tickPos = tick.pos - tickmarkOffset,
|
|
788
|
+
nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
|
|
789
|
+
tickPositions[e.index + 1] - tickmarkOffset :
|
|
790
|
+
(axis.max || 0) + tickmarkOffset),
|
|
791
|
+
tickSize = axis.tickSize('tick'),
|
|
792
|
+
tickWidth = tickSize ? tickSize[0] : 0,
|
|
793
|
+
crispCorr = tickSize ? tickSize[1] / 2 : 0;
|
|
794
|
+
var labelHeight,
|
|
795
|
+
lblMetrics,
|
|
796
|
+
lines,
|
|
797
|
+
bottom,
|
|
798
|
+
top,
|
|
799
|
+
left,
|
|
800
|
+
right;
|
|
801
|
+
// Only center tick labels in grid axes
|
|
802
|
+
if (gridOptions.enabled === true) {
|
|
803
|
+
// Calculate top and bottom positions of the cell.
|
|
804
|
+
if (side === 'top') {
|
|
805
|
+
bottom = axis.top + axis.offset;
|
|
806
|
+
top = bottom - tickWidth;
|
|
766
807
|
}
|
|
767
|
-
if (
|
|
768
|
-
|
|
808
|
+
else if (side === 'bottom') {
|
|
809
|
+
top = chart.chartHeight - axis.bottom + axis.offset;
|
|
810
|
+
bottom = top + tickWidth;
|
|
769
811
|
}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* Center tick labels in cells.
|
|
775
|
-
* @private
|
|
776
|
-
*/
|
|
777
|
-
function onTickAfterGetLabelPosition(e) {
|
|
778
|
-
var tick = this,
|
|
779
|
-
label = tick.label,
|
|
780
|
-
axis = tick.axis,
|
|
781
|
-
reversed = axis.reversed,
|
|
782
|
-
chart = axis.chart,
|
|
783
|
-
options = axis.options,
|
|
784
|
-
gridOptions = options.grid || {},
|
|
785
|
-
labelOpts = axis.options.labels,
|
|
786
|
-
align = labelOpts.align,
|
|
787
|
-
// verticalAlign is currently not supported for axis.labels.
|
|
788
|
-
verticalAlign = 'middle', // labelOpts.verticalAlign,
|
|
789
|
-
side = GridAxis.Side[axis.side],
|
|
790
|
-
tickmarkOffset = e.tickmarkOffset,
|
|
791
|
-
tickPositions = axis.tickPositions,
|
|
792
|
-
tickPos = tick.pos - tickmarkOffset,
|
|
793
|
-
nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
|
|
794
|
-
tickPositions[e.index + 1] - tickmarkOffset :
|
|
795
|
-
(axis.max || 0) + tickmarkOffset),
|
|
796
|
-
tickSize = axis.tickSize('tick'),
|
|
797
|
-
tickWidth = tickSize ? tickSize[0] : 0,
|
|
798
|
-
crispCorr = tickSize ? tickSize[1] / 2 : 0;
|
|
799
|
-
var labelHeight,
|
|
800
|
-
lblMetrics,
|
|
801
|
-
lines,
|
|
802
|
-
bottom,
|
|
803
|
-
top,
|
|
804
|
-
left,
|
|
805
|
-
right;
|
|
806
|
-
// Only center tick labels in grid axes
|
|
807
|
-
if (gridOptions.enabled === true) {
|
|
808
|
-
// Calculate top and bottom positions of the cell.
|
|
809
|
-
if (side === 'top') {
|
|
810
|
-
bottom = axis.top + axis.offset;
|
|
811
|
-
top = bottom - tickWidth;
|
|
812
|
-
}
|
|
813
|
-
else if (side === 'bottom') {
|
|
814
|
-
top = chart.chartHeight - axis.bottom + axis.offset;
|
|
815
|
-
bottom = top + tickWidth;
|
|
816
|
-
}
|
|
817
|
-
else {
|
|
818
|
-
bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
|
|
819
|
-
top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
|
|
820
|
-
}
|
|
821
|
-
// Calculate left and right positions of the cell.
|
|
822
|
-
if (side === 'right') {
|
|
823
|
-
left = chart.chartWidth - axis.right + axis.offset;
|
|
824
|
-
right = left + tickWidth;
|
|
825
|
-
}
|
|
826
|
-
else if (side === 'left') {
|
|
827
|
-
right = axis.left + axis.offset;
|
|
828
|
-
left = right - tickWidth;
|
|
829
|
-
}
|
|
830
|
-
else {
|
|
831
|
-
left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
|
|
832
|
-
right = Math.min(// #15742
|
|
833
|
-
Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
|
|
834
|
-
}
|
|
835
|
-
tick.slotWidth = right - left;
|
|
836
|
-
// Calculate the positioning of the label based on
|
|
837
|
-
// alignment.
|
|
838
|
-
e.pos.x = (align === 'left' ?
|
|
839
|
-
left :
|
|
840
|
-
align === 'right' ?
|
|
841
|
-
right :
|
|
842
|
-
left + ((right - left) / 2) // default to center
|
|
843
|
-
);
|
|
844
|
-
e.pos.y = (verticalAlign === 'top' ?
|
|
845
|
-
top :
|
|
846
|
-
verticalAlign === 'bottom' ?
|
|
847
|
-
bottom :
|
|
848
|
-
top + ((bottom - top) / 2) // default to middle
|
|
849
|
-
);
|
|
850
|
-
lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
|
|
851
|
-
labelHeight = label ? label.getBBox().height : 0;
|
|
852
|
-
// Adjustment to y position to align the label correctly.
|
|
853
|
-
// Would be better to have a setter or similar for this.
|
|
854
|
-
if (!labelOpts.useHTML) {
|
|
855
|
-
lines = Math.round(labelHeight / lblMetrics.h);
|
|
856
|
-
e.pos.y += (
|
|
857
|
-
// Center the label
|
|
858
|
-
// TODO: why does this actually center the label?
|
|
859
|
-
((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
|
|
860
|
-
// Adjust for height of additional lines.
|
|
861
|
-
-(((lines - 1) * lblMetrics.h) / 2));
|
|
862
|
-
}
|
|
863
|
-
else {
|
|
864
|
-
e.pos.y += (
|
|
865
|
-
// Readjust yCorr in htmlUpdateTransform
|
|
866
|
-
lblMetrics.b +
|
|
867
|
-
// Adjust for height of html label
|
|
868
|
-
-(labelHeight / 2));
|
|
869
|
-
}
|
|
870
|
-
e.pos.x += (axis.horiz && labelOpts.x) || 0;
|
|
812
|
+
else {
|
|
813
|
+
bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
|
|
814
|
+
top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
|
|
871
815
|
}
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
var point = series && find(series.options.data,
|
|
886
|
-
function (p) {
|
|
887
|
-
return p[axis.isXAxis ? 'x' : 'y'] === value;
|
|
888
|
-
});
|
|
889
|
-
var pointCopy = void 0;
|
|
890
|
-
if (point && series.is('gantt')) {
|
|
891
|
-
// For the Gantt set point aliases to the pointCopy
|
|
892
|
-
// to do not change the original point
|
|
893
|
-
pointCopy = merge(point);
|
|
894
|
-
H.seriesTypes.gantt.prototype.pointClass
|
|
895
|
-
.setGanttPointAliases(pointCopy);
|
|
896
|
-
}
|
|
897
|
-
// Make additional properties available for the
|
|
898
|
-
// formatter
|
|
899
|
-
ctx.isFirst = isFirst;
|
|
900
|
-
ctx.isLast = isLast;
|
|
901
|
-
ctx.point = pointCopy;
|
|
816
|
+
// Calculate left and right positions of the cell.
|
|
817
|
+
if (side === 'right') {
|
|
818
|
+
left = chart.chartWidth - axis.right + axis.offset;
|
|
819
|
+
right = left + tickWidth;
|
|
820
|
+
}
|
|
821
|
+
else if (side === 'left') {
|
|
822
|
+
right = axis.left + axis.offset;
|
|
823
|
+
left = right - tickWidth;
|
|
824
|
+
}
|
|
825
|
+
else {
|
|
826
|
+
left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
|
|
827
|
+
right = Math.min(// #15742
|
|
828
|
+
Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
|
|
902
829
|
}
|
|
830
|
+
tick.slotWidth = right - left;
|
|
831
|
+
// Calculate the positioning of the label based on
|
|
832
|
+
// alignment.
|
|
833
|
+
e.pos.x = (align === 'left' ?
|
|
834
|
+
left :
|
|
835
|
+
align === 'right' ?
|
|
836
|
+
right :
|
|
837
|
+
left + ((right - left) / 2) // default to center
|
|
838
|
+
);
|
|
839
|
+
e.pos.y = (verticalAlign === 'top' ?
|
|
840
|
+
top :
|
|
841
|
+
verticalAlign === 'bottom' ?
|
|
842
|
+
bottom :
|
|
843
|
+
top + ((bottom - top) / 2) // default to middle
|
|
844
|
+
);
|
|
845
|
+
lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
|
|
846
|
+
labelHeight = label ? label.getBBox().height : 0;
|
|
847
|
+
// Adjustment to y position to align the label correctly.
|
|
848
|
+
// Would be better to have a setter or similar for this.
|
|
849
|
+
if (!labelOpts.useHTML) {
|
|
850
|
+
lines = Math.round(labelHeight / lblMetrics.h);
|
|
851
|
+
e.pos.y += (
|
|
852
|
+
// Center the label
|
|
853
|
+
// TODO: why does this actually center the label?
|
|
854
|
+
((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
|
|
855
|
+
// Adjust for height of additional lines.
|
|
856
|
+
-(((lines - 1) * lblMetrics.h) / 2));
|
|
857
|
+
}
|
|
858
|
+
else {
|
|
859
|
+
e.pos.y += (
|
|
860
|
+
// Readjust yCorr in htmlUpdateTransform
|
|
861
|
+
lblMetrics.b +
|
|
862
|
+
// Adjust for height of html label
|
|
863
|
+
-(labelHeight / 2));
|
|
864
|
+
}
|
|
865
|
+
e.pos.x += (axis.horiz && labelOpts.x) || 0;
|
|
903
866
|
}
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
var tickPositions = axis.tickPositions;
|
|
929
|
-
var firstPos = tickPositions[0];
|
|
930
|
-
var lastPos = tickPositions[tickPositions.length - 1];
|
|
931
|
-
var linkedMin = axis.linkedParent && axis.linkedParent.min;
|
|
932
|
-
var linkedMax = axis.linkedParent && axis.linkedParent.max;
|
|
933
|
-
var min = linkedMin || axis.min;
|
|
934
|
-
var max = linkedMax || axis.max;
|
|
935
|
-
var tickInterval = axis.tickInterval;
|
|
936
|
-
var endMoreThanMin = (firstPos < min &&
|
|
937
|
-
firstPos + tickInterval > min);
|
|
938
|
-
var startLessThanMax = (lastPos > max &&
|
|
939
|
-
lastPos - tickInterval < max);
|
|
940
|
-
if (gridOptions.enabled === true &&
|
|
941
|
-
!categoryAxis &&
|
|
942
|
-
(axis.horiz || axis.isLinked)) {
|
|
943
|
-
if (endMoreThanMin && !options.startOnTick) {
|
|
944
|
-
tickPositions[0] = min;
|
|
945
|
-
}
|
|
946
|
-
if (startLessThanMax && !options.endOnTick) {
|
|
947
|
-
tickPositions[tickPositions.length - 1] = max;
|
|
948
|
-
}
|
|
867
|
+
}
|
|
868
|
+
/**
|
|
869
|
+
* @private
|
|
870
|
+
*/
|
|
871
|
+
function onTickLabelFormat(ctx) {
|
|
872
|
+
var axis = ctx.axis,
|
|
873
|
+
value = ctx.value;
|
|
874
|
+
if (axis.options.grid &&
|
|
875
|
+
axis.options.grid.enabled) {
|
|
876
|
+
var tickPos = axis.tickPositions;
|
|
877
|
+
var series = (axis.linkedParent || axis).series[0];
|
|
878
|
+
var isFirst = value === tickPos[0];
|
|
879
|
+
var isLast = value === tickPos[tickPos.length - 1];
|
|
880
|
+
var point = series && find(series.options.data,
|
|
881
|
+
function (p) {
|
|
882
|
+
return p[axis.isXAxis ? 'x' : 'y'] === value;
|
|
883
|
+
});
|
|
884
|
+
var pointCopy = void 0;
|
|
885
|
+
if (point && series.is('gantt')) {
|
|
886
|
+
// For the Gantt set point aliases to the pointCopy
|
|
887
|
+
// to do not change the original point
|
|
888
|
+
pointCopy = merge(point);
|
|
889
|
+
H.seriesTypes.gantt.prototype.pointClass
|
|
890
|
+
.setGanttPointAliases(pointCopy);
|
|
949
891
|
}
|
|
892
|
+
// Make additional properties available for the
|
|
893
|
+
// formatter
|
|
894
|
+
ctx.isFirst = isFirst;
|
|
895
|
+
ctx.isLast = isLast;
|
|
896
|
+
ctx.point = pointCopy;
|
|
950
897
|
}
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* Makes tick labels which are usually ignored in a linked axis
|
|
901
|
+
* displayed if they are within range of linkedParent.min.
|
|
902
|
+
* ```
|
|
903
|
+
* _____________________________
|
|
904
|
+
* | | | | |
|
|
905
|
+
* Make this: | | 2 | 3 | 4 |
|
|
906
|
+
* |___|_______|_______|_______|
|
|
907
|
+
* ^
|
|
908
|
+
* _____________________________
|
|
909
|
+
* | | | | |
|
|
910
|
+
* Into this: | 1 | 2 | 3 | 4 |
|
|
911
|
+
* |___|_______|_______|_______|
|
|
912
|
+
* ^
|
|
913
|
+
* ```
|
|
914
|
+
* @private
|
|
915
|
+
* @todo Does this function do what the drawing says? Seems to affect
|
|
916
|
+
* ticks and not the labels directly?
|
|
917
|
+
*/
|
|
918
|
+
function onTrimTicks() {
|
|
919
|
+
var axis = this;
|
|
920
|
+
var options = axis.options;
|
|
921
|
+
var gridOptions = options.grid || {};
|
|
922
|
+
var categoryAxis = axis.categories;
|
|
923
|
+
var tickPositions = axis.tickPositions;
|
|
924
|
+
var firstPos = tickPositions[0];
|
|
925
|
+
var lastPos = tickPositions[tickPositions.length - 1];
|
|
926
|
+
var linkedMin = axis.linkedParent && axis.linkedParent.min;
|
|
927
|
+
var linkedMax = axis.linkedParent && axis.linkedParent.max;
|
|
928
|
+
var min = linkedMin || axis.min;
|
|
929
|
+
var max = linkedMax || axis.max;
|
|
930
|
+
var tickInterval = axis.tickInterval;
|
|
931
|
+
var endMoreThanMin = (firstPos < min &&
|
|
932
|
+
firstPos + tickInterval > min);
|
|
933
|
+
var startLessThanMax = (lastPos > max &&
|
|
934
|
+
lastPos - tickInterval < max);
|
|
935
|
+
if (gridOptions.enabled === true &&
|
|
936
|
+
!categoryAxis &&
|
|
937
|
+
(axis.horiz || axis.isLinked)) {
|
|
938
|
+
if (endMoreThanMin && !options.startOnTick) {
|
|
939
|
+
tickPositions[0] = min;
|
|
940
|
+
}
|
|
941
|
+
if (startLessThanMax && !options.endOnTick) {
|
|
942
|
+
tickPositions[tickPositions.length - 1] = max;
|
|
961
943
|
}
|
|
962
|
-
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
/**
|
|
947
|
+
* Avoid altering tickInterval when reserving space.
|
|
948
|
+
* @private
|
|
949
|
+
*/
|
|
950
|
+
function wrapUnsquish(proceed) {
|
|
951
|
+
var axis = this;
|
|
952
|
+
var _a = axis.options.grid,
|
|
953
|
+
gridOptions = _a === void 0 ? {} : _a;
|
|
954
|
+
if (gridOptions.enabled === true && axis.categories) {
|
|
955
|
+
return axis.tickInterval;
|
|
956
|
+
}
|
|
957
|
+
return proceed.apply(axis, argsToArray(arguments));
|
|
958
|
+
}
|
|
959
|
+
/* *
|
|
960
|
+
*
|
|
961
|
+
* Class
|
|
962
|
+
*
|
|
963
|
+
* */
|
|
964
|
+
/**
|
|
965
|
+
* Additions for grid axes.
|
|
966
|
+
* @private
|
|
967
|
+
* @class
|
|
968
|
+
*/
|
|
969
|
+
var GridAxisAdditions = /** @class */ (function () {
|
|
970
|
+
/* *
|
|
971
|
+
*
|
|
972
|
+
* Constructors
|
|
973
|
+
*
|
|
974
|
+
* */
|
|
975
|
+
function GridAxisAdditions(axis) {
|
|
976
|
+
this.axis = axis;
|
|
963
977
|
}
|
|
964
978
|
/* *
|
|
979
|
+
*
|
|
980
|
+
* Functions
|
|
981
|
+
*
|
|
982
|
+
* */
|
|
983
|
+
/**
|
|
984
|
+
* Checks if an axis is the outer axis in its dimension. Since
|
|
985
|
+
* axes are placed outwards in order, the axis with the highest
|
|
986
|
+
* index is the outermost axis.
|
|
965
987
|
*
|
|
966
|
-
*
|
|
988
|
+
* Example: If there are multiple x-axes at the top of the chart,
|
|
989
|
+
* this function returns true if the axis supplied is the last
|
|
990
|
+
* of the x-axes.
|
|
967
991
|
*
|
|
968
|
-
* */
|
|
969
|
-
/**
|
|
970
|
-
* Additions for grid axes.
|
|
971
992
|
* @private
|
|
972
|
-
*
|
|
993
|
+
*
|
|
994
|
+
* @return {boolean}
|
|
995
|
+
* True if the axis is the outermost axis in its dimension; false if
|
|
996
|
+
* not.
|
|
973
997
|
*/
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
* axes are placed outwards in order, the axis with the highest
|
|
991
|
-
* index is the outermost axis.
|
|
992
|
-
*
|
|
993
|
-
* Example: If there are multiple x-axes at the top of the chart,
|
|
994
|
-
* this function returns true if the axis supplied is the last
|
|
995
|
-
* of the x-axes.
|
|
996
|
-
*
|
|
997
|
-
* @private
|
|
998
|
-
*
|
|
999
|
-
* @return {boolean}
|
|
1000
|
-
* True if the axis is the outermost axis in its dimension; false if
|
|
1001
|
-
* not.
|
|
1002
|
-
*/
|
|
1003
|
-
Additions.prototype.isOuterAxis = function () {
|
|
1004
|
-
var axis = this.axis;
|
|
1005
|
-
var chart = axis.chart;
|
|
1006
|
-
var columnIndex = axis.grid.columnIndex;
|
|
1007
|
-
var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
|
|
1008
|
-
axis.grid.columns);
|
|
1009
|
-
var parentAxis = columnIndex ? axis.linkedParent : axis;
|
|
1010
|
-
var thisIndex = -1,
|
|
1011
|
-
lastIndex = 0;
|
|
1012
|
-
chart[axis.coll].forEach(function (otherAxis, index) {
|
|
1013
|
-
if (otherAxis.side === axis.side &&
|
|
1014
|
-
!otherAxis.options.isInternal) {
|
|
1015
|
-
lastIndex = index;
|
|
1016
|
-
if (otherAxis === parentAxis) {
|
|
1017
|
-
// Get the index of the axis in question
|
|
1018
|
-
thisIndex = index;
|
|
1019
|
-
}
|
|
998
|
+
GridAxisAdditions.prototype.isOuterAxis = function () {
|
|
999
|
+
var axis = this.axis;
|
|
1000
|
+
var chart = axis.chart;
|
|
1001
|
+
var columnIndex = axis.grid.columnIndex;
|
|
1002
|
+
var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
|
|
1003
|
+
axis.grid.columns);
|
|
1004
|
+
var parentAxis = columnIndex ? axis.linkedParent : axis;
|
|
1005
|
+
var thisIndex = -1,
|
|
1006
|
+
lastIndex = 0;
|
|
1007
|
+
(chart[axis.coll] || []).forEach(function (otherAxis, index) {
|
|
1008
|
+
if (otherAxis.side === axis.side &&
|
|
1009
|
+
!otherAxis.options.isInternal) {
|
|
1010
|
+
lastIndex = index;
|
|
1011
|
+
if (otherAxis === parentAxis) {
|
|
1012
|
+
// Get the index of the axis in question
|
|
1013
|
+
thisIndex = index;
|
|
1020
1014
|
}
|
|
1021
|
-
});
|
|
1022
|
-
return (lastIndex === thisIndex &&
|
|
1023
|
-
(isNumber(columnIndex) ?
|
|
1024
|
-
columns.length === columnIndex :
|
|
1025
|
-
true));
|
|
1026
|
-
};
|
|
1027
|
-
/**
|
|
1028
|
-
* Add extra border based on the provided path.
|
|
1029
|
-
* @private
|
|
1030
|
-
* @param {SVGPath} path
|
|
1031
|
-
* The path of the border.
|
|
1032
|
-
* @return {Highcharts.SVGElement}
|
|
1033
|
-
* Border
|
|
1034
|
-
*/
|
|
1035
|
-
Additions.prototype.renderBorder = function (path) {
|
|
1036
|
-
var axis = this.axis,
|
|
1037
|
-
renderer = axis.chart.renderer,
|
|
1038
|
-
options = axis.options,
|
|
1039
|
-
extraBorderLine = renderer.path(path)
|
|
1040
|
-
.addClass('highcharts-axis-line')
|
|
1041
|
-
.add(axis.axisBorder);
|
|
1042
|
-
if (!renderer.styledMode) {
|
|
1043
|
-
extraBorderLine.attr({
|
|
1044
|
-
stroke: options.lineColor,
|
|
1045
|
-
'stroke-width': options.lineWidth,
|
|
1046
|
-
zIndex: 7
|
|
1047
|
-
});
|
|
1048
1015
|
}
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1016
|
+
});
|
|
1017
|
+
return (lastIndex === thisIndex &&
|
|
1018
|
+
(isNumber(columnIndex) ?
|
|
1019
|
+
columns.length === columnIndex :
|
|
1020
|
+
true));
|
|
1021
|
+
};
|
|
1022
|
+
/**
|
|
1023
|
+
* Add extra border based on the provided path.
|
|
1024
|
+
* @private
|
|
1025
|
+
* @param {SVGPath} path
|
|
1026
|
+
* The path of the border.
|
|
1027
|
+
* @return {Highcharts.SVGElement}
|
|
1028
|
+
* Border
|
|
1029
|
+
*/
|
|
1030
|
+
GridAxisAdditions.prototype.renderBorder = function (path) {
|
|
1031
|
+
var axis = this.axis,
|
|
1032
|
+
renderer = axis.chart.renderer,
|
|
1033
|
+
options = axis.options,
|
|
1034
|
+
extraBorderLine = renderer.path(path)
|
|
1035
|
+
.addClass('highcharts-axis-line')
|
|
1036
|
+
.add(axis.axisBorder);
|
|
1037
|
+
if (!renderer.styledMode) {
|
|
1038
|
+
extraBorderLine.attr({
|
|
1039
|
+
stroke: options.lineColor,
|
|
1040
|
+
'stroke-width': options.lineWidth,
|
|
1041
|
+
zIndex: 7
|
|
1042
|
+
});
|
|
1043
|
+
}
|
|
1044
|
+
return extraBorderLine;
|
|
1045
|
+
};
|
|
1046
|
+
return GridAxisAdditions;
|
|
1047
|
+
}());
|
|
1055
1048
|
/* *
|
|
1056
1049
|
*
|
|
1057
1050
|
* Registry
|
|
@@ -1085,6 +1078,9 @@
|
|
|
1085
1078
|
* Default Export
|
|
1086
1079
|
*
|
|
1087
1080
|
* */
|
|
1081
|
+
var GridAxis = {
|
|
1082
|
+
compose: compose
|
|
1083
|
+
};
|
|
1088
1084
|
/* *
|
|
1089
1085
|
*
|
|
1090
1086
|
* API Options
|