@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.
Files changed (135) hide show
  1. package/README.md +258 -0
  2. package/android/build.gradle +43 -0
  3. package/android/src/main/AndroidManifest.xml +4 -0
  4. package/android/src/main/java/com/github/wuxudong/rncharts/MPAndroidChartPackage.java +49 -0
  5. package/android/src/main/java/com/github/wuxudong/rncharts/charts/BarChartManager.java +46 -0
  6. package/android/src/main/java/com/github/wuxudong/rncharts/charts/BarLineChartBaseManager.java +415 -0
  7. package/android/src/main/java/com/github/wuxudong/rncharts/charts/BubbleChartManager.java +32 -0
  8. package/android/src/main/java/com/github/wuxudong/rncharts/charts/CandleStickChartManager.java +31 -0
  9. package/android/src/main/java/com/github/wuxudong/rncharts/charts/ChartBaseManager.java +605 -0
  10. package/android/src/main/java/com/github/wuxudong/rncharts/charts/ChartGroupHolder.java +80 -0
  11. package/android/src/main/java/com/github/wuxudong/rncharts/charts/CombinedChartManager.java +62 -0
  12. package/android/src/main/java/com/github/wuxudong/rncharts/charts/ConfigurableMinimumLinePositionFillFormatter.java +19 -0
  13. package/android/src/main/java/com/github/wuxudong/rncharts/charts/CustomFormatter.java +25 -0
  14. package/android/src/main/java/com/github/wuxudong/rncharts/charts/DateFormatter.java +34 -0
  15. package/android/src/main/java/com/github/wuxudong/rncharts/charts/HorizontalBarChartManager.java +23 -0
  16. package/android/src/main/java/com/github/wuxudong/rncharts/charts/IndexValueFormatter.java +102 -0
  17. package/android/src/main/java/com/github/wuxudong/rncharts/charts/LabelByXValueFormatter.java +25 -0
  18. package/android/src/main/java/com/github/wuxudong/rncharts/charts/LineChartManager.java +31 -0
  19. package/android/src/main/java/com/github/wuxudong/rncharts/charts/PieChartManager.java +147 -0
  20. package/android/src/main/java/com/github/wuxudong/rncharts/charts/RadarChartManager.java +118 -0
  21. package/android/src/main/java/com/github/wuxudong/rncharts/charts/ScatterChartManager.java +32 -0
  22. package/android/src/main/java/com/github/wuxudong/rncharts/charts/YAxisChartBase.java +51 -0
  23. package/android/src/main/java/com/github/wuxudong/rncharts/data/BarDataExtract.java +106 -0
  24. package/android/src/main/java/com/github/wuxudong/rncharts/data/BubbleDataExtract.java +74 -0
  25. package/android/src/main/java/com/github/wuxudong/rncharts/data/CandleDataExtract.java +102 -0
  26. package/android/src/main/java/com/github/wuxudong/rncharts/data/CombinedDataExtract.java +70 -0
  27. package/android/src/main/java/com/github/wuxudong/rncharts/data/DataExtract.java +77 -0
  28. package/android/src/main/java/com/github/wuxudong/rncharts/data/LineDataExtract.java +130 -0
  29. package/android/src/main/java/com/github/wuxudong/rncharts/data/PieDataExtract.java +101 -0
  30. package/android/src/main/java/com/github/wuxudong/rncharts/data/RadarDataExtract.java +58 -0
  31. package/android/src/main/java/com/github/wuxudong/rncharts/data/ScatterDataExtract.java +75 -0
  32. package/android/src/main/java/com/github/wuxudong/rncharts/listener/RNOnChartGestureListener.java +129 -0
  33. package/android/src/main/java/com/github/wuxudong/rncharts/listener/RNOnChartValueSelectedListener.java +52 -0
  34. package/android/src/main/java/com/github/wuxudong/rncharts/markers/RNCircleMarkerView.java +19 -0
  35. package/android/src/main/java/com/github/wuxudong/rncharts/markers/RNRectangleMarkerView.java +134 -0
  36. package/android/src/main/java/com/github/wuxudong/rncharts/utils/BridgeUtils.java +52 -0
  37. package/android/src/main/java/com/github/wuxudong/rncharts/utils/ChartDataSetConfigUtils.java +197 -0
  38. package/android/src/main/java/com/github/wuxudong/rncharts/utils/ConversionUtil.java +144 -0
  39. package/android/src/main/java/com/github/wuxudong/rncharts/utils/DrawableUtils.java +51 -0
  40. package/android/src/main/java/com/github/wuxudong/rncharts/utils/EasingFunctionHelper.java +128 -0
  41. package/android/src/main/java/com/github/wuxudong/rncharts/utils/EntryToWritableMapUtils.java +147 -0
  42. package/android/src/main/java/com/github/wuxudong/rncharts/utils/TypefaceUtils.java +47 -0
  43. package/android/src/main/res/drawable-nodpi/circle_marker.xml +8 -0
  44. package/android/src/main/res/drawable-nodpi/oval_marker.png +0 -0
  45. package/android/src/main/res/drawable-nodpi/rectangle_marker.9.png +0 -0
  46. package/android/src/main/res/drawable-nodpi/rectangle_marker_left.9.png +0 -0
  47. package/android/src/main/res/drawable-nodpi/rectangle_marker_right.9.png +0 -0
  48. package/android/src/main/res/drawable-nodpi/rectangle_marker_top.9.png +0 -0
  49. package/android/src/main/res/drawable-nodpi/rectangle_marker_top_left.9.png +0 -0
  50. package/android/src/main/res/drawable-nodpi/rectangle_marker_top_right.9.png +0 -0
  51. package/android/src/main/res/layout/circle_marker.xml +13 -0
  52. package/android/src/main/res/layout/oval_marker.xml +24 -0
  53. package/android/src/main/res/layout/rectangle_marker.xml +21 -0
  54. package/index.js +21 -0
  55. package/ios/ReactNativeCharts/BalloonMarker.swift +240 -0
  56. package/ios/ReactNativeCharts/ChartGroupHolder.swift +70 -0
  57. package/ios/ReactNativeCharts/CircleMarker.swift +108 -0
  58. package/ios/ReactNativeCharts/ConfigurableMinimumLinePositionFillFormatter.swift +19 -0
  59. package/ios/ReactNativeCharts/CustomChartDateFormatter.swift +64 -0
  60. package/ios/ReactNativeCharts/DataExtract.swift +80 -0
  61. package/ios/ReactNativeCharts/IndexValueFormatter.swift +49 -0
  62. package/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift +115 -0
  63. package/ios/ReactNativeCharts/RNBarLineChartManagerBridge.h +40 -0
  64. package/ios/ReactNativeCharts/RNBarLineChartViewBase.swift +294 -0
  65. package/ios/ReactNativeCharts/RNChartManagerBridge.h +36 -0
  66. package/ios/ReactNativeCharts/RNChartViewBase.swift +593 -0
  67. package/ios/ReactNativeCharts/RNCharts-Bridging-Header.h +9 -0
  68. package/ios/ReactNativeCharts/RNYAxisChartManagerBridge.h +17 -0
  69. package/ios/ReactNativeCharts/RNYAxisChartViewBase.swift +53 -0
  70. package/ios/ReactNativeCharts/ReactNativeCharts.xcodeproj/project.pbxproj +376 -0
  71. package/ios/ReactNativeCharts/bar/BarDataExtract.swift +89 -0
  72. package/ios/ReactNativeCharts/bar/RNBarChartManager.swift +53 -0
  73. package/ios/ReactNativeCharts/bar/RNBarChartManagerBridge.m +17 -0
  74. package/ios/ReactNativeCharts/bar/RNBarChartView.swift +41 -0
  75. package/ios/ReactNativeCharts/bar/RNBarChartViewBase.swift +27 -0
  76. package/ios/ReactNativeCharts/bar/RNHorizontalBarChartManager.swift +45 -0
  77. package/ios/ReactNativeCharts/bar/RNHorizontalBarChartManagerBridge.m +16 -0
  78. package/ios/ReactNativeCharts/bar/RNHorizontalBarChartView.swift +41 -0
  79. package/ios/ReactNativeCharts/bubble/BubbleDataExtract.swift +61 -0
  80. package/ios/ReactNativeCharts/bubble/RNBubbleChartManager.swift +53 -0
  81. package/ios/ReactNativeCharts/bubble/RNBubbleChartManagerBridge.m +15 -0
  82. package/ios/ReactNativeCharts/bubble/RNBubbleChartView.swift +39 -0
  83. package/ios/ReactNativeCharts/candlestick/CandleDataExtract.swift +101 -0
  84. package/ios/ReactNativeCharts/candlestick/RNCandleStickChartManager.swift +53 -0
  85. package/ios/ReactNativeCharts/candlestick/RNCandleStickChartManagerBridge.m +16 -0
  86. package/ios/ReactNativeCharts/candlestick/RNCandleStickChartView.swift +44 -0
  87. package/ios/ReactNativeCharts/combine/CombinedDataExtract.swift +81 -0
  88. package/ios/ReactNativeCharts/combine/RNCombinedChartManager.swift +53 -0
  89. package/ios/ReactNativeCharts/combine/RNCombinedChartManagerBridge.m +19 -0
  90. package/ios/ReactNativeCharts/combine/RNCombinedChartView.swift +61 -0
  91. package/ios/ReactNativeCharts/formatters/ChartDateFormatter.swift +38 -0
  92. package/ios/ReactNativeCharts/formatters/LabelByXValueFormatter.swift +35 -0
  93. package/ios/ReactNativeCharts/formatters/LargeValueFormatter.swift +72 -0
  94. package/ios/ReactNativeCharts/line/LineDataExtract.swift +178 -0
  95. package/ios/ReactNativeCharts/line/RNLineChartManager.swift +53 -0
  96. package/ios/ReactNativeCharts/line/RNLineChartManagerBridge.m +14 -0
  97. package/ios/ReactNativeCharts/line/RNLineChartView.swift +41 -0
  98. package/ios/ReactNativeCharts/pie/PieDataExtract.swift +97 -0
  99. package/ios/ReactNativeCharts/pie/RNPieChartManager.swift +19 -0
  100. package/ios/ReactNativeCharts/pie/RNPieChartManagerBridge.m +30 -0
  101. package/ios/ReactNativeCharts/pie/RNPieChartView.swift +192 -0
  102. package/ios/ReactNativeCharts/radar/RNRadarChartManager.swift +19 -0
  103. package/ios/ReactNativeCharts/radar/RNRadarChartManagerBridge.m +25 -0
  104. package/ios/ReactNativeCharts/radar/RNRadarChartView.swift +99 -0
  105. package/ios/ReactNativeCharts/radar/RadarDataExtract.swift +50 -0
  106. package/ios/ReactNativeCharts/scatter/RNScatterChartManager.swift +53 -0
  107. package/ios/ReactNativeCharts/scatter/RNScatterChartManagerBridge.m +15 -0
  108. package/ios/ReactNativeCharts/scatter/RNScatterChartView.swift +43 -0
  109. package/ios/ReactNativeCharts/scatter/ScatterDataExtract.swift +76 -0
  110. package/ios/ReactNativeCharts/utils/BridgeUtils.swift +333 -0
  111. package/ios/ReactNativeCharts/utils/ChartDataSetConfigUtils.swift +147 -0
  112. package/ios/ReactNativeCharts/utils/EntryToDictionaryUtils.swift +66 -0
  113. package/ios/ReactNativeCharts/utils/FontUtils.swift +29 -0
  114. package/ios/ReactNativeCharts/utils/HighlightUtils.swift +41 -0
  115. package/lib/AxisIface.js +102 -0
  116. package/lib/BarChart.js +43 -0
  117. package/lib/BarLineChartBase.js +86 -0
  118. package/lib/BubbleChart.js +40 -0
  119. package/lib/CandleStickChart.js +40 -0
  120. package/lib/ChartBase.js +131 -0
  121. package/lib/ChartDataConfig.js +263 -0
  122. package/lib/ChartDataSetConfig.js +80 -0
  123. package/lib/CombinedChart.js +43 -0
  124. package/lib/HighlightEnhancer.js +15 -0
  125. package/lib/HorizontalBarChart.js +43 -0
  126. package/lib/LineChart.js +39 -0
  127. package/lib/MoveEnhancer.js +49 -0
  128. package/lib/PieChart.js +64 -0
  129. package/lib/PieRadarChartBase.js +18 -0
  130. package/lib/RadarChart.js +52 -0
  131. package/lib/ScaleEnhancer.js +16 -0
  132. package/lib/ScatterChart.js +38 -0
  133. package/lib/ScrollEnhancer.js +15 -0
  134. package/package.json +40 -0
  135. 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
+ }