@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,102 @@
1
+ import PropTypes from 'prop-types';
2
+
3
+ export const axisIface = {
4
+ // what is drawn
5
+ enabled: PropTypes.bool,
6
+ drawLabels: PropTypes.bool,
7
+ drawAxisLine: PropTypes.bool,
8
+ drawGridLines: PropTypes.bool,
9
+
10
+ // style
11
+ textColor: PropTypes.number,
12
+ textSize: PropTypes.number,
13
+ fontFamily: PropTypes.string,
14
+ fontStyle: PropTypes.string,
15
+ fontWeight: PropTypes.string,
16
+ gridColor: PropTypes.number,
17
+ gridLineWidth: PropTypes.number,
18
+ axisLineColor: PropTypes.number,
19
+ axisLineWidth: PropTypes.number,
20
+ gridDashedLine: PropTypes.shape({
21
+ lineLength: PropTypes.number,
22
+ spaceLength: PropTypes.number,
23
+ phase: PropTypes.number
24
+ }),
25
+
26
+ // limit lines
27
+ limitLines: PropTypes.arrayOf(
28
+ PropTypes.shape({
29
+ limit: PropTypes.number.isRequired,
30
+ label: PropTypes.string,
31
+ lineColor: PropTypes.number,
32
+ lineWidth: PropTypes.number,
33
+ valueTextColor: PropTypes.number,
34
+ valueFont: PropTypes.number,
35
+ fontFamily: PropTypes.string,
36
+ fontStyle: PropTypes.string,
37
+ fontWeight: PropTypes.string,
38
+ labelPosition: PropTypes.oneOf(['LEFT_TOP', 'LEFT_BOTTOM', 'RIGHT_TOP', 'RIGHT_BOTTOM']),
39
+ lineDashPhase: PropTypes.number,
40
+ lineDashLengths: PropTypes.arrayOf(PropTypes.number)
41
+ })
42
+ ),
43
+ drawLimitLinesBehindData: PropTypes.bool,
44
+
45
+ axisMaximum: PropTypes.number,
46
+ axisMinimum: PropTypes.number,
47
+ granularity: PropTypes.number,
48
+ granularityEnabled: PropTypes.bool,
49
+
50
+ labelCount: PropTypes.number,
51
+ labelCountForce: PropTypes.bool,
52
+
53
+ centerAxisLabels: PropTypes.bool, // Centers the axis labels instead of drawing them at their original position. This is useful especially for grouped BarChart.
54
+
55
+ // formatting
56
+ valueFormatter: PropTypes.oneOfType([
57
+ PropTypes.oneOf(['largeValue', 'percent', 'date']),
58
+ PropTypes.string,
59
+ PropTypes.arrayOf(PropTypes.string)
60
+ ]),
61
+
62
+ // valueFormatterPattern, since, timeUnit are used when valueFormatter is 'date'
63
+ // since: milliseconds of 2018-6-1, timeUnit: DAYS, x:9, valueFormatterPattern: YYYY-MM-dd
64
+ // will display 2018-6-10
65
+
66
+ // Note: for iOS/Charts, double is used for x, but in MpAndroidChart, float is used for x.
67
+ // so in android, there will be precision loss when you use MILLISECONDS/SECOND/MINUTES as x value.
68
+ // you can use a different since like seconds of 2019 or use timeUnit DAYS, then x value will be within a valid range.
69
+
70
+ valueFormatterPattern: PropTypes.string,
71
+ since: PropTypes.number, // milliseconds from 1970-1-1 when x=0
72
+ timeUnit: PropTypes.oneOf(['MILLISECONDS', 'SECONDS', 'MINUTES', 'HOURS', 'DAYS']), // timeUnit of x,
73
+ };
74
+
75
+ export const xAxisIface = {
76
+ ...axisIface,
77
+
78
+ labelRotationAngle: PropTypes.number,
79
+ avoidFirstLastClipping: PropTypes.bool,
80
+ position: PropTypes.oneOf(['TOP', 'BOTTOM', 'BOTH_SIDED', 'TOP_INSIDE', 'BOTTOM_INSIDE']),
81
+ yOffset: PropTypes.number
82
+ };
83
+
84
+ export const yAxisIface = {
85
+ ...axisIface,
86
+
87
+ inverted: PropTypes.bool,
88
+ spaceTop: PropTypes.number,
89
+ spaceBottom: PropTypes.number,
90
+
91
+ position: PropTypes.oneOf(['OUTSIDE_CHART', 'INSIDE_CHART']),
92
+
93
+ maxWidth: PropTypes.number,
94
+ minWidth: PropTypes.number,
95
+
96
+ // zero line
97
+ zeroLine: PropTypes.shape({
98
+ enabled: PropTypes.bool,
99
+ lineWidth: PropTypes.number,
100
+ lineColor: PropTypes.number
101
+ })
102
+ };
@@ -0,0 +1,43 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, {Component} from 'react';
3
+ import {
4
+ requireNativeComponent,
5
+ View
6
+ } from 'react-native';
7
+
8
+ import BarLineChartBase from './BarLineChartBase';
9
+ import {barData} from './ChartDataConfig';
10
+ import MoveEnhancer from './MoveEnhancer'
11
+ import ScaleEnhancer from "./ScaleEnhancer";
12
+ import HighlightEnhancer from "./HighlightEnhancer";
13
+ import ScrollEnhancer from "./ScrollEnhancer";
14
+
15
+ class BarChart extends React.Component {
16
+ getNativeComponentName() {
17
+ return 'RNBarChart'
18
+ }
19
+
20
+ getNativeComponentRef() {
21
+ return this.nativeComponentRef
22
+ }
23
+
24
+ render() {
25
+ return <RNBarChart {...this.props} ref={ref => this.nativeComponentRef = ref} />;
26
+ }
27
+ }
28
+
29
+ BarChart.propTypes = {
30
+ ...BarLineChartBase.propTypes,
31
+
32
+ drawValueAboveBar: PropTypes.bool,
33
+ drawBarShadow: PropTypes.bool,
34
+ highlightFullBarEnabled: PropTypes.bool,
35
+
36
+ data: barData
37
+ }
38
+
39
+ var RNBarChart = requireNativeComponent('RNBarChart', BarChart, {
40
+ nativeOnly: {onSelect: true, onChange: true}
41
+ })
42
+
43
+ export default ScrollEnhancer(HighlightEnhancer(ScaleEnhancer(MoveEnhancer(BarChart))))
@@ -0,0 +1,86 @@
1
+ import PropTypes from 'prop-types';
2
+ import {
3
+ View
4
+ } from 'react-native';
5
+
6
+ import ChartBase from './ChartBase';
7
+ import {yAxisIface} from './AxisIface';
8
+
9
+ const iface = {
10
+ propTypes: {
11
+ ...ChartBase.propTypes,
12
+ maxHighlightDistance: PropTypes.number,
13
+ drawGridBackground: PropTypes.bool,
14
+ gridBackgroundColor: PropTypes.number,
15
+
16
+ drawBorders: PropTypes.bool,
17
+ borderColor: PropTypes.number,
18
+ borderWidth: PropTypes.number,
19
+
20
+ minOffset: PropTypes.number,
21
+ maxVisibleValueCount: PropTypes.number,
22
+ visibleRange: PropTypes.shape({
23
+ x: PropTypes.shape({
24
+ min: PropTypes.number,
25
+ max: PropTypes.number
26
+ }),
27
+ y: PropTypes.shape({
28
+ left: PropTypes.shape({
29
+ min: PropTypes.number,
30
+ max: PropTypes.number
31
+ }),
32
+ right: PropTypes.shape({
33
+ min: PropTypes.number,
34
+ max: PropTypes.number
35
+ })
36
+ })
37
+ }),
38
+ maxScale: PropTypes.shape({
39
+ x: PropTypes.number,
40
+ y: PropTypes.number
41
+ }),
42
+ autoScaleMinMaxEnabled: PropTypes.bool,
43
+ keepPositionOnRotation: PropTypes.bool,
44
+
45
+ highlightPerDragEnabled: PropTypes.bool,
46
+
47
+ scaleEnabled: PropTypes.bool,
48
+ scaleXEnabled: PropTypes.bool,
49
+ scaleYEnabled: PropTypes.bool,
50
+ dragEnabled: PropTypes.bool,
51
+ pinchZoom: PropTypes.bool,
52
+ doubleTapToZoomEnabled: PropTypes.bool,
53
+
54
+ yAxis: PropTypes.shape({
55
+ left: PropTypes.shape(yAxisIface),
56
+ right: PropTypes.shape(yAxisIface)
57
+ }),
58
+ zoom: PropTypes.shape({
59
+ scaleX: PropTypes.number.isRequired,
60
+ scaleY: PropTypes.number.isRequired,
61
+ xValue: PropTypes.number.isRequired,
62
+ yValue: PropTypes.number.isRequired,
63
+ axisDependency: PropTypes.oneOf(['LEFT', 'RIGHT'])
64
+ }),
65
+ viewPortOffsets: PropTypes.shape({
66
+ left: PropTypes.number,
67
+ top: PropTypes.number,
68
+ right: PropTypes.number,
69
+ bottom: PropTypes.number
70
+ }),
71
+ extraOffsets: PropTypes.shape({
72
+ left: PropTypes.number,
73
+ top: PropTypes.number,
74
+ right: PropTypes.number,
75
+ bottom: PropTypes.number
76
+ }),
77
+
78
+ group: PropTypes.string,
79
+ identifier: PropTypes.string,
80
+ syncX: PropTypes.bool,
81
+ syncY: PropTypes.bool,
82
+
83
+ }
84
+ };
85
+
86
+ export default iface;
@@ -0,0 +1,40 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, {Component} from 'react';
3
+ import {
4
+ requireNativeComponent,
5
+ View
6
+ } from 'react-native';
7
+ import ScrollEnhancer from "./ScrollEnhancer";
8
+
9
+ import BarLineChartBase from './BarLineChartBase';
10
+ import {bubbleData} from './ChartDataConfig';
11
+ import MoveEnhancer from './MoveEnhancer'
12
+ import ScaleEnhancer from "./ScaleEnhancer";
13
+ import HighlightEnhancer from "./HighlightEnhancer";
14
+
15
+ class BubbleChart extends React.Component {
16
+ getNativeComponentName() {
17
+ return 'RNBubbleChart'
18
+ }
19
+
20
+ getNativeComponentRef() {
21
+ return this.nativeComponentRef
22
+ }
23
+
24
+ render() {
25
+ return <RNBubbleChart {...this.props} ref={ref => this.nativeComponentRef = ref} />;
26
+ }
27
+ }
28
+
29
+ BubbleChart.propTypes = {
30
+ ...BarLineChartBase.propTypes,
31
+
32
+ data: bubbleData
33
+ };
34
+
35
+ var RNBubbleChart = requireNativeComponent('RNBubbleChart', BubbleChart, {
36
+ nativeOnly: {onSelect: true, onChange: true}
37
+ });
38
+
39
+ export default ScrollEnhancer(HighlightEnhancer(ScaleEnhancer(MoveEnhancer(BubbleChart))))
40
+
@@ -0,0 +1,40 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, {Component} from 'react';
3
+ import {
4
+ requireNativeComponent,
5
+ View
6
+ } from 'react-native';
7
+
8
+ import BarLineChartBase from './BarLineChartBase';
9
+ import {candleData} from './ChartDataConfig';
10
+ import MoveEnhancer from './MoveEnhancer'
11
+ import ScaleEnhancer from "./ScaleEnhancer";
12
+ import HighlightEnhancer from "./HighlightEnhancer";
13
+ import ScrollEnhancer from "./ScrollEnhancer";
14
+
15
+ class CandleStickChart extends React.Component {
16
+ getNativeComponentName() {
17
+ return 'RNCandleStickChart'
18
+ }
19
+
20
+ getNativeComponentRef() {
21
+ return this.nativeComponentRef
22
+ }
23
+
24
+ render() {
25
+ return <RNCandleStickChart {...this.props} ref={ref => this.nativeComponentRef = ref} />;
26
+ }
27
+
28
+ }
29
+
30
+ CandleStickChart.propTypes = {
31
+ ...BarLineChartBase.propTypes,
32
+
33
+ data: candleData
34
+ };
35
+
36
+ var RNCandleStickChart = requireNativeComponent('RNCandleStickChart', CandleStickChart, {
37
+ nativeOnly: {onSelect: true, onChange: true}
38
+ });
39
+
40
+ export default ScrollEnhancer(HighlightEnhancer(ScaleEnhancer(MoveEnhancer(CandleStickChart))))
@@ -0,0 +1,131 @@
1
+ import PropTypes from 'prop-types';
2
+
3
+ import {xAxisIface} from './AxisIface'
4
+ import {ViewPropTypes} from "deprecated-react-native-prop-types";
5
+
6
+ const descriptionIface = {
7
+ text: PropTypes.string,
8
+ textColor: PropTypes.number,
9
+ textSize: PropTypes.number,
10
+
11
+ positionX: PropTypes.number,
12
+ positionY: PropTypes.number,
13
+ };
14
+
15
+ const legendIface = {
16
+ enabled: PropTypes.bool,
17
+
18
+ textColor: PropTypes.number,
19
+ textSize: PropTypes.number,
20
+ fontFamily: PropTypes.string,
21
+ fontStyle: PropTypes.number,
22
+ fontWeight: PropTypes.number,
23
+
24
+ wordWrapEnabled: PropTypes.bool,
25
+ maxSizePercent: PropTypes.number,
26
+
27
+ horizontalAlignment: PropTypes.oneOf(['LEFT', 'CENTER', 'RIGHT']),
28
+ verticalAlignment: PropTypes.oneOf(['TOP', 'CENTER', 'BOTTOM']),
29
+ orientation: PropTypes.oneOf(['HORIZONTAL', 'VERTICAL']),
30
+ drawInside: PropTypes.bool,
31
+ direction: PropTypes.oneOf(['LEFT_TO_RIGHT', 'RIGHT_TO_LEFT']),
32
+
33
+ form: PropTypes.oneOf(['NONE', 'EMPTY', 'DEFAULT', 'SQUARE', 'CIRCLE', 'LINE']),
34
+ formSize: PropTypes.number,
35
+ xEntrySpace: PropTypes.number,
36
+ yEntrySpace: PropTypes.number,
37
+ formToTextSpace: PropTypes.number,
38
+
39
+ custom: PropTypes.shape({
40
+ colors: PropTypes.arrayOf(PropTypes.number),
41
+ labels: PropTypes.arrayOf(PropTypes.string)
42
+ })
43
+ };
44
+
45
+ const chartIface = {
46
+ propTypes: {
47
+ ...ViewPropTypes,
48
+
49
+ animation: PropTypes.shape({
50
+ durationX: PropTypes.number, // Millis
51
+ durationY: PropTypes.number, // Millis
52
+
53
+ // option of easingX, easingY:
54
+ // Linear,
55
+ // EaseInQuad,
56
+ // EaseOutQuad,
57
+ // EaseInOutQuad,
58
+ // EaseInCubic,
59
+ // EaseOutCubic,
60
+ // EaseInOutCubic,
61
+ // EaseInQuart,
62
+ // EaseOutQuart,
63
+ // EaseInOutQuart,
64
+ // EaseInSine,
65
+ // EaseOutSine,
66
+ // EaseInOutSine,
67
+ // EaseInExpo,
68
+ // EaseOutExpo,
69
+ // EaseInOutExpo,
70
+ // EaseInCirc,
71
+ // EaseOutCirc,
72
+ // EaseInOutCirc,
73
+ // EaseInElastic,
74
+ // EaseOutElastic,
75
+ // EaseInOutElastic,
76
+ // EaseInBack,
77
+ // EaseOutBack,
78
+ // EaseInOutBack,
79
+ // EaseInBounce,
80
+ // EaseOutBounce,
81
+ // EaseInOutBounce,
82
+ easingX: PropTypes.string,
83
+ easingY: PropTypes.string
84
+ }),
85
+
86
+ chartBackgroundColor: PropTypes.number,
87
+ logEnabled: PropTypes.bool,
88
+ noDataText: PropTypes.string,
89
+ noDataTextColor: PropTypes.number,
90
+
91
+ touchEnabled: PropTypes.bool,
92
+ dragDecelerationEnabled: PropTypes.bool,
93
+ dragDecelerationFrictionCoef: (props, propName, componentName) => {
94
+ let coef = props[propName];
95
+ if (coef && (typeof coef !== 'number' || coef < 0 || coef > 1)) {
96
+ return new Error(
97
+ `Invalid prop ${propName} supplied to '${componentName}'. Value must be number and between 0 and 1.`
98
+ );
99
+ }
100
+ },
101
+
102
+ highlightPerTapEnabled: PropTypes.bool,
103
+ chartDescription: PropTypes.shape(descriptionIface),
104
+
105
+ legend: PropTypes.shape(legendIface),
106
+
107
+ xAxis: PropTypes.shape(xAxisIface),
108
+ onYaxisMinMaxChange: PropTypes.func,
109
+
110
+ marker: PropTypes.shape({
111
+ enabled: PropTypes.bool,
112
+ digits: PropTypes.number,
113
+ markerColor: PropTypes.number,
114
+ textColor: PropTypes.number,
115
+ textSize: PropTypes.number,
116
+
117
+ }),
118
+
119
+ // stackIndex for StackBarChart
120
+ highlights: PropTypes.arrayOf(
121
+ PropTypes.shape({
122
+ x: PropTypes.number.isRequired,
123
+ dataSetIndex: PropTypes.number, // this is used in stacked bar chart
124
+ dataIndex: PropTypes.number, // this is necessary in combined chart when default highlight is set. the default sequence is line, bar, scatter, candle, bubble
125
+ y: PropTypes.number,
126
+ stackIndex: PropTypes.number
127
+ }))
128
+ }
129
+ };
130
+
131
+ export default chartIface;
@@ -0,0 +1,263 @@
1
+ import PropTypes from "prop-types";
2
+ import ChartDataSetConfig from "./ChartDataSetConfig";
3
+
4
+ const lineData = PropTypes.shape({
5
+ dataSets: PropTypes.arrayOf(
6
+ PropTypes.shape({
7
+ values: PropTypes.arrayOf(
8
+ PropTypes.oneOfType([
9
+ PropTypes.shape({
10
+ x: PropTypes.number,
11
+ y: PropTypes.number.isRequired,
12
+ marker: PropTypes.string,
13
+ icon: PropTypes.shape({
14
+ bundle: PropTypes.object,
15
+ width: PropTypes.number,
16
+ height: PropTypes.number
17
+ })
18
+ }),
19
+ PropTypes.number
20
+ ])
21
+ ),
22
+ label: PropTypes.string.isRequired,
23
+ config: PropTypes.shape({
24
+ ...ChartDataSetConfig.common,
25
+ ...ChartDataSetConfig.barLineScatterCandleBubble,
26
+ ...ChartDataSetConfig.lineScatterCandleRadar,
27
+ ...ChartDataSetConfig.lineRadar,
28
+
29
+ circleRadius: PropTypes.number,
30
+ drawCircles: PropTypes.bool,
31
+ mode: PropTypes.oneOf([
32
+ "LINEAR",
33
+ "STEPPED",
34
+ "CUBIC_BEZIER",
35
+ "HORIZONTAL_BEZIER"
36
+ ]),
37
+ drawCubicIntensity: PropTypes.number,
38
+ circleColor: PropTypes.number,
39
+ circleColors: PropTypes.arrayOf(PropTypes.number),
40
+ circleHoleColor: PropTypes.number,
41
+ drawCircleHole: PropTypes.bool,
42
+ fillFormatter: PropTypes.shape({
43
+ min: PropTypes.number.isRequired,
44
+ }),
45
+
46
+ dashedLine: PropTypes.shape({
47
+ lineLength: PropTypes.number.isRequired,
48
+ spaceLength: PropTypes.number.isRequired,
49
+ phase: PropTypes.number
50
+ })
51
+ })
52
+ })
53
+ )
54
+ });
55
+
56
+ const barData = PropTypes.shape({
57
+ dataSets: PropTypes.arrayOf(
58
+ PropTypes.shape({
59
+ values: PropTypes.arrayOf(
60
+ PropTypes.oneOfType([
61
+ PropTypes.shape({
62
+ x: PropTypes.number,
63
+ y: PropTypes.oneOfType([
64
+ PropTypes.number,
65
+ PropTypes.arrayOf(PropTypes.number)
66
+ ]),
67
+ marker: PropTypes.oneOfType([
68
+ PropTypes.string,
69
+ PropTypes.arrayOf(PropTypes.string)
70
+ ])
71
+ }),
72
+ PropTypes.oneOfType([
73
+ PropTypes.number,
74
+ PropTypes.arrayOf(PropTypes.number)
75
+ ])
76
+ ])
77
+ ),
78
+ label: PropTypes.string.isRequired,
79
+ config: PropTypes.shape({
80
+ ...ChartDataSetConfig.common,
81
+ ...ChartDataSetConfig.barLineScatterCandleBubble,
82
+
83
+ barShadowColor: PropTypes.number,
84
+ highlightAlpha: PropTypes.number, // using android format (0-255), not ios format(0-1), the conversion is x/255
85
+ stackLabels: PropTypes.arrayOf(PropTypes.string)
86
+ })
87
+ })
88
+ ),
89
+
90
+ config: PropTypes.shape({
91
+ barWidth: PropTypes.number,
92
+ group: PropTypes.shape({
93
+ fromX: PropTypes.number.isRequired,
94
+ groupSpace: PropTypes.number.isRequired,
95
+ barSpace: PropTypes.number.isRequired
96
+ })
97
+ })
98
+ });
99
+
100
+ const bubbleData = PropTypes.shape({
101
+ dataSets: PropTypes.arrayOf(
102
+ PropTypes.shape({
103
+ values: PropTypes.arrayOf(
104
+ PropTypes.shape({
105
+ x: PropTypes.number,
106
+ y: PropTypes.number.isRequired,
107
+ size: PropTypes.number.isRequired,
108
+ marker: PropTypes.string
109
+ })
110
+ ),
111
+ label: PropTypes.string.isRequired,
112
+ config: PropTypes.shape({
113
+ ...ChartDataSetConfig.common,
114
+ ...ChartDataSetConfig.barLineScatterCandleBubble
115
+ })
116
+ })
117
+ )
118
+ });
119
+
120
+ const candleData = PropTypes.shape({
121
+ dataSets: PropTypes.arrayOf(
122
+ PropTypes.shape({
123
+ values: PropTypes.arrayOf(
124
+ PropTypes.shape({
125
+ x: PropTypes.number,
126
+ shadowH: PropTypes.number.isRequired,
127
+ shadowL: PropTypes.number.isRequired,
128
+ open: PropTypes.number.isRequired,
129
+ close: PropTypes.number.isRequired,
130
+ marker: PropTypes.string
131
+ })
132
+ ),
133
+ label: PropTypes.string.isRequired,
134
+ config: PropTypes.shape({
135
+ ...ChartDataSetConfig.common,
136
+ ...ChartDataSetConfig.barLineScatterCandleBubble,
137
+ ...ChartDataSetConfig.lineScatterCandleRadar,
138
+
139
+ barSpace: PropTypes.number,
140
+ shadowWidth: PropTypes.number,
141
+ shadowColor: PropTypes.number,
142
+ shadowColorSameAsCandle: PropTypes.bool,
143
+ neutralColor: PropTypes.number,
144
+ decreasingColor: PropTypes.number,
145
+ decreasingPaintStyle: PropTypes.oneOf([
146
+ "FILL",
147
+ "STROKE",
148
+ "FILL_AND_STROKE"
149
+ ]),
150
+ increasingColor: PropTypes.number,
151
+ increasingPaintStyle: PropTypes.oneOf([
152
+ "FILL",
153
+ "STROKE",
154
+ "FILL_AND_STROKE"
155
+ ])
156
+ })
157
+ })
158
+ )
159
+ });
160
+
161
+ const pieData = PropTypes.shape({
162
+ dataSets: PropTypes.arrayOf(
163
+ PropTypes.shape({
164
+ values: PropTypes.arrayOf(
165
+ PropTypes.oneOfType([
166
+ PropTypes.shape({
167
+ value: PropTypes.number.isRequired,
168
+ label: PropTypes.string
169
+ }),
170
+ PropTypes.number
171
+ ])
172
+ ),
173
+ label: PropTypes.string.isRequired,
174
+ config: PropTypes.shape({
175
+ ...ChartDataSetConfig.common,
176
+
177
+ sliceSpace: PropTypes.number,
178
+ selectionShift: PropTypes.number,
179
+ xValuePosition: PropTypes.oneOf(["INSIDE_SLICE", "OUTSIDE_SLICE"]),
180
+ yValuePosition: PropTypes.oneOf(["INSIDE_SLICE", "OUTSIDE_SLICE"]),
181
+ valueLinePart1Length: PropTypes.number,
182
+ valueLinePart2Length: PropTypes.number,
183
+ valueLineColor: PropTypes.number,
184
+ valueLineWidth: PropTypes.number,
185
+ valueLinePart1OffsetPercentage: PropTypes.number,
186
+ valueLineVariableLength: PropTypes.bool
187
+ })
188
+ })
189
+ )
190
+ });
191
+
192
+ const radarData = PropTypes.shape({
193
+ dataSets: PropTypes.arrayOf(
194
+ PropTypes.shape({
195
+ values: PropTypes.arrayOf(
196
+ PropTypes.oneOfType([
197
+ PropTypes.shape({ value: PropTypes.number.isRequired }),
198
+ PropTypes.number
199
+ ])
200
+ ),
201
+ label: PropTypes.string.isRequired,
202
+ config: PropTypes.shape({
203
+ ...ChartDataSetConfig.common,
204
+ ...ChartDataSetConfig.lineScatterCandleRadar,
205
+ ...ChartDataSetConfig.lineRadar
206
+ })
207
+ })
208
+ ),
209
+ labels: PropTypes.arrayOf(PropTypes.string)
210
+ });
211
+
212
+ const scatterData = PropTypes.shape({
213
+ dataSets: PropTypes.arrayOf(
214
+ PropTypes.shape({
215
+ values: PropTypes.arrayOf(
216
+ PropTypes.oneOfType([
217
+ PropTypes.shape({
218
+ x: PropTypes.number,
219
+ y: PropTypes.number.isRequired,
220
+ marker: PropTypes.string
221
+ }),
222
+ PropTypes.number
223
+ ])
224
+ ),
225
+ label: PropTypes.string.isRequired,
226
+ config: PropTypes.shape({
227
+ ...ChartDataSetConfig.common,
228
+ ...ChartDataSetConfig.barLineScatterCandleBubble,
229
+ ...ChartDataSetConfig.lineScatterCandleRadar,
230
+
231
+ scatterShapeSize: PropTypes.number,
232
+ scatterShape: PropTypes.oneOf([
233
+ "SQUARE",
234
+ "CIRCLE",
235
+ "TRIANGLE",
236
+ "CROSS",
237
+ "X"
238
+ ]),
239
+ scatterShapeHoleColor: PropTypes.number,
240
+ scatterShapeHoleRadius: PropTypes.number
241
+ })
242
+ })
243
+ )
244
+ });
245
+
246
+ const combinedData = PropTypes.shape({
247
+ lineData: lineData,
248
+ barData: barData,
249
+ scatterData: scatterData,
250
+ candleData: candleData,
251
+ bubbleData: bubbleData
252
+ });
253
+
254
+ export {
255
+ lineData,
256
+ barData,
257
+ pieData,
258
+ bubbleData,
259
+ scatterData,
260
+ candleData,
261
+ radarData,
262
+ combinedData
263
+ };