From 09981096edbd7978e3749f5cbf65dc544a76fea2 Mon Sep 17 00:00:00 2001 From: Maxim Toyberman Date: Mon, 21 Oct 2024 15:18:07 +0300 Subject: [PATCH 1/4] Make iOS graphs work on New Arch --- ios/ReactNativeCharts/line/RNLineChartView.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ios/ReactNativeCharts/line/RNLineChartView.swift b/ios/ReactNativeCharts/line/RNLineChartView.swift index 2f7bf9155..78f7ab32f 100644 --- a/ios/ReactNativeCharts/line/RNLineChartView.swift +++ b/ios/ReactNativeCharts/line/RNLineChartView.swift @@ -29,6 +29,11 @@ class RNLineChartView: RNBarLineChartViewBase { } + override func layoutSubviews() { + super.layoutSubviews() + _chart.frame = self.bounds // Adjust the chart's frame to fill the entire component's bounds + } + required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } From bd1c77f0b20acec57fb1f7f372cf7fe4e11b4205 Mon Sep 17 00:00:00 2001 From: Maxim Toyberman Date: Mon, 28 Oct 2024 16:51:53 +0200 Subject: [PATCH 2/4] Update RNBarLineChartBaseManager.swift --- .../RNBarLineChartBaseManager.swift | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift index 387b8b98a..bcd6d99e8 100644 --- a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift +++ b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift @@ -13,6 +13,9 @@ protocol RNBarLineChartBaseManager { extension RNBarLineChartBaseManager { func _moveViewToX(_ reactTag: NSNumber, xValue: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).moveViewToX(xValue.doubleValue); } @@ -20,6 +23,11 @@ extension RNBarLineChartBaseManager { func _moveViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + if (viewRegistry?.count == 0) { + return + } + let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).moveViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } @@ -27,6 +35,9 @@ extension RNBarLineChartBaseManager { func _moveViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).moveViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } @@ -34,6 +45,9 @@ extension RNBarLineChartBaseManager { func _centerViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).centerViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } @@ -41,6 +55,9 @@ extension RNBarLineChartBaseManager { func _centerViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).centerViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } @@ -48,6 +65,9 @@ extension RNBarLineChartBaseManager { func _fitScreen(_ reactTag: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).fitScreen(); } @@ -55,6 +75,9 @@ extension RNBarLineChartBaseManager { func _highlights(_ reactTag: NSNumber, config: NSArray) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; (view.chart as! BarLineChartViewBase).highlightValues(HighlightUtils.getHighlights(config)); } @@ -62,6 +85,9 @@ extension RNBarLineChartBaseManager { func _setDataAndLockIndex(_ reactTag: NSNumber, data: NSDictionary) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + if (viewRegistry?.count == 0) { + return + } let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; view.setDataAndLockIndex(data); } From f9b8e593e75864e9952158808bce0187edeaf210 Mon Sep 17 00:00:00 2001 From: Maxim Toyberman Date: Tue, 5 Nov 2024 09:24:06 +0200 Subject: [PATCH 3/4] Fix addUiToBlock --- .../RNBarLineChartBaseManager.swift | 99 +++++++++++-------- 1 file changed, 58 insertions(+), 41 deletions(-) diff --git a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift index bcd6d99e8..529733261 100644 --- a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift +++ b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift @@ -13,83 +13,100 @@ protocol RNBarLineChartBaseManager { extension RNBarLineChartBaseManager { func _moveViewToX(_ reactTag: NSNumber, xValue: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).moveViewToX(xValue.doubleValue); + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewToX(xValue.doubleValue); } } func _moveViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).moveViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } } func _moveViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).moveViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } } func _centerViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).centerViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.centerViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } } func _centerViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).centerViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.centerViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } } func _fitScreen(_ reactTag: NSNumber) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).fitScreen(); + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.fitScreen(); } } func _highlights(_ reactTag: NSNumber, config: NSArray) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - (view.chart as! BarLineChartViewBase).highlightValues(HighlightUtils.getHighlights(config)); + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + barLineChart.highlightValues(HighlightUtils.getHighlights(config)); } } func _setDataAndLockIndex(_ reactTag: NSNumber, data: NSDictionary) { _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - if (viewRegistry?.count == 0) { - return - } - let view: RNBarLineChartViewBase = viewRegistry![reactTag] as! RNBarLineChartViewBase; - view.setDataAndLockIndex(data); + guard + let view = viewRegistry?[reactTag] as? RNBarLineChartViewBase + else { + return + } + view.setDataAndLockIndex(data); } } } From 7cab2594732e227780c49ede4a53dcd392d7cc8b Mon Sep 17 00:00:00 2001 From: Maxim Toyberman Date: Tue, 5 Nov 2024 09:26:13 +0200 Subject: [PATCH 4/4] Update RNBarLineChartBaseManager.swift --- .../RNBarLineChartBaseManager.swift | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift index 529733261..e0a5b8d41 100644 --- a/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift +++ b/ios/ReactNativeCharts/RNBarLineChartBaseManager.swift @@ -7,108 +7,108 @@ import Foundation import DGCharts protocol RNBarLineChartBaseManager { - var _bridge : RCTBridge? {get} + var _bridge : RCTBridge? {get} } extension RNBarLineChartBaseManager { - func _moveViewToX(_ reactTag: NSNumber, xValue: NSNumber) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + func _moveViewToX(_ reactTag: NSNumber, xValue: NSNumber) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewToX(xValue.doubleValue); } - - barLineChart.moveViewToX(xValue.doubleValue); } - } - - func _moveViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _moveViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } - - barLineChart.moveViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } - } - - func _moveViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _moveViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.moveViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } - - barLineChart.moveViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } - } - - func _centerViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _centerViewTo(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.centerViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } - - barLineChart.centerViewTo(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String)); } - } - - func _centerViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _centerViewToAnimated(_ reactTag: NSNumber, xValue: NSNumber, yValue: NSNumber, axisDependency: NSString, duration: NSNumber) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.centerViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } - - barLineChart.centerViewToAnimated(xValue: xValue.doubleValue, yValue: yValue.doubleValue, axis: BridgeUtils.parseAxisDependency(axisDependency as String), duration: duration.doubleValue / 1000.0); } - } - - func _fitScreen(_ reactTag: NSNumber) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _fitScreen(_ reactTag: NSNumber) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + + barLineChart.fitScreen(); } - - barLineChart.fitScreen(); } - } - - func _highlights(_ reactTag: NSNumber, config: NSArray) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, - let barLineChart = view.chart as? BarLineChartViewBase - else { - return + + func _highlights(_ reactTag: NSNumber, config: NSArray) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + guard let view: RNBarLineChartViewBase = viewRegistry?[reactTag] as? RNBarLineChartViewBase, + let barLineChart = view.chart as? BarLineChartViewBase + else { + return + } + barLineChart.highlightValues(HighlightUtils.getHighlights(config)); } - barLineChart.highlightValues(HighlightUtils.getHighlights(config)); } - } - - func _setDataAndLockIndex(_ reactTag: NSNumber, data: NSDictionary) { - _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in - guard - let view = viewRegistry?[reactTag] as? RNBarLineChartViewBase - else { - return + + func _setDataAndLockIndex(_ reactTag: NSNumber, data: NSDictionary) { + _bridge?.uiManager.addUIBlock { (uiManager: RCTUIManager?, viewRegistry:[NSNumber : UIView]?) in + guard + let view = viewRegistry?[reactTag] as? RNBarLineChartViewBase + else { + return + } + view.setDataAndLockIndex(data); } - view.setDataAndLockIndex(data); } - } }