@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,41 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNHorizontalBarChartView: RNBarChartViewBase {
|
|
9
|
+
|
|
10
|
+
let _chart: HorizontalBarChartView
|
|
11
|
+
let _dataExtract : BarDataExtract
|
|
12
|
+
|
|
13
|
+
override var chart: HorizontalBarChartView {
|
|
14
|
+
return _chart
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override var dataExtract: DataExtract {
|
|
18
|
+
return _dataExtract
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
22
|
+
|
|
23
|
+
self._chart = HorizontalBarChartView(frame: frame)
|
|
24
|
+
self._dataExtract = BarDataExtract()
|
|
25
|
+
|
|
26
|
+
super.init(frame: frame)
|
|
27
|
+
|
|
28
|
+
self._chart.delegate = self
|
|
29
|
+
self.addSubview(_chart)
|
|
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
|
+
|
|
38
|
+
required init?(coder aDecoder: NSCoder) {
|
|
39
|
+
fatalError("init(coder:) has not been implemented")
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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 BubbleDataExtract : DataExtract {
|
|
11
|
+
override func createData() -> ChartData {
|
|
12
|
+
return BubbleChartData();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override func createDataSet(_ entries: [ChartDataEntry], label: String) -> ChartDataSetProtocol {
|
|
16
|
+
return BubbleChartDataSet(entries: entries, label: label)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override func dataSetConfig(_ dataSet: ChartDataSetProtocol, config: JSON) {
|
|
20
|
+
let bubbleDataSet = dataSet as! BubbleChartDataSet;
|
|
21
|
+
|
|
22
|
+
ChartDataSetConfigUtils.commonConfig(bubbleDataSet, config: config);
|
|
23
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(bubbleDataSet, config: config)
|
|
24
|
+
|
|
25
|
+
// BubbleDataSet only config
|
|
26
|
+
if config["highlightCircleWidth"].float != nil {
|
|
27
|
+
bubbleDataSet.highlightCircleWidth = CGFloat(config["highlightCircleWidth"].floatValue)
|
|
28
|
+
}
|
|
29
|
+
if config["normalizeSizeEnabled"].bool != nil {
|
|
30
|
+
bubbleDataSet.normalizeSizeEnabled = config["normalizeSizeEnabled"].boolValue
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override func createEntry(_ values: [JSON], index: Int) -> ChartDataEntry {
|
|
35
|
+
var entry: BubbleChartDataEntry;
|
|
36
|
+
|
|
37
|
+
var x = Double(index);
|
|
38
|
+
|
|
39
|
+
let item = values[index];
|
|
40
|
+
|
|
41
|
+
if item.dictionary != nil {
|
|
42
|
+
let dict = item;
|
|
43
|
+
|
|
44
|
+
if dict["x"].double != nil {
|
|
45
|
+
x = Double((dict["x"].doubleValue));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if dict["y"].double != nil && dict["size"].float != nil {
|
|
49
|
+
entry = BubbleChartDataEntry(x: x, y: dict["y"].doubleValue,
|
|
50
|
+
size: CGFloat(dict["size"].floatValue), data: dict as AnyObject?);
|
|
51
|
+
} else {
|
|
52
|
+
fatalError("invalid data " + values.description);
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
fatalError("invalid data " + values.description);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return entry;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Created by xudong wu on 23/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
@objc(RNBubbleChartManager)
|
|
8
|
+
@objcMembers
|
|
9
|
+
open class RNBubbleChartManager: RCTViewManager, RNBarLineChartBaseManager {
|
|
10
|
+
var _bridge: RCTBridge? {get{return self.bridge}}
|
|
11
|
+
|
|
12
|
+
override open func view() -> UIView! {
|
|
13
|
+
let ins = RNBubbleChartView()
|
|
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
|
+
|
|
7
|
+
#import "RNChartManagerBridge.h"
|
|
8
|
+
#import "RNYAxisChartManagerBridge.h"
|
|
9
|
+
#import "RNBarLineChartManagerBridge.h"
|
|
10
|
+
|
|
11
|
+
@interface RCT_EXTERN_MODULE(RNBubbleChartManager, RCTViewManager)
|
|
12
|
+
|
|
13
|
+
EXPORT_BAR_LINE_CHART_BASE_PROPERTIES
|
|
14
|
+
|
|
15
|
+
@end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNBubbleChartView: RNBarLineChartViewBase {
|
|
9
|
+
let _chart: BubbleChartView
|
|
10
|
+
let _dataExtract : BubbleDataExtract
|
|
11
|
+
|
|
12
|
+
override var chart: BubbleChartView {
|
|
13
|
+
return _chart
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
override var dataExtract: DataExtract {
|
|
17
|
+
return _dataExtract
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
22
|
+
|
|
23
|
+
self._chart = BubbleChartView(frame: frame)
|
|
24
|
+
self._dataExtract = BubbleDataExtract()
|
|
25
|
+
|
|
26
|
+
super.init(frame: frame)
|
|
27
|
+
|
|
28
|
+
self._chart.delegate = self
|
|
29
|
+
self.addSubview(_chart)
|
|
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
|
+
required public init?(coder aDecoder: NSCoder) {
|
|
37
|
+
fatalError("init(coder:) has not been implemented")
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Created by xudong wu on 02/03/2017.
|
|
2
|
+
// Copyright © 2017 wuxudong. All rights reserved.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import Foundation
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
import DGCharts
|
|
8
|
+
|
|
9
|
+
class CandleDataExtract : DataExtract {
|
|
10
|
+
override func createData() -> ChartData {
|
|
11
|
+
return CandleChartData();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
override func createDataSet(_ entries: [ChartDataEntry], label: String) -> ChartDataSetProtocol {
|
|
15
|
+
return CandleChartDataSet(entries: entries, label: label)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override func dataSetConfig(_ dataSet: ChartDataSetProtocol, config: JSON) {
|
|
19
|
+
let candleDataSet = dataSet as! CandleChartDataSet
|
|
20
|
+
|
|
21
|
+
ChartDataSetConfigUtils.commonConfig(candleDataSet, config: config);
|
|
22
|
+
ChartDataSetConfigUtils.commonBarLineScatterCandleBubbleConfig(candleDataSet, config: config);
|
|
23
|
+
ChartDataSetConfigUtils.commonLineScatterCandleRadarConfig(candleDataSet, config: config);
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// CandleDataSet only config
|
|
27
|
+
if config["barSpace"].float != nil {
|
|
28
|
+
candleDataSet.barSpace = CGFloat(config["barSpace"].floatValue)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
if config["shadowWidth"].float != nil {
|
|
33
|
+
candleDataSet.shadowWidth = CGFloat(config["shadowWidth"].floatValue)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if config["shadowColor"].int != nil {
|
|
37
|
+
candleDataSet.shadowColor = RCTConvert.uiColor(config["shadowColor"].intValue)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if config["shadowColorSameAsCandle"].bool != nil {
|
|
41
|
+
candleDataSet.shadowColorSameAsCandle = config["shadowColorSameAsCandle"].boolValue;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if config["neutralColor"].int != nil {
|
|
45
|
+
candleDataSet.neutralColor = RCTConvert.uiColor(config["neutralColor"].intValue)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if config["decreasingColor"].int != nil {
|
|
50
|
+
candleDataSet.decreasingColor = RCTConvert.uiColor(config["decreasingColor"].intValue)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if config["increasingColor"].int != nil {
|
|
54
|
+
candleDataSet.increasingColor = RCTConvert.uiColor(config["increasingColor"].intValue)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
if config["decreasingPaintStyle"].string != nil {
|
|
59
|
+
if config["decreasingPaintStyle"].stringValue.lowercased() == "stroke" {
|
|
60
|
+
candleDataSet.decreasingFilled = false;
|
|
61
|
+
} else {
|
|
62
|
+
candleDataSet.decreasingFilled = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
if config["increasingPaintStyle"].string != nil {
|
|
68
|
+
if config["increasingPaintStyle"].stringValue.lowercased() == "fill" {
|
|
69
|
+
candleDataSet.increasingFilled = true;
|
|
70
|
+
} else {
|
|
71
|
+
candleDataSet.increasingFilled = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
override func createEntry(_ values: [JSON], index: Int) -> CandleChartDataEntry {
|
|
77
|
+
var entry: CandleChartDataEntry;
|
|
78
|
+
|
|
79
|
+
var x = Double(index);
|
|
80
|
+
let value = values[index];
|
|
81
|
+
|
|
82
|
+
if value["x"].double != nil {
|
|
83
|
+
x = Double(value["x"].doubleValue);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if value["shadowH"].double == nil || value["shadowL"].double == nil || value["open"].number == nil || value["close"].number == nil {
|
|
87
|
+
fatalError("invalid data " + values.description);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
entry = CandleChartDataEntry(x: x,
|
|
92
|
+
shadowH: value["shadowH"].doubleValue,
|
|
93
|
+
shadowL: value["shadowL"].doubleValue,
|
|
94
|
+
open: value["open"].doubleValue,
|
|
95
|
+
close: value["close"].doubleValue,
|
|
96
|
+
data: value as AnyObject?)
|
|
97
|
+
|
|
98
|
+
return entry;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Created by xudong wu on 23/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
@objc(RNCandleStickChartManager)
|
|
8
|
+
@objcMembers
|
|
9
|
+
open class RNCandleStickChartManager: RCTViewManager, RNBarLineChartBaseManager {
|
|
10
|
+
var _bridge: RCTBridge? {get{return self.bridge}}
|
|
11
|
+
|
|
12
|
+
override open func view() -> UIView! {
|
|
13
|
+
let ins = RNCandleStickChartView()
|
|
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,16 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright © 2017 wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "React/RCTViewManager.h"
|
|
6
|
+
#import "React/RCTBridgeModule.h"
|
|
7
|
+
#import "RNChartManagerBridge.h"
|
|
8
|
+
#import "RNYAxisChartManagerBridge.h"
|
|
9
|
+
#import "RNBarLineChartManagerBridge.h"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@interface RCT_EXTERN_MODULE(RNCandleStickChartManager, RCTViewManager)
|
|
13
|
+
|
|
14
|
+
EXPORT_BAR_LINE_CHART_BASE_PROPERTIES
|
|
15
|
+
|
|
16
|
+
@end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNCandleStickChartView: RNBarLineChartViewBase {
|
|
9
|
+
|
|
10
|
+
let _chart: CandleStickChartView;
|
|
11
|
+
let _dataExtract : CandleDataExtract;
|
|
12
|
+
|
|
13
|
+
override var chart: ChartViewBase {
|
|
14
|
+
return _chart
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override var dataExtract: DataExtract {
|
|
18
|
+
return _dataExtract
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
23
|
+
|
|
24
|
+
self._chart = CandleStickChartView(frame: frame)
|
|
25
|
+
self._dataExtract = CandleDataExtract()
|
|
26
|
+
|
|
27
|
+
super.init(frame: frame);
|
|
28
|
+
|
|
29
|
+
self._chart.delegate = self
|
|
30
|
+
self.addSubview(_chart);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override func layoutSubviews() {
|
|
34
|
+
super.layoutSubviews()
|
|
35
|
+
_chart.frame = self.bounds // Adjust the chart's frame to fill the entire component's bounds
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
required init?(coder aDecoder: NSCoder) {
|
|
39
|
+
fatalError("init(coder:) has not been implemented")
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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 CombinedDataExtract : DataExtract {
|
|
11
|
+
let lineDataExtract = LineDataExtract()
|
|
12
|
+
let barDataExtract = BarDataExtract()
|
|
13
|
+
let scatterDataExtract = ScatterDataExtract()
|
|
14
|
+
let candleDataExtract = CandleDataExtract()
|
|
15
|
+
let bubbleDataExtract = BubbleDataExtract()
|
|
16
|
+
|
|
17
|
+
override func extract(_ data: JSON) -> ChartData? {
|
|
18
|
+
let chartData = CombinedChartData();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if data["lineData"] != JSON.null {
|
|
22
|
+
if let lineData = lineDataExtract.extract(data["lineData"]) as? LineChartData {
|
|
23
|
+
chartData.lineData = lineData
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if data["barData"] != JSON.null {
|
|
28
|
+
if let barData = barDataExtract.extract(data["barData"]) as? BarChartData {
|
|
29
|
+
chartData.barData = barData
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
if data["scatterData"] != JSON.null {
|
|
35
|
+
if let scatterData = scatterDataExtract.extract(data["scatterData"]) as? ScatterChartData {
|
|
36
|
+
chartData.scatterData = scatterData
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if data["candleData"] != JSON.null {
|
|
42
|
+
if let candleData = candleDataExtract.extract(data["candleData"]) as? CandleChartData {
|
|
43
|
+
chartData.candleData = candleData
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if data["bubbleData"] != JSON.null {
|
|
49
|
+
if let bubbleData = bubbleDataExtract.extract(data["bubbleData"]) as? BubbleChartData {
|
|
50
|
+
chartData.bubbleData = bubbleData
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return chartData
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
override func createEntries(_ values: [JSON]) -> [ChartDataEntry] {
|
|
58
|
+
fatalError("not support")
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
override func createData() -> ChartData {
|
|
63
|
+
fatalError("not support")
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
override func createDataSet(_ entries: [ChartDataEntry], label: String) -> ChartDataSetProtocol {
|
|
67
|
+
fatalError("not support")
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
override func dataSetConfig(_ dataSet: ChartDataSetProtocol, config: JSON) {
|
|
71
|
+
fatalError("not support")
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
override func createEntry(_ values: [JSON], index: Int) -> ChartDataEntry {
|
|
75
|
+
fatalError("not support")
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Created by xudong wu on 23/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import UIKit
|
|
6
|
+
|
|
7
|
+
@objc(RNCombinedChartManager)
|
|
8
|
+
@objcMembers
|
|
9
|
+
open class RNCombinedChartManager: RCTViewManager, RNBarLineChartBaseManager {
|
|
10
|
+
var _bridge: RCTBridge? {get{return self.bridge}}
|
|
11
|
+
|
|
12
|
+
override open func view() -> UIView! {
|
|
13
|
+
let ins = RNCombinedChartView()
|
|
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,19 @@
|
|
|
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
|
+
#import "RNBarLineChartManagerBridge.h"
|
|
9
|
+
|
|
10
|
+
@interface RCT_EXTERN_MODULE(RNCombinedChartManager, RCTViewManager)
|
|
11
|
+
|
|
12
|
+
EXPORT_BAR_LINE_CHART_BASE_PROPERTIES
|
|
13
|
+
RCT_EXPORT_VIEW_PROPERTY(drawOrder, NSArray)
|
|
14
|
+
RCT_EXPORT_VIEW_PROPERTY(drawValueAboveBar, BOOL)
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(drawBarShadow, BOOL)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(highlightFullBarEnabled, BOOL)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Created by xudong wu on 24/02/2017.
|
|
2
|
+
// Copyright wuxudong
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import DGCharts
|
|
6
|
+
import SwiftyJSON
|
|
7
|
+
|
|
8
|
+
class RNCombinedChartView: RNBarLineChartViewBase {
|
|
9
|
+
|
|
10
|
+
let _chart: CombinedChartView;
|
|
11
|
+
let _dataExtract : CombinedDataExtract;
|
|
12
|
+
|
|
13
|
+
override var chart: CombinedChartView {
|
|
14
|
+
return _chart
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override var dataExtract: DataExtract {
|
|
18
|
+
return _dataExtract
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override init(frame: CoreGraphics.CGRect) {
|
|
22
|
+
|
|
23
|
+
self._chart = CombinedChartView(frame: frame)
|
|
24
|
+
self._dataExtract = CombinedDataExtract()
|
|
25
|
+
|
|
26
|
+
super.init(frame: frame)
|
|
27
|
+
|
|
28
|
+
self._chart.delegate = self
|
|
29
|
+
self.addSubview(_chart)
|
|
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 setDrawOrder(_ config: NSArray) {
|
|
42
|
+
var array : [Int] = []
|
|
43
|
+
for object in RCTConvert.nsStringArray(config) {
|
|
44
|
+
array.append(BridgeUtils.parseDrawOrder(object).rawValue)
|
|
45
|
+
}
|
|
46
|
+
_chart.drawOrder = array
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
func setDrawValueAboveBar(_ enabled: Bool) {
|
|
50
|
+
_chart.drawValueAboveBarEnabled = enabled
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
func setDrawBarShadow(_ enabled: Bool) {
|
|
54
|
+
_chart.drawBarShadowEnabled = enabled
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
func setHighlightFullBarEnabled(_ enabled: Bool) {
|
|
58
|
+
_chart.highlightFullBarEnabled = enabled
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//
|
|
2
|
+
// DateFormatter.swift
|
|
3
|
+
// Aquasafe
|
|
4
|
+
//
|
|
5
|
+
// Created by Douglas Nassif Roma Junior on 06/09/17.
|
|
6
|
+
// Copyright © 2017 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
import DGCharts
|
|
11
|
+
|
|
12
|
+
open class ChartDateFormatter: NSObject, ValueFormatter, AxisValueFormatter {
|
|
13
|
+
|
|
14
|
+
open var dateFormatter = DateFormatter();
|
|
15
|
+
|
|
16
|
+
public override init() {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public init(pattern: String?) {
|
|
21
|
+
self.dateFormatter.dateFormat = pattern;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
open func stringForValue(_ value: Double, axis: AxisBase?) -> String {
|
|
25
|
+
return format(value)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
open func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
|
|
29
|
+
return format(value)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
fileprivate func format(_ value: Double) -> String
|
|
33
|
+
{
|
|
34
|
+
let date = Date(timeIntervalSince1970: value / 1000.0);
|
|
35
|
+
return self.dateFormatter.string(from: date);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|