@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
|
@@ -2,30 +2,63 @@ import { AxisDependency } from '../components/YAxis';
|
|
|
2
2
|
import { Rounding } from '../data/DataSet';
|
|
3
3
|
export class ChartHighlighter {
|
|
4
4
|
constructor(chart) {
|
|
5
|
+
/**
|
|
6
|
+
* buffer for storing previously highlighted values
|
|
7
|
+
*/
|
|
5
8
|
this.mHighlightBuffer = [];
|
|
6
9
|
this.mChart = chart;
|
|
7
10
|
}
|
|
8
11
|
getHighlight(x, y) {
|
|
9
12
|
const pos = this.getValsForTouch(x, y);
|
|
10
13
|
const xVal = pos.x;
|
|
11
|
-
|
|
12
|
-
return high;
|
|
14
|
+
return this.getHighlightForX(xVal, x, y);
|
|
13
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns a recyclable MPPointD instance.
|
|
18
|
+
* Returns the corresponding xPos for a given touch-position in pixels.
|
|
19
|
+
*
|
|
20
|
+
* @param x
|
|
21
|
+
* @param y
|
|
22
|
+
* @return
|
|
23
|
+
*/
|
|
14
24
|
getValsForTouch(x, y) {
|
|
15
|
-
|
|
25
|
+
// take any transformer to determine the x-axis value
|
|
26
|
+
const pos = this.mChart.transformer.getValuesByTouchPoint(x, y);
|
|
16
27
|
return pos;
|
|
17
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns the corresponding Highlight for a given xVal and x- and y-touch position in pixels.
|
|
31
|
+
*
|
|
32
|
+
* @param xVal
|
|
33
|
+
* @param x
|
|
34
|
+
* @param y
|
|
35
|
+
* @return
|
|
36
|
+
*/
|
|
18
37
|
getHighlightForX(xVal, x, y) {
|
|
19
38
|
const closestValues = this.getHighlightsAtXValue(xVal, x, y);
|
|
20
39
|
if (closestValues.length <= 1) {
|
|
21
|
-
return closestValues
|
|
40
|
+
return closestValues;
|
|
22
41
|
}
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
42
|
+
const chart = this.mChart;
|
|
43
|
+
let axis;
|
|
44
|
+
if (chart.highlightsFilterByAxis) {
|
|
45
|
+
const leftAxisMinDist = this.getMinimumDistance(closestValues, y, AxisDependency.LEFT);
|
|
46
|
+
const rightAxisMinDist = this.getMinimumDistance(closestValues, y, AxisDependency.RIGHT);
|
|
47
|
+
axis = leftAxisMinDist < rightAxisMinDist ? AxisDependency.LEFT : AxisDependency.RIGHT;
|
|
48
|
+
}
|
|
49
|
+
// const detail = this.getClosestHighlightByPixel(closestValues, x, y, chart.maxHighlightDistance, axis);
|
|
50
|
+
// return [detail];
|
|
51
|
+
return this.sortedHighlights(closestValues, x, y, chart.maxHighlightDistance, axis);
|
|
28
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns the minimum distance from a touch value (in pixels) to the
|
|
55
|
+
* closest value (in pixels) that is displayed in the chart.
|
|
56
|
+
*
|
|
57
|
+
* @param closestValues
|
|
58
|
+
* @param pos
|
|
59
|
+
* @param axis
|
|
60
|
+
* @return
|
|
61
|
+
*/
|
|
29
62
|
getMinimumDistance(closestValues, pos, axis) {
|
|
30
63
|
let distance = Infinity;
|
|
31
64
|
for (let i = 0; i < closestValues.length; i++) {
|
|
@@ -42,29 +75,52 @@ export class ChartHighlighter {
|
|
|
42
75
|
getHighlightPos(h) {
|
|
43
76
|
return h.yPx;
|
|
44
77
|
}
|
|
78
|
+
getChartData() {
|
|
79
|
+
return this.mChart.data;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns a list of Highlight objects representing the entries closest to the given xVal.
|
|
83
|
+
* The returned list contains two objects per DataSet (closest rounding up, closest rounding down).
|
|
84
|
+
*
|
|
85
|
+
* @param xVal the transformed x-value of the x-touch position
|
|
86
|
+
* @return
|
|
87
|
+
*/
|
|
45
88
|
getHighlightsAtXValue(xVal, x, y) {
|
|
46
89
|
this.mHighlightBuffer = [];
|
|
47
|
-
const data = this.
|
|
48
|
-
if (data
|
|
90
|
+
const data = this.getChartData();
|
|
91
|
+
if (!data)
|
|
49
92
|
return this.mHighlightBuffer;
|
|
50
|
-
for (let i = 0, dataSetCount = data.
|
|
93
|
+
for (let i = 0, dataSetCount = data.dataSetCount; i < dataSetCount; i++) {
|
|
51
94
|
const dataSet = data.getDataSetByIndex(i);
|
|
52
|
-
|
|
95
|
+
// don't include DataSets that cannot be highlighted
|
|
96
|
+
if (!dataSet.highlightEnabled)
|
|
53
97
|
continue;
|
|
54
|
-
this.mHighlightBuffer.push(...this.buildHighlights(dataSet, i, xVal, Rounding.CLOSEST));
|
|
98
|
+
this.mHighlightBuffer.push(...this.buildHighlights(dataSet, i, x, y, xVal, Rounding.CLOSEST));
|
|
55
99
|
}
|
|
56
100
|
return this.mHighlightBuffer;
|
|
57
101
|
}
|
|
58
|
-
|
|
102
|
+
/**
|
|
103
|
+
* An array of `Highlight` objects corresponding to the selected xValue and dataSetIndex.
|
|
104
|
+
*
|
|
105
|
+
* @param set
|
|
106
|
+
* @param dataSetIndex
|
|
107
|
+
* @param xVal
|
|
108
|
+
* @param rounding
|
|
109
|
+
* @return
|
|
110
|
+
*/
|
|
111
|
+
buildHighlights(set, dataSetIndex, touchX, touchY, xVal, rounding) {
|
|
59
112
|
const yKey = set.yProperty;
|
|
60
113
|
const highlights = [];
|
|
61
114
|
if (set['setIgnoreFiltered']) {
|
|
62
|
-
set.
|
|
115
|
+
set.ignoreFiltered = true;
|
|
63
116
|
}
|
|
117
|
+
//noinspection unchecked
|
|
64
118
|
let entries = set.getEntriesAndIndexesForXValue(xVal);
|
|
65
119
|
if (entries.length === 0) {
|
|
120
|
+
// Try to find closest x-value and take all entries for that x-value
|
|
66
121
|
const closest = set.getEntryAndIndexForXValue(xVal, NaN, rounding);
|
|
67
|
-
if (closest
|
|
122
|
+
if (closest) {
|
|
123
|
+
//noinspection unchecked
|
|
68
124
|
entries = set.getEntriesAndIndexesForXValue(set.getEntryXValue(closest.entry, closest.index));
|
|
69
125
|
}
|
|
70
126
|
}
|
|
@@ -74,29 +130,44 @@ export class ChartHighlighter {
|
|
|
74
130
|
const e = r.entry;
|
|
75
131
|
const index = r.index;
|
|
76
132
|
const xVal = set.getEntryXValue(e, index);
|
|
77
|
-
const pixels = this.mChart.getTransformer(set.
|
|
133
|
+
// const pixels = this.mChart.getTransformer(set.axisDependency).getPixelForValues(xVal, e[yKey]);
|
|
134
|
+
const pixels = this.mChart.getPixelForEntry(set, e, index);
|
|
78
135
|
highlights.push({
|
|
79
136
|
entry: e,
|
|
80
137
|
entryIndex: index,
|
|
81
138
|
x: xVal,
|
|
82
139
|
y: e[yKey],
|
|
140
|
+
xTouchPx: touchX,
|
|
141
|
+
yTouchPx: touchY,
|
|
83
142
|
xPx: pixels.x,
|
|
84
143
|
yPx: pixels.y,
|
|
85
144
|
dataSetIndex,
|
|
86
|
-
axis: set.
|
|
145
|
+
axis: set.axisDependency
|
|
87
146
|
});
|
|
88
147
|
}
|
|
89
148
|
if (set['setIgnoreFiltered']) {
|
|
90
|
-
set.
|
|
149
|
+
set.ignoreFiltered = false;
|
|
91
150
|
}
|
|
92
151
|
return highlights;
|
|
93
152
|
}
|
|
94
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Returns the Highlight of the DataSet that contains the closest value on the
|
|
155
|
+
* y-axis.
|
|
156
|
+
*
|
|
157
|
+
* @param closestValues contains two Highlight objects per DataSet closest to the selected x-position (determined by
|
|
158
|
+
* rounding up an down)
|
|
159
|
+
* @param x
|
|
160
|
+
* @param y
|
|
161
|
+
* @param minSelectionDistance
|
|
162
|
+
* @param axis the closest axis
|
|
163
|
+
* @return
|
|
164
|
+
*/
|
|
165
|
+
getClosestHighlightByPixel(closestValues, x, y, minSelectionDistance, axis) {
|
|
95
166
|
let closest = null;
|
|
96
167
|
let distance = minSelectionDistance;
|
|
97
168
|
for (let i = 0; i < closestValues.length; i++) {
|
|
98
169
|
const high = closestValues[i];
|
|
99
|
-
if (axis
|
|
170
|
+
if (axis !== undefined || high.axis === axis) {
|
|
100
171
|
const cDistance = this.getDistance(x, y, high.xPx, high.yPx);
|
|
101
172
|
if (cDistance < distance) {
|
|
102
173
|
closest = high;
|
|
@@ -106,11 +177,43 @@ export class ChartHighlighter {
|
|
|
106
177
|
}
|
|
107
178
|
return closest;
|
|
108
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns sorted highlights based on distance to touch x,y
|
|
182
|
+
*
|
|
183
|
+
* @param closestValues contains two Highlight objects per DataSet closest to the selected x-position (determined by
|
|
184
|
+
* rounding up an down)
|
|
185
|
+
* @param x
|
|
186
|
+
* @param y
|
|
187
|
+
* @param minSelectionDistance
|
|
188
|
+
* @param axis the closest axis
|
|
189
|
+
* @return
|
|
190
|
+
*/
|
|
191
|
+
sortedHighlights(closestValues, x, y, minSelectionDistance, axis) {
|
|
192
|
+
if (axis !== undefined) {
|
|
193
|
+
closestValues = closestValues.filter((h) => h.axis === axis);
|
|
194
|
+
}
|
|
195
|
+
return closestValues
|
|
196
|
+
.map((h) => ({ h, d: this.getDistance(x, y, h.xPx, h.yPx) }))
|
|
197
|
+
.sort((h1, h2) => h1.d - h2.d)
|
|
198
|
+
.filter((v) => v.d < minSelectionDistance)
|
|
199
|
+
.map((v) => v.h);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Calculates the distance between the two given points.
|
|
203
|
+
*
|
|
204
|
+
* @param x1
|
|
205
|
+
* @param y1
|
|
206
|
+
* @param x2
|
|
207
|
+
* @param y2
|
|
208
|
+
* @return
|
|
209
|
+
*/
|
|
109
210
|
getDistance(x1, y1, x2, y2) {
|
|
211
|
+
//return Math.abs(y1 - y2);
|
|
212
|
+
//return Math.abs(x1 - x2);
|
|
110
213
|
return Math.hypot(x1 - x2, y1 - y2);
|
|
111
214
|
}
|
|
112
215
|
getData() {
|
|
113
|
-
return this.mChart.
|
|
216
|
+
return this.mChart.data;
|
|
114
217
|
}
|
|
115
218
|
}
|
|
116
219
|
//# sourceMappingURL=ChartHighlighter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"ChartHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/ChartHighlighter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,13 @@ import { BarHighlighter } from './BarHighlighter';
|
|
|
3
3
|
import { IHighlighter } from './IHighlighter';
|
|
4
4
|
import { CombinedDataProvider } from '../interfaces/dataprovider/CombinedDataProvider';
|
|
5
5
|
import { BarDataProvider } from '../interfaces/dataprovider/BarDataProvider';
|
|
6
|
+
/**
|
|
7
|
+
* Created by Philipp Jahoda on 12/09/15.
|
|
8
|
+
*/
|
|
6
9
|
export declare class CombinedHighlighter extends ChartHighlighter<CombinedDataProvider> implements IHighlighter {
|
|
10
|
+
/**
|
|
11
|
+
* bar highlighter for supporting stacked highlighting
|
|
12
|
+
*/
|
|
7
13
|
protected barHighlighter: BarHighlighter;
|
|
8
14
|
constructor(chart: CombinedDataProvider, barChart: BarDataProvider);
|
|
9
15
|
getHighlightsAtXValue(xVal: any, x?: any, y?: any): import("./Highlight").Highlight<import("../data/Entry").Entry>[];
|
|
@@ -2,33 +2,48 @@ import { ChartHighlighter } from './ChartHighlighter';
|
|
|
2
2
|
import { BarHighlighter } from './BarHighlighter';
|
|
3
3
|
import { BarData } from '../data/BarData';
|
|
4
4
|
import { Rounding } from '../data/DataSet';
|
|
5
|
+
/**
|
|
6
|
+
* Created by Philipp Jahoda on 12/09/15.
|
|
7
|
+
*/
|
|
5
8
|
export class CombinedHighlighter extends ChartHighlighter {
|
|
6
9
|
constructor(chart, barChart) {
|
|
7
10
|
super(chart);
|
|
8
|
-
|
|
11
|
+
// if there is BarData, create a BarHighlighter
|
|
12
|
+
this.barHighlighter = !barChart.barData ? null : new BarHighlighter(barChart);
|
|
9
13
|
}
|
|
10
14
|
getHighlightsAtXValue(xVal, x, y) {
|
|
11
15
|
this.mHighlightBuffer = [];
|
|
12
|
-
const dataObjects = this.mChart.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const dataObjects = this.mChart.combinedData.datas;
|
|
17
|
+
const datasArray = this.mChart.combinedData.datasArray;
|
|
18
|
+
const keys = Object.keys(dataObjects);
|
|
19
|
+
for (let i = 0; i < keys.length; i++) {
|
|
20
|
+
const key = keys[i];
|
|
21
|
+
const dataObject = dataObjects[key];
|
|
22
|
+
if (!dataObject) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
// in case of BarData, let the BarHighlighter take over
|
|
26
|
+
if (this.barHighlighter && dataObject instanceof BarData && x !== undefined) {
|
|
16
27
|
const high = this.barHighlighter.getHighlight(x, y);
|
|
17
|
-
if (high
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
if (high) {
|
|
29
|
+
this.mHighlightBuffer.push(...this.barHighlighter.getHighlight(x, y).map((h) => {
|
|
30
|
+
h.dataIndex = datasArray.indexOf(dataObject);
|
|
31
|
+
h.dataType = key;
|
|
32
|
+
return h;
|
|
33
|
+
}));
|
|
20
34
|
}
|
|
21
35
|
}
|
|
22
36
|
else {
|
|
23
|
-
for (let j = 0, dataSetCount = dataObject.
|
|
24
|
-
const dataSet =
|
|
25
|
-
|
|
37
|
+
for (let j = 0, dataSetCount = dataObject.dataSetCount; j < dataSetCount; j++) {
|
|
38
|
+
const dataSet = dataObject.getDataSetByIndex(j);
|
|
39
|
+
// don't include datasets that cannot be highlighted
|
|
40
|
+
if (!dataSet.highlightEnabled)
|
|
26
41
|
continue;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
42
|
+
this.mHighlightBuffer.push(...this.buildHighlights(dataSet, j, x, y, xVal, Rounding.CLOSEST).map((h) => {
|
|
43
|
+
h.dataIndex = datasArray.indexOf(dataObject);
|
|
44
|
+
h.dataType = key;
|
|
45
|
+
return h;
|
|
46
|
+
}));
|
|
32
47
|
}
|
|
33
48
|
}
|
|
34
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombinedHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"CombinedHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/CombinedHighlighter.ts"],"names":[],"mappings":"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"}
|
package/highlight/Highlight.d.ts
CHANGED
|
@@ -1,16 +1,69 @@
|
|
|
1
1
|
import { AxisDependency } from '../components/YAxis';
|
|
2
2
|
import { Entry } from '../data/Entry';
|
|
3
|
+
/**
|
|
4
|
+
* Contains information needed to determine the highlighted value.
|
|
5
|
+
*
|
|
6
|
+
|
|
7
|
+
*/
|
|
3
8
|
export declare class Highlight<T extends Entry = Entry> {
|
|
9
|
+
/**
|
|
10
|
+
* the x-value of the highlighted value
|
|
11
|
+
*/
|
|
4
12
|
x: number;
|
|
13
|
+
/**
|
|
14
|
+
* the y-value of the highlighted value
|
|
15
|
+
*/
|
|
5
16
|
y: number;
|
|
17
|
+
/**
|
|
18
|
+
* the x-pixel of the highlight
|
|
19
|
+
*/
|
|
6
20
|
xPx?: number;
|
|
21
|
+
/**
|
|
22
|
+
* the y-pixel of the highlight
|
|
23
|
+
*/
|
|
7
24
|
yPx?: number;
|
|
25
|
+
/**
|
|
26
|
+
* the x-pixel of the touch corresponding to the highlight
|
|
27
|
+
*/
|
|
28
|
+
xTouchPx?: number;
|
|
29
|
+
/**
|
|
30
|
+
* the y-pixel of the touch corresponding to the highlight
|
|
31
|
+
*/
|
|
32
|
+
yTouchPx?: number;
|
|
33
|
+
/**
|
|
34
|
+
* the index of the data object - in case it refers to more than one
|
|
35
|
+
*/
|
|
8
36
|
dataIndex?: number;
|
|
9
|
-
|
|
37
|
+
/**
|
|
38
|
+
* the type of the data object if within CombinedChart (lineData, barData, scatterData, bubbleData, candleData)
|
|
39
|
+
*/
|
|
40
|
+
dataType?: string;
|
|
41
|
+
/**
|
|
42
|
+
* the index of the dataset the highlighted value is in
|
|
43
|
+
*/
|
|
44
|
+
dataSetIndex: number;
|
|
45
|
+
/**
|
|
46
|
+
* index which value of a stacked bar entry is highlighted, default -1
|
|
47
|
+
*/
|
|
10
48
|
stackIndex?: number;
|
|
49
|
+
/**
|
|
50
|
+
* the axis the highlighted value belongs to
|
|
51
|
+
*/
|
|
11
52
|
axis?: AxisDependency;
|
|
53
|
+
/**
|
|
54
|
+
* the x-position (pixels) on which this highlight object was last drawn
|
|
55
|
+
*/
|
|
12
56
|
drawX?: number;
|
|
57
|
+
/**
|
|
58
|
+
* the y-position (pixels) on which this highlight object was last drawn
|
|
59
|
+
*/
|
|
13
60
|
drawY?: number;
|
|
61
|
+
/**
|
|
62
|
+
* the associated entry
|
|
63
|
+
*/
|
|
14
64
|
entry?: T;
|
|
65
|
+
/**
|
|
66
|
+
* the index of the dataset the highlighted value is in
|
|
67
|
+
*/
|
|
15
68
|
entryIndex?: number;
|
|
16
69
|
}
|
package/highlight/Highlight.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Highlight.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Highlight.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/Highlight.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,SAAS;CA2ErB"}
|
|
@@ -4,7 +4,7 @@ import { BarDataProvider } from '../interfaces/dataprovider/BarDataProvider';
|
|
|
4
4
|
import { IBarDataSet } from '../interfaces/datasets/IBarDataSet';
|
|
5
5
|
export declare class HorizontalBarHighlighter extends BarHighlighter {
|
|
6
6
|
constructor(chart: BarDataProvider);
|
|
7
|
-
getHighlight(x: number, y: number): Highlight;
|
|
7
|
+
getHighlight(x: number, y: number): Highlight<import("../data/Entry").Entry>[];
|
|
8
8
|
protected buildHighlights(set: IBarDataSet, dataSetIndex: any, xVal: any, rounding: any): Highlight<import("../data/Entry").Entry>[];
|
|
9
9
|
protected getDistance(x1: any, y1: any, x2: any, y2: any): number;
|
|
10
10
|
}
|
|
@@ -5,24 +5,25 @@ export class HorizontalBarHighlighter extends BarHighlighter {
|
|
|
5
5
|
}
|
|
6
6
|
getHighlight(x, y) {
|
|
7
7
|
const pos = this.getValsForTouch(x, y);
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
return high;
|
|
8
|
+
const barData = this.mChart.barData;
|
|
9
|
+
return this.getHighlightForX(pos.y, y, x).map((h) => {
|
|
10
|
+
const set = barData.getDataSetByIndex(h.dataSetIndex);
|
|
11
|
+
if (set.stacked) {
|
|
12
|
+
return this.getStackedHighlight(h, set, x, y, pos.y, pos.x);
|
|
13
|
+
}
|
|
14
|
+
return h;
|
|
15
|
+
});
|
|
18
16
|
}
|
|
19
17
|
buildHighlights(set, dataSetIndex, xVal, rounding) {
|
|
20
18
|
const yKey = set.yProperty;
|
|
21
19
|
const highlights = [];
|
|
20
|
+
//noinspection unchecked
|
|
22
21
|
let entries = set.getEntriesAndIndexesForXValue(xVal);
|
|
23
22
|
if (entries.length === 0) {
|
|
23
|
+
// Try to find closest x-value and take all entries for that x-value
|
|
24
24
|
const closest = set.getEntryAndIndexForXValue(xVal, NaN, rounding);
|
|
25
|
-
if (closest
|
|
25
|
+
if (closest) {
|
|
26
|
+
//noinspection unchecked
|
|
26
27
|
entries = set.getEntriesAndIndexesForXValue(set.getEntryXValue(closest.entry, closest.index));
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -32,7 +33,7 @@ export class HorizontalBarHighlighter extends BarHighlighter {
|
|
|
32
33
|
for (const r of entries) {
|
|
33
34
|
const e = r.entry;
|
|
34
35
|
const xVal = set.getEntryXValue(e, r.index);
|
|
35
|
-
const pixels = this.mChart.getTransformer(set.
|
|
36
|
+
const pixels = this.mChart.getTransformer(set.axisDependency).getPixelForValues(e[yKey], xVal);
|
|
36
37
|
highlights.push({
|
|
37
38
|
entry: e,
|
|
38
39
|
entryIndex: r.index,
|
|
@@ -41,7 +42,7 @@ export class HorizontalBarHighlighter extends BarHighlighter {
|
|
|
41
42
|
xPx: pixels.x,
|
|
42
43
|
yPx: pixels.y,
|
|
43
44
|
dataSetIndex,
|
|
44
|
-
axis: set.
|
|
45
|
+
axis: set.axisDependency
|
|
45
46
|
});
|
|
46
47
|
}
|
|
47
48
|
return highlights;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HorizontalBarHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"HorizontalBarHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/HorizontalBarHighlighter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IACxD,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAEM,YAAY,CAAC,CAAS,EAAE,CAAS;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChD,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe,CAAC,GAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ;QACpE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;QAC3B,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,wBAAwB;QACxB,IAAI,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,oEAAoE;YACpE,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YACnE,IAAI,OAAO,EAAE,CAAC;gBACV,wBAAwB;gBACxB,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAClG,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAE/F,UAAU,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,CAAC,CAAC,KAAK;gBACnB,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,MAAM,CAAC,CAAC;gBACb,GAAG,EAAE,MAAM,CAAC,CAAC;gBACb,YAAY;gBACZ,IAAI,EAAE,GAAG,CAAC,cAAc;aAC3B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { Highlight } from './Highlight';
|
|
2
|
+
/**
|
|
3
|
+
* Created by philipp on 10/06/16.
|
|
4
|
+
*/
|
|
2
5
|
export interface IHighlighter {
|
|
3
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Returns a Highlight object corresponding to the given x- and y- touch positions in pixels.
|
|
8
|
+
*
|
|
9
|
+
* @param x
|
|
10
|
+
* @param y
|
|
11
|
+
* @return
|
|
12
|
+
*/
|
|
13
|
+
getHighlight(x: any, y: any): Highlight[];
|
|
4
14
|
getHighlightsAtXValue(xVal: any, x?: any, y?: any): Highlight[];
|
|
5
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"IHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/IHighlighter.ts"],"names":[],"mappings":""}
|
|
@@ -4,7 +4,7 @@ export class PieHighlighter extends PieRadarHighlighter {
|
|
|
4
4
|
super(chart);
|
|
5
5
|
}
|
|
6
6
|
getClosestHighlight(index, x, y) {
|
|
7
|
-
const set = this.mChart.
|
|
7
|
+
const set = this.mChart.data.getDataSet();
|
|
8
8
|
const entry = set.getEntryForIndex(index);
|
|
9
9
|
const yProperty = set.yProperty;
|
|
10
10
|
return {
|
|
@@ -14,7 +14,7 @@ export class PieHighlighter extends PieRadarHighlighter {
|
|
|
14
14
|
xPx: x,
|
|
15
15
|
yPx: y,
|
|
16
16
|
dataSetIndex: 0,
|
|
17
|
-
axis: set.
|
|
17
|
+
axis: set.axisDependency
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"PieHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/PieHighlighter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,OAAO,cAAe,SAAQ,mBAAmD;IACnF,YAAY,KAAe;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAES,mBAAmB,CAAC,KAAK,EAAE,CAAS,EAAE,CAAS;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAEhC,OAAO;YACH,KAAK;YACL,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;YACnB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,YAAY,EAAE,CAAC;YACf,IAAI,EAAE,GAAG,CAAC,cAAc;SAC3B,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -6,9 +6,20 @@ import { DataSet } from '../data/DataSet';
|
|
|
6
6
|
import { ChartData } from '../data/ChartData';
|
|
7
7
|
export declare abstract class PieRadarHighlighter<E extends Entry, D extends DataSet<E>, T extends PieRadarChartBase<E, DataSet<E>, ChartData<E, D>>> implements IHighlighter {
|
|
8
8
|
protected mChart: T;
|
|
9
|
+
/**
|
|
10
|
+
* buffer for storing previously highlighted values
|
|
11
|
+
*/
|
|
9
12
|
protected mHighlightBuffer: Highlight[];
|
|
10
13
|
constructor(chart: T);
|
|
11
14
|
getHighlightsAtXValue(xVal: any, x?: any, y?: any): Highlight[];
|
|
12
|
-
getHighlight(x: number, y: number): Highlight;
|
|
15
|
+
getHighlight(x: number, y: number): Highlight<Entry>[];
|
|
16
|
+
/**
|
|
17
|
+
* Returns the closest Highlight object of the given objects based on the touch position inside the chart.
|
|
18
|
+
*
|
|
19
|
+
* @param index
|
|
20
|
+
* @param x
|
|
21
|
+
* @param y
|
|
22
|
+
* @return
|
|
23
|
+
*/
|
|
13
24
|
protected abstract getClosestHighlight(index: any, x: number, y: number): Highlight;
|
|
14
25
|
}
|
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
export class PieRadarHighlighter {
|
|
2
2
|
constructor(chart) {
|
|
3
|
+
/**
|
|
4
|
+
* buffer for storing previously highlighted values
|
|
5
|
+
*/
|
|
3
6
|
this.mHighlightBuffer = [];
|
|
4
7
|
this.mChart = chart;
|
|
5
8
|
}
|
|
6
9
|
getHighlightsAtXValue(xVal, x, y) {
|
|
10
|
+
// not implemented
|
|
7
11
|
return null;
|
|
8
12
|
}
|
|
9
13
|
getHighlight(x, y) {
|
|
10
14
|
const touchDistanceToCenter = this.mChart.distanceToCenter(x, y);
|
|
11
|
-
if
|
|
15
|
+
// Check if a slice was touched
|
|
16
|
+
if (touchDistanceToCenter > this.mChart.radius) {
|
|
17
|
+
// if no slice was touched, highlight nothing
|
|
12
18
|
return null;
|
|
13
19
|
}
|
|
14
20
|
let angle = this.mChart.getAngleForPoint(x, y);
|
|
21
|
+
// detect PieChart while preventing circular dep
|
|
15
22
|
if (!this.mChart['mCircleBox']) {
|
|
16
|
-
angle /= this.mChart.
|
|
23
|
+
angle /= this.mChart.animator.phaseY;
|
|
17
24
|
}
|
|
18
25
|
const index = this.mChart.getIndexForAngle(angle);
|
|
19
|
-
|
|
26
|
+
// check if the index could be found
|
|
27
|
+
if (index < 0 || index >= this.mChart.data.maxEntryCountSet.entryCount) {
|
|
20
28
|
return null;
|
|
21
29
|
}
|
|
22
|
-
return this.getClosestHighlight(index, x, y);
|
|
30
|
+
return [this.getClosestHighlight(index, x, y)];
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
33
|
//# sourceMappingURL=PieRadarHighlighter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieRadarHighlighter.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"PieRadarHighlighter.js","sourceRoot":"","sources":["../../../src/ui-chart/highlight/PieRadarHighlighter.ts"],"names":[],"mappings":"AAOA,MAAM,OAAgB,mBAAmB;IAQrC,YAAY,KAAQ;QALpB;;WAEG;QACO,qBAAgB,GAAgB,EAAE,CAAC;QAGzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,qBAAqB,CAAC,IAAI,EAAE,CAAE,EAAE,CAAE;QAC9B,kBAAkB;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,CAAS,EAAE,CAAS;QACpC,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjE,+BAA+B;QAC/B,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7C,6CAA6C;YAC7C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/C,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAElD,oCAAoC;QACpC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;CAWJ"}
|