@urvish-procare/react-native-charts-wrapper 0.6.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 +258 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/MPAndroidChartPackage.java +49 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/BarChartManager.java +46 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/BarLineChartBaseManager.java +415 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/BubbleChartManager.java +32 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/CandleStickChartManager.java +31 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/ChartBaseManager.java +605 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/ChartGroupHolder.java +80 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/CombinedChartManager.java +62 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/ConfigurableMinimumLinePositionFillFormatter.java +19 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/CustomFormatter.java +25 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/DateFormatter.java +34 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/HorizontalBarChartManager.java +23 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/IndexValueFormatter.java +102 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/LabelByXValueFormatter.java +25 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/LineChartManager.java +31 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/PieChartManager.java +147 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/RadarChartManager.java +118 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/ScatterChartManager.java +32 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/charts/YAxisChartBase.java +51 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/BarDataExtract.java +106 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/BubbleDataExtract.java +74 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/CandleDataExtract.java +102 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/CombinedDataExtract.java +70 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/DataExtract.java +77 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/LineDataExtract.java +130 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/PieDataExtract.java +101 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/RadarDataExtract.java +58 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/data/ScatterDataExtract.java +75 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/listener/RNOnChartGestureListener.java +129 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/listener/RNOnChartValueSelectedListener.java +52 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/markers/RNCircleMarkerView.java +19 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/markers/RNRectangleMarkerView.java +134 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/BridgeUtils.java +52 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/ChartDataSetConfigUtils.java +197 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/ConversionUtil.java +144 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/DrawableUtils.java +51 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/EasingFunctionHelper.java +128 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/EntryToWritableMapUtils.java +147 -0
- package/android/src/main/java/com/github/wuxudong/rncharts/utils/TypefaceUtils.java +47 -0
- package/android/src/main/res/drawable-nodpi/circle_marker.xml +8 -0
- package/android/src/main/res/drawable-nodpi/oval_marker.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker.9.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker_left.9.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker_right.9.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker_top.9.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker_top_left.9.png +0 -0
- package/android/src/main/res/drawable-nodpi/rectangle_marker_top_right.9.png +0 -0
- package/android/src/main/res/layout/circle_marker.xml +13 -0
- package/android/src/main/res/layout/oval_marker.xml +24 -0
- package/android/src/main/res/layout/rectangle_marker.xml +21 -0
- package/index.js +21 -0
- package/ios/ReactNativeCharts/BalloonMarker.swift +240 -0
- package/ios/ReactNativeCharts/ChartGroupHolder.swift +70 -0
- package/ios/ReactNativeCharts/CircleMarker.swift +108 -0
- package/ios/ReactNativeCharts/ConfigurableMinimumLinePositionFillFormatter.swift +19 -0
- package/ios/ReactNativeCharts/CustomChartDateFormatter.swift +64 -0
- package/ios/ReactNativeCharts/DataExtract.swift +80 -0
- package/ios/ReactNativeCharts/IndexValueFormatter.swift +49 -0
- package/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift +115 -0
- package/ios/ReactNativeCharts/RNBarLineChartManagerBridge.h +40 -0
- package/ios/ReactNativeCharts/RNBarLineChartViewBase.swift +294 -0
- package/ios/ReactNativeCharts/RNChartManagerBridge.h +36 -0
- package/ios/ReactNativeCharts/RNChartViewBase.swift +593 -0
- package/ios/ReactNativeCharts/RNCharts-Bridging-Header.h +9 -0
- package/ios/ReactNativeCharts/RNYAxisChartManagerBridge.h +17 -0
- package/ios/ReactNativeCharts/RNYAxisChartViewBase.swift +53 -0
- package/ios/ReactNativeCharts/ReactNativeCharts.xcodeproj/project.pbxproj +376 -0
- package/ios/ReactNativeCharts/bar/BarDataExtract.swift +89 -0
- package/ios/ReactNativeCharts/bar/RNBarChartManager.swift +53 -0
- package/ios/ReactNativeCharts/bar/RNBarChartManagerBridge.m +17 -0
- package/ios/ReactNativeCharts/bar/RNBarChartView.swift +41 -0
- package/ios/ReactNativeCharts/bar/RNBarChartViewBase.swift +27 -0
- package/ios/ReactNativeCharts/bar/RNHorizontalBarChartManager.swift +45 -0
- package/ios/ReactNativeCharts/bar/RNHorizontalBarChartManagerBridge.m +16 -0
- package/ios/ReactNativeCharts/bar/RNHorizontalBarChartView.swift +41 -0
- package/ios/ReactNativeCharts/bubble/BubbleDataExtract.swift +61 -0
- package/ios/ReactNativeCharts/bubble/RNBubbleChartManager.swift +53 -0
- package/ios/ReactNativeCharts/bubble/RNBubbleChartManagerBridge.m +15 -0
- package/ios/ReactNativeCharts/bubble/RNBubbleChartView.swift +39 -0
- package/ios/ReactNativeCharts/candlestick/CandleDataExtract.swift +101 -0
- package/ios/ReactNativeCharts/candlestick/RNCandleStickChartManager.swift +53 -0
- package/ios/ReactNativeCharts/candlestick/RNCandleStickChartManagerBridge.m +16 -0
- package/ios/ReactNativeCharts/candlestick/RNCandleStickChartView.swift +44 -0
- package/ios/ReactNativeCharts/combine/CombinedDataExtract.swift +81 -0
- package/ios/ReactNativeCharts/combine/RNCombinedChartManager.swift +53 -0
- package/ios/ReactNativeCharts/combine/RNCombinedChartManagerBridge.m +19 -0
- package/ios/ReactNativeCharts/combine/RNCombinedChartView.swift +61 -0
- package/ios/ReactNativeCharts/formatters/ChartDateFormatter.swift +38 -0
- package/ios/ReactNativeCharts/formatters/LabelByXValueFormatter.swift +35 -0
- package/ios/ReactNativeCharts/formatters/LargeValueFormatter.swift +72 -0
- package/ios/ReactNativeCharts/line/LineDataExtract.swift +178 -0
- package/ios/ReactNativeCharts/line/RNLineChartManager.swift +53 -0
- package/ios/ReactNativeCharts/line/RNLineChartManagerBridge.m +14 -0
- package/ios/ReactNativeCharts/line/RNLineChartView.swift +41 -0
- package/ios/ReactNativeCharts/pie/PieDataExtract.swift +97 -0
- package/ios/ReactNativeCharts/pie/RNPieChartManager.swift +19 -0
- package/ios/ReactNativeCharts/pie/RNPieChartManagerBridge.m +30 -0
- package/ios/ReactNativeCharts/pie/RNPieChartView.swift +192 -0
- package/ios/ReactNativeCharts/radar/RNRadarChartManager.swift +19 -0
- package/ios/ReactNativeCharts/radar/RNRadarChartManagerBridge.m +25 -0
- package/ios/ReactNativeCharts/radar/RNRadarChartView.swift +99 -0
- package/ios/ReactNativeCharts/radar/RadarDataExtract.swift +50 -0
- package/ios/ReactNativeCharts/scatter/RNScatterChartManager.swift +53 -0
- package/ios/ReactNativeCharts/scatter/RNScatterChartManagerBridge.m +15 -0
- package/ios/ReactNativeCharts/scatter/RNScatterChartView.swift +43 -0
- package/ios/ReactNativeCharts/scatter/ScatterDataExtract.swift +76 -0
- package/ios/ReactNativeCharts/utils/BridgeUtils.swift +333 -0
- package/ios/ReactNativeCharts/utils/ChartDataSetConfigUtils.swift +147 -0
- package/ios/ReactNativeCharts/utils/EntryToDictionaryUtils.swift +66 -0
- package/ios/ReactNativeCharts/utils/FontUtils.swift +29 -0
- package/ios/ReactNativeCharts/utils/HighlightUtils.swift +41 -0
- package/lib/AxisIface.js +102 -0
- package/lib/BarChart.js +43 -0
- package/lib/BarLineChartBase.js +86 -0
- package/lib/BubbleChart.js +40 -0
- package/lib/CandleStickChart.js +40 -0
- package/lib/ChartBase.js +131 -0
- package/lib/ChartDataConfig.js +263 -0
- package/lib/ChartDataSetConfig.js +80 -0
- package/lib/CombinedChart.js +43 -0
- package/lib/HighlightEnhancer.js +15 -0
- package/lib/HorizontalBarChart.js +43 -0
- package/lib/LineChart.js +39 -0
- package/lib/MoveEnhancer.js +49 -0
- package/lib/PieChart.js +64 -0
- package/lib/PieRadarChartBase.js +18 -0
- package/lib/RadarChart.js +52 -0
- package/lib/ScaleEnhancer.js +16 -0
- package/lib/ScatterChart.js +38 -0
- package/lib/ScrollEnhancer.js +15 -0
- package/package.json +40 -0
- package/react-native-charts-wrapper.podspec +26 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.BarData;
|
|
8
|
+
import com.github.mikephil.charting.data.BarDataSet;
|
|
9
|
+
import com.github.mikephil.charting.data.BarEntry;
|
|
10
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
11
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
12
|
+
import com.github.wuxudong.rncharts.utils.ChartDataSetConfigUtils;
|
|
13
|
+
import com.github.wuxudong.rncharts.utils.ConversionUtil;
|
|
14
|
+
|
|
15
|
+
import java.util.ArrayList;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Created by xudong on 02/03/2017.
|
|
19
|
+
*/
|
|
20
|
+
public class BarDataExtract extends DataExtract<BarData, BarEntry> {
|
|
21
|
+
@Override
|
|
22
|
+
BarData createData() {
|
|
23
|
+
return new BarData();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@Override
|
|
27
|
+
IDataSet<BarEntry> createDataSet(ArrayList<BarEntry> entries, String label) {
|
|
28
|
+
return new BarDataSet(entries, label);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
BarEntry createEntry(ReadableArray values, int index) {
|
|
33
|
+
BarEntry entry;
|
|
34
|
+
|
|
35
|
+
float x = index;
|
|
36
|
+
if (ReadableType.Map.equals(values.getType(index))) {
|
|
37
|
+
ReadableMap map = values.getMap(index);
|
|
38
|
+
|
|
39
|
+
if (map.hasKey("x")) {
|
|
40
|
+
x = (float) map.getDouble("x");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (ReadableType.Array.equals(map.getType("y"))) {
|
|
44
|
+
entry = new BarEntry(x, BridgeUtils.convertToFloatArray(map.getArray("y")));
|
|
45
|
+
} else if (ReadableType.Number.equals(map.getType("y"))) {
|
|
46
|
+
entry = new BarEntry(x, (float) map.getDouble("y"));
|
|
47
|
+
} else {
|
|
48
|
+
throw new IllegalArgumentException("Unexpected entry type: " + values.getType(index));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
entry.setData(ConversionUtil.toMap(map));
|
|
52
|
+
|
|
53
|
+
} else if (ReadableType.Array.equals(values.getType(index))) {
|
|
54
|
+
entry = new BarEntry(x, BridgeUtils.convertToFloatArray(values.getArray(index)));
|
|
55
|
+
} else if (ReadableType.Number.equals(values.getType(index))) {
|
|
56
|
+
entry = new BarEntry(x, (float) values.getDouble(index));
|
|
57
|
+
} else {
|
|
58
|
+
throw new IllegalArgumentException("Unexpected entry type: " + values.getType(index));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return entry;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@Override
|
|
65
|
+
void dataSetConfig(Chart chart, IDataSet<BarEntry> dataSet, ReadableMap config) {
|
|
66
|
+
BarDataSet barDataSet = (BarDataSet) dataSet;
|
|
67
|
+
|
|
68
|
+
ChartDataSetConfigUtils.commonConfig(chart, barDataSet, config);
|
|
69
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(barDataSet, config);
|
|
70
|
+
|
|
71
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "barShadowColor")) {
|
|
72
|
+
barDataSet.setBarShadowColor(config.getInt("barShadowColor"));
|
|
73
|
+
}
|
|
74
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "highlightAlpha")) {
|
|
75
|
+
barDataSet.setHighLightAlpha(config.getInt("highlightAlpha"));
|
|
76
|
+
}
|
|
77
|
+
if (BridgeUtils.validate(config, ReadableType.Array, "stackLabels")) {
|
|
78
|
+
barDataSet.setStackLabels(BridgeUtils.convertToStringArray(config.getArray("stackLabels")));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@Override
|
|
83
|
+
void dataConfig(BarData data, ReadableMap config) {
|
|
84
|
+
super.dataConfig(data, config);
|
|
85
|
+
|
|
86
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "barWidth")) {
|
|
87
|
+
data.setBarWidth((float) config.getDouble("barWidth"));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (BridgeUtils.validate(config, ReadableType.Map, "group")) {
|
|
91
|
+
ReadableMap propMap = config.getMap("group");
|
|
92
|
+
if (BridgeUtils.validate(propMap, ReadableType.Number, "fromX") &&
|
|
93
|
+
BridgeUtils.validate(propMap, ReadableType.Number, "groupSpace") &&
|
|
94
|
+
BridgeUtils.validate(propMap, ReadableType.Number, "barSpace")
|
|
95
|
+
) {
|
|
96
|
+
float fromX = (float) propMap.getDouble("fromX");
|
|
97
|
+
float groupSpace = (float) propMap.getDouble("groupSpace");
|
|
98
|
+
float barSpace = (float) propMap.getDouble("barSpace");
|
|
99
|
+
|
|
100
|
+
data.groupBars(fromX, groupSpace, barSpace);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.BubbleData;
|
|
8
|
+
import com.github.mikephil.charting.data.BubbleDataSet;
|
|
9
|
+
import com.github.mikephil.charting.data.BubbleEntry;
|
|
10
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
11
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
12
|
+
import com.github.wuxudong.rncharts.utils.ChartDataSetConfigUtils;
|
|
13
|
+
import com.github.wuxudong.rncharts.utils.ConversionUtil;
|
|
14
|
+
|
|
15
|
+
import java.util.ArrayList;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Created by xudong on 02/03/2017.
|
|
19
|
+
*/
|
|
20
|
+
public class BubbleDataExtract extends DataExtract<BubbleData, BubbleEntry> {
|
|
21
|
+
@Override
|
|
22
|
+
BubbleData createData() {
|
|
23
|
+
return new BubbleData();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@Override
|
|
28
|
+
IDataSet<BubbleEntry> createDataSet(ArrayList<BubbleEntry> entries, String label) {
|
|
29
|
+
return new BubbleDataSet(entries, label);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
void dataSetConfig(Chart chart, IDataSet<BubbleEntry> dataSet, ReadableMap config) {
|
|
34
|
+
BubbleDataSet bubbleDataSet = (BubbleDataSet) dataSet;
|
|
35
|
+
|
|
36
|
+
ChartDataSetConfigUtils.commonConfig(chart, bubbleDataSet, config);
|
|
37
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(bubbleDataSet, config);
|
|
38
|
+
|
|
39
|
+
// BubbleDataSet only config
|
|
40
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "highlightCircleWidth")) {
|
|
41
|
+
bubbleDataSet.setHighlightCircleWidth((float) config.getDouble("highlightCircleWidth"));
|
|
42
|
+
}
|
|
43
|
+
if (BridgeUtils.validate(config, ReadableType.Boolean, "normalizeSizeEnabled")) {
|
|
44
|
+
bubbleDataSet.setNormalizeSizeEnabled(config.getBoolean("normalizeSizeEnabled"));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Override
|
|
49
|
+
BubbleEntry createEntry(ReadableArray values, int index) {
|
|
50
|
+
if (!ReadableType.Map.equals(values.getType(index))) {
|
|
51
|
+
throw new IllegalArgumentException("Invalid BubbleEntry data");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
ReadableMap map = values.getMap(index);
|
|
55
|
+
|
|
56
|
+
float x = index;
|
|
57
|
+
if (map.hasKey("x")) {
|
|
58
|
+
x = (float) map.getDouble("x");
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (!BridgeUtils.validate(map, ReadableType.Number, "y") ||
|
|
62
|
+
!BridgeUtils.validate(map, ReadableType.Number, "size")) {
|
|
63
|
+
throw new IllegalArgumentException("Invalid BubbleEntry data");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
float y = (float) map.getDouble("y");
|
|
68
|
+
float size = (float) map.getDouble("size");
|
|
69
|
+
|
|
70
|
+
BubbleEntry bubbleEntry = new BubbleEntry(x, y, size, ConversionUtil.toMap(map));
|
|
71
|
+
|
|
72
|
+
return bubbleEntry;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import android.graphics.Paint;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
6
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
7
|
+
import com.facebook.react.bridge.ReadableType;
|
|
8
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
9
|
+
import com.github.mikephil.charting.data.CandleData;
|
|
10
|
+
import com.github.mikephil.charting.data.CandleDataSet;
|
|
11
|
+
import com.github.mikephil.charting.data.CandleEntry;
|
|
12
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
13
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
14
|
+
import com.github.wuxudong.rncharts.utils.ChartDataSetConfigUtils;
|
|
15
|
+
import com.github.wuxudong.rncharts.utils.ConversionUtil;
|
|
16
|
+
|
|
17
|
+
import java.util.ArrayList;
|
|
18
|
+
import java.util.Locale;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Created by xudong on 02/03/2017.
|
|
22
|
+
*/
|
|
23
|
+
public class CandleDataExtract extends DataExtract<CandleData, CandleEntry> {
|
|
24
|
+
@Override
|
|
25
|
+
CandleData createData() {
|
|
26
|
+
return new CandleData();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@Override
|
|
30
|
+
IDataSet<CandleEntry> createDataSet(ArrayList<CandleEntry> entries, String label) {
|
|
31
|
+
return new CandleDataSet(entries, label);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@Override
|
|
35
|
+
void dataSetConfig(Chart chart, IDataSet<CandleEntry> dataSet, ReadableMap config) {
|
|
36
|
+
CandleDataSet candleDataSet = (CandleDataSet) dataSet;
|
|
37
|
+
|
|
38
|
+
ChartDataSetConfigUtils.commonConfig(chart, candleDataSet, config);
|
|
39
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(candleDataSet, config);
|
|
40
|
+
ChartDataSetConfigUtils.commonLineScatterCandleRadarConfig(candleDataSet, config);
|
|
41
|
+
|
|
42
|
+
// CandleDataSet only config
|
|
43
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "barSpace")) {
|
|
44
|
+
candleDataSet.setBarSpace((float) config.getDouble("barSpace"));
|
|
45
|
+
}
|
|
46
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "shadowWidth")) {
|
|
47
|
+
candleDataSet.setShadowWidth((float) config.getDouble("shadowWidth"));
|
|
48
|
+
}
|
|
49
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "shadowColor")) {
|
|
50
|
+
candleDataSet.setShadowColor(config.getInt("shadowColor"));
|
|
51
|
+
}
|
|
52
|
+
if (BridgeUtils.validate(config, ReadableType.Boolean, "shadowColorSameAsCandle")) {
|
|
53
|
+
candleDataSet.setShadowColorSameAsCandle(config.getBoolean("shadowColorSameAsCandle"));
|
|
54
|
+
}
|
|
55
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "neutralColor")) {
|
|
56
|
+
candleDataSet.setNeutralColor(config.getInt("neutralColor"));
|
|
57
|
+
}
|
|
58
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "decreasingColor")) {
|
|
59
|
+
candleDataSet.setDecreasingColor(config.getInt("decreasingColor"));
|
|
60
|
+
}
|
|
61
|
+
if (BridgeUtils.validate(config, ReadableType.String, "decreasingPaintStyle")) {
|
|
62
|
+
candleDataSet.setDecreasingPaintStyle(Paint.Style.valueOf(config.getString("decreasingPaintStyle").toUpperCase(Locale.ENGLISH)));
|
|
63
|
+
}
|
|
64
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "increasingColor")) {
|
|
65
|
+
candleDataSet.setIncreasingColor(config.getInt("increasingColor"));
|
|
66
|
+
}
|
|
67
|
+
if (BridgeUtils.validate(config, ReadableType.String, "increasingPaintStyle")) {
|
|
68
|
+
candleDataSet.setIncreasingPaintStyle(Paint.Style.valueOf(config.getString("increasingPaintStyle").toUpperCase(Locale.ENGLISH)));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@Override
|
|
73
|
+
CandleEntry createEntry(ReadableArray values, int index) {
|
|
74
|
+
if (!ReadableType.Map.equals(values.getType(index))) {
|
|
75
|
+
throw new IllegalArgumentException();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
ReadableMap map = values.getMap(index);
|
|
79
|
+
|
|
80
|
+
float x = index;
|
|
81
|
+
if (map.hasKey("x")) {
|
|
82
|
+
x = (float) map.getDouble("x");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (
|
|
86
|
+
!BridgeUtils.validate(map, ReadableType.Number, "shadowH") ||
|
|
87
|
+
!BridgeUtils.validate(map, ReadableType.Number, "shadowL") ||
|
|
88
|
+
!BridgeUtils.validate(map, ReadableType.Number, "open") ||
|
|
89
|
+
!BridgeUtils.validate(map, ReadableType.Number, "close")) {
|
|
90
|
+
throw new IllegalArgumentException("CandleStick data must contain: shadowH, shadowL, open and close values");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
float shadowH = (float) map.getDouble("shadowH");
|
|
94
|
+
float shadowL = (float) map.getDouble("shadowL");
|
|
95
|
+
float open = (float) map.getDouble("open");
|
|
96
|
+
float close = (float) map.getDouble("close");
|
|
97
|
+
|
|
98
|
+
CandleEntry candleEntry = new CandleEntry(x, shadowH, shadowL, open, close, ConversionUtil.toMap(map));
|
|
99
|
+
|
|
100
|
+
return candleEntry;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.CombinedData;
|
|
8
|
+
import com.github.mikephil.charting.data.Entry;
|
|
9
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
10
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
11
|
+
|
|
12
|
+
import java.util.ArrayList;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Created by xudong on 02/03/2017.
|
|
16
|
+
*/
|
|
17
|
+
public class CombinedDataExtract extends DataExtract<CombinedData, Entry> {
|
|
18
|
+
private LineDataExtract lineDataExtract = new LineDataExtract();
|
|
19
|
+
private BarDataExtract barDataExtract = new BarDataExtract();
|
|
20
|
+
private ScatterDataExtract scatterDataExtract = new ScatterDataExtract();
|
|
21
|
+
private CandleDataExtract candleDataExtract = new CandleDataExtract();
|
|
22
|
+
private BubbleDataExtract bubbleDataExtract = new BubbleDataExtract();
|
|
23
|
+
|
|
24
|
+
@Override
|
|
25
|
+
public CombinedData extract(Chart chart, ReadableMap propMap) {
|
|
26
|
+
CombinedData chartData = new CombinedData();
|
|
27
|
+
|
|
28
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "lineData")) {
|
|
29
|
+
chartData.setData(lineDataExtract.extract(chart, propMap.getMap("lineData")));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "barData")) {
|
|
33
|
+
chartData.setData(barDataExtract.extract(chart, propMap.getMap("barData")));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "scatterData")) {
|
|
37
|
+
chartData.setData(scatterDataExtract.extract(chart, propMap.getMap("scatterData")));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "candleData")) {
|
|
41
|
+
chartData.setData(candleDataExtract.extract(chart, propMap.getMap("candleData")));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "bubbleData")) {
|
|
45
|
+
chartData.setData(bubbleDataExtract.extract(chart, propMap.getMap("bubbleData")));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return chartData;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
CombinedData createData() {
|
|
53
|
+
throw new UnsupportedOperationException();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@Override
|
|
57
|
+
IDataSet<Entry> createDataSet(ArrayList<Entry> entries, String label) {
|
|
58
|
+
throw new UnsupportedOperationException();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@Override
|
|
62
|
+
void dataSetConfig(Chart chart, IDataSet<Entry> dataSet, ReadableMap config) {
|
|
63
|
+
throw new UnsupportedOperationException();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@Override
|
|
67
|
+
Entry createEntry(ReadableArray values, int index) {
|
|
68
|
+
throw new UnsupportedOperationException();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.ChartData;
|
|
8
|
+
import com.github.mikephil.charting.data.Entry;
|
|
9
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
10
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
11
|
+
|
|
12
|
+
import java.util.ArrayList;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Created by xudong on 02/03/2017.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
public abstract class DataExtract<D extends ChartData, U extends Entry> {
|
|
19
|
+
|
|
20
|
+
public D extract(Chart chart, ReadableMap propMap) {
|
|
21
|
+
if (!BridgeUtils.validate(propMap, ReadableType.Array, "dataSets")) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
D chartData = createData();
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
ReadableArray dataSets = propMap.getArray("dataSets");
|
|
29
|
+
for (int i = 0; i < dataSets.size(); i++) {
|
|
30
|
+
ReadableMap dataSetReadableMap = dataSets.getMap(i);
|
|
31
|
+
|
|
32
|
+
// TODO validation
|
|
33
|
+
ReadableArray values = dataSetReadableMap.getArray("values");
|
|
34
|
+
String label = dataSetReadableMap.getString("label");
|
|
35
|
+
|
|
36
|
+
ArrayList<U> entries = createEntries(values);
|
|
37
|
+
|
|
38
|
+
IDataSet<U> dataSet = createDataSet(entries, label);
|
|
39
|
+
|
|
40
|
+
if (BridgeUtils.validate(dataSetReadableMap, ReadableType.Map, "config")) {
|
|
41
|
+
dataSetConfig(chart, dataSet, dataSetReadableMap.getMap("config"));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
chartData.addDataSet(dataSet);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (BridgeUtils.validate(propMap, ReadableType.Map, "config")) {
|
|
48
|
+
dataConfig(chartData, propMap.getMap("config"));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
return chartData;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
abstract D createData();
|
|
56
|
+
|
|
57
|
+
void dataConfig(D data, ReadableMap config) {
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
abstract IDataSet<U> createDataSet(ArrayList<U> entries, String label);
|
|
61
|
+
|
|
62
|
+
abstract void dataSetConfig(Chart chart, IDataSet<U> dataSet, ReadableMap config);
|
|
63
|
+
|
|
64
|
+
ArrayList<U> createEntries(ReadableArray yValues) {
|
|
65
|
+
ArrayList<U> entries = new ArrayList<>(yValues.size());
|
|
66
|
+
for (int j = 0; j < yValues.size(); j++) {
|
|
67
|
+
if (!yValues.isNull(j)) {
|
|
68
|
+
entries.add(createEntry(yValues, j));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return entries;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
abstract U createEntry(ReadableArray values, int index);
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.Entry;
|
|
8
|
+
import com.github.mikephil.charting.data.LineData;
|
|
9
|
+
import com.github.mikephil.charting.data.LineDataSet;
|
|
10
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
11
|
+
import com.github.wuxudong.rncharts.charts.ConfigurableMinimumLinePositionFillFormatter;
|
|
12
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
13
|
+
import com.github.wuxudong.rncharts.utils.ChartDataSetConfigUtils;
|
|
14
|
+
import com.github.wuxudong.rncharts.utils.ConversionUtil;
|
|
15
|
+
import com.github.wuxudong.rncharts.utils.DrawableUtils;
|
|
16
|
+
|
|
17
|
+
import java.lang.Exception;
|
|
18
|
+
import java.util.ArrayList;
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Created by xudong on 02/03/2017.
|
|
23
|
+
*/
|
|
24
|
+
public class LineDataExtract extends DataExtract<LineData, Entry> {
|
|
25
|
+
@Override
|
|
26
|
+
LineData createData() {
|
|
27
|
+
return new LineData();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
IDataSet<Entry> createDataSet(ArrayList<Entry> entries, String label) {
|
|
33
|
+
return new LineDataSet(entries, label);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@Override
|
|
37
|
+
void dataSetConfig(Chart chart, IDataSet<Entry> dataSet, ReadableMap config) {
|
|
38
|
+
LineDataSet lineDataSet = (LineDataSet) dataSet;
|
|
39
|
+
|
|
40
|
+
ChartDataSetConfigUtils.commonConfig(chart, lineDataSet, config);
|
|
41
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(lineDataSet, config);
|
|
42
|
+
ChartDataSetConfigUtils.commonLineScatterCandleRadarConfig(lineDataSet, config);
|
|
43
|
+
ChartDataSetConfigUtils.commonLineRadarConfig(lineDataSet, config);
|
|
44
|
+
|
|
45
|
+
// LineDataSet only config
|
|
46
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "circleRadius")) {
|
|
47
|
+
lineDataSet.setCircleRadius((float) config.getDouble("circleRadius"));
|
|
48
|
+
}
|
|
49
|
+
if (BridgeUtils.validate(config, ReadableType.Boolean, "drawCircles")) {
|
|
50
|
+
lineDataSet.setDrawCircles(config.getBoolean("drawCircles"));
|
|
51
|
+
}
|
|
52
|
+
if (BridgeUtils.validate(config, ReadableType.String, "mode")) {
|
|
53
|
+
lineDataSet.setMode(LineDataSet.Mode.valueOf(config.getString("mode")));
|
|
54
|
+
}
|
|
55
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "drawCubicIntensity")) {
|
|
56
|
+
lineDataSet.setCubicIntensity((float) config.getDouble("drawCubicIntensity"));
|
|
57
|
+
}
|
|
58
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "circleColor")) {
|
|
59
|
+
lineDataSet.setCircleColor(config.getInt("circleColor"));
|
|
60
|
+
}
|
|
61
|
+
if (BridgeUtils.validate(config, ReadableType.Array, "circleColors")) {
|
|
62
|
+
lineDataSet.setCircleColors(BridgeUtils.convertToIntArray(config.getArray("circleColors")));
|
|
63
|
+
}
|
|
64
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "circleHoleColor")) {
|
|
65
|
+
lineDataSet.setCircleHoleColor(config.getInt("circleHoleColor"));
|
|
66
|
+
}
|
|
67
|
+
if (BridgeUtils.validate(config, ReadableType.Boolean, "drawCircleHole")) {
|
|
68
|
+
lineDataSet.setDrawCircleHole(config.getBoolean("drawCircleHole"));
|
|
69
|
+
}
|
|
70
|
+
if (BridgeUtils.validate(config, ReadableType.Map, "dashedLine")) {
|
|
71
|
+
ReadableMap dashedLine = config.getMap("dashedLine");
|
|
72
|
+
float lineLength = 0;
|
|
73
|
+
float spaceLength = 0;
|
|
74
|
+
float phase = 0;
|
|
75
|
+
|
|
76
|
+
if (BridgeUtils.validate(dashedLine, ReadableType.Number, "lineLength")) {
|
|
77
|
+
lineLength = (float) dashedLine.getDouble("lineLength");
|
|
78
|
+
}
|
|
79
|
+
if (BridgeUtils.validate(dashedLine, ReadableType.Number, "spaceLength")) {
|
|
80
|
+
spaceLength = (float) dashedLine.getDouble("spaceLength");
|
|
81
|
+
}
|
|
82
|
+
if (BridgeUtils.validate(dashedLine, ReadableType.Number, "phase")) {
|
|
83
|
+
phase = (float) dashedLine.getDouble("phase");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
lineDataSet.enableDashedLine(lineLength, spaceLength, phase);
|
|
87
|
+
}
|
|
88
|
+
if (BridgeUtils.validate(config, ReadableType.Map, "fillFormatter")) {
|
|
89
|
+
ReadableMap fillFormatter = config.getMap("fillFormatter");
|
|
90
|
+
float min = 0F;
|
|
91
|
+
|
|
92
|
+
if (BridgeUtils.validate(fillFormatter, ReadableType.Number, "min")) {
|
|
93
|
+
min = (float) fillFormatter.getDouble("min");
|
|
94
|
+
}
|
|
95
|
+
lineDataSet.setFillFormatter(new ConfigurableMinimumLinePositionFillFormatter(min));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@Override
|
|
100
|
+
Entry createEntry(ReadableArray values, int index) {
|
|
101
|
+
float x = index;
|
|
102
|
+
|
|
103
|
+
Entry entry;
|
|
104
|
+
if (ReadableType.Map.equals(values.getType(index))) {
|
|
105
|
+
ReadableMap map = values.getMap(index);
|
|
106
|
+
if (map.hasKey("x")) {
|
|
107
|
+
x = (float) map.getDouble("x");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (map.hasKey("icon")) {
|
|
111
|
+
ReadableMap icon = map.getMap("icon");
|
|
112
|
+
ReadableMap bundle = icon.getMap("bundle");
|
|
113
|
+
int width = icon.getInt("width");
|
|
114
|
+
int height = icon.getInt("height");
|
|
115
|
+
entry = new Entry(x, (float) map.getDouble("y"), DrawableUtils.drawableFromUrl(bundle.getString("uri"), width, height));
|
|
116
|
+
|
|
117
|
+
} else {
|
|
118
|
+
entry = new Entry(x, (float) map.getDouble("y"), ConversionUtil.toMap(map));
|
|
119
|
+
}
|
|
120
|
+
} else if (ReadableType.Number.equals(values.getType(index))) {
|
|
121
|
+
entry = new Entry(x, (float) values.getDouble(index));
|
|
122
|
+
} else {
|
|
123
|
+
throw new IllegalArgumentException("Unexpected entry type: " + values.getType(index));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return entry;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
package com.github.wuxudong.rncharts.data;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
+
import com.facebook.react.bridge.ReadableType;
|
|
6
|
+
import com.github.mikephil.charting.charts.Chart;
|
|
7
|
+
import com.github.mikephil.charting.data.PieData;
|
|
8
|
+
import com.github.mikephil.charting.data.PieDataSet;
|
|
9
|
+
import com.github.mikephil.charting.data.PieEntry;
|
|
10
|
+
import com.github.mikephil.charting.interfaces.datasets.IDataSet;
|
|
11
|
+
import com.github.wuxudong.rncharts.utils.BridgeUtils;
|
|
12
|
+
import com.github.wuxudong.rncharts.utils.ChartDataSetConfigUtils;
|
|
13
|
+
import com.github.wuxudong.rncharts.utils.ConversionUtil;
|
|
14
|
+
|
|
15
|
+
import java.util.ArrayList;
|
|
16
|
+
import java.util.Locale;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Created by xudong on 02/03/2017.
|
|
20
|
+
*/
|
|
21
|
+
public class PieDataExtract extends DataExtract<PieData, PieEntry> {
|
|
22
|
+
@Override
|
|
23
|
+
PieData createData() {
|
|
24
|
+
return new PieData();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Override
|
|
28
|
+
IDataSet<PieEntry> createDataSet(ArrayList<PieEntry> entries, String label) {
|
|
29
|
+
return new PieDataSet(entries, label);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
void dataSetConfig(Chart chart, IDataSet<PieEntry> dataSet, ReadableMap config) {
|
|
34
|
+
PieDataSet pieDataSet = (PieDataSet) dataSet;
|
|
35
|
+
|
|
36
|
+
ChartDataSetConfigUtils.commonConfig(chart, pieDataSet, config);
|
|
37
|
+
|
|
38
|
+
// PieDataSet only config
|
|
39
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "sliceSpace")) {
|
|
40
|
+
pieDataSet.setSliceSpace((float) config.getDouble("sliceSpace"));
|
|
41
|
+
}
|
|
42
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "selectionShift")) {
|
|
43
|
+
pieDataSet.setSelectionShift((float) config.getDouble("selectionShift"));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (BridgeUtils.validate(config, ReadableType.String, "xValuePosition")) {
|
|
47
|
+
pieDataSet.setXValuePosition(PieDataSet.ValuePosition.valueOf(config.getString("xValuePosition").toUpperCase(Locale.ENGLISH)));
|
|
48
|
+
}
|
|
49
|
+
if (BridgeUtils.validate(config, ReadableType.String, "yValuePosition")) {
|
|
50
|
+
pieDataSet.setYValuePosition(PieDataSet.ValuePosition.valueOf(config.getString("yValuePosition").toUpperCase(Locale.ENGLISH)));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "valueLinePart1Length")) {
|
|
54
|
+
pieDataSet.setValueLinePart1Length((float) config.getDouble("valueLinePart1Length"));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "valueLinePart2Length")) {
|
|
58
|
+
pieDataSet.setValueLinePart2Length((float) config.getDouble("valueLinePart2Length"));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "valueLineColor")) {
|
|
62
|
+
pieDataSet.setValueLineColor(config.getInt("valueLineColor"));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "valueLineWidth")) {
|
|
66
|
+
pieDataSet.setValueLineWidth((float) config.getDouble("valueLineWidth"));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (BridgeUtils.validate(config, ReadableType.Number, "valueLinePart1OffsetPercentage")) {
|
|
70
|
+
pieDataSet.setValueLinePart1OffsetPercentage((float) config.getDouble("valueLinePart1OffsetPercentage"));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (BridgeUtils.validate(config, ReadableType.Boolean, "valueLineVariableLength")) {
|
|
74
|
+
pieDataSet.setValueLineVariableLength(config.getBoolean("valueLineVariableLength"));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Override
|
|
80
|
+
PieEntry createEntry(ReadableArray values, int index) {
|
|
81
|
+
PieEntry entry;
|
|
82
|
+
|
|
83
|
+
if (ReadableType.Map.equals(values.getType(index))) {
|
|
84
|
+
ReadableMap map = values.getMap(index);
|
|
85
|
+
|
|
86
|
+
float value = (float) map.getDouble("value");
|
|
87
|
+
if (BridgeUtils.validate(map, ReadableType.String, "label")) {
|
|
88
|
+
entry = new PieEntry(value, map.getString("label"), ConversionUtil.toMap(map));
|
|
89
|
+
} else {
|
|
90
|
+
entry = new PieEntry(value, ConversionUtil.toMap(map));
|
|
91
|
+
}
|
|
92
|
+
} else if (ReadableType.Number.equals(values.getType(index))) {
|
|
93
|
+
entry = new PieEntry((float) values.getDouble(index));
|
|
94
|
+
} else {
|
|
95
|
+
throw new IllegalArgumentException("Unexpected entry type: " + values.getType(index));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return entry;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
}
|