@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,192 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNPieChartView: RNChartViewBase {
|
|
9
|
+
let _chart: PieChartView;
|
|
10
|
+
let _dataExtract : PieDataExtract;
|
|
11
|
+
|
|
12
|
+
override var chart: PieChartView {
|
|
13
|
+
return _chart
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
override var dataExtract: DataExtract {
|
|
17
|
+
return _dataExtract
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
21
|
+
|
|
22
|
+
self._chart = PieChartView(frame: frame)
|
|
23
|
+
self._dataExtract = PieDataExtract()
|
|
24
|
+
|
|
25
|
+
super.init(frame: frame)
|
|
26
|
+
|
|
27
|
+
self._chart.delegate = self
|
|
28
|
+
self.addSubview(_chart)
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override func layoutSubviews() {
|
|
33
|
+
super.layoutSubviews()
|
|
34
|
+
_chart.frame = self.bounds // Adjust the chart's frame to fill the entire component's bounds
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
required init?(coder aDecoder: NSCoder) {
|
|
38
|
+
fatalError("init(coder:) has not been implemented")
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
func setDrawSliceText(_ enabled: Bool) {
|
|
42
|
+
chart.drawEntryLabelsEnabled = enabled
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
func setUsePercentValues(_ enabled: Bool) {
|
|
47
|
+
chart.usePercentValuesEnabled = enabled
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
func setCenterText(_ text: String) {
|
|
52
|
+
chart.centerText = text
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
func setStyledCenterText(_ data: NSDictionary) {
|
|
56
|
+
let json = BridgeUtils.toJson(data)
|
|
57
|
+
|
|
58
|
+
var attrString: NSMutableAttributedString?
|
|
59
|
+
if json["text"].string == nil
|
|
60
|
+
{
|
|
61
|
+
attrString = nil
|
|
62
|
+
}
|
|
63
|
+
else
|
|
64
|
+
{
|
|
65
|
+
#if os(OSX)
|
|
66
|
+
let paragraphStyle = NSParagraphStyle.default().mutableCopy() as! NSMutableParagraphStyle
|
|
67
|
+
#else
|
|
68
|
+
let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
|
|
69
|
+
#endif
|
|
70
|
+
paragraphStyle.lineBreakMode = NSLineBreakMode.byTruncatingTail
|
|
71
|
+
paragraphStyle.alignment = .center
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
var color : NSUIColor?
|
|
75
|
+
if json["color"].int != nil {
|
|
76
|
+
color = RCTConvert.uiColor(json["color"].intValue)
|
|
77
|
+
} else {
|
|
78
|
+
color = UIColor.black
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let fontSize = json["size"].float != nil ? CGFloat(json["size"].floatValue) : CGFloat(12)
|
|
82
|
+
|
|
83
|
+
var font: UIFont?
|
|
84
|
+
if let parsedFont = FontUtils.getFont(json) {
|
|
85
|
+
font = RCTFont.update(parsedFont, withSize: NSNumber(value: Float(fontSize)))
|
|
86
|
+
} else {
|
|
87
|
+
font = NSUIFont.systemFont(ofSize: fontSize)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
attrString = NSMutableAttributedString(string: json["text"].stringValue)
|
|
91
|
+
attrString?.setAttributes([
|
|
92
|
+
NSAttributedString.Key.foregroundColor: color!,
|
|
93
|
+
NSAttributedString.Key.font: font,
|
|
94
|
+
NSAttributedString.Key.paragraphStyle: paragraphStyle
|
|
95
|
+
], range: NSMakeRange(0, attrString!.length))
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
chart.centerAttributedText = attrString
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
func setCenterTextRadiusPercent(_ radiusPercent: NSNumber) {
|
|
103
|
+
chart.centerTextRadiusPercent = CGFloat(truncating: radiusPercent) / 100.0
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
func setHoleRadius(_ percent: NSNumber) {
|
|
108
|
+
chart.holeRadiusPercent = CGFloat(truncating: percent) / 100.0
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
func setHoleColor(_ color: Int) {
|
|
113
|
+
chart.holeColor = RCTConvert.uiColor(color)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
func setTransparentCircleRadius(_ percent: NSNumber) {
|
|
118
|
+
chart.transparentCircleRadiusPercent = CGFloat(truncating: percent) / 100.0
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
func setTransparentCircleColor(_ color: Int) {
|
|
122
|
+
chart.transparentCircleColor = RCTConvert.uiColor(color)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
func setEntryLabelColor(_ color: Int) {
|
|
126
|
+
chart.entryLabelColor = RCTConvert.uiColor(color)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
func setEntryLabelTextSize(_ size: NSNumber) {
|
|
130
|
+
chart.entryLabelFont = chart.entryLabelFont?.withSize(CGFloat(truncating: size))
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
func setEntryLabelFontFamily(_ fontFamily: String) {
|
|
134
|
+
chart.entryLabelFont = RCTFont.update(chart.entryLabelFont, withFamily: fontFamily)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
func setExtraOffsets(_ data: NSDictionary) {
|
|
138
|
+
let json = BridgeUtils.toJson(data)
|
|
139
|
+
var leftOffset : CGFloat = 0
|
|
140
|
+
var topOffset : CGFloat = 0
|
|
141
|
+
var rightOffset : CGFloat = 0
|
|
142
|
+
var bottomOffset : CGFloat = 0
|
|
143
|
+
|
|
144
|
+
if json["left"].float != nil
|
|
145
|
+
{
|
|
146
|
+
leftOffset = CGFloat(json["left"].floatValue)
|
|
147
|
+
}
|
|
148
|
+
if json["top"].float != nil
|
|
149
|
+
{
|
|
150
|
+
topOffset = CGFloat(json["top"].floatValue)
|
|
151
|
+
}
|
|
152
|
+
if json["right"].float != nil
|
|
153
|
+
{
|
|
154
|
+
rightOffset = CGFloat(json["right"].floatValue)
|
|
155
|
+
}
|
|
156
|
+
if json["bottom"].float != nil
|
|
157
|
+
{
|
|
158
|
+
bottomOffset = CGFloat(json["bottom"].floatValue)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
chart.setExtraOffsets(left: leftOffset, top: topOffset, right: rightOffset, bottom: bottomOffset)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
func setDrawEntryLabels(_ enabled: Bool) {
|
|
165
|
+
chart.drawEntryLabelsEnabled = enabled
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
func setMaxAngle(_ maxAngle: NSNumber) {
|
|
169
|
+
chart.maxAngle = CGFloat(truncating: maxAngle)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
func setMinOffset(_ minOffset: NSNumber) {
|
|
173
|
+
chart.minOffset = CGFloat(truncating: minOffset)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
func setRotationEnabled(_ enabled: Bool) {
|
|
177
|
+
chart.rotationEnabled = enabled
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
func setRotationAngle(_ angle: NSNumber) {
|
|
181
|
+
chart.rotationAngle = CGFloat(truncating: angle)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
override func didSetProps(_ changedProps: [String]!) {
|
|
185
|
+
super.didSetProps(changedProps)
|
|
186
|
+
|
|
187
|
+
let pieChartDataSet = chart.data?.dataSets[0] as? PieChartDataSet
|
|
188
|
+
|
|
189
|
+
pieChartDataSet?.entryLabelColor = chart.entryLabelColor
|
|
190
|
+
pieChartDataSet?.entryLabelFont = chart.entryLabelFont
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Created by xudong wu on 23/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
@objc(RNRadarChartManager)
|
|
8
|
+
@objcMembers
|
|
9
|
+
open class RNRadarChartManager: RCTViewManager {
|
|
10
|
+
override open func view() -> UIView! {
|
|
11
|
+
let ins = RNRadarChartView()
|
|
12
|
+
return ins;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override public static func requiresMainQueueSetup() -> Bool {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright © 2017 wuxudong. All rights reserved.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "React/RCTViewManager.h"
|
|
6
|
+
#import "RNChartManagerBridge.h"
|
|
7
|
+
#import "RNYAxisChartManagerBridge.h"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@interface RCT_EXTERN_MODULE(RNRadarChartManager, RCTViewManager)
|
|
11
|
+
|
|
12
|
+
EXPORT_Y_AXIS_CHART_BASE_PROPERTIES
|
|
13
|
+
RCT_EXPORT_VIEW_PROPERTY(skipWebLineCount, NSInteger)
|
|
14
|
+
RCT_EXPORT_VIEW_PROPERTY(minOffset, NSNumber)
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(drawWeb, BOOL)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(rotationEnabled, BOOL)
|
|
17
|
+
RCT_EXPORT_VIEW_PROPERTY(rotationAngle, NSNumber)
|
|
18
|
+
RCT_EXPORT_VIEW_PROPERTY(extraOffsets, NSDictionary)
|
|
19
|
+
RCT_EXPORT_VIEW_PROPERTY(webLineWidth, NSNumber)
|
|
20
|
+
RCT_EXPORT_VIEW_PROPERTY(webLineWidthInner, NSNumber)
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(webAlpha, NSNumber)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(webColor, NSNumber)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(webColorInner, NSNumber)
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNRadarChartView: RNYAxisChartViewBase {
|
|
9
|
+
|
|
10
|
+
let _chart: RadarChartView;
|
|
11
|
+
let _dataExtract : RadarDataExtract
|
|
12
|
+
|
|
13
|
+
override var chart: RadarChartView {
|
|
14
|
+
return _chart
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override var dataExtract: DataExtract {
|
|
18
|
+
return _dataExtract
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override func setYAxis(_ config: NSDictionary) {
|
|
22
|
+
let json = BridgeUtils.toJson(config)
|
|
23
|
+
let yAxis = _chart.yAxis
|
|
24
|
+
|
|
25
|
+
setCommonAxisConfig(yAxis, config: json)
|
|
26
|
+
setYAxisConfig(yAxis, config: json)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
30
|
+
|
|
31
|
+
self._chart = RadarChartView(frame: frame)
|
|
32
|
+
self._dataExtract = RadarDataExtract()
|
|
33
|
+
|
|
34
|
+
super.init(frame: frame)
|
|
35
|
+
|
|
36
|
+
self._chart.delegate = self
|
|
37
|
+
self.addSubview(_chart)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
override func layoutSubviews() {
|
|
41
|
+
super.layoutSubviews()
|
|
42
|
+
_chart.frame = self.bounds // Adjust the chart's frame to fill the entire component's bounds
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
required init?(coder aDecoder: NSCoder) {
|
|
46
|
+
fatalError("init(coder:) has not been implemented")
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
func setSkipWebLineCount(_ count: Int) {
|
|
50
|
+
chart.skipWebLineCount = count
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
func setMinOffset(_ minOffset: NSNumber) {
|
|
54
|
+
chart.minOffset = CGFloat(truncating: minOffset)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
func setExtraOffsets(_ config: NSDictionary) {
|
|
58
|
+
let json = BridgeUtils.toJson(config)
|
|
59
|
+
|
|
60
|
+
let left = json["left"].double != nil ? CGFloat(json["left"].doubleValue) : 0
|
|
61
|
+
let top = json["top"].double != nil ? CGFloat(json["top"].doubleValue) : 0
|
|
62
|
+
let right = json["right"].double != nil ? CGFloat(json["right"].doubleValue) : 0
|
|
63
|
+
let bottom = json["bottom"].double != nil ? CGFloat(json["bottom"].doubleValue) : 0
|
|
64
|
+
|
|
65
|
+
chart.setExtraOffsets(left: left, top: top, right: right, bottom: bottom)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
func setRotationEnabled(_ enabled: Bool) {
|
|
69
|
+
chart.rotationEnabled = enabled
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
func setRotationAngle(_ angle: NSNumber) {
|
|
73
|
+
chart.rotationAngle = CGFloat(truncating: angle)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
func setDrawWeb(_ enabled: Bool) {
|
|
77
|
+
chart.drawWeb = enabled
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
func setWebLineWidth(_ width: NSNumber) {
|
|
81
|
+
chart.webLineWidth = CGFloat(truncating: width)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
func setWebLineWidthInner(_ width: NSNumber) {
|
|
85
|
+
chart.innerWebLineWidth = CGFloat(truncating: width)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
func setWebAlpha(_ alpha: NSNumber) {
|
|
89
|
+
chart.webAlpha = CGFloat(truncating: alpha)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
func setWebColor(_ color: NSNumber) {
|
|
93
|
+
chart.webColor = RCTConvert.uiColor(color.intValue)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
func setWebColorInner(_ color: NSNumber) {
|
|
97
|
+
chart.innerWebColor = RCTConvert.uiColor(color.intValue)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Created by xudong wu on 02/03/2017.
|
|
2
|
+
// Copyright © 2017 wuxudong. All rights reserved.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import Foundation
|
|
6
|
+
|
|
7
|
+
import SwiftyJSON
|
|
8
|
+
import DGCharts
|
|
9
|
+
|
|
10
|
+
class RadarDataExtract : DataExtract {
|
|
11
|
+
override func createData() -> ChartData {
|
|
12
|
+
return RadarChartData();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override func createDataSet(_ entries: [ChartDataEntry], label: String) -> ChartDataSetProtocol {
|
|
16
|
+
return RadarChartDataSet(entries : entries, label: label)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override func dataSetConfig(_ dataSet: ChartDataSetProtocol, config: JSON) {
|
|
20
|
+
let barDataSet = dataSet as! RadarChartDataSet
|
|
21
|
+
|
|
22
|
+
ChartDataSetConfigUtils.commonConfig(barDataSet, config: config);
|
|
23
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(barDataSet, config: config);
|
|
24
|
+
ChartDataSetConfigUtils.commonLineRadarConfig(barDataSet, config: config);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override func createEntry(_ values: [JSON], index: Int) -> RadarChartDataEntry {
|
|
28
|
+
var entry: RadarChartDataEntry;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
let item = values[index];
|
|
32
|
+
|
|
33
|
+
if item.dictionary != nil {
|
|
34
|
+
let dict = item;
|
|
35
|
+
|
|
36
|
+
if dict["value"].double != nil {
|
|
37
|
+
entry = RadarChartDataEntry(value: dict["value"].doubleValue, data: dict as AnyObject?);
|
|
38
|
+
} else {
|
|
39
|
+
fatalError("invalid data " + values.description);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
} else if item.double != nil {
|
|
43
|
+
entry = RadarChartDataEntry(value: item.doubleValue);
|
|
44
|
+
} else {
|
|
45
|
+
fatalError("invalid data " + values.description);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return entry;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Created by xudong wu on 23/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
@objc(RNScatterChartManager)
|
|
8
|
+
@objcMembers
|
|
9
|
+
class RNScatterChartManager: RCTViewManager, RNBarLineChartBaseManager {
|
|
10
|
+
var _bridge: RCTBridge? {get{return self.bridge}}
|
|
11
|
+
|
|
12
|
+
override func view() -> UIView! {
|
|
13
|
+
let ins = RNScatterChartView()
|
|
14
|
+
return ins;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override public static func requiresMainQueueSetup() -> Bool {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
func moveViewToX(_ reactTag: NSNumber, xValue: NSNumber) {
|
|
22
|
+
(self as RNBarLineChartBaseManager)._moveViewToX(reactTag, xValue: xValue)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func moveViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) {
|
|
26
|
+
(self as RNBarLineChartBaseManager)._moveViewTo(reactTag, xValue: xValue, yValue: yValue, axisDependency: axisDependency)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
func moveViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) {
|
|
30
|
+
(self as RNBarLineChartBaseManager)._moveViewToAnimated(reactTag, xValue: xValue, yValue: yValue, axisDependency: axisDependency, duration: duration)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
func centerViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) {
|
|
34
|
+
(self as RNBarLineChartBaseManager)._centerViewTo(reactTag, xValue: xValue, yValue: yValue, axisDependency: axisDependency)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func centerViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) {
|
|
38
|
+
(self as RNBarLineChartBaseManager)._centerViewToAnimated(reactTag, xValue: xValue, yValue: yValue, axisDependency: axisDependency, duration: duration)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
func fitScreen(_ reactTag: NSNumber) {
|
|
42
|
+
(self as RNBarLineChartBaseManager)._fitScreen(reactTag)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
func highlights(_ reactTag: NSNumber, config: NSArray) {
|
|
46
|
+
(self as RNBarLineChartBaseManager)._highlights(reactTag, config: config)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
func setDataAndLockIndex(_ reactTag: NSNumber, data: NSDictionary) {
|
|
50
|
+
(self as RNBarLineChartBaseManager)._setDataAndLockIndex(reactTag, data: data)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright © 2017 Facebook. All rights reserved.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "React/RCTViewManager.h"
|
|
6
|
+
#import "RNChartManagerBridge.h"
|
|
7
|
+
#import "RNYAxisChartManagerBridge.h"
|
|
8
|
+
#import "RNBarLineChartManagerBridge.h"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@interface RCT_EXTERN_MODULE(RNScatterChartManager, RCTViewManager)
|
|
12
|
+
|
|
13
|
+
EXPORT_BAR_LINE_CHART_BASE_PROPERTIES
|
|
14
|
+
|
|
15
|
+
@end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNScatterChartView: RNBarLineChartViewBase {
|
|
9
|
+
let _chart: ScatterChartView
|
|
10
|
+
let _dataExtract : ScatterDataExtract
|
|
11
|
+
|
|
12
|
+
override var chart: ScatterChartView {
|
|
13
|
+
return _chart
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
override var dataExtract: DataExtract {
|
|
17
|
+
return _dataExtract
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
21
|
+
|
|
22
|
+
self._chart = ScatterChartView(frame: frame);
|
|
23
|
+
self._dataExtract = ScatterDataExtract()
|
|
24
|
+
|
|
25
|
+
super.init(frame: frame)
|
|
26
|
+
|
|
27
|
+
self._chart.delegate = self
|
|
28
|
+
self.addSubview(_chart)
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override func layoutSubviews() {
|
|
33
|
+
super.layoutSubviews()
|
|
34
|
+
_chart.frame = self.bounds // Adjust the chart's frame to fill the entire component's bounds
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
required init?(coder aDecoder: NSCoder) {
|
|
38
|
+
fatalError("init(coder:) has not been implemented")
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ScatterDataExtract.swift
|
|
3
|
+
// reactNativeCharts
|
|
4
|
+
//
|
|
5
|
+
// Created by xudong wu on 02/03/2017.
|
|
6
|
+
// Copyright © 2017 wuxudong. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
|
|
11
|
+
import SwiftyJSON
|
|
12
|
+
import DGCharts
|
|
13
|
+
|
|
14
|
+
class ScatterDataExtract : DataExtract {
|
|
15
|
+
override func createData() -> ChartData {
|
|
16
|
+
return ScatterChartData();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override func createDataSet(_ entries: [ChartDataEntry], label: String) -> ChartDataSetProtocol {
|
|
20
|
+
return ScatterChartDataSet(entries: entries, label: label)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override func dataSetConfig(_ dataSet: ChartDataSetProtocol, config: JSON) {
|
|
24
|
+
let scatterDataSet = dataSet as! ScatterChartDataSet;
|
|
25
|
+
|
|
26
|
+
ChartDataSetConfigUtils.commonConfig(scatterDataSet, config: config);
|
|
27
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(scatterDataSet, config: config);
|
|
28
|
+
ChartDataSetConfigUtils.commonLineScatterCandleRadarConfig(scatterDataSet, config: config);
|
|
29
|
+
|
|
30
|
+
// ScatterDataSet only config
|
|
31
|
+
if config["scatterShapeSize"].float != nil {
|
|
32
|
+
scatterDataSet.scatterShapeSize = CGFloat(config["scatterShapeSize"].floatValue)
|
|
33
|
+
}
|
|
34
|
+
if config["scatterShape"].string != nil {
|
|
35
|
+
scatterDataSet.setScatterShape(BridgeUtils.parseScatterShape(config["scatterShape"].stringValue))
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if config["scatterShapeHoleColor"].int != nil {
|
|
39
|
+
scatterDataSet.scatterShapeHoleColor = RCTConvert.uiColor(config["scatterShapeHoleColor"].intValue);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if config["scatterShapeHoleRadius"].float != nil {
|
|
43
|
+
scatterDataSet.scatterShapeHoleRadius = CGFloat(config["scatterShapeHoleRadius"].floatValue)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
override func createEntry(_ values: [JSON], index: Int) -> ChartDataEntry {
|
|
49
|
+
var entry: ChartDataEntry;
|
|
50
|
+
|
|
51
|
+
var x = Double(index);
|
|
52
|
+
let value = values[index];
|
|
53
|
+
|
|
54
|
+
if value.dictionary != nil {
|
|
55
|
+
let dict = value;
|
|
56
|
+
|
|
57
|
+
if dict["x"].double != nil {
|
|
58
|
+
x = Double((dict["x"].doubleValue));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if dict["y"].number != nil {
|
|
62
|
+
entry = ChartDataEntry(x: x, y: dict["y"].doubleValue, data: dict as AnyObject?);
|
|
63
|
+
} else {
|
|
64
|
+
fatalError("invalid data " + values.description);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
} else if value.double != nil {
|
|
69
|
+
entry = ChartDataEntry(x: x, y: value.doubleValue);
|
|
70
|
+
} else {
|
|
71
|
+
fatalError("invalid data " + values.description);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return entry;
|
|
75
|
+
}
|
|
76
|
+
}
|