@nativescript-community/ui-chart 1.2.35 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/animation/ChartAnimator.d.ts +47 -4
- package/animation/ChartAnimator.js +49 -11
- package/animation/ChartAnimator.js.map +1 -1
- package/animation/Tween.d.ts +1 -1
- package/animation/Tween.js +4 -2
- package/animation/Tween.js.map +1 -1
- package/buffer/AbstractBuffer.d.ts +28 -3
- package/buffer/AbstractBuffer.js +22 -3
- package/buffer/AbstractBuffer.js.map +1 -1
- package/buffer/BarBuffer.d.ts +8 -12
- package/buffer/BarBuffer.js +33 -36
- package/buffer/BarBuffer.js.map +1 -1
- package/buffer/HorizontalBarBuffer.js +13 -10
- package/buffer/HorizontalBarBuffer.js.map +1 -1
- package/charts/BarChart.d.ts +70 -15
- package/charts/BarChart.js +92 -63
- package/charts/BarChart.js.map +1 -1
- package/charts/BarLineChartBase.d.ts +494 -73
- package/charts/BarLineChartBase.js +788 -407
- package/charts/BarLineChartBase.js.map +1 -1
- package/charts/BubbleChart.d.ts +11 -5
- package/charts/BubbleChart.js +10 -8
- package/charts/BubbleChart.js.map +1 -1
- package/charts/CandleStickChart.d.ts +8 -5
- package/charts/CandleStickChart.js +9 -10
- package/charts/CandleStickChart.js.map +1 -1
- package/charts/Chart.d.ts +424 -92
- package/charts/Chart.js +590 -290
- package/charts/Chart.js.map +1 -1
- package/charts/CombinedChart.d.ts +59 -29
- package/charts/CombinedChart.js +74 -67
- package/charts/CombinedChart.js.map +1 -1
- package/charts/HorizontalBarChart.d.ts +37 -7
- package/charts/HorizontalBarChart.js +97 -59
- package/charts/HorizontalBarChart.js.map +1 -1
- package/charts/LineChart.d.ts +3 -5
- package/charts/LineChart.js +6 -10
- package/charts/LineChart.js.map +1 -1
- package/charts/PieChart.d.ts +218 -64
- package/charts/PieChart.js +278 -168
- package/charts/PieChart.js.map +1 -1
- package/charts/PieRadarChartBase.d.ts +107 -18
- package/charts/PieRadarChartBase.js +156 -73
- package/charts/PieRadarChartBase.js.map +1 -1
- package/charts/RadarChart.d.ts +75 -35
- package/charts/RadarChart.js +114 -103
- package/charts/RadarChart.js.map +1 -1
- package/charts/ScatterChart.d.ts +10 -5
- package/charts/ScatterChart.js +11 -10
- package/charts/ScatterChart.js.map +1 -1
- package/components/AxisBase.d.ts +271 -101
- package/components/AxisBase.js +264 -254
- package/components/AxisBase.js.map +1 -1
- package/components/ComponentBase.d.ts +54 -19
- package/components/ComponentBase.js +60 -48
- package/components/ComponentBase.js.map +1 -1
- package/components/Description.d.ts +18 -9
- package/components/Description.js +12 -26
- package/components/Description.js.map +1 -1
- package/components/IMarker.d.ts +30 -1
- package/components/IMarker.js.map +1 -1
- package/components/Legend.d.ts +155 -58
- package/components/Legend.js +208 -172
- package/components/Legend.js.map +1 -1
- package/components/LegendEntry.d.ts +38 -0
- package/components/LegendEntry.js +34 -0
- package/components/LegendEntry.js.map +1 -1
- package/components/LimitLine.d.ts +40 -22
- package/components/LimitLine.js +44 -56
- package/components/LimitLine.js.map +1 -1
- package/components/MarkerImage.d.ts +1 -0
- package/components/MarkerImage.js +97 -0
- package/components/MarkerImage.js.map +1 -0
- package/components/XAxis.d.ts +41 -10
- package/components/XAxis.js +42 -24
- package/components/XAxis.js.map +1 -1
- package/components/YAxis.d.ts +114 -37
- package/components/YAxis.js +138 -106
- package/components/YAxis.js.map +1 -1
- package/data/BarData.d.ts +32 -4
- package/data/BarData.js +92 -24
- package/data/BarData.js.map +1 -1
- package/data/BarDataSet.d.ts +35 -18
- package/data/BarDataSet.js +42 -47
- package/data/BarDataSet.js.map +1 -1
- package/data/BarEntry.d.ts +3 -0
- package/data/BarEntry.js.map +1 -1
- package/data/BarLineScatterCandleBubbleData.d.ts +5 -0
- package/data/BarLineScatterCandleBubbleData.js +5 -0
- package/data/BarLineScatterCandleBubbleData.js.map +1 -1
- package/data/BarLineScatterCandleBubbleDataSet.d.ts +11 -3
- package/data/BarLineScatterCandleBubbleDataSet.js +11 -7
- package/data/BarLineScatterCandleBubbleDataSet.js.map +1 -1
- package/data/BaseDataSet.d.ts +129 -71
- package/data/BaseDataSet.js +146 -169
- package/data/BaseDataSet.js.map +1 -1
- package/data/BaseEntry.d.ts +3 -0
- package/data/BaseEntry.js.map +1 -1
- package/data/BubbleData.d.ts +7 -1
- package/data/BubbleData.js +8 -2
- package/data/BubbleData.js.map +1 -1
- package/data/BubbleDataSet.d.ts +7 -7
- package/data/BubbleDataSet.js +8 -15
- package/data/BubbleDataSet.js.map +1 -1
- package/data/BubbleEntry.d.ts +1 -0
- package/data/BubbleEntry.js.map +1 -1
- package/data/CandleData.js.map +1 -1
- package/data/CandleDataSet.d.ts +64 -30
- package/data/CandleDataSet.js +67 -74
- package/data/CandleDataSet.js.map +1 -1
- package/data/CandleEntry.d.ts +4 -0
- package/data/CandleEntry.js.map +1 -1
- package/data/ChartData.d.ts +273 -18
- package/data/ChartData.js +398 -93
- package/data/ChartData.js.map +1 -1
- package/data/CombinedData.d.ts +39 -12
- package/data/CombinedData.js +87 -71
- package/data/CombinedData.js.map +1 -1
- package/data/DataSet.d.ts +59 -8
- package/data/DataSet.js +114 -26
- package/data/DataSet.js.map +1 -1
- package/data/Entry.js.map +1 -1
- package/data/LineData.d.ts +5 -0
- package/data/LineData.js +5 -0
- package/data/LineData.js.map +1 -1
- package/data/LineDataSet.d.ts +80 -49
- package/data/LineDataSet.js +90 -135
- package/data/LineDataSet.js.map +1 -1
- package/data/LineRadarDataSet.d.ts +27 -17
- package/data/LineRadarDataSet.js +22 -35
- package/data/LineRadarDataSet.js.map +1 -1
- package/data/LineScatterCandleRadarDataSet.d.ts +30 -15
- package/data/LineScatterCandleRadarDataSet.js +36 -39
- package/data/LineScatterCandleRadarDataSet.js.map +1 -1
- package/data/PieData.d.ts +26 -0
- package/data/PieData.js +28 -2
- package/data/PieData.js.map +1 -1
- package/data/PieDataSet.d.ts +40 -36
- package/data/PieDataSet.js +36 -88
- package/data/PieDataSet.js.map +1 -1
- package/data/PieEntry.d.ts +3 -0
- package/data/PieEntry.js.map +1 -1
- package/data/RadarData.d.ts +10 -4
- package/data/RadarData.js +5 -6
- package/data/RadarData.js.map +1 -1
- package/data/RadarDataSet.d.ts +7 -21
- package/data/RadarDataSet.js +10 -49
- package/data/RadarDataSet.js.map +1 -1
- package/data/RadarEntry.js.map +1 -1
- package/data/ScatterData.d.ts +4 -1
- package/data/ScatterData.js +5 -2
- package/data/ScatterData.js.map +1 -1
- package/data/ScatterDataSet.d.ts +24 -14
- package/data/ScatterDataSet.js +26 -31
- package/data/ScatterDataSet.js.map +1 -1
- package/formatter/DefaultAxisValueFormatter.d.ts +17 -3
- package/formatter/DefaultAxisValueFormatter.js +12 -5
- package/formatter/DefaultAxisValueFormatter.js.map +1 -1
- package/formatter/DefaultFillFormatter.js +7 -7
- package/formatter/DefaultFillFormatter.js.map +1 -1
- package/formatter/DefaultValueFormatter.js.map +1 -1
- package/formatter/IAxisValueFormatter.d.ts +20 -2
- package/formatter/IAxisValueFormatter.js.map +1 -1
- package/formatter/IFillFormatter.d.ts +25 -0
- package/formatter/IFillFormatter.js.map +1 -1
- package/formatter/IValueFormatter.d.ts +21 -0
- package/formatter/IValueFormatter.js.map +1 -1
- package/formatter/ValueFormatter.d.ts +60 -0
- package/formatter/ValueFormatter.js +60 -0
- package/formatter/ValueFormatter.js.map +1 -1
- package/highlight/BarHighlighter.d.ts +22 -2
- package/highlight/BarHighlighter.js +43 -17
- package/highlight/BarHighlighter.js.map +1 -1
- package/highlight/ChartHighlighter.d.ts +87 -5
- package/highlight/ChartHighlighter.js +126 -23
- package/highlight/ChartHighlighter.js.map +1 -1
- package/highlight/CombinedHighlighter.d.ts +6 -0
- package/highlight/CombinedHighlighter.js +31 -16
- package/highlight/CombinedHighlighter.js.map +1 -1
- package/highlight/Highlight.d.ts +54 -1
- package/highlight/Highlight.js +5 -0
- package/highlight/Highlight.js.map +1 -1
- package/highlight/HorizontalBarHighlighter.d.ts +1 -1
- package/highlight/HorizontalBarHighlighter.js +14 -13
- package/highlight/HorizontalBarHighlighter.js.map +1 -1
- package/highlight/IHighlighter.d.ts +11 -1
- package/highlight/IHighlighter.js.map +1 -1
- package/highlight/PieHighlighter.js +2 -2
- package/highlight/PieHighlighter.js.map +1 -1
- package/highlight/PieRadarHighlighter.d.ts +12 -1
- package/highlight/PieRadarHighlighter.js +12 -4
- package/highlight/PieRadarHighlighter.js.map +1 -1
- package/highlight/RadarHighlighter.d.ts +12 -0
- package/highlight/RadarHighlighter.js +24 -10
- package/highlight/RadarHighlighter.js.map +1 -1
- package/index.d.ts +11 -0
- package/index.js +15 -0
- package/index.js.map +1 -0
- package/interfaces/dataprovider/BarDataProvider.d.ts +4 -4
- package/interfaces/dataprovider/BarLineScatterCandleBubbleDataProvider.d.ts +8 -3
- package/interfaces/dataprovider/BubbleDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/CandleDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/ChartInterface.d.ts +17 -22
- package/interfaces/dataprovider/CombinedDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/LineDataProvider.d.ts +1 -1
- package/interfaces/dataprovider/ScatterDataProvider.d.ts +1 -1
- package/interfaces/datasets/IBarDataSet.d.ts +8 -22
- package/interfaces/datasets/IBarLineScatterCandleBubbleDataSet.d.ts +1 -3
- package/interfaces/datasets/IBubbleDataSet.d.ts +3 -9
- package/interfaces/datasets/ICandleDataSet.d.ts +44 -41
- package/interfaces/datasets/IDataSet.d.ts +35 -151
- package/interfaces/datasets/ILineDataSet.d.ts +15 -54
- package/interfaces/datasets/ILineRadarDataSet.d.ts +7 -28
- package/interfaces/datasets/ILineScatterCandleRadarDataSet.d.ts +5 -4
- package/interfaces/datasets/IPieDataSet.d.ts +22 -40
- package/interfaces/datasets/IRadarDataSet.d.ts +7 -13
- package/interfaces/datasets/IScatterDataSet.d.ts +17 -16
- package/jobs/AnimatedMoveViewJob.d.ts +3 -0
- package/jobs/AnimatedMoveViewJob.js +12 -8
- package/jobs/AnimatedMoveViewJob.js.map +1 -1
- package/jobs/AnimatedViewPortJob.d.ts +7 -8
- package/jobs/AnimatedViewPortJob.js +16 -23
- package/jobs/AnimatedViewPortJob.js.map +1 -1
- package/jobs/AnimatedZoomJob.d.ts +8 -5
- package/jobs/AnimatedZoomJob.js +30 -26
- package/jobs/AnimatedZoomJob.js.map +1 -1
- package/jobs/MoveViewJob.d.ts +3 -0
- package/jobs/MoveViewJob.js +10 -7
- package/jobs/MoveViewJob.js.map +1 -1
- package/jobs/ViewPortJob.d.ts +3 -5
- package/jobs/ViewPortJob.js +5 -11
- package/jobs/ViewPortJob.js.map +1 -1
- package/jobs/ZoomJob.js +14 -14
- package/jobs/ZoomJob.js.map +1 -1
- package/listener/BarLineChartTouchListener.d.ts +83 -1
- package/listener/BarLineChartTouchListener.js +169 -67
- package/listener/BarLineChartTouchListener.js.map +1 -1
- package/listener/ChartTouchListener.d.ts +39 -5
- package/listener/ChartTouchListener.js +38 -11
- package/listener/ChartTouchListener.js.map +1 -1
- package/listener/PieRadarChartTouchListener.d.ts +81 -1
- package/listener/PieRadarChartTouchListener.js +212 -16
- package/listener/PieRadarChartTouchListener.js.map +1 -1
- package/model/GradientColor.js.map +1 -1
- package/package.json +23 -15
- package/renderer/AxisRenderer.d.ts +66 -7
- package/renderer/AxisRenderer.js +69 -21
- package/renderer/AxisRenderer.js.map +1 -1
- package/renderer/BarChartRenderer.d.ts +11 -0
- package/renderer/BarChartRenderer.js +99 -71
- package/renderer/BarChartRenderer.js.map +1 -1
- package/renderer/BarLineScatterCandleBubbleRenderer.d.ts +37 -0
- package/renderer/BarLineScatterCandleBubbleRenderer.js +36 -8
- package/renderer/BarLineScatterCandleBubbleRenderer.js.map +1 -1
- package/renderer/BubbleChartRenderer.d.ts +6 -2
- package/renderer/BubbleChartRenderer.js +51 -40
- package/renderer/BubbleChartRenderer.js.map +1 -1
- package/renderer/CandleStickChartRenderer.d.ts +1 -1
- package/renderer/CandleStickChartRenderer.js +64 -50
- package/renderer/CandleStickChartRenderer.js.map +1 -1
- package/renderer/CombinedChartRenderer.d.ts +20 -1
- package/renderer/CombinedChartRenderer.js +72 -42
- package/renderer/CombinedChartRenderer.js.map +1 -1
- package/renderer/DataRenderer.d.ts +78 -4
- package/renderer/DataRenderer.js +65 -6
- package/renderer/DataRenderer.js.map +1 -1
- package/renderer/HorizontalBarChartRenderer.d.ts +5 -2
- package/renderer/HorizontalBarChartRenderer.js +87 -66
- package/renderer/HorizontalBarChartRenderer.js.map +1 -1
- package/renderer/LegendRenderer.d.ts +32 -0
- package/renderer/LegendRenderer.js +98 -59
- package/renderer/LegendRenderer.js.map +1 -1
- package/renderer/LineChartRenderer.d.ts +38 -1
- package/renderer/LineChartRenderer.js +185 -110
- package/renderer/LineChartRenderer.js.map +1 -1
- package/renderer/LineRadarRenderer.d.ts +19 -0
- package/renderer/LineRadarRenderer.js +25 -1
- package/renderer/LineRadarRenderer.js.map +1 -1
- package/renderer/LineScatterCandleRadarRenderer.d.ts +11 -0
- package/renderer/LineScatterCandleRadarRenderer.js +26 -9
- package/renderer/LineScatterCandleRadarRenderer.js.map +1 -1
- package/renderer/PieChartRenderer.d.ts +45 -1
- package/renderer/PieChartRenderer.js +195 -122
- package/renderer/PieChartRenderer.js.map +1 -1
- package/renderer/RadarChartRenderer.d.ts +10 -0
- package/renderer/RadarChartRenderer.js +119 -77
- package/renderer/RadarChartRenderer.js.map +1 -1
- package/renderer/Renderer.d.ts +8 -0
- package/renderer/Renderer.js +5 -0
- package/renderer/Renderer.js.map +1 -1
- package/renderer/ScatterChartRenderer.d.ts +5 -5
- package/renderer/ScatterChartRenderer.js +51 -37
- package/renderer/ScatterChartRenderer.js.map +1 -1
- package/renderer/XAxisRenderer.d.ts +29 -4
- package/renderer/XAxisRenderer.js +128 -95
- package/renderer/XAxisRenderer.js.map +1 -1
- package/renderer/XAxisRendererHorizontalBarChart.d.ts +11 -0
- package/renderer/XAxisRendererHorizontalBarChart.js +75 -57
- package/renderer/XAxisRendererHorizontalBarChart.js.map +1 -1
- package/renderer/XAxisRendererRadarChart.d.ts +5 -0
- package/renderer/XAxisRendererRadarChart.js +26 -13
- package/renderer/XAxisRendererRadarChart.js.map +1 -1
- package/renderer/YAxisRenderer.d.ts +42 -5
- package/renderer/YAxisRenderer.js +126 -69
- package/renderer/YAxisRenderer.js.map +1 -1
- package/renderer/YAxisRendererHorizontalBarChart.d.ts +22 -1
- package/renderer/YAxisRendererHorizontalBarChart.js +80 -58
- package/renderer/YAxisRendererHorizontalBarChart.js.map +1 -1
- package/renderer/YAxisRendererRadarChart.js +62 -32
- package/renderer/YAxisRendererRadarChart.js.map +1 -1
- package/renderer/scatter/ChevronDownShapeRenderer.d.ts +4 -0
- package/renderer/scatter/ChevronDownShapeRenderer.js +5 -1
- package/renderer/scatter/ChevronDownShapeRenderer.js.map +1 -1
- package/renderer/scatter/ChevronUpShapeRenderer.d.ts +4 -0
- package/renderer/scatter/ChevronUpShapeRenderer.js +5 -1
- package/renderer/scatter/ChevronUpShapeRenderer.js.map +1 -1
- package/renderer/scatter/CircleShapeRenderer.d.ts +4 -0
- package/renderer/scatter/CircleShapeRenderer.js +8 -5
- package/renderer/scatter/CircleShapeRenderer.js.map +1 -1
- package/renderer/scatter/CrossShapeRenderer.d.ts +4 -0
- package/renderer/scatter/CrossShapeRenderer.js +5 -1
- package/renderer/scatter/CrossShapeRenderer.js.map +1 -1
- package/renderer/scatter/IShapeRenderer.d.ts +14 -0
- package/renderer/scatter/IShapeRenderer.js.map +1 -1
- package/renderer/scatter/SquareShapeRenderer.d.ts +4 -0
- package/renderer/scatter/SquareShapeRenderer.js +8 -5
- package/renderer/scatter/SquareShapeRenderer.js.map +1 -1
- package/renderer/scatter/TriangleShapeRenderer.d.ts +4 -0
- package/renderer/scatter/TriangleShapeRenderer.js +9 -5
- package/renderer/scatter/TriangleShapeRenderer.js.map +1 -1
- package/renderer/scatter/XShapeRenderer.d.ts +4 -0
- package/renderer/scatter/XShapeRenderer.js +5 -1
- package/renderer/scatter/XShapeRenderer.js.map +1 -1
- package/utils/ColorTemplate.d.ts +21 -1
- package/utils/ColorTemplate.js +21 -3
- package/utils/ColorTemplate.js.map +1 -1
- package/utils/HorizontalViewPortHandler.d.ts +3 -0
- package/utils/HorizontalViewPortHandler.js +3 -0
- package/utils/HorizontalViewPortHandler.js.map +1 -1
- package/utils/MPSize.d.ts +7 -0
- package/utils/ObjectPool.d.ts +56 -0
- package/utils/ObjectPool.js +66 -8
- package/utils/ObjectPool.js.map +1 -1
- package/utils/Transformer.d.ts +118 -0
- package/utils/Transformer.js +141 -7
- package/utils/Transformer.js.map +1 -1
- package/utils/TransformerHorizontalBarChart.d.ts +10 -0
- package/utils/TransformerHorizontalBarChart.js +18 -2
- package/utils/TransformerHorizontalBarChart.js.map +1 -1
- package/utils/Utils.d.ts +139 -17
- package/utils/Utils.js +185 -60
- package/utils/Utils.js.map +1 -1
- package/utils/ViewPortHandler.d.ts +234 -19
- package/utils/ViewPortHandler.js +306 -63
- package/utils/ViewPortHandler.js.map +1 -1
- package/utils/colors/colorful.js.map +1 -1
- package/utils/colors/joyful.js.map +1 -1
- package/utils/colors/liberty.js.map +1 -1
- package/utils/colors/material.js.map +1 -1
- package/utils/colors/pastel.js.map +1 -1
- package/utils/colors/vordiplom.js.map +1 -1
- package/animation/ChartAnimator2.d.ts +0 -18
- package/animation/ChartAnimator2.js +0 -69
- package/animation/ChartAnimator2.js.map +0 -1
- package/charts/index.d.ts +0 -11
- package/charts/index.js +0 -15
- package/charts/index.js.map +0 -1
- package/utils/Curve.d.ts +0 -12
- package/utils/Curve.js +0 -156
- package/utils/Curve.js.map +0 -1
- package/utils/MPPointD.js +0 -1
- package/utils/MPPointD.js.map +0 -1
- package/utils/MPPointF.js +0 -1
- package/utils/MPPointF.js.map +0 -1
|
@@ -1,15 +1,38 @@
|
|
|
1
|
+
import { GestureStateEventData, GestureTouchEventData, PanGestureHandler, PinchGestureHandler, TapGestureHandler } from '@nativescript-community/gesturehandler';
|
|
1
2
|
import { Matrix } from '@nativescript-community/ui-canvas';
|
|
2
3
|
import { BarLineChartBase } from '../charts/BarLineChartBase';
|
|
3
4
|
import { ChartTouchListener } from './ChartTouchListener';
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* TouchListener for Bar-, Line-, Scatter- and CandleStickChart with handles all
|
|
7
|
+
* touch interaction. Longpress === Zoom out. Double-Tap === Zoom in.
|
|
8
|
+
*
|
|
9
|
+
|
|
10
|
+
*/
|
|
5
11
|
export declare class BarLineChartTouchListener extends ChartTouchListener<BarLineChartBase<any, any, any>> {
|
|
12
|
+
/**
|
|
13
|
+
* the original touch-matrix from the chart
|
|
14
|
+
*/
|
|
6
15
|
private mMatrix;
|
|
16
|
+
/**
|
|
17
|
+
* matrix for saving the original matrix state
|
|
18
|
+
*/
|
|
7
19
|
private mSavedMatrix;
|
|
20
|
+
/**
|
|
21
|
+
* center between two pointers (fingers on the display)
|
|
22
|
+
*/
|
|
8
23
|
private mTouchPointCenter;
|
|
9
24
|
private mSavedXDist;
|
|
10
25
|
private mSavedYDist;
|
|
11
26
|
private mClosestDataSetToTouch;
|
|
12
27
|
private mDecelerationVelocity;
|
|
28
|
+
/**
|
|
29
|
+
* Constructor with initialization parameters.
|
|
30
|
+
*
|
|
31
|
+
* @param chart instance of the chart
|
|
32
|
+
* @param touchMatrix the touch-matrix of the chart
|
|
33
|
+
* @param dragTriggerDistance the minimum movement distance that will be interpreted as a "drag" gesture in dp (3dp equals
|
|
34
|
+
* to about 9 pixels on a 5.5" FHD screen)
|
|
35
|
+
*/
|
|
13
36
|
TAP_HANDLER_TAG: any;
|
|
14
37
|
DOUBLE_TAP_HANDLER_TAG: any;
|
|
15
38
|
PINCH_HANDLER_TAG: any;
|
|
@@ -37,6 +60,7 @@ export declare class BarLineChartTouchListener extends ChartTouchListener<BarLin
|
|
|
37
60
|
gestureTag: any;
|
|
38
61
|
};
|
|
39
62
|
getPinchGestureOptions(): {
|
|
63
|
+
minSpan?: number;
|
|
40
64
|
enabled?: boolean;
|
|
41
65
|
shouldCancelWhenOutside?: boolean;
|
|
42
66
|
waitFor?: number[];
|
|
@@ -88,16 +112,74 @@ export declare class BarLineChartTouchListener extends ChartTouchListener<BarLin
|
|
|
88
112
|
onPanGestureTouch(event: GestureTouchEventData): void;
|
|
89
113
|
onPinchGestureState(event: GestureStateEventData): void;
|
|
90
114
|
onPinchGestureTouch(event: GestureTouchEventData): void;
|
|
115
|
+
/**
|
|
116
|
+
* ################ ################ ################ ################
|
|
117
|
+
*/
|
|
118
|
+
/** BELOW CODE PERFORMS THE ACTUAL TOUCH ACTIONS */
|
|
119
|
+
/**
|
|
120
|
+
* Saves the current Matrix state and the touch-start point.
|
|
121
|
+
*
|
|
122
|
+
* @param event
|
|
123
|
+
*/
|
|
91
124
|
private saveTouchStart;
|
|
125
|
+
/**
|
|
126
|
+
* Performs all necessary operations needed for dragging.
|
|
127
|
+
*
|
|
128
|
+
* @param event
|
|
129
|
+
*/
|
|
92
130
|
private performDrag;
|
|
131
|
+
/**
|
|
132
|
+
* Highlights upon dragging, generates callbacks for the selection-listener.
|
|
133
|
+
*
|
|
134
|
+
* @param e
|
|
135
|
+
*/
|
|
93
136
|
private performHighlightDrag;
|
|
137
|
+
/**
|
|
138
|
+
* Highlights upon dragging, generates callbacks for the selection-listener.
|
|
139
|
+
*
|
|
140
|
+
* @param e
|
|
141
|
+
*/
|
|
142
|
+
private handleTouchHighlight;
|
|
143
|
+
/**
|
|
144
|
+
* calculates the distance on the x-axis between two pointers (fingers on
|
|
145
|
+
* the display)
|
|
146
|
+
*
|
|
147
|
+
* @param e
|
|
148
|
+
* @return
|
|
149
|
+
*/
|
|
94
150
|
private static getXDist;
|
|
151
|
+
/**
|
|
152
|
+
* calculates the distance on the y-axis between two pointers (fingers on
|
|
153
|
+
* the display)
|
|
154
|
+
*
|
|
155
|
+
* @param e
|
|
156
|
+
* @return
|
|
157
|
+
*/
|
|
95
158
|
private static getYDist;
|
|
159
|
+
/**
|
|
160
|
+
* Returns a recyclable MPPointF instance.
|
|
161
|
+
* returns the correct translation depending on the provided x and y touch
|
|
162
|
+
* points
|
|
163
|
+
*
|
|
164
|
+
* @param x
|
|
165
|
+
* @param y
|
|
166
|
+
* @return
|
|
167
|
+
*/
|
|
96
168
|
getTrans(x: any, y: any): {
|
|
97
169
|
x: number;
|
|
98
170
|
y: number;
|
|
99
171
|
};
|
|
172
|
+
/**
|
|
173
|
+
* Returns true if the current touch situation should be interpreted as inverted, false if not.
|
|
174
|
+
*/
|
|
100
175
|
private inverted;
|
|
176
|
+
/**
|
|
177
|
+
* ################ ################ ################ ################
|
|
178
|
+
*/
|
|
179
|
+
/** GETTERS AND GESTURE RECOGNITION BELOW */
|
|
180
|
+
/**
|
|
181
|
+
* returns the matrix object the listener holds
|
|
182
|
+
*/
|
|
101
183
|
getMatrix(): Matrix;
|
|
102
184
|
onDoubleTapGesture(event: GestureStateEventData): void;
|
|
103
185
|
onTapGesture(event: GestureStateEventData): void;
|
|
@@ -1,18 +1,33 @@
|
|
|
1
|
+
import { GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureState, HandlerType, Manager } from '@nativescript-community/gesturehandler';
|
|
1
2
|
import { Matrix } from '@nativescript-community/ui-canvas';
|
|
3
|
+
import { Trace } from '@nativescript/core';
|
|
2
4
|
import { CLog, CLogTypes } from '../utils/Utils';
|
|
3
5
|
import { ChartGesture, ChartTouchListener } from './ChartTouchListener';
|
|
4
|
-
import { GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureState, HandlerType, Manager } from '@nativescript-community/gesturehandler';
|
|
5
|
-
import { Trace } from '@nativescript/core';
|
|
6
6
|
const LOG_TAG = 'BarLineChartTouchListener';
|
|
7
7
|
let TAP_HANDLER_TAG = 12450000;
|
|
8
8
|
let DOUBLE_TAP_HANDLER_TAG = 12451000;
|
|
9
9
|
let PINCH_HANDLER_TAG = 12452000;
|
|
10
10
|
let PAN_HANDLER_TAG = 12453000;
|
|
11
|
+
/**
|
|
12
|
+
* TouchListener for Bar-, Line-, Scatter- and CandleStickChart with handles all
|
|
13
|
+
* touch interaction. Longpress === Zoom out. Double-Tap === Zoom in.
|
|
14
|
+
*
|
|
15
|
+
|
|
16
|
+
*/
|
|
11
17
|
export class BarLineChartTouchListener extends ChartTouchListener {
|
|
12
18
|
constructor(chart, touchMatrix, dragTriggerDistance) {
|
|
13
19
|
super(chart);
|
|
20
|
+
/**
|
|
21
|
+
* the original touch-matrix from the chart
|
|
22
|
+
*/
|
|
14
23
|
this.mMatrix = new Matrix();
|
|
24
|
+
/**
|
|
25
|
+
* matrix for saving the original matrix state
|
|
26
|
+
*/
|
|
15
27
|
this.mSavedMatrix = new Matrix();
|
|
28
|
+
/**
|
|
29
|
+
* center between two pointers (fingers on the display)
|
|
30
|
+
*/
|
|
16
31
|
this.mTouchPointCenter = { x: 0, y: 0 };
|
|
17
32
|
this.mSavedXDist = 1;
|
|
18
33
|
this.mSavedYDist = 1;
|
|
@@ -24,16 +39,16 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
24
39
|
this.PAN_HANDLER_TAG = PAN_HANDLER_TAG++;
|
|
25
40
|
}
|
|
26
41
|
getPanGestureOptions() {
|
|
27
|
-
return { gestureTag: this.PAN_HANDLER_TAG, ...(this.
|
|
42
|
+
return { gestureTag: this.PAN_HANDLER_TAG, ...(this.chart.panGestureOptions || {}) };
|
|
28
43
|
}
|
|
29
44
|
getPinchGestureOptions() {
|
|
30
|
-
return { gestureTag: this.PINCH_HANDLER_TAG, ...(this.
|
|
45
|
+
return { gestureTag: this.PINCH_HANDLER_TAG, ...(this.chart.pinchGestureOptions || {}) };
|
|
31
46
|
}
|
|
32
47
|
getTapGestureOptions() {
|
|
33
|
-
return { gestureTag: this.TAP_HANDLER_TAG, ...(this.
|
|
48
|
+
return { gestureTag: this.TAP_HANDLER_TAG, ...(this.chart.tapGestureOptions || {}) };
|
|
34
49
|
}
|
|
35
50
|
getDoubleTapGestureOptions() {
|
|
36
|
-
return { gestureTag: this.DOUBLE_TAP_HANDLER_TAG, ...(this.
|
|
51
|
+
return { gestureTag: this.DOUBLE_TAP_HANDLER_TAG, ...(this.chart.doubleTapGestureOptions || {}) };
|
|
37
52
|
}
|
|
38
53
|
getOrCreateDoubleTapGestureHandler() {
|
|
39
54
|
if (!this.doubleTapGestureHandler) {
|
|
@@ -42,9 +57,8 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
42
57
|
CLog(CLogTypes.log, LOG_TAG, 'creating double tap gesture');
|
|
43
58
|
}
|
|
44
59
|
const options = this.getDoubleTapGestureOptions();
|
|
45
|
-
this.doubleTapGestureHandler = manager
|
|
46
|
-
|
|
47
|
-
.on(GestureHandlerStateEvent, this.onDoubleTapGesture, this);
|
|
60
|
+
this.doubleTapGestureHandler = manager.createGestureHandler(HandlerType.TAP, options.gestureTag, { numberOfTaps: 2, ...options });
|
|
61
|
+
this.doubleTapGestureHandler.on(GestureHandlerStateEvent, this.onDoubleTapGesture, this);
|
|
48
62
|
}
|
|
49
63
|
return this.doubleTapGestureHandler;
|
|
50
64
|
}
|
|
@@ -104,7 +118,7 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
104
118
|
return this.panGestureHandler;
|
|
105
119
|
}
|
|
106
120
|
setDoubleTap(enabled) {
|
|
107
|
-
const chart = this.
|
|
121
|
+
const chart = this.chart;
|
|
108
122
|
if (enabled) {
|
|
109
123
|
this.getOrCreateDoubleTapGestureHandler().attachToView(chart);
|
|
110
124
|
if (Trace.isEnabled()) {
|
|
@@ -119,7 +133,7 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
119
133
|
}
|
|
120
134
|
}
|
|
121
135
|
setTap(enabled) {
|
|
122
|
-
const chart = this.
|
|
136
|
+
const chart = this.chart;
|
|
123
137
|
if (enabled) {
|
|
124
138
|
this.getOrCreateTapGestureHandler().attachToView(chart);
|
|
125
139
|
if (Trace.isEnabled()) {
|
|
@@ -134,7 +148,7 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
134
148
|
}
|
|
135
149
|
}
|
|
136
150
|
setPinch(enabled) {
|
|
137
|
-
const chart = this.
|
|
151
|
+
const chart = this.chart;
|
|
138
152
|
if (enabled) {
|
|
139
153
|
this.getOrCreatePinchGestureHandler().attachToView(chart);
|
|
140
154
|
if (Trace.isEnabled()) {
|
|
@@ -149,7 +163,7 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
149
163
|
}
|
|
150
164
|
}
|
|
151
165
|
setPan(enabled) {
|
|
152
|
-
const chart = this.
|
|
166
|
+
const chart = this.chart;
|
|
153
167
|
if (enabled) {
|
|
154
168
|
this.getOrCreatePanGestureHandler().attachToView(chart);
|
|
155
169
|
if (Trace.isEnabled()) {
|
|
@@ -165,7 +179,7 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
165
179
|
}
|
|
166
180
|
dispose() {
|
|
167
181
|
super.dispose();
|
|
168
|
-
const chart = this.
|
|
182
|
+
const chart = this.chart;
|
|
169
183
|
this.panGestureHandler && this.panGestureHandler.detachFromView(chart);
|
|
170
184
|
this.pinchGestureHandler && this.pinchGestureHandler.detachFromView(chart);
|
|
171
185
|
this.tapGestureHandler && this.tapGestureHandler.detachFromView(chart);
|
|
@@ -177,26 +191,28 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
177
191
|
}
|
|
178
192
|
init() {
|
|
179
193
|
super.init();
|
|
180
|
-
const chart = this.
|
|
181
|
-
if (chart.
|
|
194
|
+
const chart = this.chart;
|
|
195
|
+
if (chart.doubleTapToZoomEnabled) {
|
|
182
196
|
this.setDoubleTap(true);
|
|
183
197
|
}
|
|
184
|
-
if (chart.
|
|
198
|
+
if (chart.highlightPerTapEnabled) {
|
|
185
199
|
this.setTap(true);
|
|
186
200
|
}
|
|
187
|
-
if (chart.
|
|
201
|
+
if (chart.highlightPerDragEnabled || chart.dragEnabled) {
|
|
188
202
|
this.setPan(true);
|
|
189
203
|
}
|
|
190
|
-
if (chart.
|
|
204
|
+
if (chart.pinchZoomEnabled) {
|
|
191
205
|
this.setPinch(true);
|
|
192
206
|
}
|
|
193
207
|
}
|
|
194
208
|
onPanGestureState(event) {
|
|
195
|
-
const chart = this.
|
|
196
|
-
if (!chart.
|
|
209
|
+
const chart = this.chart;
|
|
210
|
+
if (!chart.highlightPerDragEnabled && !chart.dragEnabled)
|
|
197
211
|
return;
|
|
198
212
|
const state = event.data.state;
|
|
213
|
+
chart.noComputeAutoScaleOnNextDraw = true;
|
|
199
214
|
switch (state) {
|
|
215
|
+
// break;
|
|
200
216
|
case GestureState.ACTIVE:
|
|
201
217
|
this.stopDeceleration();
|
|
202
218
|
this.saveTouchStart(event);
|
|
@@ -214,8 +230,8 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
214
230
|
}
|
|
215
231
|
}
|
|
216
232
|
onPanGestureTouch(event) {
|
|
217
|
-
const chart = this.
|
|
218
|
-
if (!chart.
|
|
233
|
+
const chart = this.chart;
|
|
234
|
+
if (!chart.highlightPerDragEnabled && !chart.dragEnabled)
|
|
219
235
|
return;
|
|
220
236
|
const data = event.data;
|
|
221
237
|
if (data.state !== GestureState.ACTIVE) {
|
|
@@ -229,19 +245,20 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
229
245
|
const x = event.data.extraData.translationX;
|
|
230
246
|
const y = event.data.extraData.translationY;
|
|
231
247
|
this.performDrag(event, x, y);
|
|
232
|
-
this.mMatrix = chart.
|
|
248
|
+
this.mMatrix = chart.viewPortHandler.refresh(this.mMatrix, chart, true);
|
|
233
249
|
}
|
|
234
250
|
else if (this.mTouchMode === ChartTouchListener.NONE) {
|
|
235
251
|
const shouldPan = (!chart.isFullyZoomedOut() || !chart.hasNoDragOffset()) && (!chart.zoomedPanWith2Pointers || event.data.extraData.numberOfPointers === 2);
|
|
236
252
|
if (shouldPan) {
|
|
237
|
-
|
|
253
|
+
// Disable dragging in a direction that's disallowed
|
|
254
|
+
if (chart.dragXEnabled && chart.dragYEnabled) {
|
|
238
255
|
chart.disableScroll();
|
|
239
256
|
this.mLastGesture = ChartGesture.DRAG;
|
|
240
257
|
this.mTouchMode = ChartTouchListener.DRAG;
|
|
241
258
|
}
|
|
242
259
|
}
|
|
243
260
|
else {
|
|
244
|
-
if (chart.
|
|
261
|
+
if (chart.highlightPerDragEnabled) {
|
|
245
262
|
chart.disableScroll();
|
|
246
263
|
this.mLastGesture = ChartGesture.DRAG;
|
|
247
264
|
this.performHighlightDrag(event);
|
|
@@ -250,27 +267,31 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
250
267
|
}
|
|
251
268
|
}
|
|
252
269
|
onPinchGestureState(event) {
|
|
253
|
-
const chart = this.
|
|
254
|
-
if (!chart.
|
|
270
|
+
const chart = this.chart;
|
|
271
|
+
if (!chart.scaleXEnabled && !chart.scaleYEnabled)
|
|
255
272
|
return;
|
|
273
|
+
chart.noComputeAutoScaleOnNextDraw = true;
|
|
256
274
|
const state = event.data.state;
|
|
257
275
|
switch (state) {
|
|
258
276
|
case GestureState.ACTIVE:
|
|
259
277
|
this.saveTouchStart(event);
|
|
278
|
+
// get the distance between the pointers on the x-axis
|
|
260
279
|
this.mSavedXDist = BarLineChartTouchListener.getXDist(event);
|
|
261
280
|
chart.disableScroll();
|
|
281
|
+
// get the distance between the pointers on the y-axis
|
|
262
282
|
this.mSavedYDist = BarLineChartTouchListener.getYDist(event);
|
|
263
|
-
if (chart.
|
|
283
|
+
if (chart.pinchZoomEnabled) {
|
|
264
284
|
this.mTouchMode = ChartTouchListener.PINCH_ZOOM;
|
|
265
285
|
}
|
|
266
286
|
else {
|
|
267
|
-
if (chart.
|
|
268
|
-
this.mTouchMode = chart.
|
|
287
|
+
if (chart.scaleXEnabled !== chart.scaleYEnabled) {
|
|
288
|
+
this.mTouchMode = chart.scaleXEnabled ? ChartTouchListener.X_ZOOM : ChartTouchListener.Y_ZOOM;
|
|
269
289
|
}
|
|
270
290
|
else {
|
|
271
291
|
this.mTouchMode = this.mSavedXDist > this.mSavedYDist ? ChartTouchListener.X_ZOOM : ChartTouchListener.Y_ZOOM;
|
|
272
292
|
}
|
|
273
293
|
}
|
|
294
|
+
// determine the touch-pointer center
|
|
274
295
|
this.mTouchPointCenter.x = event.data.extraData.focalX;
|
|
275
296
|
this.mTouchPointCenter.y = event.data.extraData.focalY;
|
|
276
297
|
break;
|
|
@@ -281,6 +302,9 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
281
302
|
this.mTouchMode === ChartTouchListener.PINCH_ZOOM ||
|
|
282
303
|
this.mTouchMode === ChartTouchListener.POST_ZOOM) {
|
|
283
304
|
this.mTouchMode = ChartTouchListener.NONE;
|
|
305
|
+
// Range might have changed, which means that Y-axis labels
|
|
306
|
+
// could have changed in size, affecting Y-axis size.
|
|
307
|
+
// So we need to recalculate offsets.
|
|
284
308
|
chart.calculateOffsets();
|
|
285
309
|
chart.invalidate();
|
|
286
310
|
}
|
|
@@ -289,8 +313,8 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
289
313
|
}
|
|
290
314
|
}
|
|
291
315
|
onPinchGestureTouch(event) {
|
|
292
|
-
const chart = this.
|
|
293
|
-
if (!chart.
|
|
316
|
+
const chart = this.chart;
|
|
317
|
+
if (!chart.scaleXEnabled && !chart.scaleYEnabled)
|
|
294
318
|
return;
|
|
295
319
|
if (event.data.state !== GestureState.ACTIVE) {
|
|
296
320
|
return;
|
|
@@ -301,14 +325,14 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
301
325
|
if (this.mTouchMode === ChartTouchListener.X_ZOOM || this.mTouchMode === ChartTouchListener.Y_ZOOM || this.mTouchMode === ChartTouchListener.PINCH_ZOOM) {
|
|
302
326
|
if (this.mTouchMode === ChartTouchListener.PINCH_ZOOM) {
|
|
303
327
|
this.mLastGesture = ChartGesture.PINCH_ZOOM;
|
|
304
|
-
const t = this.getTrans(this.mTouchPointCenter.x, this.mTouchPointCenter.y);
|
|
328
|
+
const t = this.getTrans(this.mTouchPointCenter.x, this.mTouchPointCenter.y); //focalPoint
|
|
305
329
|
const scale = event.data.extraData.scale;
|
|
306
330
|
const isZoomingOut = scale < 1;
|
|
307
|
-
const h = chart.
|
|
331
|
+
const h = chart.viewPortHandler;
|
|
308
332
|
const canZoomMoreX = isZoomingOut ? h.canZoomOutMoreX() : h.canZoomInMoreX();
|
|
309
333
|
const canZoomMoreY = isZoomingOut ? h.canZoomOutMoreY() : h.canZoomInMoreY();
|
|
310
|
-
const scaleX = chart.
|
|
311
|
-
const scaleY = chart.
|
|
334
|
+
const scaleX = chart.scaleXEnabled ? scale : 1;
|
|
335
|
+
const scaleY = chart.scaleYEnabled ? scale : 1;
|
|
312
336
|
if (canZoomMoreY || canZoomMoreX) {
|
|
313
337
|
this.mMatrix.set(this.mSavedMatrix);
|
|
314
338
|
this.mMatrix.postScale(scaleX, scaleY, t.x, t.y);
|
|
@@ -317,11 +341,11 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
317
341
|
chart.notify({ eventName: 'zoom', scaleX, scaleY, ...t });
|
|
318
342
|
}
|
|
319
343
|
}
|
|
320
|
-
else if (this.mTouchMode === ChartTouchListener.X_ZOOM && chart.
|
|
344
|
+
else if (this.mTouchMode === ChartTouchListener.X_ZOOM && chart.scaleXEnabled) {
|
|
321
345
|
this.mLastGesture = ChartGesture.X_ZOOM;
|
|
322
346
|
const t = this.getTrans(this.mTouchPointCenter.x, this.mTouchPointCenter.y);
|
|
323
347
|
const scaleX = event.data.extraData.scale;
|
|
324
|
-
const h = chart.
|
|
348
|
+
const h = chart.viewPortHandler;
|
|
325
349
|
const isZoomingOut = scaleX < 1;
|
|
326
350
|
const canZoomMoreX = isZoomingOut ? h.canZoomOutMoreX() : h.canZoomInMoreX();
|
|
327
351
|
if (canZoomMoreX) {
|
|
@@ -332,11 +356,11 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
332
356
|
chart.notify({ eventName: 'zoom', scaleX, scaleY: 1, ...t });
|
|
333
357
|
}
|
|
334
358
|
}
|
|
335
|
-
else if (this.mTouchMode === ChartTouchListener.Y_ZOOM && chart.
|
|
359
|
+
else if (this.mTouchMode === ChartTouchListener.Y_ZOOM && chart.scaleYEnabled) {
|
|
336
360
|
this.mLastGesture = ChartGesture.Y_ZOOM;
|
|
337
361
|
const t = this.getTrans(this.mTouchPointCenter.x, this.mTouchPointCenter.y);
|
|
338
362
|
const scaleY = event.data.extraData.scale;
|
|
339
|
-
const h = chart.
|
|
363
|
+
const h = chart.viewPortHandler;
|
|
340
364
|
const isZoomingOut = scaleY < 1;
|
|
341
365
|
const canZoomMoreY = isZoomingOut ? h.canZoomOutMoreY() : h.canZoomInMoreY();
|
|
342
366
|
if (canZoomMoreY) {
|
|
@@ -347,66 +371,143 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
347
371
|
chart.notify({ eventName: 'zoom', scaleX: 1, scaleY, ...t });
|
|
348
372
|
}
|
|
349
373
|
}
|
|
350
|
-
this.mMatrix = chart.
|
|
374
|
+
this.mMatrix = chart.viewPortHandler.refresh(this.mMatrix, chart, true);
|
|
375
|
+
chart.noComputeAutoScaleOnNextDraw = true;
|
|
376
|
+
// }
|
|
351
377
|
}
|
|
352
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
* ################ ################ ################ ################
|
|
381
|
+
*/
|
|
382
|
+
/** BELOW CODE PERFORMS THE ACTUAL TOUCH ACTIONS */
|
|
383
|
+
/**
|
|
384
|
+
* Saves the current Matrix state and the touch-start point.
|
|
385
|
+
*
|
|
386
|
+
* @param event
|
|
387
|
+
*/
|
|
353
388
|
saveTouchStart(event) {
|
|
354
389
|
this.mSavedMatrix.set(this.mMatrix);
|
|
355
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* Performs all necessary operations needed for dragging.
|
|
393
|
+
*
|
|
394
|
+
* @param event
|
|
395
|
+
*/
|
|
356
396
|
performDrag(event, distanceX, distanceY) {
|
|
357
397
|
this.mLastGesture = ChartTouchListener.DRAG;
|
|
358
398
|
this.mMatrix.set(this.mSavedMatrix);
|
|
399
|
+
// check if axis is inverted
|
|
359
400
|
if (this.inverted()) {
|
|
360
401
|
distanceY = -distanceY;
|
|
361
402
|
}
|
|
403
|
+
this.chart.noComputeAutoScaleOnNextDraw = true;
|
|
362
404
|
this.mMatrix.postTranslate(distanceX, distanceY);
|
|
363
|
-
if (this.
|
|
364
|
-
this.
|
|
405
|
+
if (this.chart.hasListeners('translate')) {
|
|
406
|
+
this.chart.notify({ eventName: 'translate', object: this.chart, distanceX, distanceY });
|
|
365
407
|
}
|
|
366
408
|
}
|
|
409
|
+
/**
|
|
410
|
+
* Highlights upon dragging, generates callbacks for the selection-listener.
|
|
411
|
+
*
|
|
412
|
+
* @param e
|
|
413
|
+
*/
|
|
367
414
|
performHighlightDrag(event) {
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
415
|
+
// const highlights = this.chart.getHighlightsByTouchPoint(event.data.extraData.x, event.data.extraData.y);
|
|
416
|
+
// const h = highlights[0];
|
|
417
|
+
// if (h && h !== this.lastHighlighted) {
|
|
418
|
+
// this.chart.highlights(highlights, true);
|
|
419
|
+
// }
|
|
420
|
+
this.handleTouchHighlight(event, true);
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Highlights upon dragging, generates callbacks for the selection-listener.
|
|
424
|
+
*
|
|
425
|
+
* @param e
|
|
426
|
+
*/
|
|
427
|
+
handleTouchHighlight(event, highlightInChart, checkForLast = true, eventName) {
|
|
428
|
+
const highlights = this.chart.getHighlightsByTouchPoint(event.data.extraData.x, event.data.extraData.y);
|
|
429
|
+
const h = highlights[0];
|
|
430
|
+
if (h) {
|
|
431
|
+
if (highlightInChart && (!checkForLast || h !== this.lastHighlighted)) {
|
|
432
|
+
this.chart.highlight(highlights, true);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
if (eventName) {
|
|
436
|
+
this.chart.notify({ eventName, data: event.data, highlight: h, highlights });
|
|
372
437
|
}
|
|
373
438
|
}
|
|
439
|
+
/**
|
|
440
|
+
* calculates the distance on the x-axis between two pointers (fingers on
|
|
441
|
+
* the display)
|
|
442
|
+
*
|
|
443
|
+
* @param e
|
|
444
|
+
* @return
|
|
445
|
+
*/
|
|
374
446
|
static getXDist(e) {
|
|
375
447
|
const x = Math.abs(e.data.extraData.positions[0] - e.data.extraData.positions[2]);
|
|
376
448
|
return x;
|
|
377
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* calculates the distance on the y-axis between two pointers (fingers on
|
|
452
|
+
* the display)
|
|
453
|
+
*
|
|
454
|
+
* @param e
|
|
455
|
+
* @return
|
|
456
|
+
*/
|
|
378
457
|
static getYDist(e) {
|
|
379
458
|
const y = Math.abs(e.data.extraData.positions[1] - e.data.extraData.positions[3]);
|
|
380
459
|
return y;
|
|
381
460
|
}
|
|
461
|
+
/**
|
|
462
|
+
* Returns a recyclable MPPointF instance.
|
|
463
|
+
* returns the correct translation depending on the provided x and y touch
|
|
464
|
+
* points
|
|
465
|
+
*
|
|
466
|
+
* @param x
|
|
467
|
+
* @param y
|
|
468
|
+
* @return
|
|
469
|
+
*/
|
|
382
470
|
getTrans(x, y) {
|
|
383
|
-
const vph = this.
|
|
384
|
-
const xTrans = x - vph.offsetLeft
|
|
471
|
+
const vph = this.chart.viewPortHandler;
|
|
472
|
+
const xTrans = x - vph.offsetLeft;
|
|
385
473
|
let yTrans = 0;
|
|
474
|
+
// check if axis is inverted
|
|
386
475
|
if (this.inverted()) {
|
|
387
|
-
yTrans = -(y - vph.offsetTop
|
|
476
|
+
yTrans = -(y - vph.offsetTop);
|
|
388
477
|
}
|
|
389
478
|
else {
|
|
390
|
-
yTrans = -(vph.
|
|
479
|
+
yTrans = -(vph.chartHeight - y - vph.offsetBottom);
|
|
391
480
|
}
|
|
392
481
|
return { x: xTrans, y: yTrans };
|
|
393
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* Returns true if the current touch situation should be interpreted as inverted, false if not.
|
|
485
|
+
*/
|
|
394
486
|
inverted() {
|
|
395
|
-
return (
|
|
487
|
+
return (!this.mClosestDataSetToTouch && this.chart.anyAxisInverted) || (this.mClosestDataSetToTouch && this.chart.isInverted(this.mClosestDataSetToTouch.axisDependency));
|
|
396
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* ################ ################ ################ ################
|
|
491
|
+
*/
|
|
492
|
+
/** GETTERS AND GESTURE RECOGNITION BELOW */
|
|
493
|
+
/**
|
|
494
|
+
* returns the matrix object the listener holds
|
|
495
|
+
*/
|
|
397
496
|
getMatrix() {
|
|
398
497
|
return this.mMatrix;
|
|
399
498
|
}
|
|
400
499
|
onDoubleTapGesture(event) {
|
|
401
500
|
if (event.data.state === GestureState.END && event.data.prevState === GestureState.ACTIVE) {
|
|
402
|
-
const chart = this.
|
|
501
|
+
const chart = this.chart;
|
|
502
|
+
// check if double-tap zooming is enabled
|
|
403
503
|
if (chart.hasListeners('doubleTap')) {
|
|
404
|
-
|
|
405
|
-
|
|
504
|
+
this.handleTouchHighlight(event, false, false, 'doubleTap');
|
|
505
|
+
// const h = chart.getHighlightByTouchPoint(event.data.extraData.x, event.data.extraData.y);
|
|
506
|
+
// chart.notify({ eventName: 'doubleTap', data: event.data, object: chart, highlight: h });
|
|
406
507
|
}
|
|
407
|
-
if (chart.
|
|
508
|
+
if (chart.doubleTapToZoomEnabled && chart.data?.entryCount > 0) {
|
|
408
509
|
const trans = this.getTrans(event.data.extraData.x, event.data.extraData.y);
|
|
409
|
-
chart.zoom(chart.
|
|
510
|
+
chart.zoom(chart.scaleXEnabled ? 1.4 : 1, chart.scaleYEnabled ? 1.4 : 1, trans.x, trans.y);
|
|
410
511
|
if (Trace.isEnabled()) {
|
|
411
512
|
CLog(CLogTypes.info, LOG_TAG, 'Double-Tap, Zooming In, x: ' + trans.x + ', y: ' + trans.y);
|
|
412
513
|
}
|
|
@@ -419,19 +520,20 @@ export class BarLineChartTouchListener extends ChartTouchListener {
|
|
|
419
520
|
}
|
|
420
521
|
if (event.data.state === GestureState.END && event.data.prevState === GestureState.ACTIVE) {
|
|
421
522
|
this.mLastGesture = ChartGesture.SINGLE_TAP;
|
|
422
|
-
const chart = this.
|
|
523
|
+
const chart = this.chart;
|
|
423
524
|
const hasListener = chart.hasListeners('tap');
|
|
424
|
-
const isHighlightPerTapEnabled = chart.
|
|
525
|
+
const isHighlightPerTapEnabled = chart.highlightPerTapEnabled;
|
|
425
526
|
if (!hasListener && !isHighlightPerTapEnabled) {
|
|
426
527
|
return;
|
|
427
528
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
529
|
+
this.handleTouchHighlight(event, !isHighlightPerTapEnabled, false, hasListener ? 'tap' : undefined);
|
|
530
|
+
// const h = chart.getHighlightByTouchPoint(event.data.extraData.x, event.data.extraData.y);
|
|
531
|
+
// if (hasListener) {
|
|
532
|
+
// chart.notify({ eventName: 'tap', data: event.data, object: chart, highlight: h });
|
|
533
|
+
// }
|
|
534
|
+
// if (isHighlightPerTapEnabled) {
|
|
535
|
+
// this.performHighlight(h);
|
|
536
|
+
// }
|
|
435
537
|
}
|
|
436
538
|
}
|
|
437
539
|
stopDeceleration() {
|