highcharts 10.2.0 → 10.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/highcharts.css +10 -20
- package/css/themes/dark-unica.css +10 -20
- package/css/themes/grid-light.css +10 -20
- package/css/themes/sand-signika.css +10 -20
- package/es-modules/Accessibility/Accessibility.js +6 -0
- package/es-modules/Accessibility/Components/LegendComponent.js +8 -8
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -2
- package/es-modules/Accessibility/Options/A11yDefaults.js +1 -1
- package/es-modules/Core/Axis/Axis.js +3 -0
- package/es-modules/Core/Axis/Axis3D.js +1 -1
- package/es-modules/Core/Axis/AxisDefaults.js +1 -1
- package/es-modules/Core/Axis/BrokenAxis.js +1 -1
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +4 -0
- package/es-modules/Core/Axis/NavigatorAxis.js +2 -2
- package/es-modules/Core/Axis/OrdinalAxis.js +2 -2
- package/es-modules/Core/Axis/RadialAxis.js +1 -1
- package/es-modules/Core/Axis/Stacking/StackItem.js +262 -0
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +468 -0
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +732 -0
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +313 -0
- package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
- package/es-modules/Core/Axis/ZAxis.js +73 -70
- package/es-modules/Core/Chart/Chart.js +16 -2
- package/es-modules/Core/Chart/Chart3D.js +2 -2
- package/es-modules/Core/Chart/ChartDefaults.js +151 -2
- package/es-modules/Core/Chart/StockChart.js +5 -3
- package/es-modules/Core/DefaultOptions.js +2 -1
- package/es-modules/Core/Geometry/CircleUtilities.js +4 -4
- package/es-modules/Core/Globals.js +2 -1
- package/es-modules/{Extensions → Core}/Math3D.js +48 -43
- package/es-modules/Core/Navigator.js +24 -7
- package/es-modules/Core/Pointer.js +7 -9
- package/es-modules/Core/Renderer/HTML/AST.js +4 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +103 -163
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +29 -27
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +3 -3
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +1 -1
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +5 -3
- package/es-modules/Core/Scrollbar.js +3 -1
- package/es-modules/Core/Series/DataLabel.js +8 -6
- package/es-modules/Core/Series/Point.js +2 -2
- package/es-modules/Core/Series/Series.js +36 -31
- package/es-modules/Core/Series/Series3D.js +1 -1
- package/es-modules/Core/Series/SeriesDefaults.js +8 -3
- package/es-modules/Core/Series/SeriesRegistry.js +6 -29
- package/es-modules/Core/Tooltip.js +14 -3
- package/es-modules/Core/Utilities.js +1 -3
- package/es-modules/Data/DataConverter.js +5 -0
- package/es-modules/Data/DataPromise.js +1 -1
- package/es-modules/Data/DataSeriesComposition.js +288 -0
- package/es-modules/Data/DataSeriesConverter.js +1 -1
- package/es-modules/Data/DataTable.js +2 -2
- package/es-modules/Data/Modifiers/ChainModifier.js +1 -1
- package/es-modules/Data/Modifiers/DataModifier.js +1 -1
- package/es-modules/Data/Modifiers/GroupModifier.js +1 -1
- package/es-modules/Data/Modifiers/InvertModifier.js +1 -1
- package/es-modules/Data/Modifiers/RangeModifier.js +1 -1
- package/es-modules/Data/Modifiers/SeriesPointsModifier.js +1 -1
- package/es-modules/Data/Modifiers/SortModifier.js +1 -1
- package/es-modules/Data/Parsers/DataParser.js +1 -1
- package/es-modules/Data/Stores/DataStore.js +1 -1
- package/es-modules/Extensions/Annotations/Annotation.js +347 -1156
- package/es-modules/Extensions/Annotations/AnnotationChart.js +291 -0
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +624 -0
- package/es-modules/Extensions/Annotations/ControlPoint.js +89 -64
- package/es-modules/Extensions/Annotations/{Mixins/ControllableMixin.js → Controllables/Controllable.js} +300 -241
- package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +63 -50
- package/es-modules/Extensions/Annotations/Controllables/ControllableDefaults.js +95 -0
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +90 -61
- package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +50 -44
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +95 -78
- package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +167 -51
- package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +53 -52
- package/es-modules/Extensions/Annotations/{Mixins/EventEmitterMixin.js → EventEmitter.js} +136 -116
- package/es-modules/Extensions/Annotations/MockPoint.js +210 -145
- package/es-modules/Extensions/Annotations/NavigationBindings.js +272 -674
- package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +396 -0
- package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +98 -0
- package/es-modules/Extensions/Annotations/Popup/Popup.js +295 -0
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +177 -0
- package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +81 -0
- package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +609 -0
- package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +134 -0
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +10 -14
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +11 -19
- package/es-modules/Extensions/Annotations/Types/ElliottWave.js +10 -10
- package/es-modules/Extensions/Annotations/Types/Fibonacci.js +28 -20
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +63 -63
- package/es-modules/Extensions/Annotations/Types/InfinityLine.js +10 -19
- package/es-modules/Extensions/Annotations/Types/Measure.js +255 -249
- package/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -17
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +20 -17
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +12 -13
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +11 -15
- package/es-modules/Extensions/Boost/Boost.js +320 -15
- package/es-modules/Extensions/Boost/BoostChart.js +245 -0
- package/es-modules/Extensions/Boost/BoostSeries.js +927 -0
- package/es-modules/Extensions/Boost/BoostableMap.js +21 -5
- package/es-modules/Extensions/Boost/Boostables.js +13 -2
- package/es-modules/Extensions/Boost/NamedColors.js +15 -6
- package/es-modules/Extensions/Boost/WGLDrawMode.js +36 -0
- package/es-modules/Extensions/Boost/WGLRenderer.js +288 -295
- package/es-modules/Extensions/Boost/WGLShader.js +370 -376
- package/es-modules/Extensions/Boost/WGLVertexBuffer.js +192 -0
- package/es-modules/Extensions/BoostCanvas.js +62 -46
- package/es-modules/Extensions/Breadcrumbs.js +4 -0
- package/es-modules/Extensions/DataGrouping.js +65 -27
- package/es-modules/Extensions/Debugger/Debugger.js +60 -22
- package/es-modules/Extensions/DraggablePoints.js +4 -3
- package/es-modules/Extensions/Drilldown.js +7 -8
- package/es-modules/Extensions/{ExportData.js → ExportData/ExportData.js} +341 -530
- package/es-modules/Extensions/ExportData/ExportDataDefaults.js +272 -0
- package/es-modules/Extensions/Exporting/Exporting.js +5 -1
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +3 -1
- package/es-modules/Extensions/{FullScreen.js → Exporting/Fullscreen.js} +72 -27
- package/es-modules/Extensions/MarkerClusters.js +2 -0
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +1 -1
- package/es-modules/Extensions/ParallelCoordinates.js +11 -7
- package/es-modules/Extensions/ScrollablePlotArea.js +1 -1
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +2 -2
- package/es-modules/Extensions/Sonification/ChartSonify.js +1 -1
- package/es-modules/Maps/MapPointer.js +1 -1
- package/es-modules/Maps/MapView.js +2 -1
- package/es-modules/Series/{Area3DSeries.js → Area3D/Area3DSeries.js} +42 -20
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +8 -2
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +223 -231
- package/es-modules/Series/Bubble/BubbleLegendItem.js +46 -45
- package/es-modules/Series/Bubble/BubbleSeries.js +85 -66
- package/es-modules/Series/Column/ColumnSeries.js +2 -0
- package/es-modules/Series/Column3D/Column3DComposition.js +2 -2
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +1 -1
- package/es-modules/Series/Cylinder/CylinderComposition.js +1 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +24 -11
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +16 -2
- package/es-modules/Series/DragNodesComposition.js +166 -0
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +1 -1
- package/es-modules/Series/Gantt/GanttSeries.js +1 -1
- package/es-modules/Series/GraphLayoutComposition.js +130 -0
- package/es-modules/Series/Heatmap/HeatmapSeries.js +5 -1
- package/es-modules/Series/Lollipop/LollipopPoint.js +21 -11
- package/es-modules/Series/Lollipop/LollipopSeries.js +15 -10
- package/es-modules/Series/Map/MapSeries.js +6 -1
- package/es-modules/Series/MapBubble/MapBubblePoint.js +15 -17
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +19 -19
- package/es-modules/Series/Networkgraph/EulerIntegration.js +199 -0
- package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +290 -0
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +401 -0
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +545 -0
- package/es-modules/Series/Networkgraph/QuadTree.js +66 -272
- package/es-modules/Series/Networkgraph/QuadTreeNode.js +271 -0
- package/es-modules/Series/Networkgraph/{Layouts.js → ReingoldFruchtermanLayout.js} +240 -259
- package/es-modules/Series/Networkgraph/VerletIntegration.js +193 -0
- package/es-modules/Series/Organization/OrganizationSeries.js +9 -1
- package/es-modules/Series/PackedBubble/PackedBubbleIntegration.js +81 -0
- package/es-modules/Series/PackedBubble/{PackedBubbleComposition.js → PackedBubbleLayout.js} +114 -77
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +2 -2
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +197 -570
- package/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +394 -0
- package/es-modules/Series/Pie/PieSeries.js +3 -1
- package/es-modules/Series/PolarComposition.js +12 -12
- package/es-modules/Series/Sankey/SankeySeries.js +13 -1
- package/es-modules/Series/Scatter/ScatterSeries.js +4 -1
- package/es-modules/Series/Scatter3D/Scatter3DSeries.js +1 -1
- package/es-modules/Series/SeriesOnPointComposition.js +5 -1
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +1 -1
- package/es-modules/Series/Sunburst/SunburstPoint.js +5 -6
- package/es-modules/Series/Sunburst/SunburstSeries.js +24 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +2 -0
- package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
- package/es-modules/Series/Vector/VectorSeries.js +2 -4
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -1
- package/es-modules/Series/Wordcloud/WordcloudUtils.js +1 -1
- package/es-modules/Series/XRange/XRangePoint.js +54 -45
- package/es-modules/Series/XRange/XRangeSeries.js +121 -273
- package/es-modules/Series/XRange/XRangeSeriesDefaults.js +211 -0
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +10 -2
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +5 -0
- package/es-modules/Stock/Indicators/AO/AOIndicator.js +22 -11
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +6 -1
- package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +16 -3
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +15 -2
- package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +6 -2
- package/es-modules/Stock/Indicators/BB/BBIndicator.js +5 -1
- package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +16 -3
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +20 -0
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +15 -1
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +7 -2
- package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +25 -0
- package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +5 -0
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +19 -8
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +10 -0
- package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +34 -15
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +25 -0
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +12 -1
- package/es-modules/Stock/Indicators/LinearRegression/{LinearRegression.js → LinearRegressionIndicator.js} +11 -1
- package/es-modules/Stock/Indicators/LinearRegressionAngle/{LinearRegressionAngle.js → LinearRegressionAngleIndicator.js} +12 -7
- package/es-modules/Stock/Indicators/LinearRegressionIntercept/{LinearRegressionIntercept.js → LinearRegressionInterceptIndicator.js} +11 -1
- package/es-modules/Stock/Indicators/LinearRegressionSlopes/{LinearRegressionSlopes.js → LinearRegressionSlopesIndicator.js} +11 -1
- package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +21 -10
- package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +23 -10
- package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +30 -2
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +16 -1
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +10 -0
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +13 -8
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +14 -4
- package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +16 -3
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +16 -6
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +16 -12
- package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +25 -0
- package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +15 -2
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +20 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +25 -0
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +15 -0
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +17 -3
- package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +25 -0
- package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +14 -4
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +32 -3
- package/es-modules/Stock/Indicators/VBP/VBPPoint.js +6 -6
- package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +11 -1
- package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +30 -2
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +10 -0
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +11 -1
- package/es-modules/Stock/StockToolbar.js +568 -0
- package/es-modules/Stock/StockTools.js +256 -0
- package/es-modules/Stock/StockToolsBindings.js +114 -629
- package/es-modules/Stock/StockToolsDefaults.js +1190 -0
- package/es-modules/Stock/StockToolsGui.js +150 -1771
- package/es-modules/Stock/StockToolsUtilities.js +423 -0
- package/es-modules/masters/highcharts-3d.src.js +5 -4
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +4 -3
- package/es-modules/masters/highcharts.src.js +5 -2
- 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 +5 -7
- 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 +5 -5
- 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 +6 -4
- package/es-modules/masters/modules/annotations.src.js +6 -4
- 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 +6 -2
- 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 +1 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +5 -3
- 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 +5 -2
- package/es-modules/masters/modules/exporting.src.js +1 -2
- package/es-modules/masters/modules/full-screen.src.js +6 -2
- 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 +3 -2
- 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 +2 -2
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +5 -2
- 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 +1 -1
- package/es-modules/masters/modules/series-on-point.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +10 -3
- 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 +2 -2
- 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 +5 -2
- 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 +98 -99
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +232 -211
- package/highcharts-gantt.js +808 -809
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +2308 -2136
- package/highcharts-more.d.ts +5 -8
- package/highcharts-more.js +201 -194
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +5 -8
- package/highcharts-more.src.js +3671 -3275
- package/highcharts.d.ts +1400 -885
- package/highcharts.js +593 -595
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +1400 -885
- package/highcharts.src.js +847 -716
- package/highmaps.js +762 -763
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +1288 -1129
- package/highstock.js +796 -798
- package/highstock.js.map +1 -1
- package/highstock.src.js +953 -762
- package/indicators/acceleration-bands.js +1 -1
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +11 -3
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.js.map +1 -1
- package/indicators/accumulation-distribution.src.js +6 -1
- package/indicators/ao.js +6 -6
- package/indicators/ao.js.map +1 -1
- package/indicators/ao.src.js +23 -14
- package/indicators/apo.js +1 -1
- package/indicators/apo.js.map +1 -1
- package/indicators/apo.src.js +6 -1
- package/indicators/aroon-oscillator.js +10 -10
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +7 -3
- package/indicators/aroon.js +1 -1
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +16 -3
- package/indicators/atr.js +1 -1
- package/indicators/atr.js.map +1 -1
- package/indicators/atr.src.js +17 -4
- package/indicators/bollinger-bands.js +1 -1
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +6 -2
- package/indicators/cci.js +1 -1
- package/indicators/cci.js.map +1 -1
- package/indicators/cci.src.js +17 -4
- package/indicators/chaikin.js +8 -8
- package/indicators/chaikin.js.map +1 -1
- package/indicators/chaikin.src.js +13 -5
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.js.map +1 -1
- package/indicators/cmf.src.js +21 -1
- package/indicators/cmo.js +1 -1
- package/indicators/cmo.js.map +1 -1
- package/indicators/cmo.src.js +16 -2
- package/indicators/dema.js +1 -1
- package/indicators/dema.js.map +1 -1
- package/indicators/dema.src.js +26 -1
- package/indicators/disparity-index.js +1 -1
- package/indicators/disparity-index.src.js +1 -1
- package/indicators/dmi.js +1 -1
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +6 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.js.map +1 -1
- package/indicators/dpo.src.js +20 -9
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js.map +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +35 -16
- package/indicators/indicators-all.js +199 -199
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +754 -162
- package/indicators/indicators.js +1 -1
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +12 -2
- package/indicators/keltner-channels.js +1 -1
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +26 -1
- package/indicators/klinger.js +12 -12
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +13 -4
- package/indicators/macd.js +1 -1
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +22 -13
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.js.map +1 -1
- package/indicators/mfi.src.js +24 -11
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.js.map +1 -1
- package/indicators/momentum.src.js +31 -3
- package/indicators/natr.js +1 -1
- package/indicators/natr.js.map +1 -1
- package/indicators/natr.src.js +17 -3
- package/indicators/obv.js +1 -1
- package/indicators/obv.js.map +1 -1
- package/indicators/obv.src.js +11 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.js.map +1 -1
- package/indicators/pivot-points.src.js +32 -19
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.js.map +1 -1
- package/indicators/ppo.src.js +15 -5
- package/indicators/price-channel.js +1 -1
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +14 -9
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.js.map +1 -1
- package/indicators/price-envelopes.src.js +26 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.js.map +1 -1
- package/indicators/psar.src.js +17 -4
- package/indicators/regressions.js +12 -11
- package/indicators/regressions.js.map +1 -1
- package/indicators/regressions.src.js +50 -15
- package/indicators/roc.js +1 -1
- package/indicators/roc.js.map +1 -1
- package/indicators/roc.src.js +16 -3
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.js.map +1 -1
- package/indicators/rsi.src.js +21 -3
- package/indicators/slow-stochastic.js +1 -1
- package/indicators/slow-stochastic.js.map +1 -1
- package/indicators/slow-stochastic.src.js +26 -1
- package/indicators/stochastic.js +1 -1
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +16 -1
- package/indicators/supertrend.js +7 -7
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +18 -6
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trendline.js +1 -1
- package/indicators/trendline.js.map +1 -1
- package/indicators/trendline.src.js +15 -5
- package/indicators/trix.js +1 -1
- package/indicators/trix.js.map +1 -1
- package/indicators/trix.src.js +26 -1
- package/indicators/volume-by-price.js +17 -17
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +38 -10
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.js.map +1 -1
- package/indicators/vwap.src.js +12 -2
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.js.map +1 -1
- package/indicators/williams-r.src.js +11 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.js.map +1 -1
- package/indicators/wma.src.js +31 -3
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.js.map +1 -1
- package/indicators/zigzag.src.js +12 -2
- package/modules/accessibility.js +183 -182
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +559 -554
- package/modules/annotations-advanced.d.ts +1 -1
- package/modules/annotations-advanced.js +193 -192
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.d.ts +1 -1
- package/modules/annotations-advanced.src.js +9263 -8654
- package/modules/annotations.d.ts +1 -1
- package/modules/annotations.js +128 -126
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.d.ts +1 -1
- package/modules/annotations.src.js +6699 -6063
- 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.d.ts +19 -0
- package/modules/boost-canvas.js +81 -16
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.d.ts +19 -0
- package/modules/boost-canvas.src.js +3334 -50
- package/modules/boost.d.ts +8 -26
- package/modules/boost.js +84 -77
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.d.ts +8 -26
- package/modules/boost.src.js +2423 -1888
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +2 -2
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +1 -1
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +5 -1
- package/modules/current-date-indicator.js +1 -1
- package/modules/current-date-indicator.src.js +1 -1
- package/modules/cylinder.js +9 -9
- package/modules/cylinder.js.map +1 -1
- package/modules/cylinder.src.js +2 -2
- package/modules/data.js +1 -1
- package/modules/data.src.js +1 -1
- package/modules/datagrouping.d.ts +22 -0
- package/modules/datagrouping.js +4 -4
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.d.ts +22 -0
- package/modules/datagrouping.src.js +66 -28
- package/modules/debugger.js +6 -5
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +81 -40
- package/modules/dependency-wheel.js +12 -12
- package/modules/dependency-wheel.js.map +1 -1
- package/modules/dependency-wheel.src.js +41 -14
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +5 -5
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +5 -4
- package/modules/drilldown.d.ts +0 -10
- package/modules/drilldown.js +29 -29
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +0 -10
- package/modules/drilldown.src.js +12 -9
- package/modules/dumbbell.js +1 -1
- package/modules/dumbbell.src.js +1 -1
- package/modules/export-data.js +25 -24
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +607 -499
- package/modules/exporting.js +38 -38
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +559 -507
- package/modules/full-screen.js +8 -8
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +76 -26
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.js.map +1 -1
- package/modules/funnel3d.src.js +2 -2
- package/modules/gantt.js +217 -216
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +1481 -1440
- package/modules/grid-axis.js +1 -1
- package/modules/grid-axis.src.js +1 -1
- package/modules/heatmap.js +1 -1
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +10 -2
- 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 +1 -1
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +6 -6
- package/modules/lollipop.js.map +1 -1
- package/modules/lollipop.src.js +37 -22
- package/modules/map.d.ts +3 -3
- package/modules/map.js +171 -171
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +3 -3
- package/modules/map.src.js +442 -414
- package/modules/marker-clusters.js +1 -1
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +3 -1
- package/modules/networkgraph.js +55 -50
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.js +2259 -1938
- package/modules/no-data-to-display.js +1 -1
- package/modules/no-data-to-display.src.js +1 -1
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +2 -2
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +1 -1
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +15 -15
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +10 -2
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +11 -11
- package/modules/parallel-coordinates.js.map +1 -1
- package/modules/parallel-coordinates.src.js +13 -8
- 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 +1 -1
- package/modules/pattern-fill.src.js +1 -1
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +1 -1
- package/modules/sankey.js +1 -1
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +14 -2
- package/modules/series-label.js +5 -5
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +3 -3
- package/modules/series-on-point.js +1 -1
- package/modules/series-on-point.js.map +1 -1
- package/modules/series-on-point.src.js +6 -2
- package/modules/solid-gauge.js +1 -1
- package/modules/solid-gauge.src.js +2 -2
- package/modules/sonification.d.ts +2 -2
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.d.ts +2 -2
- package/modules/sonification.src.js +2 -2
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.d.ts +1 -23
- package/modules/stock-tools.js +109 -179
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.d.ts +1 -23
- package/modules/stock-tools.src.js +2605 -6335
- package/modules/stock.d.ts +8 -0
- package/modules/stock.js +105 -105
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.d.ts +8 -0
- package/modules/stock.src.js +105 -45
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +72 -72
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +38 -12
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +1 -1
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +3 -1
- package/modules/treegrid.js +57 -57
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +1022 -1014
- package/modules/treemap.js +1 -1
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +8 -4
- 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 +2 -2
- package/modules/vector.js.map +1 -1
- package/modules/vector.src.js +3 -5
- package/modules/venn.js +1 -1
- package/modules/venn.src.js +5 -5
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +1 -1
- package/modules/wordcloud.src.js +3 -3
- package/modules/xrange.js +17 -17
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +411 -397
- 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/Core/Axis/StackingAxis.js +0 -215
- package/es-modules/Core/Axis/TreeGridAxis.js +0 -720
- package/es-modules/Core/Axis/TreeGridTick.js +0 -317
- package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
- package/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +0 -179
- package/es-modules/Extensions/Annotations/Popup.js +0 -1123
- package/es-modules/Extensions/Boost/BoostAttach.js +0 -154
- package/es-modules/Extensions/Boost/BoostInit.js +0 -324
- package/es-modules/Extensions/Boost/BoostOptions.js +0 -245
- package/es-modules/Extensions/Boost/BoostOverrides.js +0 -386
- package/es-modules/Extensions/Boost/BoostUtils.js +0 -255
- package/es-modules/Extensions/Boost/WGLVBuffer.js +0 -153
- package/es-modules/Extensions/Stacking.js +0 -517
- package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -132
- package/es-modules/Series/Networkgraph/Integrations.js +0 -348
- package/es-modules/Series/Networkgraph/Networkgraph.js +0 -1180
- package/es-modules/Series/XRange/XRangeComposition.js +0 -49
package/modules/treegrid.src.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts Gantt JS v10.2.
|
|
2
|
+
* @license Highcharts Gantt JS v10.2.1 (2022-08-29)
|
|
3
3
|
*
|
|
4
4
|
* Tree Grid
|
|
5
5
|
*
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
_registerModule(_modules, 'Core/Axis/BrokenAxis.js', [_modules['
|
|
40
|
+
_registerModule(_modules, 'Core/Axis/BrokenAxis.js', [_modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (StackItem, U) {
|
|
41
41
|
/* *
|
|
42
42
|
*
|
|
43
43
|
* (c) 2009-2021 Torstein Honsi
|
|
@@ -1940,7 +1940,7 @@
|
|
|
1940
1940
|
|
|
1941
1941
|
return Tree;
|
|
1942
1942
|
});
|
|
1943
|
-
_registerModule(_modules, 'Core/Axis/TreeGridTick.js', [_modules['Core/Utilities.js']], function (U) {
|
|
1943
|
+
_registerModule(_modules, 'Core/Axis/TreeGrid/TreeGridTick.js', [_modules['Core/Utilities.js']], function (U) {
|
|
1944
1944
|
/* *
|
|
1945
1945
|
*
|
|
1946
1946
|
* (c) 2016 Highsoft AS
|
|
@@ -1956,34 +1956,237 @@
|
|
|
1956
1956
|
isNumber = U.isNumber,
|
|
1957
1957
|
pick = U.pick,
|
|
1958
1958
|
wrap = U.wrap;
|
|
1959
|
-
/*
|
|
1959
|
+
/* *
|
|
1960
|
+
*
|
|
1961
|
+
* Constants
|
|
1962
|
+
*
|
|
1963
|
+
* */
|
|
1964
|
+
var composedClasses = [];
|
|
1965
|
+
/* *
|
|
1966
|
+
*
|
|
1967
|
+
* Functions
|
|
1968
|
+
*
|
|
1969
|
+
* */
|
|
1960
1970
|
/**
|
|
1961
1971
|
* @private
|
|
1962
1972
|
*/
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1973
|
+
function onTickInit() {
|
|
1974
|
+
var tick = this;
|
|
1975
|
+
if (!tick.treeGrid) {
|
|
1976
|
+
tick.treeGrid = new TreeGridTickAdditions(tick);
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1979
|
+
/**
|
|
1980
|
+
* @private
|
|
1981
|
+
*/
|
|
1982
|
+
function onTickHover(label) {
|
|
1983
|
+
label.addClass('highcharts-treegrid-node-active');
|
|
1984
|
+
if (!label.renderer.styledMode) {
|
|
1985
|
+
label.css({
|
|
1986
|
+
textDecoration: 'underline'
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
/**
|
|
1991
|
+
* @private
|
|
1992
|
+
*/
|
|
1993
|
+
function onTickHoverExit(label, options) {
|
|
1994
|
+
var css = isObject(options.style) ? options.style : {};
|
|
1995
|
+
label.removeClass('highcharts-treegrid-node-active');
|
|
1996
|
+
if (!label.renderer.styledMode) {
|
|
1997
|
+
label.css({ textDecoration: css.textDecoration });
|
|
1998
|
+
}
|
|
1999
|
+
}
|
|
2000
|
+
/**
|
|
2001
|
+
* @private
|
|
2002
|
+
*/
|
|
2003
|
+
function renderLabelIcon(tick, params) {
|
|
2004
|
+
var treeGrid = tick.treeGrid,
|
|
2005
|
+
isNew = !treeGrid.labelIcon,
|
|
2006
|
+
renderer = params.renderer,
|
|
2007
|
+
labelBox = params.xy,
|
|
2008
|
+
options = params.options,
|
|
2009
|
+
width = options.width || 0,
|
|
2010
|
+
height = options.height || 0,
|
|
2011
|
+
iconCenter = {
|
|
2012
|
+
x: labelBox.x - (width / 2) - (options.padding || 0),
|
|
2013
|
+
y: labelBox.y - (height / 2)
|
|
2014
|
+
},
|
|
2015
|
+
rotation = params.collapsed ? 90 : 180,
|
|
2016
|
+
shouldRender = params.show && isNumber(iconCenter.y);
|
|
2017
|
+
var icon = treeGrid.labelIcon;
|
|
2018
|
+
if (!icon) {
|
|
2019
|
+
treeGrid.labelIcon = icon = renderer
|
|
2020
|
+
.path(renderer.symbols[options.type](options.x || 0, options.y || 0, width, height))
|
|
2021
|
+
.addClass('highcharts-label-icon')
|
|
2022
|
+
.add(params.group);
|
|
2023
|
+
}
|
|
2024
|
+
// Set the new position, and show or hide
|
|
2025
|
+
icon[shouldRender ? 'show' : 'hide'](); // #14904, #1338
|
|
2026
|
+
// Presentational attributes
|
|
2027
|
+
if (!renderer.styledMode) {
|
|
2028
|
+
icon
|
|
2029
|
+
.attr({
|
|
2030
|
+
cursor: 'pointer',
|
|
2031
|
+
'fill': pick(params.color, "#666666" /* Palette.neutralColor60 */),
|
|
2032
|
+
'stroke-width': 1,
|
|
2033
|
+
stroke: options.lineColor,
|
|
2034
|
+
strokeWidth: options.lineWidth || 0
|
|
2035
|
+
});
|
|
2036
|
+
}
|
|
2037
|
+
// Update the icon positions
|
|
2038
|
+
icon[isNew ? 'attr' : 'animate']({
|
|
2039
|
+
translateX: iconCenter.x,
|
|
2040
|
+
translateY: iconCenter.y,
|
|
2041
|
+
rotation: rotation
|
|
2042
|
+
});
|
|
2043
|
+
}
|
|
2044
|
+
/**
|
|
2045
|
+
* @private
|
|
2046
|
+
*/
|
|
2047
|
+
function wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {
|
|
2048
|
+
var tick = this,
|
|
2049
|
+
lbOptions = pick(tick.options && tick.options.labels,
|
|
2050
|
+
labelOptions),
|
|
2051
|
+
pos = tick.pos,
|
|
2052
|
+
axis = tick.axis,
|
|
2053
|
+
options = axis.options,
|
|
2054
|
+
isTreeGrid = options.type === 'treegrid',
|
|
2055
|
+
result = proceed.apply(tick,
|
|
2056
|
+
[x,
|
|
2057
|
+
y,
|
|
2058
|
+
label,
|
|
2059
|
+
horiz,
|
|
2060
|
+
lbOptions,
|
|
2061
|
+
tickmarkOffset,
|
|
2062
|
+
index,
|
|
2063
|
+
step]);
|
|
2064
|
+
var symbolOptions,
|
|
2065
|
+
indentation,
|
|
2066
|
+
mapOfPosToGridNode,
|
|
2067
|
+
node,
|
|
2068
|
+
level;
|
|
2069
|
+
if (isTreeGrid) {
|
|
2070
|
+
symbolOptions = (lbOptions && isObject(lbOptions.symbol, true) ?
|
|
2071
|
+
lbOptions.symbol :
|
|
2072
|
+
{});
|
|
2073
|
+
indentation = (lbOptions && isNumber(lbOptions.indentation) ?
|
|
2074
|
+
lbOptions.indentation :
|
|
2075
|
+
0);
|
|
2076
|
+
mapOfPosToGridNode = axis.treeGrid.mapOfPosToGridNode;
|
|
2077
|
+
node = mapOfPosToGridNode && mapOfPosToGridNode[pos];
|
|
2078
|
+
level = (node && node.depth) || 1;
|
|
2079
|
+
result.x += (
|
|
2080
|
+
// Add space for symbols
|
|
2081
|
+
((symbolOptions.width || 0) +
|
|
2082
|
+
((symbolOptions.padding || 0) * 2)) +
|
|
2083
|
+
// Apply indentation
|
|
2084
|
+
((level - 1) * indentation));
|
|
2085
|
+
}
|
|
2086
|
+
return result;
|
|
2087
|
+
}
|
|
2088
|
+
/**
|
|
2089
|
+
* @private
|
|
2090
|
+
*/
|
|
2091
|
+
function wrapRenderLabel(proceed) {
|
|
2092
|
+
var tick = this, pos = tick.pos, axis = tick.axis, label = tick.label, mapOfPosToGridNode = axis.treeGrid.mapOfPosToGridNode, options = axis.options, labelOptions = pick(tick.options && tick.options.labels, options && options.labels), symbolOptions = (labelOptions && isObject(labelOptions.symbol, true) ?
|
|
2093
|
+
labelOptions.symbol :
|
|
2094
|
+
{}), node = mapOfPosToGridNode && mapOfPosToGridNode[pos], level = node && node.depth, isTreeGrid = options.type === 'treegrid', shouldRender = axis.tickPositions.indexOf(pos) > -1, prefixClassName = 'highcharts-treegrid-node-', styledMode = axis.chart.styledMode;
|
|
2095
|
+
var collapsed,
|
|
2096
|
+
addClassName,
|
|
2097
|
+
removeClassName;
|
|
2098
|
+
if (isTreeGrid && node) {
|
|
2099
|
+
// Add class name for hierarchical styling.
|
|
2100
|
+
if (label &&
|
|
2101
|
+
label.element) {
|
|
2102
|
+
label.addClass(prefixClassName + 'level-' + level);
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
proceed.apply(tick, Array.prototype.slice.call(arguments, 1));
|
|
2106
|
+
if (isTreeGrid &&
|
|
2107
|
+
label &&
|
|
2108
|
+
label.element &&
|
|
2109
|
+
node &&
|
|
2110
|
+
node.descendants &&
|
|
2111
|
+
node.descendants > 0) {
|
|
2112
|
+
collapsed = axis.treeGrid.isCollapsed(node);
|
|
2113
|
+
renderLabelIcon(tick, {
|
|
2114
|
+
color: (!styledMode &&
|
|
2115
|
+
label.styles &&
|
|
2116
|
+
label.styles.color ||
|
|
2117
|
+
''),
|
|
2118
|
+
collapsed: collapsed,
|
|
2119
|
+
group: label.parentGroup,
|
|
2120
|
+
options: symbolOptions,
|
|
2121
|
+
renderer: label.renderer,
|
|
2122
|
+
show: shouldRender,
|
|
2123
|
+
xy: label.xy
|
|
2124
|
+
});
|
|
2125
|
+
// Add class name for the node.
|
|
2126
|
+
addClassName = prefixClassName +
|
|
2127
|
+
(collapsed ? 'collapsed' : 'expanded');
|
|
2128
|
+
removeClassName = prefixClassName +
|
|
2129
|
+
(collapsed ? 'expanded' : 'collapsed');
|
|
2130
|
+
label
|
|
2131
|
+
.addClass(addClassName)
|
|
2132
|
+
.removeClass(removeClassName);
|
|
2133
|
+
if (!styledMode) {
|
|
2134
|
+
label.css({
|
|
2135
|
+
cursor: 'pointer'
|
|
2136
|
+
});
|
|
2137
|
+
}
|
|
2138
|
+
// Add events to both label text and icon
|
|
2139
|
+
[label, tick.treeGrid.labelIcon].forEach(function (object) {
|
|
2140
|
+
if (object && !object.attachedTreeGridEvents) {
|
|
2141
|
+
// On hover
|
|
2142
|
+
addEvent(object.element, 'mouseover', function () {
|
|
2143
|
+
onTickHover(label);
|
|
2144
|
+
});
|
|
2145
|
+
// On hover out
|
|
2146
|
+
addEvent(object.element, 'mouseout', function () {
|
|
2147
|
+
onTickHoverExit(label, labelOptions);
|
|
2148
|
+
});
|
|
2149
|
+
addEvent(object.element, 'click', function () {
|
|
2150
|
+
tick.treeGrid.toggleCollapse();
|
|
2151
|
+
});
|
|
2152
|
+
object.attachedTreeGridEvents = true;
|
|
2153
|
+
}
|
|
2154
|
+
});
|
|
2155
|
+
}
|
|
2156
|
+
}
|
|
2157
|
+
/* *
|
|
2158
|
+
*
|
|
2159
|
+
* Classes
|
|
2160
|
+
*
|
|
2161
|
+
* */
|
|
2162
|
+
/**
|
|
2163
|
+
* @private
|
|
2164
|
+
* @class
|
|
2165
|
+
*/
|
|
2166
|
+
var TreeGridTickAdditions = /** @class */ (function () {
|
|
2167
|
+
/* *
|
|
2168
|
+
*
|
|
2169
|
+
* Constructors
|
|
2170
|
+
*
|
|
2171
|
+
* */
|
|
2172
|
+
/**
|
|
2173
|
+
* @private
|
|
2174
|
+
*/
|
|
2175
|
+
function TreeGridTickAdditions(tick) {
|
|
2176
|
+
this.tick = tick;
|
|
2177
|
+
}
|
|
1976
2178
|
/* *
|
|
1977
2179
|
*
|
|
1978
|
-
* Functions
|
|
2180
|
+
* Static Functions
|
|
1979
2181
|
*
|
|
1980
2182
|
* */
|
|
1981
2183
|
/**
|
|
1982
2184
|
* @private
|
|
1983
2185
|
*/
|
|
1984
|
-
function
|
|
1985
|
-
if (
|
|
1986
|
-
|
|
2186
|
+
TreeGridTickAdditions.compose = function (TickClass) {
|
|
2187
|
+
if (composedClasses.indexOf(TickClass) === -1) {
|
|
2188
|
+
composedClasses.push(TickClass);
|
|
2189
|
+
addEvent(TickClass, 'init', onTickInit);
|
|
1987
2190
|
wrap(TickClass.prototype, 'getLabelPosition', wrapGetLabelPosition);
|
|
1988
2191
|
wrap(TickClass.prototype, 'renderLabel', wrapRenderLabel);
|
|
1989
2192
|
// backwards compatibility
|
|
@@ -1996,313 +2199,106 @@
|
|
|
1996
2199
|
TickClass.prototype.toggleCollapse = function (redraw) {
|
|
1997
2200
|
this.treeGrid.toggleCollapse(redraw);
|
|
1998
2201
|
};
|
|
1999
|
-
applied = true;
|
|
2000
|
-
}
|
|
2001
|
-
}
|
|
2002
|
-
TreeGridTick.compose = compose;
|
|
2003
|
-
/**
|
|
2004
|
-
* @private
|
|
2005
|
-
*/
|
|
2006
|
-
function onInit() {
|
|
2007
|
-
var tick = this;
|
|
2008
|
-
if (!tick.treeGrid) {
|
|
2009
|
-
tick.treeGrid = new Additions(tick);
|
|
2010
2202
|
}
|
|
2011
|
-
}
|
|
2012
|
-
|
|
2013
|
-
*
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
if (!label.renderer.styledMode) {
|
|
2018
|
-
label.css({
|
|
2019
|
-
textDecoration: 'underline'
|
|
2020
|
-
});
|
|
2021
|
-
}
|
|
2022
|
-
}
|
|
2203
|
+
};
|
|
2204
|
+
/* *
|
|
2205
|
+
*
|
|
2206
|
+
* Functions
|
|
2207
|
+
*
|
|
2208
|
+
* */
|
|
2023
2209
|
/**
|
|
2210
|
+
* Collapse the grid cell. Used when axis is of type treegrid.
|
|
2211
|
+
*
|
|
2212
|
+
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2213
|
+
*
|
|
2024
2214
|
* @private
|
|
2215
|
+
* @function Highcharts.Tick#collapse
|
|
2216
|
+
*
|
|
2217
|
+
* @param {boolean} [redraw=true]
|
|
2218
|
+
* Whether to redraw the chart or wait for an explicit call to
|
|
2219
|
+
* {@link Highcharts.Chart#redraw}
|
|
2025
2220
|
*/
|
|
2026
|
-
function
|
|
2027
|
-
var
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2221
|
+
TreeGridTickAdditions.prototype.collapse = function (redraw) {
|
|
2222
|
+
var tick = this.tick,
|
|
2223
|
+
axis = tick.axis,
|
|
2224
|
+
brokenAxis = axis.brokenAxis;
|
|
2225
|
+
if (brokenAxis &&
|
|
2226
|
+
axis.treeGrid.mapOfPosToGridNode) {
|
|
2227
|
+
var pos = tick.pos,
|
|
2228
|
+
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2229
|
+
breaks = axis.treeGrid.collapse(node);
|
|
2230
|
+
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2031
2231
|
}
|
|
2032
|
-
}
|
|
2232
|
+
};
|
|
2033
2233
|
/**
|
|
2234
|
+
* Destroy remaining labelIcon if exist.
|
|
2235
|
+
*
|
|
2034
2236
|
* @private
|
|
2237
|
+
* @function Highcharts.Tick#destroy
|
|
2035
2238
|
*/
|
|
2036
|
-
function
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
renderer = params.renderer,
|
|
2040
|
-
labelBox = params.xy,
|
|
2041
|
-
options = params.options,
|
|
2042
|
-
width = options.width || 0,
|
|
2043
|
-
height = options.height || 0,
|
|
2044
|
-
iconCenter = {
|
|
2045
|
-
x: labelBox.x - (width / 2) - (options.padding || 0),
|
|
2046
|
-
y: labelBox.y - (height / 2)
|
|
2047
|
-
},
|
|
2048
|
-
rotation = params.collapsed ? 90 : 180,
|
|
2049
|
-
shouldRender = params.show && isNumber(iconCenter.y);
|
|
2050
|
-
var icon = treeGrid.labelIcon;
|
|
2051
|
-
if (!icon) {
|
|
2052
|
-
treeGrid.labelIcon = icon = renderer
|
|
2053
|
-
.path(renderer.symbols[options.type](options.x || 0, options.y || 0, width, height))
|
|
2054
|
-
.addClass('highcharts-label-icon')
|
|
2055
|
-
.add(params.group);
|
|
2056
|
-
}
|
|
2057
|
-
// Set the new position, and show or hide
|
|
2058
|
-
icon[shouldRender ? 'show' : 'hide'](); // #14904, #1338
|
|
2059
|
-
// Presentational attributes
|
|
2060
|
-
if (!renderer.styledMode) {
|
|
2061
|
-
icon
|
|
2062
|
-
.attr({
|
|
2063
|
-
cursor: 'pointer',
|
|
2064
|
-
'fill': pick(params.color, "#666666" /* Palette.neutralColor60 */),
|
|
2065
|
-
'stroke-width': 1,
|
|
2066
|
-
stroke: options.lineColor,
|
|
2067
|
-
strokeWidth: options.lineWidth || 0
|
|
2068
|
-
});
|
|
2239
|
+
TreeGridTickAdditions.prototype.destroy = function () {
|
|
2240
|
+
if (this.labelIcon) {
|
|
2241
|
+
this.labelIcon.destroy();
|
|
2069
2242
|
}
|
|
2070
|
-
|
|
2071
|
-
icon[isNew ? 'attr' : 'animate']({
|
|
2072
|
-
translateX: iconCenter.x,
|
|
2073
|
-
translateY: iconCenter.y,
|
|
2074
|
-
rotation: rotation
|
|
2075
|
-
});
|
|
2076
|
-
}
|
|
2243
|
+
};
|
|
2077
2244
|
/**
|
|
2245
|
+
* Expand the grid cell. Used when axis is of type treegrid.
|
|
2246
|
+
*
|
|
2247
|
+
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2248
|
+
*
|
|
2078
2249
|
* @private
|
|
2250
|
+
* @function Highcharts.Tick#expand
|
|
2251
|
+
*
|
|
2252
|
+
* @param {boolean} [redraw=true]
|
|
2253
|
+
* Whether to redraw the chart or wait for an explicit call to
|
|
2254
|
+
* {@link Highcharts.Chart#redraw}
|
|
2079
2255
|
*/
|
|
2080
|
-
function
|
|
2081
|
-
var tick = this,
|
|
2082
|
-
lbOptions = pick(tick.options && tick.options.labels,
|
|
2083
|
-
labelOptions),
|
|
2084
|
-
pos = tick.pos,
|
|
2256
|
+
TreeGridTickAdditions.prototype.expand = function (redraw) {
|
|
2257
|
+
var tick = this.tick,
|
|
2085
2258
|
axis = tick.axis,
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
lbOptions,
|
|
2094
|
-
tickmarkOffset,
|
|
2095
|
-
index,
|
|
2096
|
-
step]);
|
|
2097
|
-
var symbolOptions,
|
|
2098
|
-
indentation,
|
|
2099
|
-
mapOfPosToGridNode,
|
|
2100
|
-
node,
|
|
2101
|
-
level;
|
|
2102
|
-
if (isTreeGrid) {
|
|
2103
|
-
symbolOptions = (lbOptions && isObject(lbOptions.symbol, true) ?
|
|
2104
|
-
lbOptions.symbol :
|
|
2105
|
-
{});
|
|
2106
|
-
indentation = (lbOptions && isNumber(lbOptions.indentation) ?
|
|
2107
|
-
lbOptions.indentation :
|
|
2108
|
-
0);
|
|
2109
|
-
mapOfPosToGridNode = axis.treeGrid.mapOfPosToGridNode;
|
|
2110
|
-
node = mapOfPosToGridNode && mapOfPosToGridNode[pos];
|
|
2111
|
-
level = (node && node.depth) || 1;
|
|
2112
|
-
result.x += (
|
|
2113
|
-
// Add space for symbols
|
|
2114
|
-
((symbolOptions.width || 0) +
|
|
2115
|
-
((symbolOptions.padding || 0) * 2)) +
|
|
2116
|
-
// Apply indentation
|
|
2117
|
-
((level - 1) * indentation));
|
|
2259
|
+
brokenAxis = axis.brokenAxis;
|
|
2260
|
+
if (brokenAxis &&
|
|
2261
|
+
axis.treeGrid.mapOfPosToGridNode) {
|
|
2262
|
+
var pos = tick.pos,
|
|
2263
|
+
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2264
|
+
breaks = axis.treeGrid.expand(node);
|
|
2265
|
+
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2118
2266
|
}
|
|
2119
|
-
|
|
2120
|
-
}
|
|
2267
|
+
};
|
|
2121
2268
|
/**
|
|
2122
|
-
*
|
|
2123
|
-
|
|
2124
|
-
function wrapRenderLabel(proceed) {
|
|
2125
|
-
var tick = this, pos = tick.pos, axis = tick.axis, label = tick.label, mapOfPosToGridNode = axis.treeGrid.mapOfPosToGridNode, options = axis.options, labelOptions = pick(tick.options && tick.options.labels, options && options.labels), symbolOptions = (labelOptions && isObject(labelOptions.symbol, true) ?
|
|
2126
|
-
labelOptions.symbol :
|
|
2127
|
-
{}), node = mapOfPosToGridNode && mapOfPosToGridNode[pos], level = node && node.depth, isTreeGrid = options.type === 'treegrid', shouldRender = axis.tickPositions.indexOf(pos) > -1, prefixClassName = 'highcharts-treegrid-node-', styledMode = axis.chart.styledMode;
|
|
2128
|
-
var collapsed,
|
|
2129
|
-
addClassName,
|
|
2130
|
-
removeClassName;
|
|
2131
|
-
if (isTreeGrid && node) {
|
|
2132
|
-
// Add class name for hierarchical styling.
|
|
2133
|
-
if (label &&
|
|
2134
|
-
label.element) {
|
|
2135
|
-
label.addClass(prefixClassName + 'level-' + level);
|
|
2136
|
-
}
|
|
2137
|
-
}
|
|
2138
|
-
proceed.apply(tick, Array.prototype.slice.call(arguments, 1));
|
|
2139
|
-
if (isTreeGrid &&
|
|
2140
|
-
label &&
|
|
2141
|
-
label.element &&
|
|
2142
|
-
node &&
|
|
2143
|
-
node.descendants &&
|
|
2144
|
-
node.descendants > 0) {
|
|
2145
|
-
collapsed = axis.treeGrid.isCollapsed(node);
|
|
2146
|
-
renderLabelIcon(tick, {
|
|
2147
|
-
color: (!styledMode &&
|
|
2148
|
-
label.styles &&
|
|
2149
|
-
label.styles.color ||
|
|
2150
|
-
''),
|
|
2151
|
-
collapsed: collapsed,
|
|
2152
|
-
group: label.parentGroup,
|
|
2153
|
-
options: symbolOptions,
|
|
2154
|
-
renderer: label.renderer,
|
|
2155
|
-
show: shouldRender,
|
|
2156
|
-
xy: label.xy
|
|
2157
|
-
});
|
|
2158
|
-
// Add class name for the node.
|
|
2159
|
-
addClassName = prefixClassName +
|
|
2160
|
-
(collapsed ? 'collapsed' : 'expanded');
|
|
2161
|
-
removeClassName = prefixClassName +
|
|
2162
|
-
(collapsed ? 'expanded' : 'collapsed');
|
|
2163
|
-
label
|
|
2164
|
-
.addClass(addClassName)
|
|
2165
|
-
.removeClass(removeClassName);
|
|
2166
|
-
if (!styledMode) {
|
|
2167
|
-
label.css({
|
|
2168
|
-
cursor: 'pointer'
|
|
2169
|
-
});
|
|
2170
|
-
}
|
|
2171
|
-
// Add events to both label text and icon
|
|
2172
|
-
[label, tick.treeGrid.labelIcon].forEach(function (object) {
|
|
2173
|
-
if (object && !object.attachedTreeGridEvents) {
|
|
2174
|
-
// On hover
|
|
2175
|
-
addEvent(object.element, 'mouseover', function () {
|
|
2176
|
-
onTickHover(label);
|
|
2177
|
-
});
|
|
2178
|
-
// On hover out
|
|
2179
|
-
addEvent(object.element, 'mouseout', function () {
|
|
2180
|
-
onTickHoverExit(label, labelOptions);
|
|
2181
|
-
});
|
|
2182
|
-
addEvent(object.element, 'click', function () {
|
|
2183
|
-
tick.treeGrid.toggleCollapse();
|
|
2184
|
-
});
|
|
2185
|
-
object.attachedTreeGridEvents = true;
|
|
2186
|
-
}
|
|
2187
|
-
});
|
|
2188
|
-
}
|
|
2189
|
-
}
|
|
2190
|
-
/* *
|
|
2269
|
+
* Toggle the collapse/expand state of the grid cell. Used when axis is
|
|
2270
|
+
* of type treegrid.
|
|
2191
2271
|
*
|
|
2192
|
-
*
|
|
2272
|
+
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2193
2273
|
*
|
|
2194
|
-
* */
|
|
2195
|
-
/**
|
|
2196
2274
|
* @private
|
|
2197
|
-
* @
|
|
2275
|
+
* @function Highcharts.Tick#toggleCollapse
|
|
2276
|
+
*
|
|
2277
|
+
* @param {boolean} [redraw=true]
|
|
2278
|
+
* Whether to redraw the chart or wait for an explicit call to
|
|
2279
|
+
* {@link Highcharts.Chart#redraw}
|
|
2198
2280
|
*/
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
this.tick = tick;
|
|
2281
|
+
TreeGridTickAdditions.prototype.toggleCollapse = function (redraw) {
|
|
2282
|
+
var tick = this.tick,
|
|
2283
|
+
axis = tick.axis,
|
|
2284
|
+
brokenAxis = axis.brokenAxis;
|
|
2285
|
+
if (brokenAxis &&
|
|
2286
|
+
axis.treeGrid.mapOfPosToGridNode) {
|
|
2287
|
+
var pos = tick.pos,
|
|
2288
|
+
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2289
|
+
breaks = axis.treeGrid.toggleCollapse(node);
|
|
2290
|
+
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2210
2291
|
}
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2220
|
-
*
|
|
2221
|
-
* @private
|
|
2222
|
-
* @function Highcharts.Tick#collapse
|
|
2223
|
-
*
|
|
2224
|
-
* @param {boolean} [redraw=true]
|
|
2225
|
-
* Whether to redraw the chart or wait for an explicit call to
|
|
2226
|
-
* {@link Highcharts.Chart#redraw}
|
|
2227
|
-
*/
|
|
2228
|
-
Additions.prototype.collapse = function (redraw) {
|
|
2229
|
-
var tick = this.tick,
|
|
2230
|
-
axis = tick.axis,
|
|
2231
|
-
brokenAxis = axis.brokenAxis;
|
|
2232
|
-
if (brokenAxis &&
|
|
2233
|
-
axis.treeGrid.mapOfPosToGridNode) {
|
|
2234
|
-
var pos = tick.pos,
|
|
2235
|
-
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2236
|
-
breaks = axis.treeGrid.collapse(node);
|
|
2237
|
-
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2238
|
-
}
|
|
2239
|
-
};
|
|
2240
|
-
/**
|
|
2241
|
-
* Destroy remaining labelIcon if exist.
|
|
2242
|
-
*
|
|
2243
|
-
* @private
|
|
2244
|
-
* @function Highcharts.Tick#destroy
|
|
2245
|
-
*/
|
|
2246
|
-
Additions.prototype.destroy = function () {
|
|
2247
|
-
if (this.labelIcon) {
|
|
2248
|
-
this.labelIcon.destroy();
|
|
2249
|
-
}
|
|
2250
|
-
};
|
|
2251
|
-
/**
|
|
2252
|
-
* Expand the grid cell. Used when axis is of type treegrid.
|
|
2253
|
-
*
|
|
2254
|
-
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2255
|
-
*
|
|
2256
|
-
* @private
|
|
2257
|
-
* @function Highcharts.Tick#expand
|
|
2258
|
-
*
|
|
2259
|
-
* @param {boolean} [redraw=true]
|
|
2260
|
-
* Whether to redraw the chart or wait for an explicit call to
|
|
2261
|
-
* {@link Highcharts.Chart#redraw}
|
|
2262
|
-
*/
|
|
2263
|
-
Additions.prototype.expand = function (redraw) {
|
|
2264
|
-
var tick = this.tick,
|
|
2265
|
-
axis = tick.axis,
|
|
2266
|
-
brokenAxis = axis.brokenAxis;
|
|
2267
|
-
if (brokenAxis &&
|
|
2268
|
-
axis.treeGrid.mapOfPosToGridNode) {
|
|
2269
|
-
var pos = tick.pos,
|
|
2270
|
-
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2271
|
-
breaks = axis.treeGrid.expand(node);
|
|
2272
|
-
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2273
|
-
}
|
|
2274
|
-
};
|
|
2275
|
-
/**
|
|
2276
|
-
* Toggle the collapse/expand state of the grid cell. Used when axis is
|
|
2277
|
-
* of type treegrid.
|
|
2278
|
-
*
|
|
2279
|
-
* @see gantt/treegrid-axis/collapsed-dynamically/demo.js
|
|
2280
|
-
*
|
|
2281
|
-
* @private
|
|
2282
|
-
* @function Highcharts.Tick#toggleCollapse
|
|
2283
|
-
*
|
|
2284
|
-
* @param {boolean} [redraw=true]
|
|
2285
|
-
* Whether to redraw the chart or wait for an explicit call to
|
|
2286
|
-
* {@link Highcharts.Chart#redraw}
|
|
2287
|
-
*/
|
|
2288
|
-
Additions.prototype.toggleCollapse = function (redraw) {
|
|
2289
|
-
var tick = this.tick,
|
|
2290
|
-
axis = tick.axis,
|
|
2291
|
-
brokenAxis = axis.brokenAxis;
|
|
2292
|
-
if (brokenAxis &&
|
|
2293
|
-
axis.treeGrid.mapOfPosToGridNode) {
|
|
2294
|
-
var pos = tick.pos,
|
|
2295
|
-
node = axis.treeGrid.mapOfPosToGridNode[pos],
|
|
2296
|
-
breaks = axis.treeGrid.toggleCollapse(node);
|
|
2297
|
-
brokenAxis.setBreaks(breaks, pick(redraw, true));
|
|
2298
|
-
}
|
|
2299
|
-
};
|
|
2300
|
-
return Additions;
|
|
2301
|
-
}());
|
|
2302
|
-
TreeGridTick.Additions = Additions;
|
|
2303
|
-
})(TreeGridTick || (TreeGridTick = {}));
|
|
2292
|
+
};
|
|
2293
|
+
return TreeGridTickAdditions;
|
|
2294
|
+
}());
|
|
2295
|
+
/* *
|
|
2296
|
+
*
|
|
2297
|
+
* Default Export
|
|
2298
|
+
*
|
|
2299
|
+
* */
|
|
2304
2300
|
|
|
2305
|
-
return
|
|
2301
|
+
return TreeGridTickAdditions;
|
|
2306
2302
|
});
|
|
2307
2303
|
_registerModule(_modules, 'Series/TreeUtilities.js', [_modules['Core/Color/Color.js'], _modules['Core/Utilities.js']], function (Color, U) {
|
|
2308
2304
|
/* *
|
|
@@ -2534,7 +2530,7 @@
|
|
|
2534
2530
|
|
|
2535
2531
|
return TreeUtilities;
|
|
2536
2532
|
});
|
|
2537
|
-
_registerModule(_modules, 'Core/Axis/TreeGridAxis.js', [_modules['Core/Axis/BrokenAxis.js'], _modules['Core/Axis/GridAxis.js'], _modules['Gantt/Tree.js'], _modules['Core/Axis/TreeGridTick.js'], _modules['Series/TreeUtilities.js'], _modules['Core/Utilities.js']], function (BrokenAxis, GridAxis, Tree, TreeGridTick, TU, U) {
|
|
2533
|
+
_registerModule(_modules, 'Core/Axis/TreeGrid/TreeGridAxis.js', [_modules['Core/Axis/BrokenAxis.js'], _modules['Core/Axis/GridAxis.js'], _modules['Gantt/Tree.js'], _modules['Core/Axis/TreeGrid/TreeGridTick.js'], _modules['Series/TreeUtilities.js'], _modules['Core/Utilities.js']], function (BrokenAxis, GridAxis, Tree, TreeGridTick, TU, U) {
|
|
2538
2534
|
/* *
|
|
2539
2535
|
*
|
|
2540
2536
|
* (c) 2016 Highsoft AS
|
|
@@ -2555,757 +2551,769 @@
|
|
|
2555
2551
|
merge = U.merge,
|
|
2556
2552
|
pick = U.pick,
|
|
2557
2553
|
wrap = U.wrap;
|
|
2554
|
+
/* *
|
|
2555
|
+
*
|
|
2556
|
+
* Constants
|
|
2557
|
+
*
|
|
2558
|
+
* */
|
|
2559
|
+
var composedClasses = [];
|
|
2560
|
+
/* *
|
|
2561
|
+
*
|
|
2562
|
+
* Variables
|
|
2563
|
+
*
|
|
2564
|
+
* */
|
|
2565
|
+
var TickConstructor;
|
|
2566
|
+
/* *
|
|
2567
|
+
*
|
|
2568
|
+
* Functions
|
|
2569
|
+
*
|
|
2570
|
+
* */
|
|
2558
2571
|
/**
|
|
2559
2572
|
* @private
|
|
2560
2573
|
*/
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
*
|
|
2572
|
-
* */
|
|
2573
|
-
var TickConstructor;
|
|
2574
|
-
/* *
|
|
2575
|
-
*
|
|
2576
|
-
* Functions
|
|
2577
|
-
*
|
|
2578
|
-
* */
|
|
2579
|
-
/**
|
|
2580
|
-
* @private
|
|
2581
|
-
*/
|
|
2582
|
-
function compose(AxisClass, ChartClass, SeriesClass, TickClass) {
|
|
2583
|
-
if (AxisClass.keepProps.indexOf('treeGrid') === -1) {
|
|
2584
|
-
AxisClass.keepProps.push('treeGrid');
|
|
2585
|
-
TickConstructor = TickClass;
|
|
2586
|
-
wrap(AxisClass.prototype, 'generateTick', wrapGenerateTick);
|
|
2587
|
-
wrap(AxisClass.prototype, 'init', wrapInit);
|
|
2588
|
-
wrap(AxisClass.prototype, 'setTickInterval', wrapSetTickInterval);
|
|
2589
|
-
// Make utility functions available for testing.
|
|
2590
|
-
AxisClass.prototype.utils = {
|
|
2591
|
-
getNode: Tree.getNode
|
|
2592
|
-
};
|
|
2593
|
-
GridAxis.compose(AxisClass, ChartClass, TickClass);
|
|
2594
|
-
BrokenAxis.compose(AxisClass, SeriesClass);
|
|
2595
|
-
TreeGridTick.compose(TickClass);
|
|
2596
|
-
}
|
|
2597
|
-
return AxisClass;
|
|
2598
|
-
}
|
|
2599
|
-
TreeGridAxis.compose = compose;
|
|
2600
|
-
/**
|
|
2601
|
-
* @private
|
|
2602
|
-
*/
|
|
2603
|
-
function getBreakFromNode(node, max) {
|
|
2604
|
-
var to = node.collapseEnd || 0;
|
|
2605
|
-
var from = node.collapseStart || 0;
|
|
2606
|
-
// In broken-axis, the axis.max is minimized until it is not within a
|
|
2607
|
-
// break. Therefore, if break.to is larger than axis.max, the axis.to
|
|
2608
|
-
// should not add the 0.5 axis.tickMarkOffset, to avoid adding a break
|
|
2609
|
-
// larger than axis.max.
|
|
2610
|
-
// TODO consider simplifying broken-axis and this might solve itself
|
|
2611
|
-
if (to >= max) {
|
|
2612
|
-
from -= 0.5;
|
|
2613
|
-
}
|
|
2614
|
-
return {
|
|
2615
|
-
from: from,
|
|
2616
|
-
to: to,
|
|
2617
|
-
showPoints: false
|
|
2618
|
-
};
|
|
2574
|
+
function getBreakFromNode(node, max) {
|
|
2575
|
+
var to = node.collapseEnd || 0;
|
|
2576
|
+
var from = node.collapseStart || 0;
|
|
2577
|
+
// In broken-axis, the axis.max is minimized until it is not within a
|
|
2578
|
+
// break. Therefore, if break.to is larger than axis.max, the axis.to
|
|
2579
|
+
// should not add the 0.5 axis.tickMarkOffset, to avoid adding a break
|
|
2580
|
+
// larger than axis.max.
|
|
2581
|
+
// TODO consider simplifying broken-axis and this might solve itself
|
|
2582
|
+
if (to >= max) {
|
|
2583
|
+
from -= 0.5;
|
|
2619
2584
|
}
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
}
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2585
|
+
return {
|
|
2586
|
+
from: from,
|
|
2587
|
+
to: to,
|
|
2588
|
+
showPoints: false
|
|
2589
|
+
};
|
|
2590
|
+
}
|
|
2591
|
+
/**
|
|
2592
|
+
* Creates a tree structure of the data, and the treegrid. Calculates
|
|
2593
|
+
* categories, and y-values of points based on the tree.
|
|
2594
|
+
*
|
|
2595
|
+
* @private
|
|
2596
|
+
* @function getTreeGridFromData
|
|
2597
|
+
*
|
|
2598
|
+
* @param {Array<Highcharts.GanttPointOptions>} data
|
|
2599
|
+
* All the data points to display in the axis.
|
|
2600
|
+
*
|
|
2601
|
+
* @param {boolean} uniqueNames
|
|
2602
|
+
* Whether or not the data node with the same name should share grid cell. If
|
|
2603
|
+
* true they do share cell. False by default.
|
|
2604
|
+
*
|
|
2605
|
+
* @param {number} numberOfSeries
|
|
2606
|
+
*
|
|
2607
|
+
* @return {Object}
|
|
2608
|
+
* Returns an object containing categories, mapOfIdToNode,
|
|
2609
|
+
* mapOfPosToGridNode, and tree.
|
|
2610
|
+
*
|
|
2611
|
+
* @todo There should be only one point per line.
|
|
2612
|
+
* @todo It should be optional to have one category per point, or merge
|
|
2613
|
+
* cells
|
|
2614
|
+
* @todo Add unit-tests.
|
|
2615
|
+
*/
|
|
2616
|
+
function getTreeGridFromData(data, uniqueNames, numberOfSeries) {
|
|
2617
|
+
var categories = [],
|
|
2618
|
+
collapsedNodes = [],
|
|
2619
|
+
mapOfIdToNode = {},
|
|
2620
|
+
uniqueNamesEnabled = typeof uniqueNames === 'boolean' ?
|
|
2621
|
+
uniqueNames : false;
|
|
2622
|
+
var mapOfPosToGridNode = {},
|
|
2623
|
+
posIterator = -1;
|
|
2624
|
+
// Build the tree from the series data.
|
|
2625
|
+
var treeParams = {
|
|
2626
|
+
// After the children has been created.
|
|
2627
|
+
after: function (node) {
|
|
2628
|
+
var gridNode = mapOfPosToGridNode[node.pos];
|
|
2629
|
+
var height = 0,
|
|
2630
|
+
descendants = 0;
|
|
2631
|
+
gridNode.children.forEach(function (child) {
|
|
2632
|
+
descendants += (child.descendants || 0) + 1;
|
|
2633
|
+
height = Math.max((child.height || 0) + 1, height);
|
|
2634
|
+
});
|
|
2635
|
+
gridNode.descendants = descendants;
|
|
2636
|
+
gridNode.height = height;
|
|
2637
|
+
if (gridNode.collapsed) {
|
|
2638
|
+
collapsedNodes.push(gridNode);
|
|
2639
|
+
}
|
|
2640
|
+
},
|
|
2641
|
+
// Before the children has been created.
|
|
2642
|
+
before: function (node) {
|
|
2643
|
+
var data = isObject(node.data,
|
|
2644
|
+
true) ?
|
|
2645
|
+
node.data :
|
|
2646
|
+
{},
|
|
2647
|
+
name = isString(data.name) ? data.name : '',
|
|
2648
|
+
parentNode = mapOfIdToNode[node.parent],
|
|
2649
|
+
parentGridNode = (isObject(parentNode,
|
|
2650
|
+
true) ?
|
|
2651
|
+
mapOfPosToGridNode[parentNode.pos] :
|
|
2652
|
+
null),
|
|
2653
|
+
hasSameName = function (x) {
|
|
2654
|
+
return x.name === name;
|
|
2655
|
+
};
|
|
2656
|
+
var gridNode,
|
|
2657
|
+
pos;
|
|
2658
|
+
// If not unique names, look for sibling node with the same name
|
|
2659
|
+
if (uniqueNamesEnabled &&
|
|
2660
|
+
isObject(parentGridNode, true) &&
|
|
2661
|
+
!!(gridNode = find(parentGridNode.children, hasSameName))) {
|
|
2662
|
+
// If there is a gridNode with the same name, reuse position
|
|
2663
|
+
pos = gridNode.pos;
|
|
2664
|
+
// Add data node to list of nodes in the grid node.
|
|
2665
|
+
gridNode.nodes.push(node);
|
|
2666
|
+
}
|
|
2667
|
+
else {
|
|
2668
|
+
// If it is a new grid node, increment position.
|
|
2669
|
+
pos = posIterator++;
|
|
2670
|
+
}
|
|
2671
|
+
// Add new grid node to map.
|
|
2672
|
+
if (!mapOfPosToGridNode[pos]) {
|
|
2673
|
+
mapOfPosToGridNode[pos] = gridNode = {
|
|
2674
|
+
depth: parentGridNode ? parentGridNode.depth + 1 : 0,
|
|
2675
|
+
name: name,
|
|
2676
|
+
id: data.id,
|
|
2677
|
+
nodes: [node],
|
|
2678
|
+
children: [],
|
|
2679
|
+
pos: pos
|
|
2684
2680
|
};
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
if (uniqueNamesEnabled &&
|
|
2689
|
-
isObject(parentGridNode, true) &&
|
|
2690
|
-
!!(gridNode = find(parentGridNode.children, hasSameName))) {
|
|
2691
|
-
// If there is a gridNode with the same name, reuse position
|
|
2692
|
-
pos = gridNode.pos;
|
|
2693
|
-
// Add data node to list of nodes in the grid node.
|
|
2694
|
-
gridNode.nodes.push(node);
|
|
2695
|
-
}
|
|
2696
|
-
else {
|
|
2697
|
-
// If it is a new grid node, increment position.
|
|
2698
|
-
pos = posIterator++;
|
|
2699
|
-
}
|
|
2700
|
-
// Add new grid node to map.
|
|
2701
|
-
if (!mapOfPosToGridNode[pos]) {
|
|
2702
|
-
mapOfPosToGridNode[pos] = gridNode = {
|
|
2703
|
-
depth: parentGridNode ? parentGridNode.depth + 1 : 0,
|
|
2704
|
-
name: name,
|
|
2705
|
-
id: data.id,
|
|
2706
|
-
nodes: [node],
|
|
2707
|
-
children: [],
|
|
2708
|
-
pos: pos
|
|
2709
|
-
};
|
|
2710
|
-
// If not root, then add name to categories.
|
|
2711
|
-
if (pos !== -1) {
|
|
2712
|
-
categories.push(name);
|
|
2713
|
-
}
|
|
2714
|
-
// Add name to list of children.
|
|
2715
|
-
if (isObject(parentGridNode, true)) {
|
|
2716
|
-
parentGridNode.children.push(gridNode);
|
|
2717
|
-
}
|
|
2681
|
+
// If not root, then add name to categories.
|
|
2682
|
+
if (pos !== -1) {
|
|
2683
|
+
categories.push(name);
|
|
2718
2684
|
}
|
|
2719
|
-
// Add
|
|
2720
|
-
if (
|
|
2721
|
-
|
|
2685
|
+
// Add name to list of children.
|
|
2686
|
+
if (isObject(parentGridNode, true)) {
|
|
2687
|
+
parentGridNode.children.push(gridNode);
|
|
2722
2688
|
}
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2689
|
+
}
|
|
2690
|
+
// Add data node to map
|
|
2691
|
+
if (isString(node.id)) {
|
|
2692
|
+
mapOfIdToNode[node.id] = node;
|
|
2693
|
+
}
|
|
2694
|
+
// If one of the points are collapsed, then start the grid node
|
|
2695
|
+
// in collapsed state.
|
|
2696
|
+
if (gridNode &&
|
|
2697
|
+
data.collapsed === true) {
|
|
2698
|
+
gridNode.collapsed = true;
|
|
2699
|
+
}
|
|
2700
|
+
// Assign pos to data node
|
|
2701
|
+
node.pos = pos;
|
|
2702
|
+
}
|
|
2703
|
+
};
|
|
2704
|
+
var updateYValuesAndTickPos = function (map,
|
|
2705
|
+
numberOfSeries) {
|
|
2706
|
+
var setValues = function (gridNode,
|
|
2707
|
+
start,
|
|
2708
|
+
result) {
|
|
2709
|
+
var nodes = gridNode.nodes,
|
|
2710
|
+
padding = 0.5;
|
|
2711
|
+
var end = start + (start === -1 ? 0 : numberOfSeries - 1);
|
|
2712
|
+
var diff = (end - start) / 2,
|
|
2713
|
+
pos = start + diff;
|
|
2714
|
+
nodes.forEach(function (node) {
|
|
2715
|
+
var data = node.data;
|
|
2716
|
+
if (isObject(data, true)) {
|
|
2717
|
+
// Update point
|
|
2718
|
+
data.y = start + (data.seriesIndex || 0);
|
|
2719
|
+
// Remove the property once used
|
|
2720
|
+
delete data.seriesIndex;
|
|
2728
2721
|
}
|
|
2729
|
-
// Assign pos to data node
|
|
2730
2722
|
node.pos = pos;
|
|
2731
|
-
}
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
nodes.forEach(function (node) {
|
|
2744
|
-
var data = node.data;
|
|
2745
|
-
if (isObject(data, true)) {
|
|
2746
|
-
// Update point
|
|
2747
|
-
data.y = start + (data.seriesIndex || 0);
|
|
2748
|
-
// Remove the property once used
|
|
2749
|
-
delete data.seriesIndex;
|
|
2750
|
-
}
|
|
2751
|
-
node.pos = pos;
|
|
2752
|
-
});
|
|
2753
|
-
result[pos] = gridNode;
|
|
2754
|
-
gridNode.pos = pos;
|
|
2755
|
-
gridNode.tickmarkOffset = diff + padding;
|
|
2756
|
-
gridNode.collapseStart = end + padding;
|
|
2757
|
-
gridNode.children.forEach(function (child) {
|
|
2758
|
-
setValues(child, end + 1, result);
|
|
2759
|
-
end = (child.collapseEnd || 0) - padding;
|
|
2760
|
-
});
|
|
2761
|
-
// Set collapseEnd to the end of the last child node.
|
|
2762
|
-
gridNode.collapseEnd = end + padding;
|
|
2763
|
-
return result;
|
|
2764
|
-
};
|
|
2765
|
-
return setValues(map['-1'], -1, {});
|
|
2766
|
-
};
|
|
2767
|
-
// Create tree from data
|
|
2768
|
-
var tree = Tree.getTree(data,
|
|
2769
|
-
treeParams);
|
|
2770
|
-
// Update y values of data, and set calculate tick positions.
|
|
2771
|
-
mapOfPosToGridNode = updateYValuesAndTickPos(mapOfPosToGridNode, numberOfSeries);
|
|
2772
|
-
// Return the resulting data.
|
|
2773
|
-
return {
|
|
2774
|
-
categories: categories,
|
|
2775
|
-
mapOfIdToNode: mapOfIdToNode,
|
|
2776
|
-
mapOfPosToGridNode: mapOfPosToGridNode,
|
|
2777
|
-
collapsedNodes: collapsedNodes,
|
|
2778
|
-
tree: tree
|
|
2723
|
+
});
|
|
2724
|
+
result[pos] = gridNode;
|
|
2725
|
+
gridNode.pos = pos;
|
|
2726
|
+
gridNode.tickmarkOffset = diff + padding;
|
|
2727
|
+
gridNode.collapseStart = end + padding;
|
|
2728
|
+
gridNode.children.forEach(function (child) {
|
|
2729
|
+
setValues(child, end + 1, result);
|
|
2730
|
+
end = (child.collapseEnd || 0) - padding;
|
|
2731
|
+
});
|
|
2732
|
+
// Set collapseEnd to the end of the last child node.
|
|
2733
|
+
gridNode.collapseEnd = end + padding;
|
|
2734
|
+
return result;
|
|
2779
2735
|
};
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2736
|
+
return setValues(map['-1'], -1, {});
|
|
2737
|
+
};
|
|
2738
|
+
// Create tree from data
|
|
2739
|
+
var tree = Tree.getTree(data,
|
|
2740
|
+
treeParams);
|
|
2741
|
+
// Update y values of data, and set calculate tick positions.
|
|
2742
|
+
mapOfPosToGridNode = updateYValuesAndTickPos(mapOfPosToGridNode, numberOfSeries);
|
|
2743
|
+
// Return the resulting data.
|
|
2744
|
+
return {
|
|
2745
|
+
categories: categories,
|
|
2746
|
+
mapOfIdToNode: mapOfIdToNode,
|
|
2747
|
+
mapOfPosToGridNode: mapOfPosToGridNode,
|
|
2748
|
+
collapsedNodes: collapsedNodes,
|
|
2749
|
+
tree: tree
|
|
2750
|
+
};
|
|
2751
|
+
}
|
|
2752
|
+
/**
|
|
2753
|
+
* Builds the tree of categories and calculates its positions.
|
|
2754
|
+
* @private
|
|
2755
|
+
* @param {Object} e Event object
|
|
2756
|
+
* @param {Object} e.target The chart instance which the event was fired on.
|
|
2757
|
+
* @param {object[]} e.target.axes The axes of the chart.
|
|
2758
|
+
*/
|
|
2759
|
+
function onBeforeRender(e) {
|
|
2760
|
+
var chart = e.target,
|
|
2761
|
+
axes = chart.axes;
|
|
2762
|
+
axes.filter(function (axis) {
|
|
2763
|
+
return axis.options.type === 'treegrid';
|
|
2764
|
+
}).forEach(function (axis) {
|
|
2765
|
+
var options = axis.options || {},
|
|
2766
|
+
labelOptions = options.labels,
|
|
2767
|
+
uniqueNames = options.uniqueNames,
|
|
2768
|
+
max = options.max,
|
|
2769
|
+
// Check whether any of series is rendering for the first
|
|
2770
|
+
// time, visibility has changed, or its data is dirty, and
|
|
2771
|
+
// only then update. #10570, #10580. Also check if
|
|
2772
|
+
// mapOfPosToGridNode exists. #10887
|
|
2773
|
+
isDirty = (!axis.treeGrid.mapOfPosToGridNode ||
|
|
2774
|
+
axis.series.some(function (series) {
|
|
2775
|
+
return !series.hasRendered ||
|
|
2776
|
+
series.isDirtyData ||
|
|
2777
|
+
series.isDirty;
|
|
2778
|
+
}));
|
|
2779
|
+
var numberOfSeries = 0,
|
|
2780
|
+
data,
|
|
2781
|
+
treeGrid;
|
|
2782
|
+
if (isDirty) {
|
|
2783
|
+
// Concatenate data from all series assigned to this axis.
|
|
2784
|
+
data = axis.series.reduce(function (arr, s) {
|
|
2785
|
+
if (s.visible) {
|
|
2786
|
+
// Push all data to array
|
|
2787
|
+
(s.options.data || []).forEach(function (data) {
|
|
2788
|
+
// For using keys - rebuild the data structure
|
|
2789
|
+
if (s.options.keys && s.options.keys.length) {
|
|
2790
|
+
data = s.pointClass.prototype
|
|
2791
|
+
.optionsToObject
|
|
2792
|
+
.call({ series: s }, data);
|
|
2793
|
+
s.pointClass.setGanttPointAliases(data);
|
|
2834
2794
|
}
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
if (max && data.length < max) {
|
|
2841
|
-
for (var i = data.length; i <= max; i++) {
|
|
2842
|
-
data.push({
|
|
2843
|
-
// Use the zero-width character
|
|
2844
|
-
// to avoid conflict with uniqueNames
|
|
2845
|
-
name: i + '\u200B'
|
|
2846
|
-
});
|
|
2847
|
-
}
|
|
2848
|
-
}
|
|
2849
|
-
// setScale is fired after all the series is initialized,
|
|
2850
|
-
// which is an ideal time to update the axis.categories.
|
|
2851
|
-
treeGrid = getTreeGridFromData(data, uniqueNames || false, (uniqueNames === true) ? numberOfSeries : 1);
|
|
2852
|
-
// Assign values to the axis.
|
|
2853
|
-
axis.categories = treeGrid.categories;
|
|
2854
|
-
axis.treeGrid.mapOfPosToGridNode = (treeGrid.mapOfPosToGridNode);
|
|
2855
|
-
axis.hasNames = true;
|
|
2856
|
-
axis.treeGrid.tree = treeGrid.tree;
|
|
2857
|
-
// Update yData now that we have calculated the y values
|
|
2858
|
-
axis.series.forEach(function (series) {
|
|
2859
|
-
var axisData = (series.options.data || []).map(function (d) {
|
|
2860
|
-
if (isArray(d) &&
|
|
2861
|
-
series.options.keys &&
|
|
2862
|
-
series.options.keys.length) {
|
|
2863
|
-
// Get the axisData from the data array used to
|
|
2864
|
-
// build the treeGrid where has been modified
|
|
2865
|
-
data.forEach(function (point) {
|
|
2866
|
-
if (d.indexOf(point.x) >= 0 &&
|
|
2867
|
-
d.indexOf(point.x2) >= 0) {
|
|
2868
|
-
d = point;
|
|
2869
|
-
}
|
|
2870
|
-
});
|
|
2795
|
+
if (isObject(data, true)) {
|
|
2796
|
+
// Set series index on data. Removed again
|
|
2797
|
+
// after use.
|
|
2798
|
+
data.seriesIndex = (numberOfSeries);
|
|
2799
|
+
arr.push(data);
|
|
2871
2800
|
}
|
|
2872
|
-
return isObject(d, true) ? merge(d) : d;
|
|
2873
2801
|
});
|
|
2874
|
-
//
|
|
2875
|
-
if (
|
|
2876
|
-
|
|
2802
|
+
// Increment series index
|
|
2803
|
+
if (uniqueNames === true) {
|
|
2804
|
+
numberOfSeries++;
|
|
2877
2805
|
}
|
|
2878
|
-
});
|
|
2879
|
-
// Calculate the label options for each level in the tree.
|
|
2880
|
-
axis.treeGrid.mapOptionsToLevel =
|
|
2881
|
-
getLevelOptions({
|
|
2882
|
-
defaults: labelOptions,
|
|
2883
|
-
from: 1,
|
|
2884
|
-
levels: labelOptions && labelOptions.levels,
|
|
2885
|
-
to: axis.treeGrid.tree && axis.treeGrid.tree.height
|
|
2886
|
-
});
|
|
2887
|
-
// Setting initial collapsed nodes
|
|
2888
|
-
if (e.type === 'beforeRender') {
|
|
2889
|
-
axis.treeGrid.collapsedNodes = treeGrid.collapsedNodes;
|
|
2890
2806
|
}
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
* The original generateTick function.
|
|
2902
|
-
*
|
|
2903
|
-
* @param {number} pos
|
|
2904
|
-
* The tick position in axis values.
|
|
2905
|
-
*/
|
|
2906
|
-
function wrapGenerateTick(proceed, pos) {
|
|
2907
|
-
var axis = this,
|
|
2908
|
-
mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {},
|
|
2909
|
-
isTreeGrid = axis.options.type === 'treegrid',
|
|
2910
|
-
ticks = axis.ticks;
|
|
2911
|
-
var tick = ticks[pos],
|
|
2912
|
-
levelOptions,
|
|
2913
|
-
options,
|
|
2914
|
-
gridNode;
|
|
2915
|
-
if (isTreeGrid &&
|
|
2916
|
-
axis.treeGrid.mapOfPosToGridNode) {
|
|
2917
|
-
gridNode = axis.treeGrid.mapOfPosToGridNode[pos];
|
|
2918
|
-
levelOptions = mapOptionsToLevel[gridNode.depth];
|
|
2919
|
-
if (levelOptions) {
|
|
2920
|
-
options = {
|
|
2921
|
-
labels: levelOptions
|
|
2922
|
-
};
|
|
2923
|
-
}
|
|
2924
|
-
if (!tick &&
|
|
2925
|
-
TickConstructor) {
|
|
2926
|
-
ticks[pos] = tick =
|
|
2927
|
-
new TickConstructor(axis, pos, void 0, void 0, {
|
|
2928
|
-
category: gridNode.name,
|
|
2929
|
-
tickmarkOffset: gridNode.tickmarkOffset,
|
|
2930
|
-
options: options
|
|
2807
|
+
return arr;
|
|
2808
|
+
}, []);
|
|
2809
|
+
// If max is higher than set data - add a
|
|
2810
|
+
// dummy data to render categories #10779
|
|
2811
|
+
if (max && data.length < max) {
|
|
2812
|
+
for (var i = data.length; i <= max; i++) {
|
|
2813
|
+
data.push({
|
|
2814
|
+
// Use the zero-width character
|
|
2815
|
+
// to avoid conflict with uniqueNames
|
|
2816
|
+
name: i + '\u200B'
|
|
2931
2817
|
});
|
|
2818
|
+
}
|
|
2932
2819
|
}
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2820
|
+
// setScale is fired after all the series is initialized,
|
|
2821
|
+
// which is an ideal time to update the axis.categories.
|
|
2822
|
+
treeGrid = getTreeGridFromData(data, uniqueNames || false, (uniqueNames === true) ? numberOfSeries : 1);
|
|
2823
|
+
// Assign values to the axis.
|
|
2824
|
+
axis.categories = treeGrid.categories;
|
|
2825
|
+
axis.treeGrid.mapOfPosToGridNode = (treeGrid.mapOfPosToGridNode);
|
|
2826
|
+
axis.hasNames = true;
|
|
2827
|
+
axis.treeGrid.tree = treeGrid.tree;
|
|
2828
|
+
// Update yData now that we have calculated the y values
|
|
2829
|
+
axis.series.forEach(function (series) {
|
|
2830
|
+
var axisData = (series.options.data || []).map(function (d) {
|
|
2831
|
+
if (isArray(d) &&
|
|
2832
|
+
series.options.keys &&
|
|
2833
|
+
series.options.keys.length) {
|
|
2834
|
+
// Get the axisData from the data array used to
|
|
2835
|
+
// build the treeGrid where has been modified
|
|
2836
|
+
data.forEach(function (point) {
|
|
2837
|
+
if (d.indexOf(point.x) >= 0 &&
|
|
2838
|
+
d.indexOf(point.x2) >= 0) {
|
|
2839
|
+
d = point;
|
|
2840
|
+
}
|
|
2841
|
+
});
|
|
2842
|
+
}
|
|
2843
|
+
return isObject(d, true) ? merge(d) : d;
|
|
2844
|
+
});
|
|
2845
|
+
// Avoid destroying points when series is not visible
|
|
2846
|
+
if (series.visible) {
|
|
2847
|
+
series.setData(axisData, false);
|
|
2848
|
+
}
|
|
2849
|
+
});
|
|
2850
|
+
// Calculate the label options for each level in the tree.
|
|
2851
|
+
axis.treeGrid.mapOptionsToLevel =
|
|
2852
|
+
getLevelOptions({
|
|
2853
|
+
defaults: labelOptions,
|
|
2854
|
+
from: 1,
|
|
2855
|
+
levels: labelOptions && labelOptions.levels,
|
|
2856
|
+
to: axis.treeGrid.tree && axis.treeGrid.tree.height
|
|
2857
|
+
});
|
|
2858
|
+
// Setting initial collapsed nodes
|
|
2859
|
+
if (e.type === 'beforeRender') {
|
|
2860
|
+
axis.treeGrid.collapsedNodes = treeGrid.collapsedNodes;
|
|
2938
2861
|
}
|
|
2939
2862
|
}
|
|
2863
|
+
});
|
|
2864
|
+
}
|
|
2865
|
+
/**
|
|
2866
|
+
* Generates a tick for initial positioning.
|
|
2867
|
+
*
|
|
2868
|
+
* @private
|
|
2869
|
+
* @function Highcharts.GridAxis#generateTick
|
|
2870
|
+
*
|
|
2871
|
+
* @param {Function} proceed
|
|
2872
|
+
* The original generateTick function.
|
|
2873
|
+
*
|
|
2874
|
+
* @param {number} pos
|
|
2875
|
+
* The tick position in axis values.
|
|
2876
|
+
*/
|
|
2877
|
+
function wrapGenerateTick(proceed, pos) {
|
|
2878
|
+
var axis = this,
|
|
2879
|
+
mapOptionsToLevel = axis.treeGrid.mapOptionsToLevel || {},
|
|
2880
|
+
isTreeGrid = axis.options.type === 'treegrid',
|
|
2881
|
+
ticks = axis.ticks;
|
|
2882
|
+
var tick = ticks[pos],
|
|
2883
|
+
levelOptions,
|
|
2884
|
+
options,
|
|
2885
|
+
gridNode;
|
|
2886
|
+
if (isTreeGrid &&
|
|
2887
|
+
axis.treeGrid.mapOfPosToGridNode) {
|
|
2888
|
+
gridNode = axis.treeGrid.mapOfPosToGridNode[pos];
|
|
2889
|
+
levelOptions = mapOptionsToLevel[gridNode.depth];
|
|
2890
|
+
if (levelOptions) {
|
|
2891
|
+
options = {
|
|
2892
|
+
labels: levelOptions
|
|
2893
|
+
};
|
|
2894
|
+
}
|
|
2895
|
+
if (!tick &&
|
|
2896
|
+
TickConstructor) {
|
|
2897
|
+
ticks[pos] = tick =
|
|
2898
|
+
new TickConstructor(axis, pos, void 0, void 0, {
|
|
2899
|
+
category: gridNode.name,
|
|
2900
|
+
tickmarkOffset: gridNode.tickmarkOffset,
|
|
2901
|
+
options: options
|
|
2902
|
+
});
|
|
2903
|
+
}
|
|
2940
2904
|
else {
|
|
2941
|
-
|
|
2905
|
+
// update labels depending on tick interval
|
|
2906
|
+
tick.parameters.category = gridNode.name;
|
|
2907
|
+
tick.options = options;
|
|
2908
|
+
tick.addLabel();
|
|
2942
2909
|
}
|
|
2943
2910
|
}
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2911
|
+
else {
|
|
2912
|
+
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
/**
|
|
2916
|
+
* @private
|
|
2917
|
+
*/
|
|
2918
|
+
function wrapInit(proceed, chart, userOptions) {
|
|
2919
|
+
var axis = this,
|
|
2920
|
+
isTreeGrid = userOptions.type === 'treegrid';
|
|
2921
|
+
if (!axis.treeGrid) {
|
|
2922
|
+
axis.treeGrid = new TreeGridAxisAdditions(axis);
|
|
2923
|
+
}
|
|
2924
|
+
// Set default and forced options for TreeGrid
|
|
2925
|
+
if (isTreeGrid) {
|
|
2926
|
+
// Add event for updating the categories of a treegrid.
|
|
2927
|
+
// NOTE Preferably these events should be set on the axis.
|
|
2928
|
+
addEvent(chart, 'beforeRender', onBeforeRender);
|
|
2929
|
+
addEvent(chart, 'beforeRedraw', onBeforeRender);
|
|
2930
|
+
// Add new collapsed nodes on addseries
|
|
2931
|
+
addEvent(chart, 'addSeries', function (e) {
|
|
2932
|
+
if (e.options.data) {
|
|
2933
|
+
var treeGrid = getTreeGridFromData(e.options.data,
|
|
2934
|
+
userOptions.uniqueNames || false, 1);
|
|
2935
|
+
axis.treeGrid.collapsedNodes = (axis.treeGrid.collapsedNodes || []).concat(treeGrid.collapsedNodes);
|
|
2936
|
+
}
|
|
2937
|
+
});
|
|
2938
|
+
// Collapse all nodes in axis.treegrid.collapsednodes
|
|
2939
|
+
// where collapsed equals true.
|
|
2940
|
+
addEvent(axis, 'foundExtremes', function () {
|
|
2941
|
+
if (axis.treeGrid.collapsedNodes) {
|
|
2942
|
+
axis.treeGrid.collapsedNodes.forEach(function (node) {
|
|
2943
|
+
var breaks = axis.treeGrid.collapse(node);
|
|
2944
|
+
if (axis.brokenAxis) {
|
|
2945
|
+
axis.brokenAxis.setBreaks(breaks, false);
|
|
2946
|
+
// remove the node from the axis collapsedNodes
|
|
2947
|
+
if (axis.treeGrid.collapsedNodes) {
|
|
2948
|
+
axis.treeGrid.collapsedNodes = axis.treeGrid
|
|
2949
|
+
.collapsedNodes
|
|
2950
|
+
.filter(function (n) { return ((node.collapseStart !==
|
|
2951
|
+
n.collapseStart) ||
|
|
2952
|
+
node.collapseEnd !== n.collapseEnd); });
|
|
2983
2953
|
}
|
|
2984
|
-
}
|
|
2985
|
-
}
|
|
2986
|
-
}
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
}
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
}
|
|
2954
|
+
}
|
|
2955
|
+
});
|
|
2956
|
+
}
|
|
2957
|
+
});
|
|
2958
|
+
// If staticScale is not defined on the yAxis
|
|
2959
|
+
// and chart height is set, set axis.isDirty
|
|
2960
|
+
// to ensure collapsing works (#12012)
|
|
2961
|
+
addEvent(axis, 'afterBreaks', function () {
|
|
2962
|
+
if (axis.coll === 'yAxis' &&
|
|
2963
|
+
!axis.staticScale &&
|
|
2964
|
+
axis.chart.options.chart.height) {
|
|
2965
|
+
axis.isDirty = true;
|
|
2966
|
+
}
|
|
2967
|
+
});
|
|
2968
|
+
userOptions = merge({
|
|
2969
|
+
// Default options
|
|
2970
|
+
grid: {
|
|
2971
|
+
enabled: true
|
|
2972
|
+
},
|
|
2973
|
+
// TODO: add support for align in treegrid.
|
|
2974
|
+
labels: {
|
|
2975
|
+
align: 'left',
|
|
2976
|
+
/**
|
|
2977
|
+
* Set options on specific levels in a tree grid axis. Takes
|
|
2978
|
+
* precedence over labels options.
|
|
2979
|
+
*
|
|
2980
|
+
* @sample {gantt} gantt/treegrid-axis/labels-levels
|
|
2981
|
+
* Levels on TreeGrid Labels
|
|
2982
|
+
*
|
|
2983
|
+
* @type {Array<*>}
|
|
2984
|
+
* @product gantt
|
|
2985
|
+
* @apioption yAxis.labels.levels
|
|
2986
|
+
*
|
|
2987
|
+
* @private
|
|
2988
|
+
*/
|
|
2989
|
+
levels: [{
|
|
2990
|
+
/**
|
|
2991
|
+
* Specify the level which the options within this object
|
|
2992
|
+
* applies to.
|
|
2993
|
+
*
|
|
2994
|
+
* @type {number}
|
|
2995
|
+
* @product gantt
|
|
2996
|
+
* @apioption yAxis.labels.levels.level
|
|
2997
|
+
*
|
|
2998
|
+
* @private
|
|
2999
|
+
*/
|
|
3000
|
+
level: void 0
|
|
3001
|
+
}, {
|
|
3002
|
+
level: 1,
|
|
3003
|
+
/**
|
|
3004
|
+
* @type {Highcharts.CSSObject}
|
|
3005
|
+
* @product gantt
|
|
3006
|
+
* @apioption yAxis.labels.levels.style
|
|
3007
|
+
*
|
|
3008
|
+
* @private
|
|
3009
|
+
*/
|
|
3010
|
+
style: {
|
|
3011
|
+
/** @ignore-option */
|
|
3012
|
+
fontWeight: 'bold'
|
|
3013
|
+
}
|
|
3014
|
+
}],
|
|
3015
|
+
/**
|
|
3016
|
+
* The symbol for the collapse and expand icon in a
|
|
3017
|
+
* treegrid.
|
|
3018
|
+
*
|
|
3019
|
+
* @product gantt
|
|
3020
|
+
* @optionparent yAxis.labels.symbol
|
|
3021
|
+
*
|
|
3022
|
+
* @private
|
|
3023
|
+
*/
|
|
3024
|
+
symbol: {
|
|
3044
3025
|
/**
|
|
3045
|
-
* The symbol
|
|
3046
|
-
*
|
|
3026
|
+
* The symbol type. Points to a definition function in
|
|
3027
|
+
* the `Highcharts.Renderer.symbols` collection.
|
|
3047
3028
|
*
|
|
3048
|
-
* @
|
|
3049
|
-
* @optionparent yAxis.labels.symbol
|
|
3029
|
+
* @type {Highcharts.SymbolKeyValue}
|
|
3050
3030
|
*
|
|
3051
3031
|
* @private
|
|
3052
3032
|
*/
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
*
|
|
3060
|
-
* @private
|
|
3061
|
-
*/
|
|
3062
|
-
type: 'triangle',
|
|
3063
|
-
x: -5,
|
|
3064
|
-
y: -5,
|
|
3065
|
-
height: 10,
|
|
3066
|
-
width: 10,
|
|
3067
|
-
padding: 5
|
|
3068
|
-
}
|
|
3069
|
-
},
|
|
3070
|
-
uniqueNames: false
|
|
3071
|
-
}, userOptions, {
|
|
3072
|
-
// Forced options
|
|
3073
|
-
reversed: true,
|
|
3074
|
-
// grid.columns is not supported in treegrid
|
|
3075
|
-
grid: {
|
|
3076
|
-
columns: void 0
|
|
3033
|
+
type: 'triangle',
|
|
3034
|
+
x: -5,
|
|
3035
|
+
y: -5,
|
|
3036
|
+
height: 10,
|
|
3037
|
+
width: 10,
|
|
3038
|
+
padding: 5
|
|
3077
3039
|
}
|
|
3078
|
-
}
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3040
|
+
},
|
|
3041
|
+
uniqueNames: false
|
|
3042
|
+
}, userOptions, {
|
|
3043
|
+
// Forced options
|
|
3044
|
+
reversed: true,
|
|
3045
|
+
// grid.columns is not supported in treegrid
|
|
3046
|
+
grid: {
|
|
3047
|
+
columns: void 0
|
|
3048
|
+
}
|
|
3049
|
+
});
|
|
3087
3050
|
}
|
|
3088
|
-
|
|
3089
|
-
|
|
3051
|
+
// Now apply the original function with the original arguments,
|
|
3052
|
+
// which are sliced off this function's arguments
|
|
3053
|
+
proceed.apply(axis, [chart, userOptions]);
|
|
3054
|
+
if (isTreeGrid) {
|
|
3055
|
+
axis.hasNames = true;
|
|
3056
|
+
axis.options.showLastLabel = true;
|
|
3057
|
+
}
|
|
3058
|
+
}
|
|
3059
|
+
/**
|
|
3060
|
+
* Set the tick positions, tickInterval, axis min and max.
|
|
3061
|
+
*
|
|
3062
|
+
* @private
|
|
3063
|
+
* @function Highcharts.GridAxis#setTickInterval
|
|
3064
|
+
*
|
|
3065
|
+
* @param {Function} proceed
|
|
3066
|
+
* The original setTickInterval function.
|
|
3067
|
+
*/
|
|
3068
|
+
function wrapSetTickInterval(proceed) {
|
|
3069
|
+
var axis = this,
|
|
3070
|
+
options = axis.options,
|
|
3071
|
+
isTreeGrid = options.type === 'treegrid';
|
|
3072
|
+
if (isTreeGrid) {
|
|
3073
|
+
axis.min = pick(axis.userMin, options.min, axis.dataMin);
|
|
3074
|
+
axis.max = pick(axis.userMax, options.max, axis.dataMax);
|
|
3075
|
+
fireEvent(axis, 'foundExtremes');
|
|
3076
|
+
// setAxisTranslation modifies the min and max according to
|
|
3077
|
+
// axis breaks.
|
|
3078
|
+
axis.setAxisTranslation();
|
|
3079
|
+
axis.tickmarkOffset = 0.5;
|
|
3080
|
+
axis.tickInterval = 1;
|
|
3081
|
+
axis.tickPositions = axis.treeGrid.mapOfPosToGridNode ?
|
|
3082
|
+
axis.treeGrid.getTickPositions() :
|
|
3083
|
+
[];
|
|
3084
|
+
}
|
|
3085
|
+
else {
|
|
3086
|
+
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
|
|
3087
|
+
}
|
|
3088
|
+
}
|
|
3089
|
+
/* *
|
|
3090
|
+
*
|
|
3091
|
+
* Classes
|
|
3092
|
+
*
|
|
3093
|
+
* */
|
|
3094
|
+
/**
|
|
3095
|
+
* @private
|
|
3096
|
+
* @class
|
|
3097
|
+
*/
|
|
3098
|
+
var TreeGridAxisAdditions = /** @class */ (function () {
|
|
3099
|
+
/* *
|
|
3100
|
+
*
|
|
3101
|
+
* Constructors
|
|
3102
|
+
*
|
|
3103
|
+
* */
|
|
3104
|
+
/**
|
|
3105
|
+
* @private
|
|
3106
|
+
*/
|
|
3107
|
+
function TreeGridAxisAdditions(axis) {
|
|
3108
|
+
this.axis = axis;
|
|
3109
|
+
}
|
|
3110
|
+
/* *
|
|
3090
3111
|
*
|
|
3091
|
-
*
|
|
3092
|
-
* @function Highcharts.GridAxis#setTickInterval
|
|
3112
|
+
* Static Functions
|
|
3093
3113
|
*
|
|
3094
|
-
*
|
|
3095
|
-
|
|
3114
|
+
* */
|
|
3115
|
+
/**
|
|
3116
|
+
* @private
|
|
3096
3117
|
*/
|
|
3097
|
-
function
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
axis.treeGrid.getTickPositions() :
|
|
3112
|
-
[];
|
|
3118
|
+
TreeGridAxisAdditions.compose = function (AxisClass, ChartClass, SeriesClass, TickClass) {
|
|
3119
|
+
if (composedClasses.indexOf(AxisClass) === -1) {
|
|
3120
|
+
composedClasses.push(AxisClass);
|
|
3121
|
+
if (AxisClass.keepProps.indexOf('treeGrid') === -1) {
|
|
3122
|
+
AxisClass.keepProps.push('treeGrid');
|
|
3123
|
+
}
|
|
3124
|
+
var axisProps = AxisClass.prototype;
|
|
3125
|
+
wrap(axisProps, 'generateTick', wrapGenerateTick);
|
|
3126
|
+
wrap(axisProps, 'init', wrapInit);
|
|
3127
|
+
wrap(axisProps, 'setTickInterval', wrapSetTickInterval);
|
|
3128
|
+
// Make utility functions available for testing.
|
|
3129
|
+
axisProps.utils = {
|
|
3130
|
+
getNode: Tree.getNode
|
|
3131
|
+
};
|
|
3113
3132
|
}
|
|
3114
|
-
|
|
3115
|
-
|
|
3133
|
+
if (composedClasses.indexOf(TickClass) === -1) {
|
|
3134
|
+
composedClasses.push(TickClass);
|
|
3135
|
+
if (!TickConstructor) {
|
|
3136
|
+
TickConstructor = TickClass;
|
|
3137
|
+
}
|
|
3116
3138
|
}
|
|
3117
|
-
|
|
3139
|
+
GridAxis.compose(AxisClass, ChartClass, TickClass);
|
|
3140
|
+
BrokenAxis.compose(AxisClass, SeriesClass);
|
|
3141
|
+
TreeGridTick.compose(TickClass);
|
|
3142
|
+
return AxisClass;
|
|
3143
|
+
};
|
|
3118
3144
|
/* *
|
|
3119
3145
|
*
|
|
3120
|
-
*
|
|
3146
|
+
* Functions
|
|
3121
3147
|
*
|
|
3122
3148
|
* */
|
|
3123
3149
|
/**
|
|
3150
|
+
* Set the collapse status.
|
|
3151
|
+
*
|
|
3124
3152
|
* @private
|
|
3125
|
-
*
|
|
3153
|
+
*
|
|
3154
|
+
* @param {Highcharts.Axis} axis
|
|
3155
|
+
* The axis to check against.
|
|
3156
|
+
*
|
|
3157
|
+
* @param {Highcharts.GridNode} node
|
|
3158
|
+
* The node to collapse.
|
|
3126
3159
|
*/
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
}
|
|
3139
|
-
/* *
|
|
3140
|
-
*
|
|
3141
|
-
* Functions
|
|
3142
|
-
*
|
|
3143
|
-
* */
|
|
3144
|
-
/**
|
|
3145
|
-
* Set the collapse status.
|
|
3146
|
-
*
|
|
3147
|
-
* @private
|
|
3148
|
-
*
|
|
3149
|
-
* @param {Highcharts.Axis} axis
|
|
3150
|
-
* The axis to check against.
|
|
3151
|
-
*
|
|
3152
|
-
* @param {Highcharts.GridNode} node
|
|
3153
|
-
* The node to collapse.
|
|
3154
|
-
*/
|
|
3155
|
-
Additions.prototype.setCollapsedStatus = function (node) {
|
|
3156
|
-
var axis = this.axis,
|
|
3157
|
-
chart = axis.chart;
|
|
3158
|
-
axis.series.forEach(function (series) {
|
|
3159
|
-
var data = series.options.data;
|
|
3160
|
-
if (node.id && data) {
|
|
3161
|
-
var point = chart.get(node.id),
|
|
3162
|
-
dataPoint = data[series.data.indexOf(point)];
|
|
3163
|
-
if (point && dataPoint) {
|
|
3164
|
-
point.collapsed = node.collapsed;
|
|
3165
|
-
dataPoint.collapsed = node.collapsed;
|
|
3166
|
-
}
|
|
3167
|
-
}
|
|
3168
|
-
});
|
|
3169
|
-
};
|
|
3170
|
-
/**
|
|
3171
|
-
* Calculates the new axis breaks to collapse a node.
|
|
3172
|
-
*
|
|
3173
|
-
* @private
|
|
3174
|
-
*
|
|
3175
|
-
* @param {Highcharts.Axis} axis
|
|
3176
|
-
* The axis to check against.
|
|
3177
|
-
*
|
|
3178
|
-
* @param {Highcharts.GridNode} node
|
|
3179
|
-
* The node to collapse.
|
|
3180
|
-
*
|
|
3181
|
-
* @param {number} pos
|
|
3182
|
-
* The tick position to collapse.
|
|
3183
|
-
*
|
|
3184
|
-
* @return {Array<object>}
|
|
3185
|
-
* Returns an array of the new breaks for the axis.
|
|
3186
|
-
*/
|
|
3187
|
-
Additions.prototype.collapse = function (node) {
|
|
3188
|
-
var axis = this.axis,
|
|
3189
|
-
breaks = (axis.options.breaks || []),
|
|
3190
|
-
obj = getBreakFromNode(node,
|
|
3191
|
-
axis.max);
|
|
3192
|
-
breaks.push(obj);
|
|
3193
|
-
// Change the collapsed flag #13838
|
|
3194
|
-
node.collapsed = true;
|
|
3195
|
-
axis.treeGrid.setCollapsedStatus(node);
|
|
3196
|
-
return breaks;
|
|
3197
|
-
};
|
|
3198
|
-
/**
|
|
3199
|
-
* Calculates the new axis breaks to expand a node.
|
|
3200
|
-
*
|
|
3201
|
-
* @private
|
|
3202
|
-
*
|
|
3203
|
-
* @param {Highcharts.Axis} axis
|
|
3204
|
-
* The axis to check against.
|
|
3205
|
-
*
|
|
3206
|
-
* @param {Highcharts.GridNode} node
|
|
3207
|
-
* The node to expand.
|
|
3208
|
-
*
|
|
3209
|
-
* @param {number} pos
|
|
3210
|
-
* The tick position to expand.
|
|
3211
|
-
*
|
|
3212
|
-
* @return {Array<object>}
|
|
3213
|
-
* Returns an array of the new breaks for the axis.
|
|
3214
|
-
*/
|
|
3215
|
-
Additions.prototype.expand = function (node) {
|
|
3216
|
-
var axis = this.axis,
|
|
3217
|
-
breaks = (axis.options.breaks || []),
|
|
3218
|
-
obj = getBreakFromNode(node,
|
|
3219
|
-
axis.max);
|
|
3220
|
-
// Change the collapsed flag #13838
|
|
3221
|
-
node.collapsed = false;
|
|
3222
|
-
axis.treeGrid.setCollapsedStatus(node);
|
|
3223
|
-
// Remove the break from the axis breaks array.
|
|
3224
|
-
return breaks.reduce(function (arr, b) {
|
|
3225
|
-
if (b.to !== obj.to || b.from !== obj.from) {
|
|
3226
|
-
arr.push(b);
|
|
3227
|
-
}
|
|
3228
|
-
return arr;
|
|
3229
|
-
}, []);
|
|
3230
|
-
};
|
|
3231
|
-
/**
|
|
3232
|
-
* Creates a list of positions for the ticks on the axis. Filters out
|
|
3233
|
-
* positions that are outside min and max, or is inside an axis break.
|
|
3234
|
-
*
|
|
3235
|
-
* @private
|
|
3236
|
-
*
|
|
3237
|
-
* @return {Array<number>}
|
|
3238
|
-
* List of positions.
|
|
3239
|
-
*/
|
|
3240
|
-
Additions.prototype.getTickPositions = function () {
|
|
3241
|
-
var axis = this.axis,
|
|
3242
|
-
roundedMin = Math.floor(axis.min / axis.tickInterval) * axis.tickInterval,
|
|
3243
|
-
roundedMax = Math.ceil(axis.max / axis.tickInterval) * axis.tickInterval;
|
|
3244
|
-
return Object.keys(axis.treeGrid.mapOfPosToGridNode || {}).reduce(function (arr, key) {
|
|
3245
|
-
var pos = +key;
|
|
3246
|
-
if (pos >= roundedMin &&
|
|
3247
|
-
pos <= roundedMax &&
|
|
3248
|
-
!(axis.brokenAxis && axis.brokenAxis.isInAnyBreak(pos))) {
|
|
3249
|
-
arr.push(pos);
|
|
3160
|
+
TreeGridAxisAdditions.prototype.setCollapsedStatus = function (node) {
|
|
3161
|
+
var axis = this.axis,
|
|
3162
|
+
chart = axis.chart;
|
|
3163
|
+
axis.series.forEach(function (series) {
|
|
3164
|
+
var data = series.options.data;
|
|
3165
|
+
if (node.id && data) {
|
|
3166
|
+
var point = chart.get(node.id),
|
|
3167
|
+
dataPoint = data[series.data.indexOf(point)];
|
|
3168
|
+
if (point && dataPoint) {
|
|
3169
|
+
point.collapsed = node.collapsed;
|
|
3170
|
+
dataPoint.collapsed = node.collapsed;
|
|
3250
3171
|
}
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3172
|
+
}
|
|
3173
|
+
});
|
|
3174
|
+
};
|
|
3175
|
+
/**
|
|
3176
|
+
* Calculates the new axis breaks to collapse a node.
|
|
3177
|
+
*
|
|
3178
|
+
* @private
|
|
3179
|
+
*
|
|
3180
|
+
* @param {Highcharts.Axis} axis
|
|
3181
|
+
* The axis to check against.
|
|
3182
|
+
*
|
|
3183
|
+
* @param {Highcharts.GridNode} node
|
|
3184
|
+
* The node to collapse.
|
|
3185
|
+
*
|
|
3186
|
+
* @param {number} pos
|
|
3187
|
+
* The tick position to collapse.
|
|
3188
|
+
*
|
|
3189
|
+
* @return {Array<object>}
|
|
3190
|
+
* Returns an array of the new breaks for the axis.
|
|
3191
|
+
*/
|
|
3192
|
+
TreeGridAxisAdditions.prototype.collapse = function (node) {
|
|
3193
|
+
var axis = this.axis,
|
|
3194
|
+
breaks = (axis.options.breaks || []),
|
|
3195
|
+
obj = getBreakFromNode(node,
|
|
3196
|
+
axis.max);
|
|
3197
|
+
breaks.push(obj);
|
|
3198
|
+
// Change the collapsed flag #13838
|
|
3199
|
+
node.collapsed = true;
|
|
3200
|
+
axis.treeGrid.setCollapsedStatus(node);
|
|
3201
|
+
return breaks;
|
|
3202
|
+
};
|
|
3203
|
+
/**
|
|
3204
|
+
* Calculates the new axis breaks to expand a node.
|
|
3205
|
+
*
|
|
3206
|
+
* @private
|
|
3207
|
+
*
|
|
3208
|
+
* @param {Highcharts.Axis} axis
|
|
3209
|
+
* The axis to check against.
|
|
3210
|
+
*
|
|
3211
|
+
* @param {Highcharts.GridNode} node
|
|
3212
|
+
* The node to expand.
|
|
3213
|
+
*
|
|
3214
|
+
* @param {number} pos
|
|
3215
|
+
* The tick position to expand.
|
|
3216
|
+
*
|
|
3217
|
+
* @return {Array<object>}
|
|
3218
|
+
* Returns an array of the new breaks for the axis.
|
|
3219
|
+
*/
|
|
3220
|
+
TreeGridAxisAdditions.prototype.expand = function (node) {
|
|
3221
|
+
var axis = this.axis,
|
|
3222
|
+
breaks = (axis.options.breaks || []),
|
|
3223
|
+
obj = getBreakFromNode(node,
|
|
3224
|
+
axis.max);
|
|
3225
|
+
// Change the collapsed flag #13838
|
|
3226
|
+
node.collapsed = false;
|
|
3227
|
+
axis.treeGrid.setCollapsedStatus(node);
|
|
3228
|
+
// Remove the break from the axis breaks array.
|
|
3229
|
+
return breaks.reduce(function (arr, b) {
|
|
3230
|
+
if (b.to !== obj.to || b.from !== obj.from) {
|
|
3231
|
+
arr.push(b);
|
|
3232
|
+
}
|
|
3233
|
+
return arr;
|
|
3234
|
+
}, []);
|
|
3235
|
+
};
|
|
3236
|
+
/**
|
|
3237
|
+
* Creates a list of positions for the ticks on the axis. Filters out
|
|
3238
|
+
* positions that are outside min and max, or is inside an axis break.
|
|
3239
|
+
*
|
|
3240
|
+
* @private
|
|
3241
|
+
*
|
|
3242
|
+
* @return {Array<number>}
|
|
3243
|
+
* List of positions.
|
|
3244
|
+
*/
|
|
3245
|
+
TreeGridAxisAdditions.prototype.getTickPositions = function () {
|
|
3246
|
+
var axis = this.axis,
|
|
3247
|
+
roundedMin = Math.floor(axis.min / axis.tickInterval) * axis.tickInterval,
|
|
3248
|
+
roundedMax = Math.ceil(axis.max / axis.tickInterval) * axis.tickInterval;
|
|
3249
|
+
return Object.keys(axis.treeGrid.mapOfPosToGridNode || {}).reduce(function (arr, key) {
|
|
3250
|
+
var pos = +key;
|
|
3251
|
+
if (pos >= roundedMin &&
|
|
3252
|
+
pos <= roundedMax &&
|
|
3253
|
+
!(axis.brokenAxis && axis.brokenAxis.isInAnyBreak(pos))) {
|
|
3254
|
+
arr.push(pos);
|
|
3255
|
+
}
|
|
3256
|
+
return arr;
|
|
3257
|
+
}, []);
|
|
3258
|
+
};
|
|
3259
|
+
/**
|
|
3260
|
+
* Check if a node is collapsed.
|
|
3261
|
+
*
|
|
3262
|
+
* @private
|
|
3263
|
+
*
|
|
3264
|
+
* @param {Highcharts.Axis} axis
|
|
3265
|
+
* The axis to check against.
|
|
3266
|
+
*
|
|
3267
|
+
* @param {Object} node
|
|
3268
|
+
* The node to check if is collapsed.
|
|
3269
|
+
*
|
|
3270
|
+
* @param {number} pos
|
|
3271
|
+
* The tick position to collapse.
|
|
3272
|
+
*
|
|
3273
|
+
* @return {boolean}
|
|
3274
|
+
* Returns true if collapsed, false if expanded.
|
|
3275
|
+
*/
|
|
3276
|
+
TreeGridAxisAdditions.prototype.isCollapsed = function (node) {
|
|
3277
|
+
var axis = this.axis,
|
|
3278
|
+
breaks = (axis.options.breaks || []),
|
|
3279
|
+
obj = getBreakFromNode(node,
|
|
3280
|
+
axis.max);
|
|
3281
|
+
return breaks.some(function (b) {
|
|
3282
|
+
return b.from === obj.from && b.to === obj.to;
|
|
3283
|
+
});
|
|
3284
|
+
};
|
|
3285
|
+
/**
|
|
3286
|
+
* Calculates the new axis breaks after toggling the collapse/expand
|
|
3287
|
+
* state of a node. If it is collapsed it will be expanded, and if it is
|
|
3288
|
+
* exapended it will be collapsed.
|
|
3289
|
+
*
|
|
3290
|
+
* @private
|
|
3291
|
+
*
|
|
3292
|
+
* @param {Highcharts.Axis} axis
|
|
3293
|
+
* The axis to check against.
|
|
3294
|
+
*
|
|
3295
|
+
* @param {Highcharts.GridNode} node
|
|
3296
|
+
* The node to toggle.
|
|
3297
|
+
*
|
|
3298
|
+
* @return {Array<object>}
|
|
3299
|
+
* Returns an array of the new breaks for the axis.
|
|
3300
|
+
*/
|
|
3301
|
+
TreeGridAxisAdditions.prototype.toggleCollapse = function (node) {
|
|
3302
|
+
return (this.isCollapsed(node) ?
|
|
3303
|
+
this.expand(node) :
|
|
3304
|
+
this.collapse(node));
|
|
3305
|
+
};
|
|
3306
|
+
return TreeGridAxisAdditions;
|
|
3307
|
+
}());
|
|
3308
|
+
/* *
|
|
3309
|
+
*
|
|
3310
|
+
* Default Export
|
|
3311
|
+
*
|
|
3312
|
+
* */
|
|
3305
3313
|
|
|
3306
|
-
return
|
|
3314
|
+
return TreeGridAxisAdditions;
|
|
3307
3315
|
});
|
|
3308
|
-
_registerModule(_modules, 'masters/modules/treegrid.src.js', [_modules['Core/Globals.js'], _modules['Core/Axis/TreeGridAxis.js']], function (Highcharts, TreeGridAxis) {
|
|
3316
|
+
_registerModule(_modules, 'masters/modules/treegrid.src.js', [_modules['Core/Globals.js'], _modules['Core/Axis/TreeGrid/TreeGridAxis.js']], function (Highcharts, TreeGridAxis) {
|
|
3309
3317
|
|
|
3310
3318
|
var G = Highcharts;
|
|
3311
3319
|
// Compositions
|