highcharts 7.1.1 → 7.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/annotations/popup.css +3 -3
- package/css/annotations/popup.scss +1 -1
- package/css/stocktools/gui.css +5 -5
- package/css/stocktools/gui.scss +1 -1
- package/es-modules/annotations/ControlPoint.js +1 -1
- package/es-modules/annotations/MockPoint.js +45 -12
- package/es-modules/annotations/annotations.src.js +203 -166
- package/es-modules/annotations/controllable/ControllableCircle.js +2 -10
- package/es-modules/annotations/controllable/ControllableImage.js +2 -10
- package/es-modules/annotations/controllable/ControllableLabel.js +54 -9
- package/es-modules/annotations/controllable/ControllableRect.js +2 -10
- package/es-modules/annotations/controllable/controllableMixin.js +32 -4
- package/es-modules/annotations/controllable/markerMixin.js +1 -0
- package/es-modules/annotations/eventEmitterMixin.js +1 -0
- package/es-modules/annotations/navigationBindings.js +15 -11
- package/es-modules/annotations/popup.js +59 -81
- package/es-modules/annotations/types/CrookedLine.js +19 -7
- package/es-modules/annotations/types/ElliottWave.js +7 -6
- package/es-modules/annotations/types/Fibonacci.js +14 -14
- package/es-modules/annotations/types/InfinityLine.js +4 -4
- package/es-modules/annotations/types/Measure.js +41 -41
- package/es-modules/annotations/types/Pitchfork.js +5 -4
- package/es-modules/annotations/types/VerticalLine.js +6 -5
- package/es-modules/error-messages.js +6 -1
- package/es-modules/indicators/indicators.src.js +5 -3
- package/es-modules/mixins/nodes.js +16 -8
- package/es-modules/modules/accessibility/AccessibilityComponent.js +4 -4
- package/es-modules/modules/accessibility/KeyboardNavigation.js +17 -4
- package/es-modules/modules/accessibility/components/RangeSelectorComponent.js +3 -2
- package/es-modules/modules/accessibility/components/SeriesComponent.js +110 -2
- package/es-modules/modules/accessibility/components/ZoomComponent.js +1 -1
- package/es-modules/modules/accessibility/options.js +2 -1
- package/es-modules/modules/bellcurve.src.js +27 -29
- package/es-modules/modules/boost/boost-init.js +14 -0
- package/es-modules/modules/boost/boost-overrides.js +13 -3
- package/es-modules/modules/boost/wgl-renderer.js +30 -15
- package/es-modules/modules/boost/wgl-shader.js +33 -16
- package/es-modules/modules/boost/wgl-vbuffer.js +8 -4
- package/es-modules/modules/broken-axis.src.js +1 -1
- package/es-modules/modules/bullet.src.js +68 -68
- package/es-modules/modules/cylinder.src.js +3 -1
- package/es-modules/modules/data.src.js +9 -5
- package/es-modules/modules/draggable-points.src.js +1 -1
- package/es-modules/modules/drilldown.src.js +1 -1
- package/es-modules/modules/export-data.src.js +7 -8
- package/es-modules/modules/exporting.src.js +9 -1
- package/es-modules/modules/full-screen.src.js +1 -1
- package/es-modules/modules/funnel3d.src.js +10 -3
- package/es-modules/modules/histogram.src.js +162 -164
- package/es-modules/modules/item-series.src.js +10 -10
- package/es-modules/modules/networkgraph/layouts.js +16 -12
- package/es-modules/modules/networkgraph/networkgraph.src.js +147 -51
- package/es-modules/modules/offline-exporting.src.js +15 -2
- package/es-modules/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/modules/organization.src.js +65 -20
- package/es-modules/modules/pareto.src.js +52 -51
- package/es-modules/modules/pattern-fill.src.js +1 -1
- package/es-modules/modules/price-indicator.src.js +1 -1
- package/es-modules/modules/pyramid3d.src.js +1 -1
- package/es-modules/modules/sankey.src.js +22 -10
- package/es-modules/modules/series-label.src.js +16 -8
- package/es-modules/modules/solid-gauge.src.js +128 -79
- package/es-modules/modules/static-scale.src.js +8 -1
- package/es-modules/modules/stock-tools-gui.js +1 -1
- package/es-modules/modules/streamgraph.src.js +11 -11
- package/es-modules/modules/sunburst.src.js +23 -2
- package/es-modules/modules/tilemap.src.js +58 -57
- package/es-modules/modules/timeline.src.js +17 -12
- package/es-modules/modules/treemap.src.js +6 -6
- package/es-modules/modules/variwide.src.js +39 -39
- package/es-modules/modules/vector.src.js +108 -107
- package/es-modules/modules/venn.src.js +4 -2
- package/es-modules/modules/windbarb.src.js +43 -43
- package/es-modules/modules/wordcloud.src.js +1 -0
- package/es-modules/modules/xrange.src.js +112 -104
- package/es-modules/parts/AreaSeries.js +4 -1
- package/es-modules/parts/Axis.js +809 -1870
- package/es-modules/parts/Chart.js +254 -743
- package/es-modules/parts/Color.js +160 -113
- package/es-modules/parts/ColumnSeries.js +9 -3
- package/es-modules/parts/DataLabels.js +31 -2
- package/es-modules/parts/Dynamics.js +73 -26
- package/es-modules/parts/FlagsSeries.js +6 -4
- package/es-modules/parts/Globals.js +20 -36
- package/es-modules/parts/Html.js +116 -235
- package/es-modules/parts/Interaction.js +17 -7
- package/es-modules/parts/Legend.js +277 -632
- package/es-modules/parts/MSPointer.js +62 -106
- package/es-modules/parts/Options.js +128 -367
- package/es-modules/parts/OrdinalAxis.js +12 -0
- package/es-modules/parts/PieSeries.js +61 -44
- package/es-modules/parts/PlotLineOrBand.js +38 -3
- package/es-modules/parts/Point.js +117 -227
- package/es-modules/parts/Pointer.js +273 -558
- package/es-modules/parts/RangeSelector.js +5 -3
- package/es-modules/parts/Responsive.js +8 -4
- package/es-modules/parts/ScrollablePlotArea.js +215 -81
- package/es-modules/parts/Scrollbar.js +38 -23
- package/es-modules/parts/Series.js +151 -47
- package/es-modules/parts/Stacking.js +8 -3
- package/es-modules/parts/StockChart.js +42 -29
- package/es-modules/parts/SvgRenderer.js +1080 -2100
- package/es-modules/parts/Tick.js +11 -4
- package/es-modules/parts/Time.js +179 -363
- package/es-modules/parts/Tooltip.js +23 -12
- package/es-modules/parts/TouchPointer.js +69 -187
- package/es-modules/parts/Utilities.js +593 -846
- package/es-modules/parts-3d/Axis.js +2 -2
- package/es-modules/parts-3d/Column.js +18 -8
- package/es-modules/parts-gantt/GanttSeries.js +17 -21
- package/es-modules/parts-gantt/GridAxis.js +183 -101
- package/es-modules/parts-gantt/PathfinderAlgorithms.js +2 -2
- package/es-modules/parts-gantt/TreeGrid.js +53 -36
- package/es-modules/parts-map/ColorAxis.js +35 -14
- package/es-modules/parts-map/MapBubbleSeries.js +2 -1
- package/es-modules/parts-map/MapSeries.js +29 -18
- package/es-modules/parts-more/AreaRangeSeries.js +13 -12
- package/es-modules/parts-more/ColumnRangeSeries.js +8 -2
- package/es-modules/parts-more/GaugeSeries.js +9 -9
- package/es-modules/parts-more/PackedBubbleSeries.js +152 -115
- package/es-modules/parts-more/RadialAxis.js +102 -8
- package/es-modules/parts-more/WaterfallSeries.js +148 -35
- package/highcharts-3d.js +68 -67
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +21 -11
- package/highcharts-gantt.d.ts +5 -3
- package/highcharts-gantt.js +618 -610
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.d.ts +5 -3
- package/highcharts-gantt.src.js +5185 -8892
- package/highcharts-more.js +144 -140
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.js +449 -194
- package/highcharts.d.ts +3943 -5236
- package/highcharts.js +454 -449
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3943 -5236
- package/highcharts.src.js +4767 -8601
- package/highmaps.d.ts +5 -3
- package/highmaps.js +498 -494
- package/highmaps.js.map +1 -1
- package/highmaps.src.d.ts +5 -3
- package/highmaps.src.js +4547 -8507
- package/highstock.d.ts +5 -3
- package/highstock.js +597 -590
- package/highstock.js.map +1 -1
- package/highstock.src.d.ts +5 -3
- package/highstock.src.js +4871 -8661
- package/indicators/acceleration-bands.js +1 -1
- package/indicators/acceleration-bands.src.js +1 -1
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +1 -1
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +1 -1
- package/indicators/aroon-oscillator.src.js +1 -1
- package/indicators/aroon.js +1 -1
- package/indicators/aroon.src.js +1 -1
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +1 -1
- package/indicators/bollinger-bands.src.js +1 -1
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +1 -1
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/dema.js +1 -1
- package/indicators/dema.src.js +1 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +105 -105
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +6 -4
- package/indicators/indicators.js +9 -9
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +6 -4
- package/indicators/keltner-channels.js +1 -1
- package/indicators/keltner-channels.src.js +1 -1
- package/indicators/macd.js +1 -1
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +1 -1
- package/indicators/natr.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +1 -1
- package/indicators/price-channel.src.js +1 -1
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/stochastic.js +1 -1
- package/indicators/stochastic.src.js +1 -1
- package/indicators/supertrend.js +1 -1
- package/indicators/supertrend.src.js +1 -1
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trix.js +1 -1
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +1 -1
- package/indicators/volume-by-price.src.js +1 -1
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +92 -89
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +138 -15
- package/modules/annotations-advanced.js +128 -127
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +514 -396
- package/modules/annotations.d.ts +36 -0
- package/modules/annotations.js +81 -81
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.d.ts +36 -0
- package/modules/annotations.src.js +418 -315
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +1 -1
- package/modules/boost-canvas.src.js +1 -1
- package/modules/boost.js +63 -63
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +99 -39
- package/modules/broken-axis.js +1 -1
- package/modules/broken-axis.src.js +2 -2
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +69 -69
- package/modules/current-date-indicator.js +1 -1
- package/modules/current-date-indicator.src.js +1 -1
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.js.map +1 -1
- package/modules/cylinder.src.js +4 -2
- package/modules/data.js +4 -4
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +10 -6
- package/modules/datagrouping.js +1 -1
- package/modules/datagrouping.src.js +1 -1
- package/modules/debugger.js +4 -4
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +7 -2
- package/modules/dependency-wheel.js +1 -1
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +1 -1
- package/modules/draggable-points.src.js +2 -2
- package/modules/drilldown.js +1 -1
- package/modules/drilldown.src.js +2 -2
- package/modules/export-data.js +2 -2
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +8 -9
- package/modules/exporting.js +25 -25
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +11 -3
- package/modules/full-screen.js +1 -1
- package/modules/full-screen.src.js +2 -2
- 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 +11 -4
- package/modules/gantt.js +166 -164
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +422 -295
- package/modules/grid-axis.js +18 -16
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +184 -102
- package/modules/heatmap.js +22 -22
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +36 -15
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +186 -183
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +11 -11
- package/modules/map-parser.js +1 -1
- package/modules/map-parser.src.js +1 -1
- package/modules/map.js +83 -83
- package/modules/map.js.map +1 -1
- package/modules/map.src.js +67 -34
- package/modules/networkgraph.js +10 -9
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.js +180 -72
- package/modules/no-data-to-display.js +1 -1
- package/modules/no-data-to-display.src.js +1 -1
- package/modules/offline-exporting.js +15 -15
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +17 -4
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +2 -2
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +1 -1
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +66 -21
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +1 -1
- package/modules/pareto.js.map +1 -1
- package/modules/pareto.src.js +53 -52
- package/modules/pathfinder.js +3 -3
- package/modules/pathfinder.js.map +1 -1
- package/modules/pathfinder.src.js +3 -3
- package/modules/pattern-fill.js +1 -1
- package/modules/pattern-fill.src.js +2 -2
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +2 -2
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +2 -2
- package/modules/sankey.js +14 -14
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +39 -19
- package/modules/series-label.js +16 -16
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +17 -9
- package/modules/solid-gauge.js +5 -5
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +129 -80
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +4 -4
- package/modules/static-scale.js.map +1 -1
- package/modules/static-scale.src.js +9 -2
- package/modules/stock-tools.js +2 -2
- package/modules/stock-tools.src.js +3 -3
- package/modules/stock.js +146 -145
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.js +105 -61
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +12 -12
- package/modules/sunburst.js +40 -40
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +30 -9
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +59 -58
- package/modules/timeline.js +12 -11
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +18 -13
- package/modules/treegrid.js +45 -43
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +238 -139
- package/modules/treemap.js +1 -1
- package/modules/treemap.src.js +7 -7
- 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 +40 -40
- package/modules/vector.js +1 -1
- package/modules/vector.js.map +1 -1
- package/modules/vector.src.js +109 -108
- package/modules/venn.js +23 -23
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +5 -3
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +44 -44
- package/modules/wordcloud.js +10 -10
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +2 -1
- package/modules/xrange.js +12 -12
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +113 -105
- package/package.json +1 -1
- package/themes/avocado.js +21 -37
- package/themes/avocado.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/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 +21 -37
- package/themes/sunset.src.js +1 -1
- package/.DS_Store +0 -0
- package/es-modules/.DS_Store +0 -0
- package/es-modules/modules/annotations-legacy.src.js +0 -1977
- package/js/.DS_Store +0 -0
|
@@ -1,123 +1,103 @@
|
|
|
1
1
|
/* *
|
|
2
|
-
* (c) 2010-2019 Torstein Honsi
|
|
3
2
|
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
* (c) 2010-2019 Torstein Honsi
|
|
4
|
+
*
|
|
5
|
+
* License: www.highcharts.com/license
|
|
6
|
+
*
|
|
7
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
8
|
+
*
|
|
9
|
+
* */
|
|
10
|
+
'use strict';
|
|
11
|
+
import Highcharts from './Globals.js';
|
|
7
12
|
/**
|
|
8
13
|
* One position in relation to an axis.
|
|
9
14
|
*
|
|
10
15
|
* @interface Highcharts.PointerAxisCoordinateObject
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
*/ /**
|
|
17
|
+
* Related axis.
|
|
18
|
+
*
|
|
19
|
+
* @name Highcharts.PointerAxisCoordinateObject#axis
|
|
20
|
+
* @type {Highcharts.Axis}
|
|
21
|
+
*/ /**
|
|
22
|
+
* Axis value.
|
|
23
|
+
*
|
|
24
|
+
* @name Highcharts.PointerAxisCoordinateObject#value
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
23
27
|
/**
|
|
24
28
|
* Positions in terms of axis values.
|
|
25
29
|
*
|
|
26
30
|
* @interface Highcharts.PointerAxisCoordinatesObject
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
*/ /**
|
|
32
|
+
* Positions on the x-axis.
|
|
33
|
+
* @name Highcharts.PointerAxisCoordinatesObject#xAxis
|
|
34
|
+
* @type {Array<Highcharts.PointerAxisCoordinateObject>}
|
|
35
|
+
*/ /**
|
|
36
|
+
* Positions on the y-axis.
|
|
37
|
+
* @name Highcharts.PointerAxisCoordinatesObject#yAxis
|
|
38
|
+
* @type {Array<Highcharts.PointerAxisCoordinateObject>}
|
|
39
|
+
*/
|
|
37
40
|
/**
|
|
38
41
|
* Pointer coordinates.
|
|
39
42
|
*
|
|
40
43
|
* @interface Highcharts.PointerCoordinatesObject
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
*/ /**
|
|
45
|
+
* @name Highcharts.PointerCoordinatesObject#chartX
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/ /**
|
|
48
|
+
* @name Highcharts.PointerCoordinatesObject#chartY
|
|
49
|
+
* @type {number}
|
|
50
|
+
*/
|
|
49
51
|
/**
|
|
50
52
|
* A native browser mouse or touch event, extended with position information
|
|
51
53
|
* relative to the {@link Chart.container}.
|
|
52
54
|
*
|
|
53
55
|
* @interface Highcharts.PointerEventObject
|
|
54
56
|
* @extends global.PointerEvent
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
*/ /**
|
|
58
|
+
* The X coordinate of the pointer interaction relative to the chart.
|
|
59
|
+
*
|
|
60
|
+
* @name Highcharts.PointerEventObject#chartX
|
|
61
|
+
* @type {number}
|
|
62
|
+
*/ /**
|
|
63
|
+
* The Y coordinate of the pointer interaction relative to the chart.
|
|
64
|
+
*
|
|
65
|
+
* @name Highcharts.PointerEventObject#chartY
|
|
66
|
+
* @type {number}
|
|
67
|
+
*/
|
|
67
68
|
/**
|
|
68
69
|
* Axis-specific data of a selection.
|
|
69
70
|
*
|
|
70
71
|
* @interface Highcharts.SelectDataObject
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
*/ /**
|
|
73
|
+
* @name Highcharts.SelectDataObject#axis
|
|
74
|
+
* @type {Highcharts.Axis}
|
|
75
|
+
*/ /**
|
|
76
|
+
* @name Highcharts.SelectDataObject#max
|
|
77
|
+
* @type {number}
|
|
78
|
+
*/ /**
|
|
79
|
+
* @name Highcharts.SelectDataObject#min
|
|
80
|
+
* @type {number}
|
|
81
|
+
*/
|
|
82
82
|
/**
|
|
83
83
|
* Object for select events.
|
|
84
84
|
*
|
|
85
85
|
* @interface Highcharts.SelectEventObject
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
'use strict';
|
|
98
|
-
|
|
99
|
-
import Highcharts from './Globals.js';
|
|
86
|
+
*/ /**
|
|
87
|
+
* @name Highcharts.SelectEventObject#originalEvent
|
|
88
|
+
* @type {global.Event}
|
|
89
|
+
*/ /**
|
|
90
|
+
* @name Highcharts.SelectEventObject#xAxis
|
|
91
|
+
* @type {Array<Highcharts.SelectDataObject>}
|
|
92
|
+
*/ /**
|
|
93
|
+
* @name Highcharts.SelectEventObject#yAxis
|
|
94
|
+
* @type {Array<Highcharts.SelectDataObject>}
|
|
95
|
+
*/
|
|
100
96
|
import './Utilities.js';
|
|
101
97
|
import './Tooltip.js';
|
|
102
98
|
import './Color.js';
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
addEvent = H.addEvent,
|
|
106
|
-
attr = H.attr,
|
|
107
|
-
charts = H.charts,
|
|
108
|
-
color = H.color,
|
|
109
|
-
css = H.css,
|
|
110
|
-
defined = H.defined,
|
|
111
|
-
extend = H.extend,
|
|
112
|
-
find = H.find,
|
|
113
|
-
fireEvent = H.fireEvent,
|
|
114
|
-
isNumber = H.isNumber,
|
|
115
|
-
isObject = H.isObject,
|
|
116
|
-
offset = H.offset,
|
|
117
|
-
pick = H.pick,
|
|
118
|
-
splat = H.splat,
|
|
119
|
-
Tooltip = H.Tooltip;
|
|
120
|
-
|
|
99
|
+
var H = Highcharts, addEvent = H.addEvent, attr = H.attr, charts = H.charts, color = H.color, css = H.css, defined = H.defined, extend = H.extend, find = H.find, fireEvent = H.fireEvent, isNumber = H.isNumber, isObject = H.isObject, offset = H.offset, pick = H.pick, splat = H.splat, Tooltip = H.Tooltip;
|
|
100
|
+
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
121
101
|
/**
|
|
122
102
|
* The mouse and touch tracker object. Each {@link Chart} item has one
|
|
123
103
|
* assosiated Pointer item that can be accessed from the {@link Chart.pointer}
|
|
@@ -136,7 +116,6 @@ var H = Highcharts,
|
|
|
136
116
|
Highcharts.Pointer = function (chart, options) {
|
|
137
117
|
this.init(chart, options);
|
|
138
118
|
};
|
|
139
|
-
|
|
140
119
|
Highcharts.Pointer.prototype = {
|
|
141
120
|
/**
|
|
142
121
|
* Initialize the Pointer.
|
|
@@ -150,20 +129,19 @@ Highcharts.Pointer.prototype = {
|
|
|
150
129
|
* @param {Highcharts.Options} options
|
|
151
130
|
* The root options object. The pointer uses options from the chart
|
|
152
131
|
* and tooltip structures.
|
|
132
|
+
*
|
|
133
|
+
* @return {void}
|
|
153
134
|
*/
|
|
154
135
|
init: function (chart, options) {
|
|
155
|
-
|
|
156
136
|
// Store references
|
|
157
137
|
this.options = options;
|
|
158
138
|
this.chart = chart;
|
|
159
|
-
|
|
160
139
|
// Do we need to handle click on a touch device?
|
|
161
140
|
this.runChartClick =
|
|
162
|
-
options.chart.events &&
|
|
163
|
-
|
|
141
|
+
options.chart.events &&
|
|
142
|
+
!!options.chart.events.click;
|
|
164
143
|
this.pinchDown = [];
|
|
165
144
|
this.lastValidTouch = {};
|
|
166
|
-
|
|
167
145
|
if (Tooltip) {
|
|
168
146
|
/**
|
|
169
147
|
* Tooltip object for points of series.
|
|
@@ -174,10 +152,8 @@ Highcharts.Pointer.prototype = {
|
|
|
174
152
|
chart.tooltip = new Tooltip(chart, options.tooltip);
|
|
175
153
|
this.followTouchMove = pick(options.tooltip.followTouchMove, true);
|
|
176
154
|
}
|
|
177
|
-
|
|
178
155
|
this.setDOMEvents();
|
|
179
156
|
},
|
|
180
|
-
|
|
181
157
|
/**
|
|
182
158
|
* Resolve the zoomType option, this is reset on all touch start and mouse
|
|
183
159
|
* down events.
|
|
@@ -187,27 +163,21 @@ Highcharts.Pointer.prototype = {
|
|
|
187
163
|
*
|
|
188
164
|
* @param {global.Event} e
|
|
189
165
|
* Event object.
|
|
166
|
+
*
|
|
167
|
+
* @param {void}
|
|
190
168
|
*/
|
|
191
169
|
zoomOption: function (e) {
|
|
192
|
-
var chart = this.chart,
|
|
193
|
-
options = chart.options.chart,
|
|
194
|
-
zoomType = options.zoomType || '',
|
|
195
|
-
inverted = chart.inverted,
|
|
196
|
-
zoomX,
|
|
197
|
-
zoomY;
|
|
198
|
-
|
|
170
|
+
var chart = this.chart, options = chart.options.chart, zoomType = options.zoomType || '', inverted = chart.inverted, zoomX, zoomY;
|
|
199
171
|
// Look for the pinchType option
|
|
200
172
|
if (/touch/.test(e.type)) {
|
|
201
173
|
zoomType = pick(options.pinchType, zoomType);
|
|
202
174
|
}
|
|
203
|
-
|
|
204
175
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
205
176
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
206
177
|
this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);
|
|
207
178
|
this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);
|
|
208
179
|
this.hasZoom = zoomX || zoomY;
|
|
209
180
|
},
|
|
210
|
-
|
|
211
181
|
/**
|
|
212
182
|
* Takes a browser event object and extends it with custom Highcharts
|
|
213
183
|
* properties `chartX` and `chartY` in order to work on the internal
|
|
@@ -218,28 +188,29 @@ Highcharts.Pointer.prototype = {
|
|
|
218
188
|
* @param {global.Event} e
|
|
219
189
|
* Event object in standard browsers.
|
|
220
190
|
*
|
|
191
|
+
* @param {Highcharts.OffsetObject} [chartPosition]
|
|
192
|
+
* Additional chart offset.
|
|
193
|
+
*
|
|
221
194
|
* @return {Highcharts.PointerEventObject}
|
|
222
195
|
* A browser event with extended properties `chartX` and `chartY`.
|
|
223
196
|
*/
|
|
224
197
|
normalize: function (e, chartPosition) {
|
|
225
198
|
var ePos;
|
|
226
|
-
|
|
227
199
|
// iOS (#2757)
|
|
228
200
|
ePos = e.touches ?
|
|
229
|
-
(e.touches.length ?
|
|
201
|
+
(e.touches.length ?
|
|
202
|
+
e.touches.item(0) :
|
|
203
|
+
e.changedTouches[0]) :
|
|
230
204
|
e;
|
|
231
|
-
|
|
232
205
|
// Get mouse position
|
|
233
206
|
if (!chartPosition) {
|
|
234
207
|
this.chartPosition = chartPosition = offset(this.chart.container);
|
|
235
208
|
}
|
|
236
|
-
|
|
237
209
|
return extend(e, {
|
|
238
210
|
chartX: Math.round(ePos.pageX - chartPosition.left),
|
|
239
211
|
chartY: Math.round(ePos.pageY - chartPosition.top)
|
|
240
212
|
});
|
|
241
213
|
},
|
|
242
|
-
|
|
243
214
|
/**
|
|
244
215
|
* Get the click position in terms of axis values.
|
|
245
216
|
*
|
|
@@ -251,22 +222,18 @@ Highcharts.Pointer.prototype = {
|
|
|
251
222
|
* @return {Highcharts.PointerAxisCoordinatesObject}
|
|
252
223
|
*/
|
|
253
224
|
getCoordinates: function (e) {
|
|
254
|
-
|
|
255
225
|
var coordinates = {
|
|
256
226
|
xAxis: [],
|
|
257
227
|
yAxis: []
|
|
258
228
|
};
|
|
259
|
-
|
|
260
229
|
this.chart.axes.forEach(function (axis) {
|
|
261
230
|
coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({
|
|
262
231
|
axis: axis,
|
|
263
232
|
value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])
|
|
264
233
|
});
|
|
265
234
|
});
|
|
266
|
-
|
|
267
235
|
return coordinates;
|
|
268
236
|
},
|
|
269
|
-
|
|
270
237
|
/**
|
|
271
238
|
* Finds the closest point to a set of coordinates, using the k-d-tree
|
|
272
239
|
* algorithm.
|
|
@@ -283,59 +250,45 @@ Highcharts.Pointer.prototype = {
|
|
|
283
250
|
* The pointer event object, containing chart coordinates of the
|
|
284
251
|
* pointer.
|
|
285
252
|
*
|
|
286
|
-
* @return {Point|undefined}
|
|
253
|
+
* @return {Highcharts.Point|undefined}
|
|
287
254
|
* The point closest to given coordinates.
|
|
288
255
|
*/
|
|
289
256
|
findNearestKDPoint: function (series, shared, e) {
|
|
290
|
-
var closest,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
result;
|
|
298
|
-
|
|
299
|
-
// We have two points which are not in the same place on xAxis
|
|
300
|
-
// and shared tooltip:
|
|
301
|
-
if (isCloserX !== 0 && shared) { // #5721
|
|
302
|
-
result = isCloserX;
|
|
257
|
+
var closest, sort = function (p1, p2) {
|
|
258
|
+
var isCloserX = p1.distX - p2.distX, isCloser = p1.dist - p2.dist, isAbove = (p2.series.group && p2.series.group.zIndex) -
|
|
259
|
+
(p1.series.group && p1.series.group.zIndex), result;
|
|
260
|
+
// We have two points which are not in the same place on xAxis
|
|
261
|
+
// and shared tooltip:
|
|
262
|
+
if (isCloserX !== 0 && shared) { // #5721
|
|
263
|
+
result = isCloserX;
|
|
303
264
|
// Points are not exactly in the same place on x/yAxis:
|
|
304
|
-
|
|
305
|
-
|
|
265
|
+
}
|
|
266
|
+
else if (isCloser !== 0) {
|
|
267
|
+
result = isCloser;
|
|
306
268
|
// The same xAxis and yAxis position, sort by z-index:
|
|
307
|
-
|
|
308
|
-
|
|
269
|
+
}
|
|
270
|
+
else if (isAbove !== 0) {
|
|
271
|
+
result = isAbove;
|
|
309
272
|
// The same zIndex, sort by array index:
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
result = p1.series.index > p2.series.index ? -1 : 1;
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
};
|
|
316
279
|
series.forEach(function (s) {
|
|
317
|
-
var noSharedTooltip = s.noSharedTooltip && shared,
|
|
318
|
-
|
|
319
|
-
!noSharedTooltip &&
|
|
320
|
-
s.options.findNearestPointBy.indexOf('y') < 0
|
|
321
|
-
),
|
|
322
|
-
point = s.searchPoint(
|
|
323
|
-
e,
|
|
324
|
-
compareX
|
|
325
|
-
);
|
|
326
|
-
|
|
280
|
+
var noSharedTooltip = s.noSharedTooltip && shared, compareX = (!noSharedTooltip &&
|
|
281
|
+
s.options.findNearestPointBy.indexOf('y') < 0), point = s.searchPoint(e, compareX);
|
|
327
282
|
if (
|
|
328
|
-
|
|
329
|
-
|
|
283
|
+
// Check that we actually found a point on the series.
|
|
284
|
+
isObject(point, true) &&
|
|
330
285
|
// Use the new point if it is closer.
|
|
331
|
-
(!isObject(closest, true) || (sort(closest, point) > 0))
|
|
332
|
-
) {
|
|
286
|
+
(!isObject(closest, true) || (sort(closest, point) > 0))) {
|
|
333
287
|
closest = point;
|
|
334
288
|
}
|
|
335
289
|
});
|
|
336
290
|
return closest;
|
|
337
291
|
},
|
|
338
|
-
|
|
339
292
|
/**
|
|
340
293
|
* @private
|
|
341
294
|
* @function Highcharts.Pointer#getPointFromEvent
|
|
@@ -345,16 +298,13 @@ Highcharts.Pointer.prototype = {
|
|
|
345
298
|
* @return {Highcharts.Point|undefined}
|
|
346
299
|
*/
|
|
347
300
|
getPointFromEvent: function (e) {
|
|
348
|
-
var target = e.target,
|
|
349
|
-
point;
|
|
350
|
-
|
|
301
|
+
var target = e.target, point;
|
|
351
302
|
while (target && !point) {
|
|
352
303
|
point = target.point;
|
|
353
304
|
target = target.parentNode;
|
|
354
305
|
}
|
|
355
306
|
return point;
|
|
356
307
|
},
|
|
357
|
-
|
|
358
308
|
/**
|
|
359
309
|
* @private
|
|
360
310
|
* @function Highcharts.Pointer#getChartCoordinatesFromPoint
|
|
@@ -363,15 +313,10 @@ Highcharts.Pointer.prototype = {
|
|
|
363
313
|
*
|
|
364
314
|
* @param {boolean} inverted
|
|
365
315
|
*
|
|
366
|
-
* @return {Highcharts.PointerCoordinatesObject}
|
|
316
|
+
* @return {Highcharts.PointerCoordinatesObject|undefined}
|
|
367
317
|
*/
|
|
368
318
|
getChartCoordinatesFromPoint: function (point, inverted) {
|
|
369
|
-
var series = point.series,
|
|
370
|
-
xAxis = series.xAxis,
|
|
371
|
-
yAxis = series.yAxis,
|
|
372
|
-
plotX = pick(point.clientX, point.plotX),
|
|
373
|
-
shapeArgs = point.shapeArgs;
|
|
374
|
-
|
|
319
|
+
var series = point.series, xAxis = series.xAxis, yAxis = series.yAxis, plotX = pick(point.clientX, point.plotX), shapeArgs = point.shapeArgs;
|
|
375
320
|
if (xAxis && yAxis) {
|
|
376
321
|
return inverted ? {
|
|
377
322
|
chartX: xAxis.len + xAxis.pos - plotX,
|
|
@@ -381,7 +326,6 @@ Highcharts.Pointer.prototype = {
|
|
|
381
326
|
chartY: point.plotY + yAxis.pos
|
|
382
327
|
};
|
|
383
328
|
}
|
|
384
|
-
|
|
385
329
|
if (shapeArgs && shapeArgs.x && shapeArgs.y) {
|
|
386
330
|
// E.g. pies do not have axes
|
|
387
331
|
return {
|
|
@@ -390,7 +334,6 @@ Highcharts.Pointer.prototype = {
|
|
|
390
334
|
};
|
|
391
335
|
}
|
|
392
336
|
},
|
|
393
|
-
|
|
394
337
|
/**
|
|
395
338
|
* Calculates what is the current hovered point/points and series.
|
|
396
339
|
*
|
|
@@ -415,47 +358,30 @@ Highcharts.Pointer.prototype = {
|
|
|
415
358
|
* @param {Highcharts.PointerEventObject} e
|
|
416
359
|
* The triggering event, containing chart coordinates of the pointer.
|
|
417
360
|
*
|
|
418
|
-
* @return {
|
|
361
|
+
* @return {object}
|
|
419
362
|
* Object containing resulting hover data: hoverPoint, hoverSeries,
|
|
420
363
|
* and hoverPoints.
|
|
421
364
|
*/
|
|
422
|
-
getHoverData: function (
|
|
423
|
-
existingHoverPoint,
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
return (
|
|
437
|
-
s.visible &&
|
|
438
|
-
!(!shared && s.directTouch) && // #3821
|
|
439
|
-
pick(s.options.enableMouseTracking, true)
|
|
440
|
-
);
|
|
441
|
-
},
|
|
442
|
-
// Which series to look in for the hover point
|
|
443
|
-
searchSeries = notSticky ?
|
|
444
|
-
// Only search on hovered series if it has stickyTracking false
|
|
445
|
-
[hoverSeries] :
|
|
446
|
-
// Filter what series to look in.
|
|
447
|
-
series.filter(function (s) {
|
|
448
|
-
return filter(s) && s.stickyTracking;
|
|
449
|
-
});
|
|
450
|
-
|
|
365
|
+
getHoverData: function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {
|
|
366
|
+
var hoverPoint, hoverPoints = [], hoverSeries = existingHoverSeries, useExisting = !!(isDirectTouch && existingHoverPoint), notSticky = hoverSeries && !hoverSeries.stickyTracking, filter = function (s) {
|
|
367
|
+
return (s.visible &&
|
|
368
|
+
!(!shared && s.directTouch) && // #3821
|
|
369
|
+
pick(s.options.enableMouseTracking, true));
|
|
370
|
+
},
|
|
371
|
+
// Which series to look in for the hover point
|
|
372
|
+
searchSeries = notSticky ?
|
|
373
|
+
// Only search on hovered series if it has stickyTracking false
|
|
374
|
+
[hoverSeries] :
|
|
375
|
+
// Filter what series to look in.
|
|
376
|
+
series.filter(function (s) {
|
|
377
|
+
return filter(s) && s.stickyTracking;
|
|
378
|
+
});
|
|
451
379
|
// Use existing hovered point or find the one closest to coordinates.
|
|
452
380
|
hoverPoint = useExisting ?
|
|
453
381
|
existingHoverPoint :
|
|
454
382
|
this.findNearestKDPoint(searchSeries, shared, e);
|
|
455
|
-
|
|
456
383
|
// Assign hover series
|
|
457
384
|
hoverSeries = hoverPoint && hoverPoint.series;
|
|
458
|
-
|
|
459
385
|
// If we have a hoverPoint, assign hoverPoints.
|
|
460
386
|
if (hoverPoint) {
|
|
461
387
|
// When tooltip is shared, it displays more than one point
|
|
@@ -463,13 +389,11 @@ Highcharts.Pointer.prototype = {
|
|
|
463
389
|
searchSeries = series.filter(function (s) {
|
|
464
390
|
return filter(s) && !s.noSharedTooltip;
|
|
465
391
|
});
|
|
466
|
-
|
|
467
392
|
// Get all points with the same x value as the hoverPoint
|
|
468
393
|
searchSeries.forEach(function (s) {
|
|
469
394
|
var point = find(s.points, function (p) {
|
|
470
395
|
return p.x === hoverPoint.x && !p.isNull;
|
|
471
396
|
});
|
|
472
|
-
|
|
473
397
|
if (isObject(point)) {
|
|
474
398
|
/*
|
|
475
399
|
* Boost returns a minimal point. Convert it to a usable
|
|
@@ -481,7 +405,8 @@ Highcharts.Pointer.prototype = {
|
|
|
481
405
|
hoverPoints.push(point);
|
|
482
406
|
}
|
|
483
407
|
});
|
|
484
|
-
}
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
485
410
|
hoverPoints.push(hoverPoint);
|
|
486
411
|
}
|
|
487
412
|
}
|
|
@@ -491,7 +416,6 @@ Highcharts.Pointer.prototype = {
|
|
|
491
416
|
hoverPoints: hoverPoints
|
|
492
417
|
};
|
|
493
418
|
},
|
|
494
|
-
|
|
495
419
|
/**
|
|
496
420
|
* With line type charts with a single tracker, get the point closest to the
|
|
497
421
|
* mouse. Run Point.onMouseOver and display tooltip for the point or points.
|
|
@@ -501,101 +425,64 @@ Highcharts.Pointer.prototype = {
|
|
|
501
425
|
*
|
|
502
426
|
* @param {global.Event} e
|
|
503
427
|
*
|
|
504
|
-
* @param {Highcharts.
|
|
428
|
+
* @param {Highcharts.PointerEventObject} [p]
|
|
429
|
+
*
|
|
430
|
+
* @return {void}
|
|
505
431
|
*
|
|
506
432
|
* @fires Highcharts.Point#event:mouseOut
|
|
507
433
|
* @fires Highcharts.Point#event:mouseOver
|
|
508
434
|
*/
|
|
509
435
|
runPointActions: function (e, p) {
|
|
510
|
-
var pointer = this,
|
|
511
|
-
chart
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
shared = tooltip ? tooltip.shared : false,
|
|
517
|
-
hoverPoint = p || chart.hoverPoint,
|
|
518
|
-
hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries,
|
|
519
|
-
// onMouseOver or already hovering a series with directTouch
|
|
520
|
-
isDirectTouch = e.type !== 'touchmove' && (
|
|
521
|
-
!!p || (
|
|
522
|
-
(hoverSeries && hoverSeries.directTouch) &&
|
|
523
|
-
pointer.isDirectTouch
|
|
524
|
-
)
|
|
525
|
-
),
|
|
526
|
-
hoverData = this.getHoverData(
|
|
527
|
-
hoverPoint,
|
|
528
|
-
hoverSeries,
|
|
529
|
-
series,
|
|
530
|
-
isDirectTouch,
|
|
531
|
-
shared,
|
|
532
|
-
e
|
|
533
|
-
),
|
|
534
|
-
activeSeries = [],
|
|
535
|
-
useSharedTooltip,
|
|
536
|
-
followPointer,
|
|
537
|
-
anchor,
|
|
538
|
-
points;
|
|
539
|
-
|
|
436
|
+
var pointer = this, chart = pointer.chart, series = chart.series, tooltip = chart.tooltip && chart.tooltip.options.enabled ?
|
|
437
|
+
chart.tooltip :
|
|
438
|
+
undefined, shared = tooltip ? tooltip.shared : false, hoverPoint = p || chart.hoverPoint, hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries,
|
|
439
|
+
// onMouseOver or already hovering a series with directTouch
|
|
440
|
+
isDirectTouch = e.type !== 'touchmove' && (!!p || ((hoverSeries && hoverSeries.directTouch) &&
|
|
441
|
+
pointer.isDirectTouch)), hoverData = this.getHoverData(hoverPoint, hoverSeries, series, isDirectTouch, shared, e), activeSeries = [], useSharedTooltip, followPointer, anchor, points;
|
|
540
442
|
// Update variables from hoverData.
|
|
541
443
|
hoverPoint = hoverData.hoverPoint;
|
|
542
444
|
points = hoverData.hoverPoints;
|
|
543
445
|
hoverSeries = hoverData.hoverSeries;
|
|
544
446
|
followPointer = hoverSeries && hoverSeries.tooltipOptions.followPointer;
|
|
545
|
-
useSharedTooltip = (
|
|
546
|
-
shared &&
|
|
447
|
+
useSharedTooltip = (shared &&
|
|
547
448
|
hoverSeries &&
|
|
548
|
-
!hoverSeries.noSharedTooltip
|
|
549
|
-
);
|
|
550
|
-
|
|
449
|
+
!hoverSeries.noSharedTooltip);
|
|
551
450
|
// Refresh tooltip for kdpoint if new hover point or tooltip was hidden
|
|
552
451
|
// #3926, #4200
|
|
553
|
-
if (
|
|
554
|
-
hoverPoint &&
|
|
452
|
+
if (hoverPoint &&
|
|
555
453
|
// !(hoverSeries && hoverSeries.directTouch) &&
|
|
556
|
-
(hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))
|
|
557
|
-
) {
|
|
454
|
+
(hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))) {
|
|
558
455
|
(chart.hoverPoints || []).forEach(function (p) {
|
|
559
456
|
if (points.indexOf(p) === -1) {
|
|
560
457
|
p.setState();
|
|
561
458
|
}
|
|
562
459
|
});
|
|
563
|
-
|
|
564
460
|
// Set normal state to previous series
|
|
565
461
|
if (chart.hoverSeries !== hoverSeries) {
|
|
566
462
|
hoverSeries.onMouseOver();
|
|
567
463
|
}
|
|
568
|
-
|
|
569
464
|
// Set inactive state for all points
|
|
570
465
|
activeSeries = pointer.getActiveSeries(points);
|
|
571
|
-
|
|
572
466
|
chart.series.forEach(function (inactiveSeries) {
|
|
573
|
-
if (
|
|
574
|
-
inactiveSeries
|
|
575
|
-
activeSeries.indexOf(inactiveSeries) === -1
|
|
576
|
-
) {
|
|
467
|
+
if (inactiveSeries.options.inactiveOtherPoints ||
|
|
468
|
+
activeSeries.indexOf(inactiveSeries) === -1) {
|
|
577
469
|
inactiveSeries.setState('inactive', true);
|
|
578
470
|
}
|
|
579
471
|
});
|
|
580
|
-
|
|
581
472
|
// Do mouseover on all points (#3919, #3985, #4410, #5622)
|
|
582
473
|
(points || []).forEach(function (p) {
|
|
583
474
|
p.setState('hover');
|
|
584
475
|
});
|
|
585
|
-
|
|
586
476
|
// If tracking is on series in stead of on each point,
|
|
587
477
|
// fire mouseOver on hover point. // #4448
|
|
588
478
|
if (chart.hoverPoint) {
|
|
589
479
|
chart.hoverPoint.firePointEvent('mouseOut');
|
|
590
480
|
}
|
|
591
|
-
|
|
592
481
|
// Hover point may have been destroyed in the event handlers (#7127)
|
|
593
482
|
if (!hoverPoint.series) {
|
|
594
483
|
return;
|
|
595
484
|
}
|
|
596
|
-
|
|
597
485
|
hoverPoint.firePointEvent('mouseOver');
|
|
598
|
-
|
|
599
486
|
/**
|
|
600
487
|
* Contains all hovered points.
|
|
601
488
|
*
|
|
@@ -603,7 +490,6 @@ Highcharts.Pointer.prototype = {
|
|
|
603
490
|
* @type {Array<Highcharts.Point>|null}
|
|
604
491
|
*/
|
|
605
492
|
chart.hoverPoints = points;
|
|
606
|
-
|
|
607
493
|
/**
|
|
608
494
|
* Contains the original hovered point.
|
|
609
495
|
*
|
|
@@ -611,52 +497,43 @@ Highcharts.Pointer.prototype = {
|
|
|
611
497
|
* @type {Highcharts.Point|null}
|
|
612
498
|
*/
|
|
613
499
|
chart.hoverPoint = hoverPoint;
|
|
614
|
-
|
|
615
500
|
// Draw tooltip if necessary
|
|
616
501
|
if (tooltip) {
|
|
617
502
|
tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);
|
|
618
503
|
}
|
|
619
|
-
|
|
620
|
-
}
|
|
504
|
+
// Update positions (regardless of kdpoint or hoverPoint)
|
|
505
|
+
}
|
|
506
|
+
else if (followPointer && tooltip && !tooltip.isHidden) {
|
|
621
507
|
anchor = tooltip.getAnchor([{}], e);
|
|
622
508
|
tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });
|
|
623
509
|
}
|
|
624
|
-
|
|
625
510
|
// Start the event listener to pick up the tooltip and crosshairs
|
|
626
511
|
if (!pointer.unDocMouseMove) {
|
|
627
|
-
pointer.unDocMouseMove = addEvent(
|
|
628
|
-
chart.
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
var chart = charts[H.hoverChartIndex];
|
|
632
|
-
|
|
633
|
-
if (chart) {
|
|
634
|
-
chart.pointer.onDocumentMouseMove(e);
|
|
635
|
-
}
|
|
512
|
+
pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {
|
|
513
|
+
var chart = charts[H.hoverChartIndex];
|
|
514
|
+
if (chart) {
|
|
515
|
+
chart.pointer.onDocumentMouseMove(e);
|
|
636
516
|
}
|
|
637
|
-
);
|
|
517
|
+
});
|
|
638
518
|
}
|
|
639
|
-
|
|
640
519
|
// Issues related to crosshair #4927, #5269 #5066, #5658
|
|
641
520
|
chart.axes.forEach(function drawAxisCrosshair(axis) {
|
|
642
|
-
var snap = pick(axis.crosshair.snap, true),
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
});
|
|
648
|
-
|
|
521
|
+
var snap = pick(axis.crosshair.snap, true), point = !snap ?
|
|
522
|
+
undefined :
|
|
523
|
+
H.find(points, function (p) {
|
|
524
|
+
return p.series[axis.coll] === axis;
|
|
525
|
+
});
|
|
649
526
|
// Axis has snapping crosshairs, and one of the hover points belongs
|
|
650
527
|
// to axis. Always call drawCrosshair when it is not snap.
|
|
651
528
|
if (point || !snap) {
|
|
652
529
|
axis.drawCrosshair(e, point);
|
|
653
|
-
|
|
654
|
-
}
|
|
530
|
+
// Axis has snapping crosshairs, but no hover point belongs to axis
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
655
533
|
axis.hideCrosshair();
|
|
656
534
|
}
|
|
657
535
|
});
|
|
658
536
|
},
|
|
659
|
-
|
|
660
537
|
/**
|
|
661
538
|
* Get currently active series, in opposite to `inactive` series.
|
|
662
539
|
* Active series includes also it's parents/childs (via linkedTo) option
|
|
@@ -673,59 +550,44 @@ Highcharts.Pointer.prototype = {
|
|
|
673
550
|
* Array of series
|
|
674
551
|
*/
|
|
675
552
|
getActiveSeries: function (points) {
|
|
676
|
-
var activeSeries = [],
|
|
677
|
-
series;
|
|
678
|
-
|
|
553
|
+
var activeSeries = [], series;
|
|
679
554
|
(points || []).forEach(function (item) {
|
|
680
555
|
series = item.series;
|
|
681
|
-
|
|
682
556
|
// Include itself
|
|
683
557
|
activeSeries.push(series);
|
|
684
|
-
|
|
685
558
|
// Include parent series
|
|
686
559
|
if (series.linkedParent) {
|
|
687
560
|
activeSeries.push(series.linkedParent);
|
|
688
561
|
}
|
|
689
|
-
|
|
690
562
|
// Include all child series
|
|
691
563
|
if (series.linkedSeries) {
|
|
692
|
-
activeSeries = activeSeries.concat(
|
|
693
|
-
series.linkedSeries
|
|
694
|
-
);
|
|
564
|
+
activeSeries = activeSeries.concat(series.linkedSeries);
|
|
695
565
|
}
|
|
696
|
-
|
|
697
566
|
// Include navigator series
|
|
698
567
|
if (series.navigatorSeries) {
|
|
699
568
|
activeSeries.push(series.navigatorSeries);
|
|
700
569
|
}
|
|
701
570
|
});
|
|
702
|
-
|
|
703
571
|
return activeSeries;
|
|
704
572
|
},
|
|
705
|
-
|
|
706
573
|
/**
|
|
707
574
|
* Reset the tracking by hiding the tooltip, the hover series state and the
|
|
708
575
|
* hover point
|
|
709
576
|
*
|
|
710
577
|
* @function Highcharts.Pointer#reset
|
|
711
578
|
*
|
|
712
|
-
* @param {boolean} allowMove
|
|
579
|
+
* @param {boolean} [allowMove]
|
|
713
580
|
* Instead of destroying the tooltip altogether, allow moving it if
|
|
714
581
|
* possible.
|
|
715
582
|
*
|
|
716
|
-
* @param {number} delay
|
|
583
|
+
* @param {number} [delay]
|
|
584
|
+
*
|
|
585
|
+
* @return {void}
|
|
717
586
|
*/
|
|
718
587
|
reset: function (allowMove, delay) {
|
|
719
|
-
var pointer = this,
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
hoverPoint = chart.hoverPoint,
|
|
723
|
-
hoverPoints = chart.hoverPoints,
|
|
724
|
-
tooltip = chart.tooltip,
|
|
725
|
-
tooltipPoints = tooltip && tooltip.shared ?
|
|
726
|
-
hoverPoints :
|
|
727
|
-
hoverPoint;
|
|
728
|
-
|
|
588
|
+
var pointer = this, chart = pointer.chart, hoverSeries = chart.hoverSeries, hoverPoint = chart.hoverPoint, hoverPoints = chart.hoverPoints, tooltip = chart.tooltip, tooltipPoints = tooltip && tooltip.shared ?
|
|
589
|
+
hoverPoints :
|
|
590
|
+
hoverPoint;
|
|
729
591
|
// Check if the points have moved outside the plot area (#1003, #4736,
|
|
730
592
|
// #5101)
|
|
731
593
|
if (allowMove && tooltipPoints) {
|
|
@@ -735,7 +597,6 @@ Highcharts.Pointer.prototype = {
|
|
|
735
597
|
}
|
|
736
598
|
});
|
|
737
599
|
}
|
|
738
|
-
|
|
739
600
|
// Just move the tooltip, #349
|
|
740
601
|
if (allowMove) {
|
|
741
602
|
if (tooltip && tooltipPoints && splat(tooltipPoints).length) {
|
|
@@ -752,7 +613,8 @@ Highcharts.Pointer.prototype = {
|
|
|
752
613
|
}
|
|
753
614
|
}
|
|
754
615
|
});
|
|
755
|
-
}
|
|
616
|
+
}
|
|
617
|
+
else if (hoverPoint) { // #2500
|
|
756
618
|
hoverPoint.setState(hoverPoint.state, true);
|
|
757
619
|
chart.axes.forEach(function (axis) {
|
|
758
620
|
if (axis.crosshair) {
|
|
@@ -761,56 +623,47 @@ Highcharts.Pointer.prototype = {
|
|
|
761
623
|
});
|
|
762
624
|
}
|
|
763
625
|
}
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
626
|
+
// Full reset
|
|
627
|
+
}
|
|
628
|
+
else {
|
|
768
629
|
if (hoverPoint) {
|
|
769
630
|
hoverPoint.onMouseOut();
|
|
770
631
|
}
|
|
771
|
-
|
|
772
632
|
if (hoverPoints) {
|
|
773
633
|
hoverPoints.forEach(function (point) {
|
|
774
634
|
point.setState();
|
|
775
635
|
});
|
|
776
636
|
}
|
|
777
|
-
|
|
778
637
|
if (hoverSeries) {
|
|
779
638
|
hoverSeries.onMouseOut();
|
|
780
639
|
}
|
|
781
|
-
|
|
782
640
|
if (tooltip) {
|
|
783
641
|
tooltip.hide(delay);
|
|
784
642
|
}
|
|
785
|
-
|
|
786
643
|
if (pointer.unDocMouseMove) {
|
|
787
644
|
pointer.unDocMouseMove = pointer.unDocMouseMove();
|
|
788
645
|
}
|
|
789
|
-
|
|
790
646
|
// Remove crosshairs
|
|
791
647
|
chart.axes.forEach(function (axis) {
|
|
792
648
|
axis.hideCrosshair();
|
|
793
649
|
});
|
|
794
|
-
|
|
795
650
|
pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;
|
|
796
651
|
}
|
|
797
652
|
},
|
|
798
|
-
|
|
799
653
|
/**
|
|
800
654
|
* Scale series groups to a certain scale and translation.
|
|
801
655
|
*
|
|
802
656
|
* @private
|
|
803
657
|
* @function Highcharts.Pointer#scaleGroups
|
|
804
658
|
*
|
|
805
|
-
* @param {Highcharts.SeriesPlotBoxObject} attribs
|
|
659
|
+
* @param {Highcharts.SeriesPlotBoxObject} [attribs]
|
|
806
660
|
*
|
|
807
|
-
* @param {boolean} clip
|
|
661
|
+
* @param {boolean} [clip]
|
|
662
|
+
*
|
|
663
|
+
* @return {void}
|
|
808
664
|
*/
|
|
809
665
|
scaleGroups: function (attribs, clip) {
|
|
810
|
-
|
|
811
|
-
var chart = this.chart,
|
|
812
|
-
seriesAttribs;
|
|
813
|
-
|
|
666
|
+
var chart = this.chart, seriesAttribs;
|
|
814
667
|
// Scale each series
|
|
815
668
|
chart.series.forEach(function (series) {
|
|
816
669
|
seriesAttribs = attribs || series.getPlotBox(); // #1701
|
|
@@ -825,11 +678,9 @@ Highcharts.Pointer.prototype = {
|
|
|
825
678
|
}
|
|
826
679
|
}
|
|
827
680
|
});
|
|
828
|
-
|
|
829
681
|
// Clip
|
|
830
682
|
chart.clipRect.attr(clip || chart.clipBox);
|
|
831
683
|
},
|
|
832
|
-
|
|
833
684
|
/**
|
|
834
685
|
* Start a drag operation.
|
|
835
686
|
*
|
|
@@ -837,17 +688,17 @@ Highcharts.Pointer.prototype = {
|
|
|
837
688
|
* @function Highcharts.Pointer#dragStart
|
|
838
689
|
*
|
|
839
690
|
* @param {Highcharts.PointerEventObject} e
|
|
691
|
+
*
|
|
692
|
+
* @return {void}
|
|
840
693
|
*/
|
|
841
694
|
dragStart: function (e) {
|
|
842
695
|
var chart = this.chart;
|
|
843
|
-
|
|
844
696
|
// Record the start position
|
|
845
697
|
chart.mouseIsDown = e.type;
|
|
846
698
|
chart.cancelClick = false;
|
|
847
699
|
chart.mouseDownX = this.mouseDownX = e.chartX;
|
|
848
700
|
chart.mouseDownY = this.mouseDownY = e.chartY;
|
|
849
701
|
},
|
|
850
|
-
|
|
851
702
|
/**
|
|
852
703
|
* Perform a drag operation in response to a mousemove event while the mouse
|
|
853
704
|
* is down.
|
|
@@ -856,93 +707,58 @@ Highcharts.Pointer.prototype = {
|
|
|
856
707
|
* @function Highcharts.Pointer#drag
|
|
857
708
|
*
|
|
858
709
|
* @param {Highcharts.PointerEventObject} e
|
|
710
|
+
*
|
|
711
|
+
* @return {void}
|
|
859
712
|
*/
|
|
860
713
|
drag: function (e) {
|
|
861
|
-
|
|
862
|
-
var chart = this.chart,
|
|
863
|
-
chartOptions = chart.options.chart,
|
|
864
|
-
chartX = e.chartX,
|
|
865
|
-
chartY = e.chartY,
|
|
866
|
-
zoomHor = this.zoomHor,
|
|
867
|
-
zoomVert = this.zoomVert,
|
|
868
|
-
plotLeft = chart.plotLeft,
|
|
869
|
-
plotTop = chart.plotTop,
|
|
870
|
-
plotWidth = chart.plotWidth,
|
|
871
|
-
plotHeight = chart.plotHeight,
|
|
872
|
-
clickedInside,
|
|
873
|
-
size,
|
|
874
|
-
selectionMarker = this.selectionMarker,
|
|
875
|
-
mouseDownX = this.mouseDownX,
|
|
876
|
-
mouseDownY = this.mouseDownY,
|
|
877
|
-
panKey = chartOptions.panKey && e[chartOptions.panKey + 'Key'];
|
|
878
|
-
|
|
714
|
+
var chart = this.chart, chartOptions = chart.options.chart, chartX = e.chartX, chartY = e.chartY, zoomHor = this.zoomHor, zoomVert = this.zoomVert, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, clickedInside, size, selectionMarker = this.selectionMarker, mouseDownX = this.mouseDownX, mouseDownY = this.mouseDownY, panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);
|
|
879
715
|
// If the device supports both touch and mouse (like IE11), and we are
|
|
880
716
|
// touch-dragging inside the plot area, don't handle the mouse event.
|
|
881
717
|
// #4339.
|
|
882
718
|
if (selectionMarker && selectionMarker.touch) {
|
|
883
719
|
return;
|
|
884
720
|
}
|
|
885
|
-
|
|
886
721
|
// If the mouse is outside the plot area, adjust to cooordinates
|
|
887
722
|
// inside to prevent the selection marker from going outside
|
|
888
723
|
if (chartX < plotLeft) {
|
|
889
724
|
chartX = plotLeft;
|
|
890
|
-
}
|
|
725
|
+
}
|
|
726
|
+
else if (chartX > plotLeft + plotWidth) {
|
|
891
727
|
chartX = plotLeft + plotWidth;
|
|
892
728
|
}
|
|
893
|
-
|
|
894
729
|
if (chartY < plotTop) {
|
|
895
730
|
chartY = plotTop;
|
|
896
|
-
}
|
|
731
|
+
}
|
|
732
|
+
else if (chartY > plotTop + plotHeight) {
|
|
897
733
|
chartY = plotTop + plotHeight;
|
|
898
734
|
}
|
|
899
|
-
|
|
900
735
|
// determine if the mouse has moved more than 10px
|
|
901
|
-
this.hasDragged = Math.sqrt(
|
|
902
|
-
Math.pow(
|
|
903
|
-
Math.pow(mouseDownY - chartY, 2)
|
|
904
|
-
);
|
|
905
|
-
|
|
736
|
+
this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +
|
|
737
|
+
Math.pow(mouseDownY - chartY, 2));
|
|
906
738
|
if (this.hasDragged > 10) {
|
|
907
|
-
clickedInside = chart.isInsidePlot(
|
|
908
|
-
mouseDownX - plotLeft,
|
|
909
|
-
mouseDownY - plotTop
|
|
910
|
-
);
|
|
911
|
-
|
|
739
|
+
clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop);
|
|
912
740
|
// make a selection
|
|
913
|
-
if (
|
|
914
|
-
chart.hasCartesianSeries &&
|
|
741
|
+
if (chart.hasCartesianSeries &&
|
|
915
742
|
(this.zoomX || this.zoomY) &&
|
|
916
743
|
clickedInside &&
|
|
917
|
-
!panKey
|
|
918
|
-
) {
|
|
744
|
+
!panKey) {
|
|
919
745
|
if (!selectionMarker) {
|
|
920
746
|
this.selectionMarker = selectionMarker =
|
|
921
|
-
chart.renderer.rect(
|
|
922
|
-
plotLeft,
|
|
923
|
-
plotTop,
|
|
924
|
-
zoomHor ? 1 : plotWidth,
|
|
925
|
-
zoomVert ? 1 : plotHeight,
|
|
926
|
-
0
|
|
927
|
-
)
|
|
747
|
+
chart.renderer.rect(plotLeft, plotTop, zoomHor ? 1 : plotWidth, zoomVert ? 1 : plotHeight, 0)
|
|
928
748
|
.attr({
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
749
|
+
'class': 'highcharts-selection-marker',
|
|
750
|
+
zIndex: 7
|
|
751
|
+
})
|
|
932
752
|
.add();
|
|
933
|
-
|
|
934
753
|
if (!chart.styledMode) {
|
|
935
754
|
selectionMarker.attr({
|
|
936
|
-
fill: (
|
|
937
|
-
chartOptions.selectionMarkerFill ||
|
|
755
|
+
fill: (chartOptions.selectionMarkerFill ||
|
|
938
756
|
color('#335cad')
|
|
939
|
-
.setOpacity(0.25).get()
|
|
940
|
-
)
|
|
757
|
+
.setOpacity(0.25).get())
|
|
941
758
|
});
|
|
942
759
|
}
|
|
943
760
|
}
|
|
944
761
|
}
|
|
945
|
-
|
|
946
762
|
// adjust the width of the selection marker
|
|
947
763
|
if (selectionMarker && zoomHor) {
|
|
948
764
|
size = chartX - mouseDownX;
|
|
@@ -959,14 +775,12 @@ Highcharts.Pointer.prototype = {
|
|
|
959
775
|
y: (size > 0 ? 0 : size) + mouseDownY
|
|
960
776
|
});
|
|
961
777
|
}
|
|
962
|
-
|
|
963
778
|
// panning
|
|
964
779
|
if (clickedInside && !selectionMarker && chartOptions.panning) {
|
|
965
780
|
chart.pan(e, chartOptions.panning);
|
|
966
781
|
}
|
|
967
782
|
}
|
|
968
783
|
},
|
|
969
|
-
|
|
970
784
|
/**
|
|
971
785
|
* On mouse up or touch end across the entire document, drop the selection.
|
|
972
786
|
*
|
|
@@ -974,65 +788,43 @@ Highcharts.Pointer.prototype = {
|
|
|
974
788
|
* @function Highcharts.Pointer#drop
|
|
975
789
|
*
|
|
976
790
|
* @param {global.Event} e
|
|
791
|
+
*
|
|
792
|
+
* @return {void}
|
|
977
793
|
*/
|
|
978
794
|
drop: function (e) {
|
|
979
|
-
var pointer = this,
|
|
980
|
-
chart = this.chart,
|
|
981
|
-
hasPinched = this.hasPinched;
|
|
982
|
-
|
|
795
|
+
var pointer = this, chart = this.chart, hasPinched = this.hasPinched;
|
|
983
796
|
if (this.selectionMarker) {
|
|
984
797
|
var selectionData = {
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
selectionBox
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
selectionBox.attr('width') :
|
|
998
|
-
selectionBox.width,
|
|
999
|
-
selectionHeight = selectionBox.attr ?
|
|
1000
|
-
selectionBox.attr('height') :
|
|
1001
|
-
selectionBox.height,
|
|
1002
|
-
runZoom;
|
|
1003
|
-
|
|
798
|
+
originalEvent: e,
|
|
799
|
+
xAxis: [],
|
|
800
|
+
yAxis: []
|
|
801
|
+
}, selectionBox = this.selectionMarker, selectionLeft = selectionBox.attr ?
|
|
802
|
+
selectionBox.attr('x') :
|
|
803
|
+
selectionBox.x, selectionTop = selectionBox.attr ?
|
|
804
|
+
selectionBox.attr('y') :
|
|
805
|
+
selectionBox.y, selectionWidth = selectionBox.attr ?
|
|
806
|
+
selectionBox.attr('width') :
|
|
807
|
+
selectionBox.width, selectionHeight = selectionBox.attr ?
|
|
808
|
+
selectionBox.attr('height') :
|
|
809
|
+
selectionBox.height, runZoom;
|
|
1004
810
|
// a selection has been made
|
|
1005
811
|
if (this.hasDragged || hasPinched) {
|
|
1006
|
-
|
|
1007
812
|
// record each axis' min and max
|
|
1008
813
|
chart.axes.forEach(function (axis) {
|
|
1009
|
-
if (
|
|
1010
|
-
axis.zoomEnabled &&
|
|
814
|
+
if (axis.zoomEnabled &&
|
|
1011
815
|
defined(axis.min) &&
|
|
1012
|
-
(
|
|
1013
|
-
hasPinched ||
|
|
816
|
+
(hasPinched ||
|
|
1014
817
|
pointer[{
|
|
1015
818
|
xAxis: 'zoomX',
|
|
1016
819
|
yAxis: 'zoomY'
|
|
1017
|
-
}[axis.coll]]
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
(horiz ? selectionLeft : selectionTop) +
|
|
1026
|
-
minPixelPadding
|
|
1027
|
-
),
|
|
1028
|
-
selectionMax = axis.toValue(
|
|
1029
|
-
(
|
|
1030
|
-
horiz ?
|
|
1031
|
-
selectionLeft + selectionWidth :
|
|
1032
|
-
selectionTop + selectionHeight
|
|
1033
|
-
) - minPixelPadding
|
|
1034
|
-
);
|
|
1035
|
-
|
|
820
|
+
}[axis.coll]])) { // #859, #3569
|
|
821
|
+
var horiz = axis.horiz, minPixelPadding = e.type === 'touchend' ?
|
|
822
|
+
axis.minPixelPadding :
|
|
823
|
+
0, // #1207, #3075
|
|
824
|
+
selectionMin = axis.toValue((horiz ? selectionLeft : selectionTop) +
|
|
825
|
+
minPixelPadding), selectionMax = axis.toValue((horiz ?
|
|
826
|
+
selectionLeft + selectionWidth :
|
|
827
|
+
selectionTop + selectionHeight) - minPixelPadding);
|
|
1036
828
|
selectionData[axis.coll].push({
|
|
1037
829
|
axis: axis,
|
|
1038
830
|
// Min/max for reversed axes
|
|
@@ -1043,33 +835,21 @@ Highcharts.Pointer.prototype = {
|
|
|
1043
835
|
}
|
|
1044
836
|
});
|
|
1045
837
|
if (runZoom) {
|
|
1046
|
-
fireEvent(
|
|
1047
|
-
chart,
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
chart.zoom(
|
|
1052
|
-
extend(
|
|
1053
|
-
args,
|
|
1054
|
-
hasPinched ? { animation: false } : null
|
|
1055
|
-
)
|
|
1056
|
-
);
|
|
1057
|
-
}
|
|
1058
|
-
);
|
|
838
|
+
fireEvent(chart, 'selection', selectionData, function (args) {
|
|
839
|
+
chart.zoom(extend(args, hasPinched ?
|
|
840
|
+
{ animation: false } :
|
|
841
|
+
null));
|
|
842
|
+
});
|
|
1059
843
|
}
|
|
1060
|
-
|
|
1061
844
|
}
|
|
1062
|
-
|
|
1063
845
|
if (isNumber(chart.index)) {
|
|
1064
846
|
this.selectionMarker = this.selectionMarker.destroy();
|
|
1065
847
|
}
|
|
1066
|
-
|
|
1067
848
|
// Reset scaling preview
|
|
1068
849
|
if (hasPinched) {
|
|
1069
850
|
this.scaleGroups();
|
|
1070
851
|
}
|
|
1071
852
|
}
|
|
1072
|
-
|
|
1073
853
|
// Reset all. Check isNumber because it may be destroyed on mouse up
|
|
1074
854
|
// (#877)
|
|
1075
855
|
if (chart && isNumber(chart.index)) {
|
|
@@ -1079,42 +859,39 @@ Highcharts.Pointer.prototype = {
|
|
|
1079
859
|
this.pinchDown = [];
|
|
1080
860
|
}
|
|
1081
861
|
},
|
|
1082
|
-
|
|
1083
862
|
/**
|
|
1084
863
|
* @private
|
|
1085
864
|
* @function Highcharts.Pointer#onContainerMouseDown
|
|
1086
865
|
*
|
|
1087
|
-
* @param {
|
|
866
|
+
* @param {Highcharts.PointerEventObject} e
|
|
867
|
+
*
|
|
868
|
+
* @return {void}
|
|
1088
869
|
*/
|
|
1089
870
|
onContainerMouseDown: function (e) {
|
|
1090
871
|
// Normalize before the 'if' for the legacy IE (#7850)
|
|
1091
872
|
e = this.normalize(e);
|
|
1092
|
-
|
|
1093
873
|
if (e.button !== 2) {
|
|
1094
|
-
|
|
1095
874
|
this.zoomOption(e);
|
|
1096
|
-
|
|
1097
875
|
// issue #295, dragging not always working in Firefox
|
|
1098
876
|
if (e.preventDefault) {
|
|
1099
877
|
e.preventDefault();
|
|
1100
878
|
}
|
|
1101
|
-
|
|
1102
879
|
this.dragStart(e);
|
|
1103
880
|
}
|
|
1104
881
|
},
|
|
1105
|
-
|
|
1106
882
|
/**
|
|
1107
883
|
* @private
|
|
1108
884
|
* @function Highcharts.Pointer#onDocumentMouseUp
|
|
1109
885
|
*
|
|
1110
|
-
* @param {
|
|
886
|
+
* @param {Highcharts.PointerEventObject} e
|
|
887
|
+
*
|
|
888
|
+
* @return {void}
|
|
1111
889
|
*/
|
|
1112
890
|
onDocumentMouseUp: function (e) {
|
|
1113
891
|
if (charts[H.hoverChartIndex]) {
|
|
1114
892
|
charts[H.hoverChartIndex].pointer.drop(e);
|
|
1115
893
|
}
|
|
1116
894
|
},
|
|
1117
|
-
|
|
1118
895
|
/**
|
|
1119
896
|
* Special handler for mouse move that will hide the tooltip when the mouse
|
|
1120
897
|
* leaves the plotarea. Issue #149 workaround. The mouseleave event does not
|
|
@@ -1124,37 +901,31 @@ Highcharts.Pointer.prototype = {
|
|
|
1124
901
|
* @function Highcharts.Pointer#onDocumentMouseMove
|
|
1125
902
|
*
|
|
1126
903
|
* @param {Highcharts.PointerEventObject} e
|
|
904
|
+
*
|
|
905
|
+
* @return {void}
|
|
1127
906
|
*/
|
|
1128
907
|
onDocumentMouseMove: function (e) {
|
|
1129
|
-
var chart = this.chart,
|
|
1130
|
-
chartPosition = this.chartPosition;
|
|
1131
|
-
|
|
908
|
+
var chart = this.chart, chartPosition = this.chartPosition;
|
|
1132
909
|
e = this.normalize(e, chartPosition);
|
|
1133
|
-
|
|
1134
910
|
// If we're outside, hide the tooltip
|
|
1135
|
-
if (
|
|
1136
|
-
chartPosition &&
|
|
911
|
+
if (chartPosition &&
|
|
1137
912
|
!this.inClass(e.target, 'highcharts-tracker') &&
|
|
1138
|
-
!chart.isInsidePlot(
|
|
1139
|
-
e.chartX - chart.plotLeft,
|
|
1140
|
-
e.chartY - chart.plotTop
|
|
1141
|
-
)
|
|
1142
|
-
) {
|
|
913
|
+
!chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
|
|
1143
914
|
this.reset();
|
|
1144
915
|
}
|
|
1145
916
|
},
|
|
1146
|
-
|
|
1147
917
|
/**
|
|
1148
918
|
* When mouse leaves the container, hide the tooltip.
|
|
1149
919
|
*
|
|
1150
920
|
* @private
|
|
1151
921
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
1152
922
|
*
|
|
1153
|
-
* @param {
|
|
923
|
+
* @param {Highcharts.PointerEventObject} e
|
|
924
|
+
*
|
|
925
|
+
* @return {void}
|
|
1154
926
|
*/
|
|
1155
927
|
onContainerMouseLeave: function (e) {
|
|
1156
928
|
var chart = charts[H.hoverChartIndex];
|
|
1157
|
-
|
|
1158
929
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
1159
930
|
if (chart && (e.relatedTarget || e.toElement)) {
|
|
1160
931
|
chart.pointer.reset();
|
|
@@ -1162,7 +933,6 @@ Highcharts.Pointer.prototype = {
|
|
|
1162
933
|
chart.pointer.chartPosition = null;
|
|
1163
934
|
}
|
|
1164
935
|
},
|
|
1165
|
-
|
|
1166
936
|
/**
|
|
1167
937
|
* The mousemove, touchmove and touchstart event handler
|
|
1168
938
|
*
|
|
@@ -1170,21 +940,17 @@ Highcharts.Pointer.prototype = {
|
|
|
1170
940
|
* @function Highcharts.Pointer#onContainerMouseMove
|
|
1171
941
|
*
|
|
1172
942
|
* @param {Highcharts.PointerEventObject} e
|
|
943
|
+
*
|
|
944
|
+
* @return {void}
|
|
1173
945
|
*/
|
|
1174
946
|
onContainerMouseMove: function (e) {
|
|
1175
|
-
|
|
1176
947
|
var chart = this.chart;
|
|
1177
|
-
|
|
1178
|
-
if (
|
|
1179
|
-
!defined(H.hoverChartIndex) ||
|
|
948
|
+
if (!defined(H.hoverChartIndex) ||
|
|
1180
949
|
!charts[H.hoverChartIndex] ||
|
|
1181
|
-
!charts[H.hoverChartIndex].mouseIsDown
|
|
1182
|
-
) {
|
|
950
|
+
!charts[H.hoverChartIndex].mouseIsDown) {
|
|
1183
951
|
H.hoverChartIndex = chart.index;
|
|
1184
952
|
}
|
|
1185
|
-
|
|
1186
953
|
e = this.normalize(e);
|
|
1187
|
-
|
|
1188
954
|
// In IE8 we apparently need this returnValue set to false in order to
|
|
1189
955
|
// avoid text being selected. But in Chrome, e.returnValue is prevented,
|
|
1190
956
|
// plus we don't need to run e.preventDefault to prevent selected text
|
|
@@ -1193,26 +959,16 @@ Highcharts.Pointer.prototype = {
|
|
|
1193
959
|
if (!e.preventDefault) {
|
|
1194
960
|
e.returnValue = false;
|
|
1195
961
|
}
|
|
1196
|
-
|
|
1197
962
|
if (chart.mouseIsDown === 'mousedown') {
|
|
1198
963
|
this.drag(e);
|
|
1199
964
|
}
|
|
1200
|
-
|
|
1201
965
|
// Show the tooltip and run mouse over events (#977)
|
|
1202
|
-
if (
|
|
1203
|
-
(
|
|
1204
|
-
|
|
1205
|
-
chart.isInsidePlot(
|
|
1206
|
-
e.chartX - chart.plotLeft,
|
|
1207
|
-
e.chartY - chart.plotTop
|
|
1208
|
-
)
|
|
1209
|
-
) &&
|
|
1210
|
-
!chart.openMenu
|
|
1211
|
-
) {
|
|
966
|
+
if ((this.inClass(e.target, 'highcharts-tracker') ||
|
|
967
|
+
chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) &&
|
|
968
|
+
!chart.openMenu) {
|
|
1212
969
|
this.runPointActions(e);
|
|
1213
970
|
}
|
|
1214
971
|
},
|
|
1215
|
-
|
|
1216
972
|
/**
|
|
1217
973
|
* Utility to detect whether an element has, or has a parent with, a
|
|
1218
974
|
* specificclass name. Used on detection of tracker objects and on deciding
|
|
@@ -1226,13 +982,12 @@ Highcharts.Pointer.prototype = {
|
|
|
1226
982
|
* @param {string} className
|
|
1227
983
|
* The class name to look for.
|
|
1228
984
|
*
|
|
1229
|
-
* @return {boolean}
|
|
985
|
+
* @return {boolean|undefined}
|
|
1230
986
|
* True if either the element or one of its parents has the given
|
|
1231
987
|
* class name.
|
|
1232
988
|
*/
|
|
1233
989
|
inClass: function (element, className) {
|
|
1234
990
|
var elemClassName;
|
|
1235
|
-
|
|
1236
991
|
while (element) {
|
|
1237
992
|
elemClassName = attr(element, 'class');
|
|
1238
993
|
if (elemClassName) {
|
|
@@ -1246,81 +1001,60 @@ Highcharts.Pointer.prototype = {
|
|
|
1246
1001
|
element = element.parentNode;
|
|
1247
1002
|
}
|
|
1248
1003
|
},
|
|
1249
|
-
|
|
1250
1004
|
/**
|
|
1251
1005
|
* @private
|
|
1252
1006
|
* @function Highcharts.Pointer#onTrackerMouseOut
|
|
1253
1007
|
*
|
|
1254
|
-
* @param {
|
|
1008
|
+
* @param {Highcharts.PointerEventObject} e
|
|
1009
|
+
*
|
|
1010
|
+
* @return {void}
|
|
1255
1011
|
*/
|
|
1256
1012
|
onTrackerMouseOut: function (e) {
|
|
1257
|
-
var series = this.chart.hoverSeries,
|
|
1258
|
-
relatedTarget = e.relatedTarget || e.toElement;
|
|
1259
|
-
|
|
1013
|
+
var series = this.chart.hoverSeries, relatedTarget = e.relatedTarget || e.toElement;
|
|
1260
1014
|
this.isDirectTouch = false;
|
|
1261
|
-
|
|
1262
|
-
if (
|
|
1263
|
-
series &&
|
|
1015
|
+
if (series &&
|
|
1264
1016
|
relatedTarget &&
|
|
1265
1017
|
!series.stickyTracking &&
|
|
1266
1018
|
!this.inClass(relatedTarget, 'highcharts-tooltip') &&
|
|
1267
|
-
(
|
|
1268
|
-
!this.inClass(
|
|
1269
|
-
relatedTarget,
|
|
1270
|
-
'highcharts-series-' + series.index
|
|
1271
|
-
) || // #2499, #4465
|
|
1272
|
-
!this.inClass(relatedTarget, 'highcharts-tracker') // #5553
|
|
1273
|
-
)
|
|
1274
|
-
) {
|
|
1019
|
+
(!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553
|
|
1020
|
+
!this.inClass(relatedTarget, 'highcharts-tracker'))) {
|
|
1275
1021
|
series.onMouseOut();
|
|
1276
1022
|
}
|
|
1277
1023
|
},
|
|
1278
|
-
|
|
1279
1024
|
/**
|
|
1280
1025
|
* @private
|
|
1281
1026
|
* @function Highcharts.Pointer#onContainerClick
|
|
1282
1027
|
*
|
|
1283
1028
|
* @param {Highcharts.PointerEventObject} e
|
|
1029
|
+
*
|
|
1030
|
+
* @return {void}
|
|
1284
1031
|
*/
|
|
1285
1032
|
onContainerClick: function (e) {
|
|
1286
|
-
var chart = this.chart,
|
|
1287
|
-
hoverPoint = chart.hoverPoint,
|
|
1288
|
-
plotLeft = chart.plotLeft,
|
|
1289
|
-
plotTop = chart.plotTop;
|
|
1290
|
-
|
|
1033
|
+
var chart = this.chart, hoverPoint = chart.hoverPoint, plotLeft = chart.plotLeft, plotTop = chart.plotTop;
|
|
1291
1034
|
e = this.normalize(e);
|
|
1292
|
-
|
|
1293
1035
|
if (!chart.cancelClick) {
|
|
1294
|
-
|
|
1295
1036
|
// On tracker click, fire the series and point events. #783, #1583
|
|
1296
|
-
if (hoverPoint &&
|
|
1297
|
-
|
|
1037
|
+
if (hoverPoint &&
|
|
1038
|
+
this.inClass(e.target, 'highcharts-tracker')) {
|
|
1298
1039
|
// the series click event
|
|
1299
1040
|
fireEvent(hoverPoint.series, 'click', extend(e, {
|
|
1300
1041
|
point: hoverPoint
|
|
1301
1042
|
}));
|
|
1302
|
-
|
|
1303
1043
|
// the point click event
|
|
1304
1044
|
if (chart.hoverPoint) { // it may be destroyed (#1844)
|
|
1305
1045
|
hoverPoint.firePointEvent('click', e);
|
|
1306
1046
|
}
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1047
|
+
// When clicking outside a tracker, fire a chart event
|
|
1048
|
+
}
|
|
1049
|
+
else {
|
|
1310
1050
|
extend(e, this.getCoordinates(e));
|
|
1311
|
-
|
|
1312
1051
|
// fire a click event in the chart
|
|
1313
|
-
if (
|
|
1314
|
-
chart.isInsidePlot(e.chartX - plotLeft, e.chartY - plotTop)
|
|
1315
|
-
) {
|
|
1052
|
+
if (chart.isInsidePlot(e.chartX - plotLeft, e.chartY - plotTop)) {
|
|
1316
1053
|
fireEvent(chart, 'click', e);
|
|
1317
1054
|
}
|
|
1318
1055
|
}
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
1056
|
}
|
|
1322
1057
|
},
|
|
1323
|
-
|
|
1324
1058
|
/**
|
|
1325
1059
|
* Set the JS DOM events on the container and document. This method should
|
|
1326
1060
|
* contain a one-to-one assignment between methods and their handlers. Any
|
|
@@ -1329,13 +1063,11 @@ Highcharts.Pointer.prototype = {
|
|
|
1329
1063
|
*
|
|
1330
1064
|
* @private
|
|
1331
1065
|
* @function Highcharts.Pointer#setDOMEvents
|
|
1066
|
+
*
|
|
1067
|
+
* @return {void}
|
|
1332
1068
|
*/
|
|
1333
1069
|
setDOMEvents: function () {
|
|
1334
|
-
|
|
1335
|
-
var pointer = this,
|
|
1336
|
-
container = pointer.chart.container,
|
|
1337
|
-
ownerDoc = container.ownerDocument;
|
|
1338
|
-
|
|
1070
|
+
var pointer = this, container = pointer.chart.container, ownerDoc = container.ownerDocument;
|
|
1339
1071
|
container.onmousedown = function (e) {
|
|
1340
1072
|
pointer.onContainerMouseDown(e);
|
|
1341
1073
|
};
|
|
@@ -1345,17 +1077,9 @@ Highcharts.Pointer.prototype = {
|
|
|
1345
1077
|
container.onclick = function (e) {
|
|
1346
1078
|
pointer.onContainerClick(e);
|
|
1347
1079
|
};
|
|
1348
|
-
this.unbindContainerMouseLeave = addEvent(
|
|
1349
|
-
container,
|
|
1350
|
-
'mouseleave',
|
|
1351
|
-
pointer.onContainerMouseLeave
|
|
1352
|
-
);
|
|
1080
|
+
this.unbindContainerMouseLeave = addEvent(container, 'mouseleave', pointer.onContainerMouseLeave);
|
|
1353
1081
|
if (!H.unbindDocumentMouseUp) {
|
|
1354
|
-
H.unbindDocumentMouseUp = addEvent(
|
|
1355
|
-
ownerDoc,
|
|
1356
|
-
'mouseup',
|
|
1357
|
-
pointer.onDocumentMouseUp
|
|
1358
|
-
);
|
|
1082
|
+
H.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', pointer.onDocumentMouseUp);
|
|
1359
1083
|
}
|
|
1360
1084
|
if (H.hasTouch) {
|
|
1361
1085
|
container.ontouchstart = function (e) {
|
|
@@ -1365,30 +1089,23 @@ Highcharts.Pointer.prototype = {
|
|
|
1365
1089
|
pointer.onContainerTouchMove(e);
|
|
1366
1090
|
};
|
|
1367
1091
|
if (!H.unbindDocumentTouchEnd) {
|
|
1368
|
-
H.unbindDocumentTouchEnd = addEvent(
|
|
1369
|
-
ownerDoc,
|
|
1370
|
-
'touchend',
|
|
1371
|
-
pointer.onDocumentTouchEnd
|
|
1372
|
-
);
|
|
1092
|
+
H.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', pointer.onDocumentTouchEnd);
|
|
1373
1093
|
}
|
|
1374
1094
|
}
|
|
1375
|
-
|
|
1376
1095
|
},
|
|
1377
|
-
|
|
1378
1096
|
/**
|
|
1379
1097
|
* Destroys the Pointer object and disconnects DOM events.
|
|
1380
1098
|
*
|
|
1381
1099
|
* @function Highcharts.Pointer#destroy
|
|
1100
|
+
*
|
|
1101
|
+
* @return {void}
|
|
1382
1102
|
*/
|
|
1383
1103
|
destroy: function () {
|
|
1384
1104
|
var pointer = this;
|
|
1385
|
-
|
|
1386
1105
|
if (pointer.unDocMouseMove) {
|
|
1387
1106
|
pointer.unDocMouseMove();
|
|
1388
1107
|
}
|
|
1389
|
-
|
|
1390
1108
|
this.unbindContainerMouseLeave();
|
|
1391
|
-
|
|
1392
1109
|
if (!H.chartCount) {
|
|
1393
1110
|
if (H.unbindDocumentMouseUp) {
|
|
1394
1111
|
H.unbindDocumentMouseUp = H.unbindDocumentMouseUp();
|
|
@@ -1397,10 +1114,8 @@ Highcharts.Pointer.prototype = {
|
|
|
1397
1114
|
H.unbindDocumentTouchEnd = H.unbindDocumentTouchEnd();
|
|
1398
1115
|
}
|
|
1399
1116
|
}
|
|
1400
|
-
|
|
1401
1117
|
// memory and CPU leak
|
|
1402
1118
|
clearInterval(pointer.tooltipTimeout);
|
|
1403
|
-
|
|
1404
1119
|
H.objectEach(pointer, function (val, prop) {
|
|
1405
1120
|
pointer[prop] = null;
|
|
1406
1121
|
});
|