From d869e4186f63d30a7d3e35f29f125cc00c8c0d9c Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Fri, 22 May 2020 15:45:07 +0200 Subject: [PATCH 01/40] Replace the old with a more sleek and flexible code architecture --- Sources/SwiftUICharts/BarChart/BarChart.swift | 7 + .../SwiftUICharts/BarChart/BarChartCell.swift | 44 --- .../SwiftUICharts/BarChart/BarChartRow.swift | 50 --- .../SwiftUICharts/BarChart/BarChartView.swift | 148 -------- .../SwiftUICharts/BarChart/LabelView.swift | 46 --- .../SwiftUICharts/BarChart/TitleLabel.swift | 7 + .../Base/Chart/AnyChartType.swift | 19 + .../SwiftUICharts/Base/Chart/ChartType.swift | 11 + .../Base/Chart/ChartTypeConfiguration.swift | 5 + Sources/SwiftUICharts/Base/ChartView.swift | 15 + .../Base/Extensions/Color+Extension.swift | 21 ++ .../Base/Label/AnyChartLabel.swift | 19 + .../SwiftUICharts/Base/Label/ChartLabel.swift | 11 + .../Base/Label/ChartLabelConfiguration.swift | 7 + .../SwiftUICharts/Base/Style/ChartStyle.swift | 11 + .../Base/Style/ColorGradient.swift | 15 + Sources/SwiftUICharts/Base/Style/Colors.swift | 7 + .../Environment/Environment.swift | 30 ++ .../Environment/EnvironmentKeys.swift | 15 + Sources/SwiftUICharts/Helpers.swift | 278 -------------- .../LineChart/IndicatorPoint.swift | 28 -- Sources/SwiftUICharts/LineChart/Legend.swift | 99 ----- Sources/SwiftUICharts/LineChart/Line.swift | 107 ------ .../LineChart/LineChartView.swift | 148 -------- .../SwiftUICharts/LineChart/LineView.swift | 127 ------- .../LineChart/MagnifierRect.swift | 33 -- .../LineChart/MultiLineChartView.swift | 163 -------- .../LineChart/Path+QuadCurve.swift | 353 ------------------ .../SwiftUICharts/PieChart/PieChartCell.swift | 65 ---- .../SwiftUICharts/PieChart/PieChartRow.swift | 46 --- .../SwiftUICharts/PieChart/PieChartView.swift | 64 ---- 31 files changed, 200 insertions(+), 1799 deletions(-) create mode 100644 Sources/SwiftUICharts/BarChart/BarChart.swift delete mode 100644 Sources/SwiftUICharts/BarChart/BarChartCell.swift delete mode 100644 Sources/SwiftUICharts/BarChart/BarChartRow.swift delete mode 100644 Sources/SwiftUICharts/BarChart/BarChartView.swift delete mode 100644 Sources/SwiftUICharts/BarChart/LabelView.swift create mode 100644 Sources/SwiftUICharts/BarChart/TitleLabel.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/AnyChartType.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartType.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift create mode 100644 Sources/SwiftUICharts/Base/ChartView.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift create mode 100644 Sources/SwiftUICharts/Base/Label/ChartLabel.swift create mode 100644 Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift create mode 100644 Sources/SwiftUICharts/Base/Style/ChartStyle.swift create mode 100644 Sources/SwiftUICharts/Base/Style/ColorGradient.swift create mode 100644 Sources/SwiftUICharts/Base/Style/Colors.swift create mode 100644 Sources/SwiftUICharts/Environment/Environment.swift create mode 100644 Sources/SwiftUICharts/Environment/EnvironmentKeys.swift delete mode 100644 Sources/SwiftUICharts/Helpers.swift delete mode 100644 Sources/SwiftUICharts/LineChart/IndicatorPoint.swift delete mode 100644 Sources/SwiftUICharts/LineChart/Legend.swift delete mode 100644 Sources/SwiftUICharts/LineChart/Line.swift delete mode 100644 Sources/SwiftUICharts/LineChart/LineChartView.swift delete mode 100644 Sources/SwiftUICharts/LineChart/LineView.swift delete mode 100644 Sources/SwiftUICharts/LineChart/MagnifierRect.swift delete mode 100644 Sources/SwiftUICharts/LineChart/MultiLineChartView.swift delete mode 100644 Sources/SwiftUICharts/LineChart/Path+QuadCurve.swift delete mode 100644 Sources/SwiftUICharts/PieChart/PieChartCell.swift delete mode 100644 Sources/SwiftUICharts/PieChart/PieChartRow.swift delete mode 100644 Sources/SwiftUICharts/PieChart/PieChartView.swift diff --git a/Sources/SwiftUICharts/BarChart/BarChart.swift b/Sources/SwiftUICharts/BarChart/BarChart.swift new file mode 100644 index 00000000..c7a271b6 --- /dev/null +++ b/Sources/SwiftUICharts/BarChart/BarChart.swift @@ -0,0 +1,7 @@ +import SwiftUI + +public struct BarChart: ChartType { + public func makeChart(configuration: Self.Configuration) -> some View { + return Text("AAA") + } +} diff --git a/Sources/SwiftUICharts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/BarChart/BarChartCell.swift deleted file mode 100644 index a3500b7f..00000000 --- a/Sources/SwiftUICharts/BarChart/BarChartCell.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// ChartCell.swift -// ChartView -// -// Created by András Samu on 2019. 06. 12.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct BarChartCell : View { - var value: Double - var index: Int = 0 - var width: Float - var numberOfDataPoints: Int - var cellWidth: Double { - return Double(width)/(Double(numberOfDataPoints) * 1.5) - } - var accentColor: Color - var gradient: GradientColor? - - @State var scaleValue: Double = 0 - @Binding var touchLocation: CGFloat - public var body: some View { - ZStack { - RoundedRectangle(cornerRadius: 4) - .fill(LinearGradient(gradient: gradient?.getGradient() ?? GradientColor(start: accentColor, end: accentColor).getGradient(), startPoint: .bottom, endPoint: .top)) - } - .frame(width: CGFloat(self.cellWidth)) - .scaleEffect(CGSize(width: 1, height: self.scaleValue), anchor: .bottom) - .onAppear(){ - self.scaleValue = self.value - } - .animation(Animation.spring().delay(self.touchLocation < 0 ? Double(self.index) * 0.04 : 0)) - } -} - -#if DEBUG -struct ChartCell_Previews : PreviewProvider { - static var previews: some View { - BarChartCell(value: Double(0.75), width: 320, numberOfDataPoints: 12, accentColor: Colors.OrangeStart, gradient: nil, touchLocation: .constant(-1)) - } -} -#endif diff --git a/Sources/SwiftUICharts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/BarChart/BarChartRow.swift deleted file mode 100644 index 59b6a6d5..00000000 --- a/Sources/SwiftUICharts/BarChart/BarChartRow.swift +++ /dev/null @@ -1,50 +0,0 @@ -// -// ChartRow.swift -// ChartView -// -// Created by András Samu on 2019. 06. 12.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct BarChartRow : View { - var data: [Double] - var accentColor: Color - var gradient: GradientColor? - var maxValue: Double { - data.max() ?? 0 - } - @Binding var touchLocation: CGFloat - public var body: some View { - GeometryReader { geometry in - HStack(alignment: .bottom, spacing: (geometry.frame(in: .local).width-22)/CGFloat(self.data.count * 3)){ - ForEach(0.. CGFloat(i)/CGFloat(self.data.count) && self.touchLocation < CGFloat(i+1)/CGFloat(self.data.count) ? CGSize(width: 1.4, height: 1.1) : CGSize(width: 1, height: 1), anchor: .bottom) - .animation(.spring()) - - } - } - .padding([.top, .leading, .trailing], 10) - } - } - - func normalizedValue(index: Int) -> Double { - return Double(self.data[index])/Double(self.maxValue) - } -} - -#if DEBUG -struct ChartRow_Previews : PreviewProvider { - static var previews: some View { - BarChartRow(data: [8,23,54,32,12,37,7], accentColor: Colors.OrangeStart, touchLocation: .constant(-1)) - } -} -#endif diff --git a/Sources/SwiftUICharts/BarChart/BarChartView.swift b/Sources/SwiftUICharts/BarChart/BarChartView.swift deleted file mode 100644 index 541d8b5f..00000000 --- a/Sources/SwiftUICharts/BarChart/BarChartView.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// ChartView.swift -// ChartView -// -// Created by András Samu on 2019. 06. 12.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct BarChartView : View { - @Environment(\.colorScheme) var colorScheme: ColorScheme - private var data: ChartData - public var title: String - public var legend: String? - public var style: ChartStyle - public var darkModeStyle: ChartStyle - public var formSize:CGSize - public var dropShadow: Bool - public var cornerImage: Image - public var valueSpecifier:String - - @State private var touchLocation: CGFloat = -1.0 - @State private var showValue: Bool = false - @State private var showLabelValue: Bool = false - @State private var currentValue: Double = 0 { - didSet{ - if(oldValue != self.currentValue && self.showValue) { - HapticFeedback.playSelection() - } - } - } - var isFullWidth:Bool { - return self.formSize == ChartForm.large - } - public init(data:ChartData, title: String, legend: String? = nil, style: ChartStyle = Styles.barChartStyleOrangeLight, form: CGSize? = ChartForm.medium, dropShadow: Bool? = true, cornerImage:Image? = Image(systemName: "waveform.path.ecg"), valueSpecifier: String? = "%.1f"){ - self.data = data - self.title = title - self.legend = legend - self.style = style - self.darkModeStyle = style.darkModeStyle != nil ? style.darkModeStyle! : Styles.barChartStyleOrangeDark - self.formSize = form! - self.dropShadow = dropShadow! - self.cornerImage = cornerImage! - self.valueSpecifier = valueSpecifier! - } - - public var body: some View { - ZStack{ - Rectangle() - .fill(self.colorScheme == .dark ? self.darkModeStyle.backgroundColor : self.style.backgroundColor) - .cornerRadius(20) - .shadow(color: self.style.dropShadowColor, radius: self.dropShadow ? 8 : 0) - VStack(alignment: .leading){ - HStack{ - if(!showValue){ - Text(self.title) - .font(.headline) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.textColor : self.style.textColor) - }else{ - Text("\(self.currentValue, specifier: self.valueSpecifier)") - .font(.headline) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.textColor : self.style.textColor) - } - if(self.formSize == ChartForm.large && self.legend != nil && !showValue) { - Text(self.legend!) - .font(.callout) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.accentColor : self.style.accentColor) - .transition(.opacity) - .animation(.easeOut) - } - Spacer() - self.cornerImage - .imageScale(.large) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) - }.padding() - BarChartRow(data: data.points.map{$0.1}, - accentColor: self.colorScheme == .dark ? self.darkModeStyle.accentColor : self.style.accentColor, - gradient: self.colorScheme == .dark ? self.darkModeStyle.gradientColor : self.style.gradientColor, - touchLocation: self.$touchLocation) - if self.legend != nil && self.formSize == ChartForm.medium && !self.showLabelValue{ - Text(self.legend!) - .font(.headline) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) - .padding() - }else if (self.data.valuesGiven && self.getCurrentValue() != nil) { - LabelView(arrowOffset: self.getArrowOffset(touchLocation: self.touchLocation), - title: .constant(self.getCurrentValue()!.0)) - .offset(x: self.getLabelViewOffset(touchLocation: self.touchLocation), y: -6) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) - } - - } - }.frame(minWidth:self.formSize.width, - maxWidth: self.isFullWidth ? .infinity : self.formSize.width, - minHeight:self.formSize.height, - maxHeight:self.formSize.height) - .gesture(DragGesture() - .onChanged({ value in - self.touchLocation = value.location.x/self.formSize.width - self.showValue = true - self.currentValue = self.getCurrentValue()?.1 ?? 0 - if(self.data.valuesGiven && self.formSize == ChartForm.medium) { - self.showLabelValue = true - } - }) - .onEnded({ value in - self.showValue = false - self.showLabelValue = false - self.touchLocation = -1 - }) - ) - .gesture(TapGesture() - ) - } - - func getArrowOffset(touchLocation:CGFloat) -> Binding { - let realLoc = (self.touchLocation * self.formSize.width) - 50 - if realLoc < 10 { - return .constant(realLoc - 10) - }else if realLoc > self.formSize.width-110 { - return .constant((self.formSize.width-110 - realLoc) * -1) - } else { - return .constant(0) - } - } - - func getLabelViewOffset(touchLocation:CGFloat) -> CGFloat { - return min(self.formSize.width-110,max(10,(self.touchLocation * self.formSize.width) - 50)) - } - - func getCurrentValue() -> (String,Double)? { - guard self.data.points.count > 0 else { return nil} - let index = max(0,min(self.data.points.count-1,Int(floor((self.touchLocation*self.formSize.width)/(self.formSize.width/CGFloat(self.data.points.count)))))) - return self.data.points[index] - } -} - -#if DEBUG -struct ChartView_Previews : PreviewProvider { - static var previews: some View { - BarChartView(data: TestData.values , - title: "Model 3 sales", - legend: "Quarterly", - valueSpecifier: "%.0f") - } -} -#endif diff --git a/Sources/SwiftUICharts/BarChart/LabelView.swift b/Sources/SwiftUICharts/BarChart/LabelView.swift deleted file mode 100644 index f17ae7be..00000000 --- a/Sources/SwiftUICharts/BarChart/LabelView.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// LabelView.swift -// BarChart -// -// Created by Samu András on 2020. 01. 08.. -// Copyright © 2020. Samu András. All rights reserved. -// - -import SwiftUI - -struct LabelView: View { - @Binding var arrowOffset: CGFloat - @Binding var title:String - var body: some View { - VStack{ - ArrowUp().fill(Color.white).frame(width: 20, height: 12, alignment: .center).shadow(color: Color.gray, radius: 8, x: 0, y: 0).offset(x: getArrowOffset(offset:self.arrowOffset), y: 12) - ZStack{ - RoundedRectangle(cornerRadius: 8).frame(width: 100, height: 32, alignment: .center).foregroundColor(Color.white).shadow(radius: 8) - Text(self.title).font(.caption).bold() - ArrowUp().fill(Color.white).frame(width: 20, height: 12, alignment: .center).zIndex(999).offset(x: getArrowOffset(offset:self.arrowOffset), y: -20) - - } - } - } - - func getArrowOffset(offset: CGFloat) -> CGFloat { - return max(-36,min(36, offset)) - } -} - -struct ArrowUp: Shape { - func path(in rect: CGRect) -> Path { - var path = Path() - path.move(to: CGPoint(x: 0, y: rect.height)) - path.addLine(to: CGPoint(x: rect.width/2, y: 0)) - path.addLine(to: CGPoint(x: rect.width, y: rect.height)) - path.closeSubpath() - return path - } -} - -struct LabelView_Previews: PreviewProvider { - static var previews: some View { - LabelView(arrowOffset: .constant(0), title: .constant("Tesla model 3")) - } -} diff --git a/Sources/SwiftUICharts/BarChart/TitleLabel.swift b/Sources/SwiftUICharts/BarChart/TitleLabel.swift new file mode 100644 index 00000000..c1962199 --- /dev/null +++ b/Sources/SwiftUICharts/BarChart/TitleLabel.swift @@ -0,0 +1,7 @@ +import SwiftUI + +public struct TitleLabel: ChartLabel { + public func makeLabel(configuration: Self.Configuration) -> some View { + return Text("AAA") + } +} diff --git a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift new file mode 100644 index 00000000..f5f97bd7 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift @@ -0,0 +1,19 @@ +import SwiftUI + +struct AnyChartType: ChartType { + private let chartMaker: (ChartType.Configuration) -> AnyView + + init(_ type: S) { + self.chartMaker = type.makeTypeErasedBody + } + + func makeChart(configuration: ChartType.Configuration) -> AnyView { + self.chartMaker(configuration) + } +} + +fileprivate extension ChartType { + func makeTypeErasedBody(configuration: ChartType.Configuration) -> AnyView { + AnyView(makeChart(configuration: configuration)) + } +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartType.swift b/Sources/SwiftUICharts/Base/Chart/ChartType.swift new file mode 100644 index 00000000..a432bae8 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartType.swift @@ -0,0 +1,11 @@ +import SwiftUI + +@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) +public protocol ChartType { + associatedtype Body : View + + func makeChart(configuration: Self.Configuration, style: Style) -> Self.Body + + typealias Configuration = ChartTypeConfiguration + typealias Style = ChartStyle +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift b/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift new file mode 100644 index 00000000..1dbf8d80 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift @@ -0,0 +1,5 @@ +import SwiftUI + +public struct ChartTypeConfiguration { + public let data: [CGFloat] +} diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift new file mode 100644 index 00000000..98353e9c --- /dev/null +++ b/Sources/SwiftUICharts/Base/ChartView.swift @@ -0,0 +1,15 @@ +// ChartView.swift +// Created by Samu András on 2020. 05. 22.. + +import SwiftUI + +public struct ChartView: View { + @Environment(\.chartType) private var chartType + @Environment(\.chartStyle) private var chartStyle + @Environment(\.title) private var title + + public var body: some View { + Text("aa") + } +} + diff --git a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift new file mode 100644 index 00000000..e8b24983 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift @@ -0,0 +1,21 @@ +import SwiftUI + +extension Color { + init(hexString: String) { + let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) + var int = UInt64() + Scanner(string: hex).scanHexInt64(&int) + let r, g, b: UInt64 + switch hex.count { + case 3: // RGB (12-bit) + (r, g, b) = ((int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) + case 6: // RGB (24-bit) + (r, g, b) = (int >> 16, int >> 8 & 0xFF, int & 0xFF) + case 8: // ARGB (32-bit) + (r, g, b) = (int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) + default: + (r, g, b) = (0, 0, 0) + } + self.init(red: Double(r) / 255, green: Double(g) / 255, blue: Double(b) / 255) + } +} diff --git a/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift b/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift new file mode 100644 index 00000000..7aaee0a0 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift @@ -0,0 +1,19 @@ +import SwiftUI + +struct AnyChartLabel: ChartLabel { + private let labelMaker: (ChartLabel.Configuration) -> AnyView + + init(_ label: S) { + self.labelMaker = label.makeTypeErasedBody + } + + func makeLabel(configuration: ChartLabel.Configuration) -> AnyView { + self.labelMaker(configuration) + } +} + +fileprivate extension ChartLabel { + func makeTypeErasedBody(configuration: ChartLabel.Configuration) -> AnyView { + AnyView(makeLabel(configuration: configuration)) + } +} diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift new file mode 100644 index 00000000..a3134e54 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -0,0 +1,11 @@ +import SwiftUI + +@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) +public protocol ChartLabel { + + associatedtype Body : View + + func makeLabel(configuration: Self.Configuration) -> Self.Body + + typealias Configuration = ChartLabelConfiguration +} diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift b/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift new file mode 100644 index 00000000..846126e8 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift @@ -0,0 +1,7 @@ +import SwiftUI + +public struct ChartLabelConfiguration { + public let font: Font + public let size: CGFloat + public let color: Color +} diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift new file mode 100644 index 00000000..b7474f8c --- /dev/null +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -0,0 +1,11 @@ +import SwiftUI + +public struct ChartStyle { + public let backgroundColor: Color + public let foregroundColor: ColorGradient + + public init(backgroundColor: Color, foregroundColor: ColorGradient) { + self.backgroundColor = backgroundColor + self.foregroundColor = foregroundColor + } +} diff --git a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift new file mode 100644 index 00000000..18a4ab20 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift @@ -0,0 +1,15 @@ +import SwiftUI + +public struct ColorGradient { + public let startColor: Color + public let endColor: Color + + public init (_ startColor: Color, _ endColor: Color) { + self.startColor = startColor + self.endColor = endColor + } + + public var gradient: Gradient { + return Gradient(colors: [startColor, endColor]) + } +} diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift new file mode 100644 index 00000000..5180d305 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -0,0 +1,7 @@ +import SwiftUI + +public enum ChartColors { + // Orange + static let orangeBright = Color(hexString: "#FF782C") + static let orangeDark = Color(hexString: "#EC2301") +} diff --git a/Sources/SwiftUICharts/Environment/Environment.swift b/Sources/SwiftUICharts/Environment/Environment.swift new file mode 100644 index 00000000..b90e9383 --- /dev/null +++ b/Sources/SwiftUICharts/Environment/Environment.swift @@ -0,0 +1,30 @@ +import SwiftUI + +extension EnvironmentValues { + var chartType: AnyChartType { + get { + return self[ChartTypeKey.self] + } + set { + self[ChartTypeKey.self] = newValue + } + } + + var chartStyle: ChartStyle { + get { + return self[ChartStyleKey.self] + } + set { + self[ChartStyleKey.self] = newValue + } + } + + var title: AnyChartLabel { + get { + return self[ChartLabelKey.self] + } + set { + self[ChartLabelKey.self] = newValue + } + } +} diff --git a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift new file mode 100644 index 00000000..18983e5d --- /dev/null +++ b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift @@ -0,0 +1,15 @@ +import SwiftUI + +struct ChartTypeKey: EnvironmentKey { + static let defaultValue: AnyChartType = AnyChartType(BarChart()) +} + +struct ChartStyleKey: EnvironmentKey { + static let defaultValue: ChartStyle = ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(ChartColors.orangeBright, + ChartColors.orangeDark)) +} + +struct ChartLabelKey: EnvironmentKey { + static let defaultValue: AnyChartLabel = AnyChartLabel(TitleLabel()) +} diff --git a/Sources/SwiftUICharts/Helpers.swift b/Sources/SwiftUICharts/Helpers.swift deleted file mode 100644 index a79bce54..00000000 --- a/Sources/SwiftUICharts/Helpers.swift +++ /dev/null @@ -1,278 +0,0 @@ -// -// File.swift -// -// -// Created by András Samu on 2019. 07. 19.. -// - -import Foundation -import SwiftUI - -public struct Colors { - public static let color1:Color = Color(hexString: "#E2FAE7") - public static let color1Accent:Color = Color(hexString: "#72BF82") - public static let color2:Color = Color(hexString: "#EEF1FF") - public static let color2Accent:Color = Color(hexString: "#4266E8") - public static let color3:Color = Color(hexString: "#FCECEA") - public static let color3Accent:Color = Color(hexString: "#E1614C") - public static let OrangeEnd:Color = Color(hexString: "#FF782C") - public static let OrangeStart:Color = Color(hexString: "#EC2301") - public static let LegendText:Color = Color(hexString: "#A7A6A8") - public static let LegendColor:Color = Color(hexString: "#E8E7EA") - public static let LegendDarkColor:Color = Color(hexString: "#545454") - public static let IndicatorKnob:Color = Color(hexString: "#FF57A6") - public static let GradientUpperBlue:Color = Color(hexString: "#C2E8FF") - public static let GradinetUpperBlue1:Color = Color(hexString: "#A8E1FF") - public static let GradientPurple:Color = Color(hexString: "#7B75FF") - public static let GradientNeonBlue:Color = Color(hexString: "#6FEAFF") - public static let GradientLowerBlue:Color = Color(hexString: "#F1F9FF") - public static let DarkPurple:Color = Color(hexString: "#1B205E") - public static let BorderBlue:Color = Color(hexString: "#4EBCFF") -} - -public struct GradientColor { - public let start: Color - public let end: Color - - public init(start: Color, end: Color) { - self.start = start - self.end = end - } - - public func getGradient() -> Gradient { - return Gradient(colors: [start, end]) - } -} - -public struct GradientColors { - public static let orange = GradientColor(start: Colors.OrangeStart, end: Colors.OrangeEnd) - public static let blue = GradientColor(start: Colors.GradientPurple, end: Colors.GradientNeonBlue) - public static let green = GradientColor(start: Color(hexString: "0BCDF7"), end: Color(hexString: "A2FEAE")) - public static let blu = GradientColor(start: Color(hexString: "0591FF"), end: Color(hexString: "29D9FE")) - public static let bluPurpl = GradientColor(start: Color(hexString: "4ABBFB"), end: Color(hexString: "8C00FF")) - public static let purple = GradientColor(start: Color(hexString: "741DF4"), end: Color(hexString: "C501B0")) - public static let prplPink = GradientColor(start: Color(hexString: "BC05AF"), end: Color(hexString: "FF1378")) - public static let prplNeon = GradientColor(start: Color(hexString: "FE019A"), end: Color(hexString: "FE0BF4")) - public static let orngPink = GradientColor(start: Color(hexString: "FF8E2D"), end: Color(hexString: "FF4E7A")) -} - -public struct Styles { - public static let lineChartStyleOne = ChartStyle( - backgroundColor: Color.white, - accentColor: Colors.OrangeStart, - secondGradientColor: Colors.OrangeEnd, - textColor: Color.black, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let barChartStyleOrangeLight = ChartStyle( - backgroundColor: Color.white, - accentColor: Colors.OrangeStart, - secondGradientColor: Colors.OrangeEnd, - textColor: Color.black, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let barChartStyleOrangeDark = ChartStyle( - backgroundColor: Color.black, - accentColor: Colors.OrangeStart, - secondGradientColor: Colors.OrangeEnd, - textColor: Color.white, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let barChartStyleNeonBlueLight = ChartStyle( - backgroundColor: Color.white, - accentColor: Colors.GradientNeonBlue, - secondGradientColor: Colors.GradientPurple, - textColor: Color.black, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let barChartStyleNeonBlueDark = ChartStyle( - backgroundColor: Color.black, - accentColor: Colors.GradientNeonBlue, - secondGradientColor: Colors.GradientPurple, - textColor: Color.white, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let barChartMidnightGreenDark = ChartStyle( - backgroundColor: Color(hexString: "#36534D"), //3B5147, 313D34 - accentColor: Color(hexString: "#FFD603"), - secondGradientColor: Color(hexString: "#FFCA04"), - textColor: Color.white, - legendTextColor: Color(hexString: "#D2E5E1"), - dropShadowColor: Color.gray) - - public static let barChartMidnightGreenLight = ChartStyle( - backgroundColor: Color.white, - accentColor: Color(hexString: "#84A094"), //84A094 , 698378 - secondGradientColor: Color(hexString: "#50675D"), - textColor: Color.black, - legendTextColor:Color.gray, - dropShadowColor: Color.gray) - - public static let pieChartStyleOne = ChartStyle( - backgroundColor: Color.white, - accentColor: Colors.OrangeEnd, - secondGradientColor: Colors.OrangeStart, - textColor: Color.black, - legendTextColor: Color.gray, - dropShadowColor: Color.gray) - - public static let lineViewDarkMode = ChartStyle( - backgroundColor: Color.black, - accentColor: Colors.OrangeStart, - secondGradientColor: Colors.OrangeEnd, - textColor: Color.white, - legendTextColor: Color.white, - dropShadowColor: Color.gray) -} - -public struct ChartForm { - #if os(watchOS) - public static let small = CGSize(width:120, height:90) - public static let medium = CGSize(width:120, height:160) - public static let large = CGSize(width:180, height:90) - public static let detail = CGSize(width:180, height:160) - #else - public static let small = CGSize(width:180, height:120) - public static let medium = CGSize(width:180, height:240) - public static let large = CGSize(width:360, height:120) - public static let detail = CGSize(width:180, height:120) - #endif - - -} - -public class ChartStyle { - public var backgroundColor: Color - public var accentColor: Color - public var gradientColor: GradientColor - public var textColor: Color - public var legendTextColor: Color - public var dropShadowColor: Color - public weak var darkModeStyle: ChartStyle? - - public init(backgroundColor: Color, accentColor: Color, secondGradientColor: Color, textColor: Color, legendTextColor: Color, dropShadowColor: Color){ - self.backgroundColor = backgroundColor - self.accentColor = accentColor - self.gradientColor = GradientColor(start: accentColor, end: secondGradientColor) - self.textColor = textColor - self.legendTextColor = legendTextColor - self.dropShadowColor = dropShadowColor - } - - public init(backgroundColor: Color, accentColor: Color, gradientColor: GradientColor, textColor: Color, legendTextColor: Color, dropShadowColor: Color){ - self.backgroundColor = backgroundColor - self.accentColor = accentColor - self.gradientColor = gradientColor - self.textColor = textColor - self.legendTextColor = legendTextColor - self.dropShadowColor = dropShadowColor - } - - public init(formSize: CGSize){ - self.backgroundColor = Color.white - self.accentColor = Colors.OrangeStart - self.gradientColor = GradientColors.orange - self.legendTextColor = Color.gray - self.textColor = Color.black - self.dropShadowColor = Color.gray - } -} - -public class ChartData: ObservableObject, Identifiable { - @Published var points: [(String,Double)] - var valuesGiven: Bool = false - var ID = UUID() - - public init(points:[N]) { - self.points = points.map{("", Double($0))} - } - public init(values:[(String,N)]){ - self.points = values.map{($0.0, Double($0.1))} - self.valuesGiven = true - } - public init(values:[(String,N)]){ - self.points = values.map{($0.0, Double($0.1))} - self.valuesGiven = true - } - public init(numberValues:[(N,N)]){ - self.points = numberValues.map{(String($0.0), Double($0.1))} - self.valuesGiven = true - } - public init(numberValues:[(N,N)]){ - self.points = numberValues.map{(String($0.0), Double($0.1))} - self.valuesGiven = true - } - - public func onlyPoints() -> [Double] { - return self.points.map{ $0.1 } - } -} - -public class MultiLineChartData: ChartData { - var gradient: GradientColor - - public init(points:[N], gradient: GradientColor) { - self.gradient = gradient - super.init(points: points) - } - - public init(points:[N], color: Color) { - self.gradient = GradientColor(start: color, end: color) - super.init(points: points) - } - - public func getGradient() -> GradientColor { - return self.gradient - } -} - -public class TestData{ - static public var data:ChartData = ChartData(points: [37,72,51,22,39,47,66,85,50]) - static public var values:ChartData = ChartData(values: [("2017 Q3",220), - ("2017 Q4",1550), - ("2018 Q1",8180), - ("2018 Q2",18440), - ("2018 Q3",55840), - ("2018 Q4",63150), ("2019 Q1",50900), ("2019 Q2",77550), ("2019 Q3",79600), ("2019 Q4",92550)]) - -} - -extension Color { - init(hexString: String) { - let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) - var int = UInt64() - Scanner(string: hex).scanHexInt64(&int) - let r, g, b: UInt64 - switch hex.count { - case 3: // RGB (12-bit) - (r, g, b) = ((int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) - case 6: // RGB (24-bit) - (r, g, b) = (int >> 16, int >> 8 & 0xFF, int & 0xFF) - case 8: // ARGB (32-bit) - (r, g, b) = (int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) - default: - (r, g, b) = (0, 0, 0) - } - self.init(red: Double(r) / 255, green: Double(g) / 255, blue: Double(b) / 255) - } -} - -class HapticFeedback { - #if os(watchOS) - //watchOS implementation - static func playSelection() -> Void { - WKInterfaceDevice.current().play(.click) - } - #else - //iOS implementation - let selectionFeedbackGenerator = UISelectionFeedbackGenerator() - static func playSelection() -> Void { - UISelectionFeedbackGenerator().selectionChanged() - } - #endif -} diff --git a/Sources/SwiftUICharts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/LineChart/IndicatorPoint.swift deleted file mode 100644 index 2e8667da..00000000 --- a/Sources/SwiftUICharts/LineChart/IndicatorPoint.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// IndicatorPoint.swift -// LineChart -// -// Created by András Samu on 2019. 09. 03.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -struct IndicatorPoint: View { - var body: some View { - ZStack{ - Circle() - .fill(Colors.IndicatorKnob) - Circle() - .stroke(Color.white, style: StrokeStyle(lineWidth: 4)) - } - .frame(width: 14, height: 14) - .shadow(color: Colors.LegendColor, radius: 6, x: 0, y: 6) - } -} - -struct IndicatorPoint_Previews: PreviewProvider { - static var previews: some View { - IndicatorPoint() - } -} diff --git a/Sources/SwiftUICharts/LineChart/Legend.swift b/Sources/SwiftUICharts/LineChart/Legend.swift deleted file mode 100644 index b613cb06..00000000 --- a/Sources/SwiftUICharts/LineChart/Legend.swift +++ /dev/null @@ -1,99 +0,0 @@ -// -// Legend.swift -// LineChart -// -// Created by András Samu on 2019. 09. 02.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -struct Legend: View { - @ObservedObject var data: ChartData - @Binding var frame: CGRect - @Binding var hideHorizontalLines: Bool - @Environment(\.colorScheme) var colorScheme: ColorScheme - let padding:CGFloat = 3 - - var stepWidth: CGFloat { - if data.points.count < 2 { - return 0 - } - return frame.size.width / CGFloat(data.points.count-1) - } - var stepHeight: CGFloat { - let points = self.data.onlyPoints() - if let min = points.min(), let max = points.max(), min != max { - if (min < 0){ - return (frame.size.height-padding) / CGFloat(max - min) - }else{ - return (frame.size.height-padding) / CGFloat(max + min) - } - } - return 0 - } - - var min: CGFloat { - let points = self.data.onlyPoints() - return CGFloat(points.min() ?? 0) - } - - var body: some View { - ZStack(alignment: .topLeading){ - ForEach((0...4), id: \.self) { height in - HStack(alignment: .center){ - Text("\(self.getYLegendSafe(height: height), specifier: "%.2f")").offset(x: 0, y: self.getYposition(height: height) ) - .foregroundColor(Colors.LegendText) - .font(.caption) - self.line(atHeight: self.getYLegendSafe(height: height), width: self.frame.width) - .stroke(self.colorScheme == .dark ? Colors.LegendDarkColor : Colors.LegendColor, style: StrokeStyle(lineWidth: 1.5, lineCap: .round, dash: [5,height == 0 ? 0 : 10])) - .opacity((self.hideHorizontalLines && height != 0) ? 0 : 1) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - .animation(.easeOut(duration: 0.2)) - .clipped() - } - - } - - } - } - - func getYLegendSafe(height:Int)->CGFloat{ - if let legend = getYLegend() { - return CGFloat(legend[height]) - } - return 0 - } - - func getYposition(height: Int)-> CGFloat { - if let legend = getYLegend() { - return (self.frame.height-((CGFloat(legend[height]) - min)*self.stepHeight))-(self.frame.height/2) - } - return 0 - - } - - func line(atHeight: CGFloat, width: CGFloat) -> Path { - var hLine = Path() - hLine.move(to: CGPoint(x:5, y: (atHeight-min)*stepHeight)) - hLine.addLine(to: CGPoint(x: width, y: (atHeight-min)*stepHeight)) - return hLine - } - - func getYLegend() -> [Double]? { - let points = self.data.onlyPoints() - guard let max = points.max() else { return nil } - guard let min = points.min() else { return nil } - let step = Double(max - min)/4 - return [min+step * 0, min+step * 1, min+step * 2, min+step * 3, min+step * 4] - } -} - -struct Legend_Previews: PreviewProvider { - static var previews: some View { - GeometryReader{ geometry in - Legend(data: ChartData(points: [0.2,0.4,1.4,4.5]), frame: .constant(geometry.frame(in: .local)), hideHorizontalLines: .constant(false)) - }.frame(width: 320, height: 200) - } -} diff --git a/Sources/SwiftUICharts/LineChart/Line.swift b/Sources/SwiftUICharts/LineChart/Line.swift deleted file mode 100644 index e85a8c3a..00000000 --- a/Sources/SwiftUICharts/LineChart/Line.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// Line.swift -// LineChart -// -// Created by András Samu on 2019. 08. 30.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct Line: View { - @ObservedObject var data: ChartData - @Binding var frame: CGRect - @Binding var touchLocation: CGPoint - @Binding var showIndicator: Bool - @Binding var minDataValue: Double? - @Binding var maxDataValue: Double? - @State private var showFull: Bool = false - @State var showBackground: Bool = true - var gradient: GradientColor = GradientColor(start: Colors.GradientPurple, end: Colors.GradientNeonBlue) - var index:Int = 0 - let padding:CGFloat = 30 - var curvedLines: Bool = true - var stepWidth: CGFloat { - if data.points.count < 2 { - return 0 - } - return frame.size.width / CGFloat(data.points.count-1) - } - var stepHeight: CGFloat { - var min: Double? - var max: Double? - let points = self.data.onlyPoints() - if minDataValue != nil && maxDataValue != nil { - min = minDataValue! - max = maxDataValue! - print(min,max) - }else if let minPoint = points.min(), let maxPoint = points.max(), minPoint != maxPoint { - min = minPoint - max = maxPoint - }else { - return 0 - } - if let min = min, let max = max, min != max { - if (min <= 0){ - return (frame.size.height-padding) / CGFloat(max - min) - }else{ - return (frame.size.height-padding) / CGFloat(max + min) - } - } - return 0 - } - var path: Path { - let points = self.data.onlyPoints() - return curvedLines ? Path.quadCurvedPathWithPoints(points: points, step: CGPoint(x: stepWidth, y: stepHeight), globalOffset: minDataValue) : Path.linePathWithPoints(points: points, step: CGPoint(x: stepWidth, y: stepHeight)) - } - var closedPath: Path { - let points = self.data.onlyPoints() - return curvedLines ? Path.quadClosedCurvedPathWithPoints(points: points, step: CGPoint(x: stepWidth, y: stepHeight), globalOffset: minDataValue) : Path.closedLinePathWithPoints(points: points, step: CGPoint(x: stepWidth, y: stepHeight)) - } - - public var body: some View { - ZStack { - if(self.showFull && self.showBackground){ - self.closedPath - .fill(LinearGradient(gradient: Gradient(colors: [Colors.GradientUpperBlue, .white]), startPoint: .bottom, endPoint: .top)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - .transition(.opacity) - .animation(.easeIn(duration: 1.6)) - } - self.path - .trim(from: 0, to: self.showFull ? 1:0) - .stroke(LinearGradient(gradient: gradient.getGradient(), startPoint: .leading, endPoint: .trailing) ,style: StrokeStyle(lineWidth: 3, lineJoin: .round)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - .animation(Animation.easeOut(duration: 1.2).delay(Double(self.index)*0.4)) - .onAppear { - self.showFull = true - } - .onDisappear { - self.showFull = false - } - .drawingGroup() - if(self.showIndicator) { - IndicatorPoint() - .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - } - } - } - - func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { - let closest = self.path.point(to: touchLocation.x) - return closest - } - -} - -struct Line_Previews: PreviewProvider { - static var previews: some View { - GeometryReader{ geometry in - Line(data: ChartData(points: [12,-230,10,54]), frame: .constant(geometry.frame(in: .local)), touchLocation: .constant(CGPoint(x: 100, y: 12)), showIndicator: .constant(true), minDataValue: .constant(nil), maxDataValue: .constant(nil)) - }.frame(width: 320, height: 160) - } -} diff --git a/Sources/SwiftUICharts/LineChart/LineChartView.swift b/Sources/SwiftUICharts/LineChart/LineChartView.swift deleted file mode 100644 index 2726f083..00000000 --- a/Sources/SwiftUICharts/LineChart/LineChartView.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// LineCard.swift -// LineChart -// -// Created by András Samu on 2019. 08. 31.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct LineChartView: View { - @Environment(\.colorScheme) var colorScheme: ColorScheme - @ObservedObject var data:ChartData - public var title: String - public var legend: String? - public var style: ChartStyle - public var darkModeStyle: ChartStyle - - public var formSize:CGSize - public var dropShadow: Bool - public var valueSpecifier:String - - @State private var touchLocation:CGPoint = .zero - @State private var showIndicatorDot: Bool = false - @State private var currentValue: Double = 2 { - didSet{ - if (oldValue != self.currentValue && showIndicatorDot) { - HapticFeedback.playSelection() - } - - } - } - let frame = CGSize(width: 180, height: 120) - private var rateValue: Int? - - public init(data: [Double], - title: String, - legend: String? = nil, - style: ChartStyle = Styles.lineChartStyleOne, - form: CGSize? = ChartForm.medium, - rateValue: Int? = 14, - dropShadow: Bool? = true, - valueSpecifier: String? = "%.1f") { - - self.data = ChartData(points: data) - self.title = title - self.legend = legend - self.style = style - self.darkModeStyle = style.darkModeStyle != nil ? style.darkModeStyle! : Styles.lineViewDarkMode - self.formSize = form! - self.dropShadow = dropShadow! - self.valueSpecifier = valueSpecifier! - self.rateValue = rateValue - } - - public var body: some View { - ZStack(alignment: .center){ - RoundedRectangle(cornerRadius: 20) - .fill(self.colorScheme == .dark ? self.darkModeStyle.backgroundColor : self.style.backgroundColor) - .frame(width: frame.width, height: 240, alignment: .center) - .shadow(color: self.style.dropShadowColor, radius: self.dropShadow ? 8 : 0) - VStack(alignment: .leading){ - if(!self.showIndicatorDot){ - VStack(alignment: .leading, spacing: 8){ - Text(self.title) - .font(.title) - .bold() - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.textColor : self.style.textColor) - if (self.legend != nil){ - Text(self.legend!) - .font(.callout) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor :self.style.legendTextColor) - } - HStack { - - if (self.rateValue ?? 0 != 0) - { - if (self.rateValue ?? 0 >= 0){ - Image(systemName: "arrow.up") - }else{ - Image(systemName: "arrow.down") - } - Text("\(self.rateValue!)%") - } - } - } - .transition(.opacity) - .animation(.easeIn(duration: 0.1)) - .padding([.leading, .top]) - }else{ - HStack{ - Spacer() - Text("\(self.currentValue, specifier: self.valueSpecifier)") - .font(.system(size: 41, weight: .bold, design: .default)) - .offset(x: 0, y: 30) - Spacer() - } - .transition(.scale) - } - Spacer() - GeometryReader{ geometry in - Line(data: self.data, - frame: .constant(geometry.frame(in: .local)), - touchLocation: self.$touchLocation, - showIndicator: self.$showIndicatorDot, - minDataValue: .constant(nil), - maxDataValue: .constant(nil) - ) - } - .frame(width: frame.width, height: frame.height + 30) - .clipShape(RoundedRectangle(cornerRadius: 20)) - .offset(x: 0, y: 0) - }.frame(width: self.formSize.width, height: self.formSize.height) - } - .gesture(DragGesture() - .onChanged({ value in - self.touchLocation = value.location - self.showIndicatorDot = true - self.getClosestDataPoint(toPoint: value.location, width:self.frame.width, height: self.frame.height) - }) - .onEnded({ value in - self.showIndicatorDot = false - }) - ) - } - - @discardableResult func getClosestDataPoint(toPoint: CGPoint, width:CGFloat, height: CGFloat) -> CGPoint { - let points = self.data.onlyPoints() - let stepWidth: CGFloat = width / CGFloat(points.count-1) - let stepHeight: CGFloat = height / CGFloat(points.max()! + points.min()!) - - let index:Int = Int(round((toPoint.x)/stepWidth)) - if (index >= 0 && index < points.count){ - self.currentValue = points[index] - return CGPoint(x: CGFloat(index)*stepWidth, y: CGFloat(points[index])*stepHeight) - } - return .zero - } -} - -struct WidgetView_Previews: PreviewProvider { - static var previews: some View { - Group { - LineChartView(data: [8,23,54,32,12,37,7,23,43], title: "Line chart", legend: "Basic") - .environment(\.colorScheme, .light) - } - } -} diff --git a/Sources/SwiftUICharts/LineChart/LineView.swift b/Sources/SwiftUICharts/LineChart/LineView.swift deleted file mode 100644 index c4313aaf..00000000 --- a/Sources/SwiftUICharts/LineChart/LineView.swift +++ /dev/null @@ -1,127 +0,0 @@ -// -// LineView.swift -// LineChart -// -// Created by András Samu on 2019. 09. 02.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct LineView: View { - @ObservedObject var data: ChartData - public var title: String? - public var legend: String? - public var style: ChartStyle - public var darkModeStyle: ChartStyle - public var valueSpecifier:String - - @Environment(\.colorScheme) var colorScheme: ColorScheme - @State private var showLegend = false - @State private var dragLocation:CGPoint = .zero - @State private var indicatorLocation:CGPoint = .zero - @State private var closestPoint: CGPoint = .zero - @State private var opacity:Double = 0 - @State private var currentDataNumber: Double = 0 - @State private var hideHorizontalLines: Bool = false - - public init(data: [Double], - title: String? = nil, - legend: String? = nil, - style: ChartStyle = Styles.lineChartStyleOne, - valueSpecifier: String? = "%.1f") { - - self.data = ChartData(points: data) - self.title = title - self.legend = legend - self.style = style - self.valueSpecifier = valueSpecifier! - self.darkModeStyle = style.darkModeStyle != nil ? style.darkModeStyle! : Styles.lineViewDarkMode - } - - public var body: some View { - GeometryReader{ geometry in - VStack(alignment: .leading, spacing: 8) { - Group{ - if (self.title != nil){ - Text(self.title!) - .font(.title) - .bold().foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.textColor : self.style.textColor) - } - if (self.legend != nil){ - Text(self.legend!) - .font(.callout) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) - } - }.offset(x: 0, y: 20) - ZStack{ - GeometryReader{ reader in - Rectangle() - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.backgroundColor : self.style.backgroundColor) - if(self.showLegend){ - Legend(data: self.data, - frame: .constant(reader.frame(in: .local)), hideHorizontalLines: self.$hideHorizontalLines) - .transition(.opacity) - .animation(Animation.easeOut(duration: 1).delay(1)) - } - Line(data: self.data, - frame: .constant(CGRect(x: 0, y: 0, width: reader.frame(in: .local).width - 30, height: reader.frame(in: .local).height)), - touchLocation: self.$indicatorLocation, - showIndicator: self.$hideHorizontalLines, - minDataValue: .constant(nil), - maxDataValue: .constant(nil), - showBackground: false, - gradient: self.style.gradientColor - ) - .offset(x: 30, y: 0) - .onAppear(){ - self.showLegend = true - } - .onDisappear(){ - self.showLegend = false - } - } - .frame(width: geometry.frame(in: .local).size.width, height: 240) - .offset(x: 0, y: 40 ) - MagnifierRect(currentNumber: self.$currentDataNumber, valueSpecifier: self.valueSpecifier) - .opacity(self.opacity) - .offset(x: self.dragLocation.x - geometry.frame(in: .local).size.width/2, y: 36) - } - .frame(width: geometry.frame(in: .local).size.width, height: 240) - .gesture(DragGesture() - .onChanged({ value in - self.dragLocation = value.location - self.indicatorLocation = CGPoint(x: max(value.location.x-30,0), y: 32) - self.opacity = 1 - self.closestPoint = self.getClosestDataPoint(toPoint: value.location, width: geometry.frame(in: .local).size.width-30, height: 240) - self.hideHorizontalLines = true - }) - .onEnded({ value in - self.opacity = 0 - self.hideHorizontalLines = false - }) - ) - } - } - } - - func getClosestDataPoint(toPoint: CGPoint, width:CGFloat, height: CGFloat) -> CGPoint { - let points = self.data.onlyPoints() - let stepWidth: CGFloat = width / CGFloat(points.count-1) - let stepHeight: CGFloat = height / CGFloat(points.max()! + points.min()!) - - let index:Int = Int(floor((toPoint.x-15)/stepWidth)) - if (index >= 0 && index < points.count){ - self.currentDataNumber = points[index] - return CGPoint(x: CGFloat(index)*stepWidth, y: CGFloat(points[index])*stepHeight) - } - return .zero - } -} - -struct LineView_Previews: PreviewProvider { - static var previews: some View { - LineView(data: [8,23,54,32,12,37,7,23,43], title: "Full chart", style: Styles.lineChartStyleOne) - } -} - diff --git a/Sources/SwiftUICharts/LineChart/MagnifierRect.swift b/Sources/SwiftUICharts/LineChart/MagnifierRect.swift deleted file mode 100644 index 4d3fd869..00000000 --- a/Sources/SwiftUICharts/LineChart/MagnifierRect.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// MagnifierRect.swift -// -// -// Created by Samu András on 2020. 03. 04.. -// - -import SwiftUI - -public struct MagnifierRect: View { - @Binding var currentNumber: Double - var valueSpecifier:String - @Environment(\.colorScheme) var colorScheme: ColorScheme - public var body: some View { - ZStack{ - Text("\(self.currentNumber, specifier: valueSpecifier)") - .font(.system(size: 18, weight: .bold)) - .offset(x: 0, y:-110) - .foregroundColor(self.colorScheme == .dark ? Color.white : Color.black) - if (self.colorScheme == .dark ){ - RoundedRectangle(cornerRadius: 16) - .stroke(Color.white, lineWidth: self.colorScheme == .dark ? 2 : 0) - .frame(width: 60, height: 260) - }else{ - RoundedRectangle(cornerRadius: 16) - .frame(width: 60, height: 280) - .foregroundColor(Color.white) - .shadow(color: Colors.LegendText, radius: 12, x: 0, y: 6 ) - .blendMode(.multiply) - } - } - } -} diff --git a/Sources/SwiftUICharts/LineChart/MultiLineChartView.swift b/Sources/SwiftUICharts/LineChart/MultiLineChartView.swift deleted file mode 100644 index 720da66d..00000000 --- a/Sources/SwiftUICharts/LineChart/MultiLineChartView.swift +++ /dev/null @@ -1,163 +0,0 @@ -// -// File.swift -// -// -// Created by Samu András on 2020. 02. 19.. -// - -import SwiftUI - -public struct MultiLineChartView: View { - @Environment(\.colorScheme) var colorScheme: ColorScheme - var data:[MultiLineChartData] - public var title: String - public var legend: String? - public var style: ChartStyle - public var darkModeStyle: ChartStyle - public var formSize:CGSize - public var dropShadow: Bool - public var valueSpecifier:String - - @State private var touchLocation:CGPoint = .zero - @State private var showIndicatorDot: Bool = false - @State private var currentValue: Double = 2 { - didSet{ - if (oldValue != self.currentValue && showIndicatorDot) { - HapticFeedback.playSelection() - } - - } - } - - var globalMin:Double { - if let min = data.flatMap({$0.onlyPoints()}).min() { - return min - } - return 0 - } - - var globalMax:Double { - if let max = data.flatMap({$0.onlyPoints()}).max() { - return max - } - return 0 - } - - let frame = CGSize(width: 180, height: 120) - private var rateValue: Int - - public init(data: [([Double], GradientColor)], - title: String, - legend: String? = nil, - style: ChartStyle = Styles.lineChartStyleOne, - form: CGSize? = ChartForm.medium, - rateValue: Int? = 14, - dropShadow: Bool? = true, - valueSpecifier: String? = "%.1f") { - - self.data = data.map({ MultiLineChartData(points: $0.0, gradient: $0.1)}) - self.title = title - self.legend = legend - self.style = style - self.darkModeStyle = style.darkModeStyle != nil ? style.darkModeStyle! : Styles.lineViewDarkMode - self.formSize = form! - self.rateValue = rateValue! - self.dropShadow = dropShadow! - self.valueSpecifier = valueSpecifier! - } - - public var body: some View { - ZStack(alignment: .center){ - RoundedRectangle(cornerRadius: 20) - .fill(self.colorScheme == .dark ? self.darkModeStyle.backgroundColor : self.style.backgroundColor) - .frame(width: frame.width, height: 240, alignment: .center) - .shadow(radius: self.dropShadow ? 8 : 0) - VStack(alignment: .leading){ - if(!self.showIndicatorDot){ - VStack(alignment: .leading, spacing: 8){ - Text(self.title) - .font(.title) - .bold() - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.textColor : self.style.textColor) - if (self.legend != nil){ - Text(self.legend!) - .font(.callout) - .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) - } - HStack { - if (self.rateValue >= 0){ - Image(systemName: "arrow.up") - }else{ - Image(systemName: "arrow.down") - } - Text("\(self.rateValue)%") - } - } - .transition(.opacity) - .animation(.easeIn(duration: 0.1)) - .padding([.leading, .top]) - }else{ - HStack{ - Spacer() - Text("\(self.currentValue, specifier: self.valueSpecifier)") - .font(.system(size: 41, weight: .bold, design: .default)) - .offset(x: 0, y: 30) - Spacer() - } - .transition(.scale) - } - Spacer() - GeometryReader{ geometry in - ZStack{ - ForEach(0.. CGPoint { -// let points = self.data.onlyPoints() -// let stepWidth: CGFloat = width / CGFloat(points.count-1) -// let stepHeight: CGFloat = height / CGFloat(points.max()! + points.min()!) -// -// let index:Int = Int(round((toPoint.x)/stepWidth)) -// if (index >= 0 && index < points.count){ -// self.currentValue = points[index] -// return CGPoint(x: CGFloat(index)*stepWidth, y: CGFloat(points[index])*stepHeight) -// } -// return .zero -// } -} - -struct MultiWidgetView_Previews: PreviewProvider { - static var previews: some View { - Group { - MultiLineChartView(data: [([8,23,54,32,12,37,7,23,43], GradientColors.orange)], title: "Line chart", legend: "Basic") - .environment(\.colorScheme, .light) - } - } -} diff --git a/Sources/SwiftUICharts/LineChart/Path+QuadCurve.swift b/Sources/SwiftUICharts/LineChart/Path+QuadCurve.swift deleted file mode 100644 index 83cf114b..00000000 --- a/Sources/SwiftUICharts/LineChart/Path+QuadCurve.swift +++ /dev/null @@ -1,353 +0,0 @@ -// -// File.swift -// -// -// Created by xspyhack on 2020/1/21. -// - -import SwiftUI - -extension Path { - func trimmedPath(for percent: CGFloat) -> Path { - // percent difference between points - let boundsDistance: CGFloat = 0.001 - let completion: CGFloat = 1 - boundsDistance - - let pct = percent > 1 ? 0 : (percent < 0 ? 1 : percent) - - let start = pct > completion ? completion : pct - boundsDistance - let end = pct > completion ? 1 : pct + boundsDistance - return trimmedPath(from: start, to: end) - } - - func point(for percent: CGFloat) -> CGPoint { - let path = trimmedPath(for: percent) - return CGPoint(x: path.boundingRect.midX, y: path.boundingRect.midY) - } - - func point(to maxX: CGFloat) -> CGPoint { - let total = length - let sub = length(to: maxX) - let percent = sub / total - return point(for: percent) - } - - var length: CGFloat { - var ret: CGFloat = 0.0 - var start: CGPoint? - var point = CGPoint.zero - - forEach { ele in - switch ele { - case .move(let to): - if start == nil { - start = to - } - point = to - case .line(let to): - ret += point.line(to: to) - point = to - case .quadCurve(let to, let control): - ret += point.quadCurve(to: to, control: control) - point = to - case .curve(let to, let control1, let control2): - ret += point.curve(to: to, control1: control1, control2: control2) - point = to - case .closeSubpath: - if let to = start { - ret += point.line(to: to) - point = to - } - start = nil - } - } - return ret - } - - func length(to maxX: CGFloat) -> CGFloat { - var ret: CGFloat = 0.0 - var start: CGPoint? - var point = CGPoint.zero - var finished = false - - forEach { ele in - if finished { - return - } - switch ele { - case .move(let to): - if to.x > maxX { - finished = true - return - } - if start == nil { - start = to - } - point = to - case .line(let to): - if to.x > maxX { - finished = true - ret += point.line(to: to, x: maxX) - return - } - ret += point.line(to: to) - point = to - case .quadCurve(let to, let control): - if to.x > maxX { - finished = true - ret += point.quadCurve(to: to, control: control, x: maxX) - return - } - ret += point.quadCurve(to: to, control: control) - point = to - case .curve(let to, let control1, let control2): - if to.x > maxX { - finished = true - ret += point.curve(to: to, control1: control1, control2: control2, x: maxX) - return - } - ret += point.curve(to: to, control1: control1, control2: control2) - point = to - case .closeSubpath: - fatalError("Can't include closeSubpath") - } - } - return ret - } - - static func quadCurvedPathWithPoints(points:[Double], step:CGPoint, globalOffset: Double? = nil) -> Path { - var path = Path() - if (points.count < 2){ - return path - } - let offset = globalOffset ?? points.min()! -// guard let offset = points.min() else { return path } - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) - for pointIndex in 1.. Path { - var path = Path() - if (points.count < 2){ - return path - } - let offset = globalOffset ?? points.min()! - -// guard let offset = points.min() else { return path } - path.move(to: .zero) - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.addLine(to: p1) - for pointIndex in 1.. Path { - var path = Path() - if (points.count < 2){ - return path - } - guard let offset = points.min() else { return path } - let p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) - for pointIndex in 1.. Path { - var path = Path() - if (points.count < 2){ - return path - } - guard let offset = points.min() else { return path } - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) - for pointIndex in 1.. CGPoint { - let a = (to.y - self.y) / (to.x - self.x) - let y = self.y + (x - self.x) * a - return CGPoint(x: x, y: y) - } - - func line(to: CGPoint) -> CGFloat { - dist(to: to) - } - - func line(to: CGPoint, x: CGFloat) -> CGFloat { - dist(to: point(to: to, x: x)) - } - - func quadCurve(to: CGPoint, control: CGPoint) -> CGFloat { - var dist: CGFloat = 0 - let steps: CGFloat = 100 - - for i in 0.. CGFloat { - var dist: CGFloat = 0 - let steps: CGFloat = 100 - - for i in 0..= x { - return dist - } else if b.x > x { - dist += a.line(to: b, x: x) - return dist - } else if b.x == x { - dist += a.line(to: b) - return dist - } - - dist += a.line(to: b) - } - return dist - } - - func point(to: CGPoint, t: CGFloat, control: CGPoint) -> CGPoint { - let x = CGPoint.value(x: self.x, y: to.x, t: t, c: control.x) - let y = CGPoint.value(x: self.y, y: to.y, t: t, c: control.y) - - return CGPoint(x: x, y: y) - } - - func curve(to: CGPoint, control1: CGPoint, control2: CGPoint) -> CGFloat { - var dist: CGFloat = 0 - let steps: CGFloat = 100 - - for i in 0.. CGFloat { - var dist: CGFloat = 0 - let steps: CGFloat = 100 - - for i in 0..= x { - return dist - } else if b.x > x { - dist += a.line(to: b, x: x) - return dist - } else if b.x == x { - dist += a.line(to: b) - return dist - } - - dist += a.line(to: b) - } - - return dist - } - - func point(to: CGPoint, t: CGFloat, control1: CGPoint, control2: CGPoint) -> CGPoint { - let x = CGPoint.value(x: self.x, y: to.x, t: t, c1: control1.x, c2: control2.x) - let y = CGPoint.value(x: self.y, y: to.y, t: t, c1: control1.y, c2: control2.x) - - return CGPoint(x: x, y: y) - } - - static func value(x: CGFloat, y: CGFloat, t: CGFloat, c: CGFloat) -> CGFloat { - var value: CGFloat = 0.0 - // (1-t)^2 * p0 + 2 * (1-t) * t * c1 + t^2 * p1 - value += pow(1-t, 2) * x - value += 2 * (1-t) * t * c - value += pow(t, 2) * y - return value - } - - static func value(x: CGFloat, y: CGFloat, t: CGFloat, c1: CGFloat, c2: CGFloat) -> CGFloat { - var value: CGFloat = 0.0 - // (1-t)^3 * p0 + 3 * (1-t)^2 * t * c1 + 3 * (1-t) * t^2 * c2 + t^3 * p1 - value += pow(1-t, 3) * x - value += 3 * pow(1-t, 2) * t * c1 - value += 3 * (1-t) * pow(t, 2) * c2 - value += pow(t, 3) * y - return value - } - - static func getMidPoint(point1: CGPoint, point2: CGPoint) -> CGPoint { - return CGPoint( - x: point1.x + (point2.x - point1.x) / 2, - y: point1.y + (point2.y - point1.y) / 2 - ) - } - - func dist(to: CGPoint) -> CGFloat { - return sqrt((pow(self.x - to.x, 2) + pow(self.y - to.y, 2))) - } - - static func midPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { - return CGPoint(x:(p1.x + p2.x) / 2,y: (p1.y + p2.y) / 2) - } - - static func controlPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { - var controlPoint = CGPoint.midPointForPoints(p1:p1, p2:p2) - let diffY = abs(p2.y - controlPoint.y) - - if (p1.y < p2.y){ - controlPoint.y += diffY - } else if (p1.y > p2.y) { - controlPoint.y -= diffY - } - return controlPoint - } -} - diff --git a/Sources/SwiftUICharts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/PieChart/PieChartCell.swift deleted file mode 100644 index f511165e..00000000 --- a/Sources/SwiftUICharts/PieChart/PieChartCell.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// PieChartCell.swift -// ChartView -// -// Created by András Samu on 2019. 06. 12.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -struct PieSlice: Identifiable { - var id = UUID() - var startDeg: Double - var endDeg: Double - var value: Double - var normalizedValue: Double -} - -public struct PieChartCell : View { - @State private var show:Bool = false - var rect: CGRect - var radius: CGFloat { - return min(rect.width, rect.height)/2 - } - var startDeg: Double - var endDeg: Double - var path: Path { - var path = Path() - path.addArc(center:rect.mid , radius:self.radius, startAngle: Angle(degrees: self.startDeg), endAngle: Angle(degrees: self.endDeg), clockwise: false) - path.addLine(to: rect.mid) - path.closeSubpath() - return path - } - var index: Int - var backgroundColor:Color - var accentColor:Color - public var body: some View { - path - .fill() - .foregroundColor(self.accentColor) - .overlay(path.stroke(self.backgroundColor, lineWidth: 2)) - .scaleEffect(self.show ? 1 : 0) - .animation(Animation.spring().delay(Double(self.index) * 0.04)) - .onAppear(){ - self.show = true - } - } -} - -extension CGRect { - var mid: CGPoint { - return CGPoint(x:self.midX, y: self.midY) - } -} - -#if DEBUG -struct PieChartCell_Previews : PreviewProvider { - static var previews: some View { - GeometryReader { geometry in - PieChartCell(rect: geometry.frame(in: .local),startDeg: 0.0,endDeg: 90.0, index: 0, backgroundColor: Color(red: 252.0/255.0, green: 236.0/255.0, blue: 234.0/255.0), accentColor: Color(red: 225.0/255.0, green: 97.0/255.0, blue: 76.0/255.0)) - }.frame(width:100, height:100) - - } -} -#endif diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift deleted file mode 100644 index dd690d02..00000000 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// PieChartRow.swift -// ChartView -// -// Created by András Samu on 2019. 06. 12.. -// Copyright © 2019. András Samu. All rights reserved. -// - -import SwiftUI - -public struct PieChartRow : View { - var data: [Double] - var backgroundColor: Color - var accentColor: Color - var slices: [PieSlice] { - var tempSlices:[PieSlice] = [] - var lastEndDeg:Double = 0 - let maxValue = data.reduce(0, +) - for slice in data { - let normalized:Double = Double(slice)/Double(maxValue) - let startDeg = lastEndDeg - let endDeg = lastEndDeg + (normalized * 360) - lastEndDeg = endDeg - tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice, normalizedValue: normalized)) - } - return tempSlices - } - public var body: some View { - GeometryReader { geometry in - ZStack{ - ForEach(0.. Date: Sun, 24 May 2020 18:38:19 +0200 Subject: [PATCH 02/40] Added a first implementation of BarChart and LineChart also introduced style --- Sources/SwiftUICharts/BarChart/BarChart.swift | 7 - .../Base/Chart/AnyChartType.swift | 10 +- .../SwiftUICharts/Base/Chart/ChartType.swift | 2 +- .../Base/Chart/ChartTypeConfiguration.swift | 2 +- Sources/SwiftUICharts/Base/ChartView.swift | 11 +- .../Base/Extensions/CGPoint+Extension.swift | 35 ++ .../Base/Extensions/Path+QuadCurve.swift | 346 ++++++++++++++++++ .../Base/Extensions/View+Extension.swift | 11 + Sources/SwiftUICharts/Base/Style/Colors.swift | 3 + .../Charts/BarChart/BarChart.swift | 9 + .../Charts/BarChart/BarChartCell.swift | 28 ++ .../Charts/BarChart/BarChartRow.swift | 55 +++ .../{ => Charts}/BarChart/TitleLabel.swift | 0 .../Charts/LineChart/IndicatorPoint.swift | 28 ++ .../SwiftUICharts/Charts/LineChart/Line.swift | 107 ++++++ .../Charts/LineChart/LineChart.swift | 9 + .../Environment/EnvironmentKeys.swift | 4 +- 17 files changed, 649 insertions(+), 18 deletions(-) delete mode 100644 Sources/SwiftUICharts/BarChart/BarChart.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/View+Extension.swift create mode 100644 Sources/SwiftUICharts/Charts/BarChart/BarChart.swift create mode 100644 Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift create mode 100644 Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift rename Sources/SwiftUICharts/{ => Charts}/BarChart/TitleLabel.swift (100%) create mode 100644 Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/Line.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/LineChart.swift diff --git a/Sources/SwiftUICharts/BarChart/BarChart.swift b/Sources/SwiftUICharts/BarChart/BarChart.swift deleted file mode 100644 index c7a271b6..00000000 --- a/Sources/SwiftUICharts/BarChart/BarChart.swift +++ /dev/null @@ -1,7 +0,0 @@ -import SwiftUI - -public struct BarChart: ChartType { - public func makeChart(configuration: Self.Configuration) -> some View { - return Text("AAA") - } -} diff --git a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift index f5f97bd7..046dd164 100644 --- a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift +++ b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift @@ -1,19 +1,19 @@ import SwiftUI struct AnyChartType: ChartType { - private let chartMaker: (ChartType.Configuration) -> AnyView + private let chartMaker: (ChartType.Configuration, ChartType.Style) -> AnyView init(_ type: S) { self.chartMaker = type.makeTypeErasedBody } - func makeChart(configuration: ChartType.Configuration) -> AnyView { - self.chartMaker(configuration) + func makeChart(configuration: ChartType.Configuration, style: ChartType.Style) -> AnyView { + self.chartMaker(configuration, style) } } fileprivate extension ChartType { - func makeTypeErasedBody(configuration: ChartType.Configuration) -> AnyView { - AnyView(makeChart(configuration: configuration)) + func makeTypeErasedBody(configuration: ChartType.Configuration, style: ChartType.Style) -> AnyView { + AnyView(makeChart(configuration: configuration, style: style)) } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartType.swift b/Sources/SwiftUICharts/Base/Chart/ChartType.swift index a432bae8..7951d29d 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartType.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartType.swift @@ -4,7 +4,7 @@ import SwiftUI public protocol ChartType { associatedtype Body : View - func makeChart(configuration: Self.Configuration, style: Style) -> Self.Body + func makeChart(configuration: Self.Configuration, style: Self.Style) -> Self.Body typealias Configuration = ChartTypeConfiguration typealias Style = ChartStyle diff --git a/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift b/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift index 1dbf8d80..0e56a54c 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift @@ -1,5 +1,5 @@ import SwiftUI public struct ChartTypeConfiguration { - public let data: [CGFloat] + public let data: [Double] } diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift index 98353e9c..9a65c87d 100644 --- a/Sources/SwiftUICharts/Base/ChartView.swift +++ b/Sources/SwiftUICharts/Base/ChartView.swift @@ -8,8 +8,15 @@ public struct ChartView: View { @Environment(\.chartStyle) private var chartStyle @Environment(\.title) private var title + private var configuration: ChartTypeConfiguration + public var body: some View { - Text("aa") - } + self.chartType.makeChart(configuration: configuration, style: chartStyle) + } } +extension ChartView { + public init(data: [Double]) { + self.configuration = ChartTypeConfiguration(data: data) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift new file mode 100644 index 00000000..c063f2f5 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -0,0 +1,35 @@ +import SwiftUI + +extension CGPoint { + static func getStep(frame: CGRect, data: [Double]) -> CGPoint { + let padding: CGFloat = 30.0 + + // stepWidth + var stepWidth: CGFloat = 0.0 + if data.count < 2 { + stepWidth = 0.0 + } + stepWidth = frame.size.width / CGFloat(data.count - 1) + + // stepHeight + var stepHeight: CGFloat = 0.0 + + var min: Double? + var max: Double? + if let minPoint = data.min(), let maxPoint = data.max(), minPoint != maxPoint { + min = minPoint + max = maxPoint + }else { + return .zero + } + if let min = min, let max = max, min != max { + if (min <= 0){ + stepHeight = (frame.size.height-padding) / CGFloat(max - min) + }else{ + stepHeight = (frame.size.height-padding) / CGFloat(max + min) + } + } + + return CGPoint(x: stepWidth, y: stepHeight) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift new file mode 100644 index 00000000..f1828ff7 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift @@ -0,0 +1,346 @@ +import SwiftUI + +extension Path { + func trimmedPath(for percent: CGFloat) -> Path { + // percent difference between points + let boundsDistance: CGFloat = 0.001 + let completion: CGFloat = 1 - boundsDistance + + let pct = percent > 1 ? 0 : (percent < 0 ? 1 : percent) + + let start = pct > completion ? completion : pct - boundsDistance + let end = pct > completion ? 1 : pct + boundsDistance + return trimmedPath(from: start, to: end) + } + + func point(for percent: CGFloat) -> CGPoint { + let path = trimmedPath(for: percent) + return CGPoint(x: path.boundingRect.midX, y: path.boundingRect.midY) + } + + func point(to maxX: CGFloat) -> CGPoint { + let total = length + let sub = length(to: maxX) + let percent = sub / total + return point(for: percent) + } + + var length: CGFloat { + var ret: CGFloat = 0.0 + var start: CGPoint? + var point = CGPoint.zero + + forEach { ele in + switch ele { + case .move(let to): + if start == nil { + start = to + } + point = to + case .line(let to): + ret += point.line(to: to) + point = to + case .quadCurve(let to, let control): + ret += point.quadCurve(to: to, control: control) + point = to + case .curve(let to, let control1, let control2): + ret += point.curve(to: to, control1: control1, control2: control2) + point = to + case .closeSubpath: + if let to = start { + ret += point.line(to: to) + point = to + } + start = nil + } + } + return ret + } + + func length(to maxX: CGFloat) -> CGFloat { + var ret: CGFloat = 0.0 + var start: CGPoint? + var point = CGPoint.zero + var finished = false + + forEach { ele in + if finished { + return + } + switch ele { + case .move(let to): + if to.x > maxX { + finished = true + return + } + if start == nil { + start = to + } + point = to + case .line(let to): + if to.x > maxX { + finished = true + ret += point.line(to: to, x: maxX) + return + } + ret += point.line(to: to) + point = to + case .quadCurve(let to, let control): + if to.x > maxX { + finished = true + ret += point.quadCurve(to: to, control: control, x: maxX) + return + } + ret += point.quadCurve(to: to, control: control) + point = to + case .curve(let to, let control1, let control2): + if to.x > maxX { + finished = true + ret += point.curve(to: to, control1: control1, control2: control2, x: maxX) + return + } + ret += point.curve(to: to, control1: control1, control2: control2) + point = to + case .closeSubpath: + fatalError("Can't include closeSubpath") + } + } + return ret + } + + static func quadCurvedPathWithPoints(points:[Double], step:CGPoint, globalOffset: Double? = nil) -> Path { + var path = Path() + if (points.count < 2){ + return path + } + let offset = globalOffset ?? points.min()! +// guard let offset = points.min() else { return path } + var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: p1) + for pointIndex in 1.. Path { + var path = Path() + if (points.count < 2){ + return path + } + let offset = globalOffset ?? points.min()! + +// guard let offset = points.min() else { return path } + path.move(to: .zero) + var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.addLine(to: p1) + for pointIndex in 1.. Path { + var path = Path() + if (points.count < 2){ + return path + } + guard let offset = points.min() else { return path } + let p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: p1) + for pointIndex in 1.. Path { + var path = Path() + if (points.count < 2){ + return path + } + guard let offset = points.min() else { return path } + var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: p1) + for pointIndex in 1.. CGPoint { + let a = (to.y - self.y) / (to.x - self.x) + let y = self.y + (x - self.x) * a + return CGPoint(x: x, y: y) + } + + func line(to: CGPoint) -> CGFloat { + dist(to: to) + } + + func line(to: CGPoint, x: CGFloat) -> CGFloat { + dist(to: point(to: to, x: x)) + } + + func quadCurve(to: CGPoint, control: CGPoint) -> CGFloat { + var dist: CGFloat = 0 + let steps: CGFloat = 100 + + for i in 0.. CGFloat { + var dist: CGFloat = 0 + let steps: CGFloat = 100 + + for i in 0..= x { + return dist + } else if b.x > x { + dist += a.line(to: b, x: x) + return dist + } else if b.x == x { + dist += a.line(to: b) + return dist + } + + dist += a.line(to: b) + } + return dist + } + + func point(to: CGPoint, t: CGFloat, control: CGPoint) -> CGPoint { + let x = CGPoint.value(x: self.x, y: to.x, t: t, c: control.x) + let y = CGPoint.value(x: self.y, y: to.y, t: t, c: control.y) + + return CGPoint(x: x, y: y) + } + + func curve(to: CGPoint, control1: CGPoint, control2: CGPoint) -> CGFloat { + var dist: CGFloat = 0 + let steps: CGFloat = 100 + + for i in 0.. CGFloat { + var dist: CGFloat = 0 + let steps: CGFloat = 100 + + for i in 0..= x { + return dist + } else if b.x > x { + dist += a.line(to: b, x: x) + return dist + } else if b.x == x { + dist += a.line(to: b) + return dist + } + + dist += a.line(to: b) + } + + return dist + } + + func point(to: CGPoint, t: CGFloat, control1: CGPoint, control2: CGPoint) -> CGPoint { + let x = CGPoint.value(x: self.x, y: to.x, t: t, c1: control1.x, c2: control2.x) + let y = CGPoint.value(x: self.y, y: to.y, t: t, c1: control1.y, c2: control2.x) + + return CGPoint(x: x, y: y) + } + + static func value(x: CGFloat, y: CGFloat, t: CGFloat, c: CGFloat) -> CGFloat { + var value: CGFloat = 0.0 + // (1-t)^2 * p0 + 2 * (1-t) * t * c1 + t^2 * p1 + value += pow(1-t, 2) * x + value += 2 * (1-t) * t * c + value += pow(t, 2) * y + return value + } + + static func value(x: CGFloat, y: CGFloat, t: CGFloat, c1: CGFloat, c2: CGFloat) -> CGFloat { + var value: CGFloat = 0.0 + // (1-t)^3 * p0 + 3 * (1-t)^2 * t * c1 + 3 * (1-t) * t^2 * c2 + t^3 * p1 + value += pow(1-t, 3) * x + value += 3 * pow(1-t, 2) * t * c1 + value += 3 * (1-t) * pow(t, 2) * c2 + value += pow(t, 3) * y + return value + } + + static func getMidPoint(point1: CGPoint, point2: CGPoint) -> CGPoint { + return CGPoint( + x: point1.x + (point2.x - point1.x) / 2, + y: point1.y + (point2.y - point1.y) / 2 + ) + } + + func dist(to: CGPoint) -> CGFloat { + return sqrt((pow(self.x - to.x, 2) + pow(self.y - to.y, 2))) + } + + static func midPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { + return CGPoint(x:(p1.x + p2.x) / 2,y: (p1.y + p2.y) / 2) + } + + static func controlPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { + var controlPoint = CGPoint.midPointForPoints(p1:p1, p2:p2) + let diffY = abs(p2.y - controlPoint.y) + + if (p1.y < p2.y){ + controlPoint.y += diffY + } else if (p1.y > p2.y) { + controlPoint.y -= diffY + } + return controlPoint + } +} + diff --git a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift new file mode 100644 index 00000000..fbfc7fb2 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift @@ -0,0 +1,11 @@ +import SwiftUI + +extension View { + public func type(_ type: S) -> some View where S : ChartType { + self.environment(\.chartType, AnyChartType(type)) + } + + public func style(_ style: ChartStyle) -> some View { + self.environment(\.chartStyle, style) + } +} diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift index 5180d305..9e3478be 100644 --- a/Sources/SwiftUICharts/Base/Style/Colors.swift +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -4,4 +4,7 @@ public enum ChartColors { // Orange static let orangeBright = Color(hexString: "#FF782C") static let orangeDark = Color(hexString: "#EC2301") + + static let LegendColor:Color = Color(hexString: "#E8E7EA") + static let IndicatorKnob:Color = Color(hexString: "#FF57A6") } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift new file mode 100644 index 00000000..41b2e594 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -0,0 +1,9 @@ +import SwiftUI + +public struct BarChart: ChartType { + public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { + BarChartRow(data: configuration.data, gradientColor: style.foregroundColor) + } + + public init() {} +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift new file mode 100644 index 00000000..1ccaa6df --- /dev/null +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -0,0 +1,28 @@ +import SwiftUI + +public struct BarChartCell : View { + @State var value: Double + @State var index: Int = 0 + @State var width: Float + @State var numberOfDataPoints: Int + var gradientColor: ColorGradient + + var cellWidth: Double { + return Double(width)/(Double(numberOfDataPoints) * 1.5) + } + + @State var scaleValue: Double = 0 + @Binding var touchLocation: CGFloat + public var body: some View { + ZStack { + RoundedRectangle(cornerRadius: 4) + .fill(LinearGradient(gradient: gradientColor.gradient, startPoint: .bottom, endPoint: .top)) + } + .frame(width: CGFloat(self.cellWidth)) + .scaleEffect(CGSize(width: 1, height: self.scaleValue), anchor: .bottom) + .onAppear(){ + self.scaleValue = self.value + } + .animation(Animation.spring().delay(self.touchLocation < 0 ? Double(self.index) * 0.04 : 0)) + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift new file mode 100644 index 00000000..524f3621 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -0,0 +1,55 @@ +import SwiftUI + +public struct BarChartRow : View { + @State var data: [Double] = [] + @State var touchLocation: CGFloat = -1.0 + + enum Constant { + static let spacing: CGFloat = 16.0 + } + + var gradientColor: ColorGradient + var maxValue: Double { + data.max() ?? 0 + } + + public var body: some View { + GeometryReader { geometry in + HStack(alignment: .bottom, + spacing: (geometry.frame(in: .local).width - Constant.spacing) / CGFloat(self.data.count * 3)) { + ForEach(0.. Double { + return Double(data[index])/Double(maxValue) + } + + func getScaleSize(touchLocation: CGFloat, index: Int) -> CGSize { + if touchLocation > CGFloat(index)/CGFloat(self.data.count) && + touchLocation < CGFloat(index+1)/CGFloat(self.data.count) { + return CGSize(width: 1.4, height: 1.1) + } + return CGSize(width: 1, height: 1) + } +} diff --git a/Sources/SwiftUICharts/BarChart/TitleLabel.swift b/Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift similarity index 100% rename from Sources/SwiftUICharts/BarChart/TitleLabel.swift rename to Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift diff --git a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift new file mode 100644 index 00000000..5a3f5694 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift @@ -0,0 +1,28 @@ +// +// IndicatorPoint.swift +// LineChart +// +// Created by András Samu on 2019. 09. 03.. +// Copyright © 2019. András Samu. All rights reserved. +// + +import SwiftUI + +struct IndicatorPoint: View { + var body: some View { + ZStack{ + Circle() + .fill(ChartColors.IndicatorKnob) + Circle() + .stroke(Color.white, style: StrokeStyle(lineWidth: 4)) + } + .frame(width: 14, height: 14) + .shadow(color: ChartColors.LegendColor, radius: 6, x: 0, y: 6) + } +} + +struct IndicatorPoint_Previews: PreviewProvider { + static var previews: some View { + IndicatorPoint() + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift new file mode 100644 index 00000000..58c4f16e --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -0,0 +1,107 @@ +import SwiftUI + +public struct Line: View { + @State var frame: CGRect = .zero + @State var data: [Double] + var gradientColor: ColorGradient + + @State var showIndicator: Bool = false + @State var touchLocation: CGPoint = .zero + @State private var showFull: Bool = false + @State var showBackground: Bool = true + var curvedLines: Bool = true + var step: CGPoint { + return CGPoint.getStep(frame: frame, data: data) + } + + var path: Path { + let points = data + + if curvedLines { + return Path.quadCurvedPathWithPoints(points: points, + step: step, + globalOffset: nil) + } + + return Path.linePathWithPoints(points: points, step: step) + } + + var closedPath: Path { + let points = data + + if curvedLines { + return Path.quadClosedCurvedPathWithPoints(points: points, + step: step, + globalOffset: nil) + } + + return Path.closedLinePathWithPoints(points: points, step: step) + } + + public var body: some View { + GeometryReader { geometry in + ZStack { + if self.showFull && self.showBackground { + self.getBackgroundPathView() + } + self.getLinePathView() + if(self.showIndicator) { + IndicatorPoint() + .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } + } + .onAppear() { + self.frame = geometry.frame(in: .local) + } + .gesture(DragGesture() + .onChanged({ value in + self.touchLocation = value.location + self.showIndicator = true + }) + .onEnded({ value in + self.touchLocation = .zero + self.showIndicator = false + }) + ) + } + } +} + +// MARK: - Private functions + +extension Line { + private func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { + let closest = self.path.point(to: touchLocation.x) + return closest + } + + private func getBackgroundPathView() -> some View { + self.closedPath + .fill(LinearGradient(gradient: gradientColor.gradient, startPoint: .bottom, endPoint: .top)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .transition(.opacity) + .animation(.easeIn(duration: 1.6)) + } + + private func getLinePathView() -> some View { + self.path + .trim(from: 0, to: self.showFull ? 1:0) + .stroke(LinearGradient(gradient: gradientColor.gradient, + startPoint: .leading, + endPoint: .trailing), + style: StrokeStyle(lineWidth: 3, lineJoin: .round)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .animation(Animation.easeOut(duration: 1.2)) + .onAppear { + self.showFull = true + } + .onDisappear { + self.showFull = false + } + .drawingGroup() + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift new file mode 100644 index 00000000..cd3cb8c9 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -0,0 +1,9 @@ +import SwiftUI + +public struct LineChart: ChartType { + public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { + Line(data: configuration.data, gradientColor: style.foregroundColor) + } + + public init() {} +} diff --git a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift index 18983e5d..f67f48e3 100644 --- a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift @@ -6,8 +6,8 @@ struct ChartTypeKey: EnvironmentKey { struct ChartStyleKey: EnvironmentKey { static let defaultValue: ChartStyle = ChartStyle(backgroundColor: .white, - foregroundColor: ColorGradient(ChartColors.orangeBright, - ChartColors.orangeDark)) + foregroundColor: ColorGradient(ChartColors.orangeDark, + ChartColors.orangeBright)) } struct ChartLabelKey: EnvironmentKey { From a2d75dca0ee5299cfbd3e38209601479497f6cd8 Mon Sep 17 00:00:00 2001 From: Adrian Date: Mon, 25 May 2020 03:36:47 -0400 Subject: [PATCH 03/40] Write unit tests for CGPoint+Extension.swift (#100) - write unit tests for CGPoint+Extension.swift - clean up formatting on CGPoint+Extension.swift --- .../Base/Extensions/CGPoint+Extension.swift | 10 +++--- .../CGPointExtensionTests.swift | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 Tests/SwiftUIChartsTests/CGPointExtensionTests.swift diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index c063f2f5..f8241413 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -19,14 +19,14 @@ extension CGPoint { if let minPoint = data.min(), let maxPoint = data.max(), minPoint != maxPoint { min = minPoint max = maxPoint - }else { + } else { return .zero } if let min = min, let max = max, min != max { - if (min <= 0){ - stepHeight = (frame.size.height-padding) / CGFloat(max - min) - }else{ - stepHeight = (frame.size.height-padding) / CGFloat(max + min) + if (min <= 0) { + stepHeight = (frame.size.height - padding) / CGFloat(max - min) + } else { + stepHeight = (frame.size.height - padding) / CGFloat(max + min) } } diff --git a/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift b/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift new file mode 100644 index 00000000..692e9c77 --- /dev/null +++ b/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift @@ -0,0 +1,32 @@ +// +// CGPointExtensionTests.swift +// SwiftUIChartsTests +// +// Created by Adrian Bolinger on 5/24/20. +// + +@testable import SwiftUICharts +import XCTest + +class CGPointExtensionTests: XCTestCase { + static let twentyElementArray: [Double] = Array(repeating: Double.random(in: 1...100), count: 20) + + func testGetStepWithOneElementArray() { + let frame = CGRect(x: 0, y: 0, width: 300, height: 300) + let oneElementArray: [Double] = [0.0] + + XCTAssertEqual(CGPoint.getStep(frame: frame, data: oneElementArray), .zero) + } + + func testGetStepWithMultiElementArrayWithNegativeValues() { + let frame = CGRect(x: 0, y: 0, width: 300, height: 300) + let multiElementArray: [Double] = [-5.0, 0.0, 5.0] + XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 27.0)) + } + + func testGetStepWithMultiElementArrayWithPositiveValues() { + let frame = CGRect(x: 0, y: 0, width: 300, height: 300) + let multiElementArray: [Double] = [5.0, 10.0, 15.0] + XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 13.5)) + } +} From aa9126482f00cc57587614ffcd8561103172da31 Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 25 May 2020 08:20:46 -0400 Subject: [PATCH 04/40] Add PieChart + multicolor (#98) * Add ColorGradient example Add ColorGradient single color constructor Add preview for BarChart * Add PieChart Allow multi color for Pie and Bar Add linter --- .swiftlint.yml | 64 +++++++++++ Package.swift | 6 +- .../Base/Extensions/CGRect+Extension.swift | 16 +++ .../Base/Extensions/Color+Extension.swift | 12 +- .../SwiftUICharts/Base/Style/ChartStyle.swift | 21 +++- .../Base/Style/ColorGradient.swift | 23 ++++ .../Charts/BarChart/BarChart.swift | 22 +++- .../Charts/BarChart/BarChartCell.swift | 26 ++++- .../Charts/BarChart/BarChartRow.swift | 37 ++++-- .../SwiftUICharts/Charts/LineChart/Line.swift | 18 ++- .../Charts/LineChart/LineChart.swift | 22 +++- Sources/SwiftUICharts/PieChart/PieChart.swift | 59 ++++++++++ .../SwiftUICharts/PieChart/PieChartCell.swift | 107 ++++++++++++++++++ .../SwiftUICharts/PieChart/PieChartRow.swift | 66 +++++++++++ 14 files changed, 472 insertions(+), 27 deletions(-) create mode 100644 .swiftlint.yml create mode 100644 Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift create mode 100644 Sources/SwiftUICharts/PieChart/PieChart.swift create mode 100644 Sources/SwiftUICharts/PieChart/PieChartCell.swift create mode 100644 Sources/SwiftUICharts/PieChart/PieChartRow.swift diff --git a/.swiftlint.yml b/.swiftlint.yml new file mode 100644 index 00000000..60e30109 --- /dev/null +++ b/.swiftlint.yml @@ -0,0 +1,64 @@ +disabled_rules: +- explicit_acl +- trailing_whitespace +- force_cast +- unused_closure_parameter +- multiple_closures_with_trailing_closure +opt_in_rules: +- anyobject_protocol +- array_init +- attributes +- collection_alignment +- colon +- conditional_returns_on_newline +- convenience_type +- empty_count +- empty_string +- empty_collection_literal +- enum_case_associated_values_count +- function_default_parameter_at_end +- fatal_error_message +- file_name +- first_where +- modifier_order +- toggle_bool +- unused_private_declaration +- yoda_condition +excluded: +- Carthage +- Pods +- SwiftLint/Common/3rdPartyLib +identifier_name: + excluded: + - a + - b + - c + - i + - id + - t + - to + - x + - y +line_length: + warning: 150 + error: 200 + ignores_function_declarations: true + ignores_comments: true + ignores_urls: true +function_body_length: + warning: 300 + error: 500 +function_parameter_count: + warning: 6 + error: 8 +type_body_length: + warning: 300 + error: 400 +file_length: + warning: 500 + error: 1200 + ignore_comment_only_lines: true +cyclomatic_complexity: + warning: 15 + error: 21 +reporter: "xcode" diff --git a/Package.swift b/Package.swift index ffd10e06..5a466752 100644 --- a/Package.swift +++ b/Package.swift @@ -6,13 +6,13 @@ import PackageDescription let package = Package( name: "SwiftUICharts", platforms: [ - .iOS(.v13),.watchOS(.v6) + .iOS(.v13), .watchOS(.v6) ], products: [ // Products define the executables and libraries produced by a package, and make them visible to other packages. .library( name: "SwiftUICharts", - targets: ["SwiftUICharts"]), + targets: ["SwiftUICharts"]) ], dependencies: [ // Dependencies declare other packages that this package depends on. @@ -26,6 +26,6 @@ let package = Package( dependencies: []), .testTarget( name: "SwiftUIChartsTests", - dependencies: ["SwiftUICharts"]), + dependencies: ["SwiftUICharts"]) ] ) diff --git a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift new file mode 100644 index 00000000..c84d8374 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift @@ -0,0 +1,16 @@ +// +// CGRect+Extension.swift +// SwiftUICharts +// +// Created by Nicolas Savoini on 2020-05-24. +// + +import Foundation +import SwiftUI + +extension CGRect { + // Return the coordinate for a rectangle center + public var mid: CGPoint { + return CGPoint(x: self.midX, y: self.midY) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift index e8b24983..a018c3c9 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift @@ -5,17 +5,17 @@ extension Color { let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int = UInt64() Scanner(string: hex).scanHexInt64(&int) - let r, g, b: UInt64 + let red, green, blue: UInt64 switch hex.count { case 3: // RGB (12-bit) - (r, g, b) = ((int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) + (red, green, blue) = ((int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17) case 6: // RGB (24-bit) - (r, g, b) = (int >> 16, int >> 8 & 0xFF, int & 0xFF) + (red, green, blue) = (int >> 16, int >> 8 & 0xFF, int & 0xFF) case 8: // ARGB (32-bit) - (r, g, b) = (int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) + (red, green, blue) = (int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) default: - (r, g, b) = (0, 0, 0) + (red, green, blue) = (0, 0, 0) } - self.init(red: Double(r) / 255, green: Double(g) / 255, blue: Double(b) / 255) + self.init(red: Double(red) / 255, green: Double(green) / 255, blue: Double(blue) / 255) } } diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index b7474f8c..e23ede3a 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -1,11 +1,28 @@ import SwiftUI public struct ChartStyle { - public let backgroundColor: Color - public let foregroundColor: ColorGradient + public let backgroundColor: ColorGradient + public let foregroundColor: [ColorGradient] + + public init(backgroundColor: Color, foregroundColor: [ColorGradient]) { + self.backgroundColor = ColorGradient.init(backgroundColor) + self.foregroundColor = foregroundColor + } + public init(backgroundColor: Color, foregroundColor: ColorGradient) { + self.backgroundColor = ColorGradient.init(backgroundColor) + self.foregroundColor = [foregroundColor] + } + + public init(backgroundColor: ColorGradient, foregroundColor: ColorGradient) { + self.backgroundColor = backgroundColor + self.foregroundColor = [foregroundColor] + } + + public init(backgroundColor: ColorGradient, foregroundColor: [ColorGradient]) { self.backgroundColor = backgroundColor self.foregroundColor = foregroundColor } + } diff --git a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift index 18a4ab20..827e0096 100644 --- a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift +++ b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift @@ -4,6 +4,11 @@ public struct ColorGradient { public let startColor: Color public let endColor: Color + public init(_ color: Color) { + self.startColor = color + self.endColor = color + } + public init (_ startColor: Color, _ endColor: Color) { self.startColor = startColor self.endColor = endColor @@ -13,3 +18,21 @@ public struct ColorGradient { return Gradient(colors: [startColor, endColor]) } } + +extension ColorGradient { + /// Convenience method to return a LinearGradient from the ColorGradient + /// - Parameters: + /// - startPoint: starting point + /// - endPoint: ending point + /// - Returns: a Linear gradient + public func linearGradient(from startPoint: UnitPoint, to endPoint: UnitPoint) -> LinearGradient { + return LinearGradient(gradient: self.gradient, startPoint: startPoint, endPoint: endPoint) + } +} + +extension ColorGradient { + public static let orangeBright = ColorGradient(ChartColors.orangeBright) + public static let redBlack = ColorGradient(.red, .black) + public static let greenRed = ColorGradient(.green, .red) + public static let whiteBlack = ColorGradient(.white, .black) +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index 41b2e594..d91d1db0 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -2,8 +2,26 @@ import SwiftUI public struct BarChart: ChartType { public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { - BarChartRow(data: configuration.data, gradientColor: style.foregroundColor) + BarChartRow(data: configuration.data, style: style) } - public init() {} } + +struct BarChart_Previews: PreviewProvider { + static var previews: some View { + Group { + Group { + BarChart().makeChart( + configuration: .init(data: [1, 2, 3, 5, 1]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) + }.environment(\.colorScheme, .light) + + Group { + BarChart().makeChart( + configuration: .init(data: [1, 2, 3]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) + }.environment(\.colorScheme, .dark) + + } + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index 1ccaa6df..22f2301b 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -1,6 +1,6 @@ import SwiftUI -public struct BarChartCell : View { +public struct BarChartCell: View { @State var value: Double @State var index: Int = 0 @State var width: Float @@ -13,16 +13,36 @@ public struct BarChartCell : View { @State var scaleValue: Double = 0 @Binding var touchLocation: CGFloat + public var body: some View { ZStack { RoundedRectangle(cornerRadius: 4) - .fill(LinearGradient(gradient: gradientColor.gradient, startPoint: .bottom, endPoint: .top)) + .fill(gradientColor.linearGradient(from: .bottom, to: .top)) } .frame(width: CGFloat(self.cellWidth)) .scaleEffect(CGSize(width: 1, height: self.scaleValue), anchor: .bottom) - .onAppear(){ + .onAppear { self.scaleValue = self.value } .animation(Animation.spring().delay(self.touchLocation < 0 ? Double(self.index) * 0.04 : 0)) } } + +struct BarChartCell_Previews: PreviewProvider { + static var previews: some View { + Group { + Group { + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: .constant(CGFloat())) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: .constant(CGFloat())) + } + + Group { + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: .constant(CGFloat())) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: .constant(CGFloat())) + }.environment(\.colorScheme, .dark) + } + + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 524f3621..4a517597 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,6 +1,6 @@ import SwiftUI -public struct BarChartRow : View { +public struct BarChartRow: View { @State var data: [Double] = [] @State var touchLocation: CGFloat = -1.0 @@ -8,7 +8,8 @@ public struct BarChartRow : View { static let spacing: CGFloat = 16.0 } - var gradientColor: ColorGradient + var style: ChartStyle + var maxValue: Double { data.max() ?? 0 } @@ -17,14 +18,14 @@ public struct BarChartRow : View { GeometryReader { geometry in HStack(alignment: .bottom, spacing: (geometry.frame(in: .local).width - Constant.spacing) / CGFloat(self.data.count * 3)) { - ForEach(0.. some View { self.closedPath - .fill(LinearGradient(gradient: gradientColor.gradient, startPoint: .bottom, endPoint: .top)) + .fill(style.backgroundColor.linearGradient(from: .bottom, to: .top)) .rotationEffect(.degrees(180), anchor: .center) .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) .transition(.opacity) @@ -89,7 +89,7 @@ extension Line { private func getLinePathView() -> some View { self.path .trim(from: 0, to: self.showFull ? 1:0) - .stroke(LinearGradient(gradient: gradientColor.gradient, + .stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, startPoint: .leading, endPoint: .trailing), style: StrokeStyle(lineWidth: 3, lineJoin: .round)) @@ -105,3 +105,15 @@ extension Line { .drawingGroup() } } + +struct Line_Previews: PreviewProvider { + static var previews: some View { + Group { + Line(data: [1, 2, 3, 1, 2, 5, 7], style: blackLineStyle) + Line(data: [1, 2, 3, 1, 2, 5, 7], style: redLineStyle) + } + } +} + +private let blackLineStyle = ChartStyle(backgroundColor: ColorGradient(.white), foregroundColor: ColorGradient(.black)) +private let redLineStyle = ChartStyle(backgroundColor: .whiteBlack, foregroundColor: ColorGradient(.red)) diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index cd3cb8c9..5bd76709 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -2,8 +2,28 @@ import SwiftUI public struct LineChart: ChartType { public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { - Line(data: configuration.data, gradientColor: style.foregroundColor) + Line(data: configuration.data, style: style) } public init() {} } + +struct LineChart_Previews: PreviewProvider { + static var previews: some View { + Group { + Group { + LineChart().makeChart( + configuration: .init(data: [1, 2, 3, 5, 1]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) + }.environment(\.colorScheme, .light) + + Group { + LineChart().makeChart( + configuration: .init(data: [1, 2, 3]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) + }.environment(\.colorScheme, .dark) + + } + + } +} diff --git a/Sources/SwiftUICharts/PieChart/PieChart.swift b/Sources/SwiftUICharts/PieChart/PieChart.swift new file mode 100644 index 00000000..9794fda8 --- /dev/null +++ b/Sources/SwiftUICharts/PieChart/PieChart.swift @@ -0,0 +1,59 @@ +// +// PieChart.swift +// SwiftUICharts +// +// Created by Nicolas Savoini on 2020-05-24. +// + +import SwiftUI + +public struct PieChart: ChartType { + public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { + PieChartRow(data: configuration.data, style: style) + } + public init() {} +} + +struct PieChart_Previews: PreviewProvider { + static var previews: some View { + Group { + Group { + PieChart().makeChart( + configuration: .init(data: [56, 78, 53, 65, 54]), + style: styleOneColor) + PieChart().makeChart( + configuration: .init(data: [56, 78, 53, 65, 54]), + style: styleTwoColor) + PieChart().makeChart( + configuration: .init(data: [1, 1, 1, 1, 1, 1]), + style: trivialPursuit) + }.environment(\.colorScheme, .light) + + Group { + PieChart().makeChart( + configuration: .init(data: [56, 78, 53, 65, 54]), + style: styleOneColor) + PieChart().makeChart( + configuration: .init(data: [56, 78, 53, 65, 54]), + style: styleTwoColor) + PieChart().makeChart( + configuration: .init(data: [1, 1, 1, 1, 1, 1]), + style: trivialPursuit) + }.environment(\.colorScheme, .dark) + + }.previewLayout(.fixed(width: 250, height: 400)) + } +} + +private let styleOneColor = ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient.init(.pink)) + +private let styleTwoColor = ChartStyle(backgroundColor: ColorGradient(.black), foregroundColor: [ColorGradient(.yellow), ColorGradient(.red)]) + +private let trivialPursuit = ChartStyle( + backgroundColor: .yellow, + foregroundColor: [ColorGradient(.yellow), + ColorGradient(.pink), + ColorGradient(.green), + ColorGradient(.primary), + ColorGradient(.blue), + ColorGradient(.orange)]) diff --git a/Sources/SwiftUICharts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/PieChart/PieChartCell.swift new file mode 100644 index 00000000..20157677 --- /dev/null +++ b/Sources/SwiftUICharts/PieChart/PieChartCell.swift @@ -0,0 +1,107 @@ +// +// PieChartCell.swift +// SwiftUICharts +// +// Created by Nicolas Savoini on 2020-05-24. +// + +import SwiftUI + +struct PieSlice: Identifiable { + var id = UUID() + var startDeg: Double + var endDeg: Double + var value: Double + //var normalizedValue: Double +} + +public struct PieChartCell: View { + @State private var show: Bool = false + var rect: CGRect + var radius: CGFloat { + return min(rect.width, rect.height)/2 + } + var startDeg: Double + var endDeg: Double + var path: Path { + var path = Path() + path.addArc( + center: rect.mid, + radius: self.radius, + startAngle: Angle(degrees: self.startDeg), + endAngle: Angle(degrees: self.endDeg), + clockwise: false) + path.addLine(to: rect.mid) + path.closeSubpath() + return path + } + var index: Int + + // Section line border color + var backgroundColor: Color + + // Section color + var accentColor: ColorGradient + + public var body: some View { + Group { + path + .fill(self.accentColor.linearGradient(from: .bottom, to: .top)) + .overlay(path.stroke(self.backgroundColor, lineWidth: 2)) + .scaleEffect(self.show ? 1 : 0) + .animation(Animation.spring().delay(Double(self.index) * 0.04)) + .onAppear { + self.show = true + } + + } + } +} + +struct PieChartCell_Previews: PreviewProvider { + static var previews: some View { + Group { + + GeometryReader { geometry in + PieChartCell( + rect: geometry.frame(in: .local), + startDeg: 00.0, + endDeg: 90.0, + index: 0, + backgroundColor: Color.red, + accentColor: ColorGradient.greenRed) + }.frame(width: 100, height: 100) + + GeometryReader { geometry in + PieChartCell( + rect: geometry.frame(in: .local), + startDeg: 0.0, + endDeg: 90.0, + index: 0, + backgroundColor: Color.green, + accentColor: ColorGradient.redBlack) + }.frame(width: 100, height: 100) + + GeometryReader { geometry in + PieChartCell( + rect: geometry.frame(in: .local), + startDeg: 100.0, + endDeg: 135.0, + index: 0, + backgroundColor: Color.black, + accentColor: ColorGradient.whiteBlack) + }.frame(width: 100, height: 100) + + GeometryReader { geometry in + PieChartCell( + rect: geometry.frame(in: .local), + startDeg: 185.0, + endDeg: 290.0, + index: 0, + backgroundColor: Color.purple, + accentColor: ColorGradient(.purple)) + }.frame(width: 100, height: 100) + + }.previewLayout(.fixed(width: 125, height: 125)) + } +} diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift new file mode 100644 index 00000000..4915bd97 --- /dev/null +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -0,0 +1,66 @@ +// +// PieChartRow.swift +// SwiftUICharts +// +// Created by Nicolas Savoini on 2020-05-24. +// + +import SwiftUI + +public struct PieChartRow: View { + var data: [Double] + + var style: ChartStyle + + var slices: [PieSlice] { + var tempSlices: [PieSlice] = [] + var lastEndDeg: Double = 0 + let maxValue = data.reduce(0, +) + + for slice in data { + let normalized: Double = Double(slice)/Double(maxValue) + let startDeg = lastEndDeg + let endDeg = lastEndDeg + (normalized * 360) + lastEndDeg = endDeg + tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice)) + } + + return tempSlices + } + + public var body: some View { + GeometryReader { geometry in + ZStack { + ForEach(0.. Date: Mon, 25 May 2020 14:50:01 +0200 Subject: [PATCH 05/40] removed .rotate for foreGroundColor --- Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift | 2 +- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 4a517597..9abe01aa 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -23,7 +23,7 @@ public struct BarChartRow: View { index: index, width: Float(geometry.frame(in: .local).width - Constant.spacing), numberOfDataPoints: self.data.count, - gradientColor: self.style.foregroundColor.rotate(for: index), + gradientColor: self.style.foregroundColor.first!, touchLocation: self.$touchLocation) .scaleEffect(self.getScaleSize(touchLocation: self.touchLocation, index: index), anchor: .bottom) .animation(.spring()) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index 4915bd97..b4d8d003 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -38,7 +38,7 @@ public struct PieChartRow: View { endDeg: self.slices[index].endDeg, index: index, backgroundColor: self.style.backgroundColor.startColor, - accentColor: self.style.foregroundColor.rotate(for: index) + accentColor: self.style.foregroundColor.first! ) } From 99b952fcf46df30582e2bac94446f65664b80d74 Mon Sep 17 00:00:00 2001 From: nicolas Date: Tue, 26 May 2020 17:04:51 -0400 Subject: [PATCH 06/40] Restore rotating index for multicolor (#102) --- .../Base/Extensions/Array+Extension.swift | 22 +++++++++ .../Base/Style/ColorGradient.swift | 2 +- .../Charts/BarChart/BarChartRow.swift | 2 +- .../SwiftUICharts/PieChart/PieChartRow.swift | 12 ++++- .../ArrayExtensionTests.swift | 45 +++++++++++++++++++ 5 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift create mode 100644 Tests/SwiftUIChartsTests/ArrayExtensionTests.swift diff --git a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift new file mode 100644 index 00000000..f2898316 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift @@ -0,0 +1,22 @@ +// +// File.swift +// +// +// Created by Nicolas Savoini on 2020-05-25. +// + +import Foundation + +extension Array where Element == ColorGradient { + func rotate(for index: Int) -> ColorGradient { + if self.isEmpty { + return ColorGradient.orangeBright + } + + if self.count <= index { + return self[index % self.count] + } + + return self[index] + } +} diff --git a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift index 827e0096..5446cd7d 100644 --- a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift +++ b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift @@ -1,6 +1,6 @@ import SwiftUI -public struct ColorGradient { +public struct ColorGradient: Equatable { public let startColor: Color public let endColor: Color diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 9abe01aa..4a517597 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -23,7 +23,7 @@ public struct BarChartRow: View { index: index, width: Float(geometry.frame(in: .local).width - Constant.spacing), numberOfDataPoints: self.data.count, - gradientColor: self.style.foregroundColor.first!, + gradientColor: self.style.foregroundColor.rotate(for: index), touchLocation: self.$touchLocation) .scaleEffect(self.getScaleSize(touchLocation: self.touchLocation, index: index), anchor: .bottom) .animation(.spring()) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index b4d8d003..f9428179 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -38,7 +38,7 @@ public struct PieChartRow: View { endDeg: self.slices[index].endDeg, index: index, backgroundColor: self.style.backgroundColor.startColor, - accentColor: self.style.foregroundColor.first! + accentColor: self.style.foregroundColor.rotate(for: index) ) } @@ -56,6 +56,12 @@ struct PieChartRow_Previews: PreviewProvider { data: [8, 23, 32, 7, 23, 43], style: defaultMultiColorChartStyle) .frame(width: 100, height: 100) + + PieChartRow( + data: [8, 23, 32, 7, 23, 43], + style: multiColorChartStyle) + . frame(width: 100, height: 100) + }.previewLayout(.fixed(width: 125, height: 125)) } @@ -64,3 +70,7 @@ struct PieChartRow_Previews: PreviewProvider { private let defaultMultiColorChartStyle = ChartStyle( backgroundColor: Color.white, foregroundColor: [ColorGradient]()) + +private let multiColorChartStyle = ChartStyle( +backgroundColor: Color.purple, +foregroundColor: [ColorGradient.greenRed, ColorGradient.whiteBlack]) diff --git a/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift new file mode 100644 index 00000000..35b1e304 --- /dev/null +++ b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift @@ -0,0 +1,45 @@ +// +// File.swift +// +// +// Created by Nicolas Savoini on 2020-05-25. +// + +@testable import SwiftUICharts +import XCTest + +class ArrayExtensionTests: XCTestCase { + + func testArrayRotatingIndexEmpty() { + let colors = [ColorGradient]() + XCTAssertEqual(colors.rotate(for: 0), ColorGradient.orangeBright) + } + + func testArrayRotatingIndexOneValue() { + let colors = [ColorGradient.greenRed] + + XCTAssertEqual(colors.rotate(for: 0), ColorGradient.greenRed) + XCTAssertEqual(colors.rotate(for: 1), ColorGradient.greenRed) + XCTAssertEqual(colors.rotate(for: 2), ColorGradient.greenRed) + } + + func testArrayRotatingIndexLessValues() { + let colors = [ColorGradient.greenRed, ColorGradient.whiteBlack] + + XCTAssertEqual(colors.rotate(for: 0), ColorGradient.greenRed) + XCTAssertEqual(colors.rotate(for: 1), ColorGradient.whiteBlack) + XCTAssertEqual(colors.rotate(for: 2), ColorGradient.greenRed) + XCTAssertEqual(colors.rotate(for: 3), ColorGradient.whiteBlack) + XCTAssertEqual(colors.rotate(for: 4), ColorGradient.greenRed) + } + + func testArrayRotatingIndexMoreValues() { + let colors = [ColorGradient.greenRed, ColorGradient.whiteBlack, ColorGradient.orangeBright] + + XCTAssertEqual(colors.rotate(for: 0), ColorGradient.greenRed) + XCTAssertEqual(colors.rotate(for: 1), ColorGradient.whiteBlack) + + } + +} + From 4963ec54ed7d2ee6c90cdb6330b5ae37015e3c2f Mon Sep 17 00:00:00 2001 From: Adrian Date: Tue, 26 May 2020 17:05:05 -0400 Subject: [PATCH 07/40] Write unit tests for Color+Extension.swift (#101) - Wrote tests - Possible minor bug where there's an alpha missing on 32-bit colors? --- .../Base/Extensions/Color+Extension.swift | 2 + .../ColorExtensionTests.swift | 56 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 Tests/SwiftUIChartsTests/ColorExtensionTests.swift diff --git a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift index a018c3c9..8742decf 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift @@ -12,6 +12,8 @@ extension Color { case 6: // RGB (24-bit) (red, green, blue) = (int >> 16, int >> 8 & 0xFF, int & 0xFF) case 8: // ARGB (32-bit) + // FIXME: I think we need an an alpha value on this one. See link below. + // https://stackoverflow.com/a/56874327/4475605 (red, green, blue) = (int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF) default: (red, green, blue) = (0, 0, 0) diff --git a/Tests/SwiftUIChartsTests/ColorExtensionTests.swift b/Tests/SwiftUIChartsTests/ColorExtensionTests.swift new file mode 100644 index 00000000..2a016ed2 --- /dev/null +++ b/Tests/SwiftUIChartsTests/ColorExtensionTests.swift @@ -0,0 +1,56 @@ +// +// ColorExtensionTests.swift +// SwiftUIChartsTests +// +// Created by Adrian Bolinger on 5/24/20. +// + +@testable import SwiftUICharts +import SwiftUI +import XCTest + +class ColorExtensionTests: XCTestCase { + func testTwentyFourBitRGBColors() { + let actualWhite = Color(hexString: "FFFFFF") + let expectedWhite = Color(red: 1, green: 1, blue: 1) + XCTAssertEqual(actualWhite, expectedWhite) + + let actualBlack = Color(hexString: "000000") + let expectedBlack = Color(red: 0, green: 0, blue: 0) + XCTAssertEqual(actualBlack, expectedBlack) + + let actualRed = Color(hexString: "FF0000") + let expectedRed = Color(red: 255/255, green: 0, blue: 0) + XCTAssertEqual(actualRed, expectedRed) + + let actualGreen = Color(hexString: "00FF00") + let expectedGreen = Color(red: 0, green: 1, blue: 0) + XCTAssertEqual(actualGreen, expectedGreen) + + let actualBlue = Color(hexString: "0000FF") + let expectedBlue = Color(red: 0, green: 0, blue: 1) + XCTAssertEqual(actualBlue, expectedBlue) + } + + func testTwelveBitRGBColors() { + let actualWhite = Color(hexString: "FFF") + let expectedWhite = Color(red: 1, green: 1, blue: 1) + XCTAssertEqual(actualWhite, expectedWhite) + + let actualBlack = Color(hexString: "000") + let expectedBlack = Color(red: 0, green: 0, blue: 0) + XCTAssertEqual(actualBlack, expectedBlack) + + let actualRed = Color(hexString: "F00") + let expectedRed = Color(red: 255/255, green: 0, blue: 0) + XCTAssertEqual(actualRed, expectedRed) + + let actualGreen = Color(hexString: "0F0") + let expectedGreen = Color(red: 0, green: 1, blue: 0) + XCTAssertEqual(actualGreen, expectedGreen) + + let actualBlue = Color(hexString: "00F") + let expectedBlue = Color(red: 0, green: 0, blue: 1) + XCTAssertEqual(actualBlue, expectedBlue) + } +} From f2866ae2811bc78360ef8a0bdea827b31edd93d1 Mon Sep 17 00:00:00 2001 From: nicolas Date: Thu, 28 May 2020 04:54:06 -0400 Subject: [PATCH 08/40] Syntax corrections (#105) * Movie PieChartFile * Variable renaming --- .../SwiftUICharts/Base/Chart/ChartType.swift | 2 +- .../Base/Extensions/CGPoint+Extension.swift | 2 +- .../Base/Extensions/Path+QuadCurve.swift | 99 ++++++++++--------- .../Base/Extensions/View+Extension.swift | 2 +- .../SwiftUICharts/Base/Label/ChartLabel.swift | 2 +- Sources/SwiftUICharts/Base/Style/Colors.swift | 4 +- .../Charts/LineChart/IndicatorPoint.swift | 6 +- .../SwiftUICharts/Charts/LineChart/Line.swift | 4 +- .../{ => Charts}/PieChart/PieChart.swift | 0 .../{ => Charts}/PieChart/PieChartCell.swift | 0 .../{ => Charts}/PieChart/PieChartRow.swift | 0 .../ArrayExtensionTests.swift | 1 - .../SwiftUIChartsTests.swift | 2 +- .../SwiftUIChartsTests/XCTestManifests.swift | 2 +- 14 files changed, 65 insertions(+), 61 deletions(-) rename Sources/SwiftUICharts/{ => Charts}/PieChart/PieChart.swift (100%) rename Sources/SwiftUICharts/{ => Charts}/PieChart/PieChartCell.swift (100%) rename Sources/SwiftUICharts/{ => Charts}/PieChart/PieChartRow.swift (100%) diff --git a/Sources/SwiftUICharts/Base/Chart/ChartType.swift b/Sources/SwiftUICharts/Base/Chart/ChartType.swift index 7951d29d..b7bada4c 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartType.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartType.swift @@ -2,7 +2,7 @@ import SwiftUI @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) public protocol ChartType { - associatedtype Body : View + associatedtype Body: View func makeChart(configuration: Self.Configuration, style: Self.Style) -> Self.Body diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index f8241413..07f3325c 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -23,7 +23,7 @@ extension CGPoint { return .zero } if let min = min, let max = max, min != max { - if (min <= 0) { + if min <= 0 { stepHeight = (frame.size.height - padding) / CGFloat(max - min) } else { stepHeight = (frame.size.height - padding) / CGFloat(max + min) diff --git a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift index f1828ff7..9e9e3cdf 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift @@ -108,76 +108,80 @@ extension Path { return ret } - static func quadCurvedPathWithPoints(points:[Double], step:CGPoint, globalOffset: Double? = nil) -> Path { + static func quadCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { var path = Path() - if (points.count < 2){ + if points.count < 2 { return path } let offset = globalOffset ?? points.min()! // guard let offset = points.min() else { return path } - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) + var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: point1) for pointIndex in 1.. Path { + static func quadClosedCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { var path = Path() - if (points.count < 2){ + if points.count < 2 { return path } let offset = globalOffset ?? points.min()! // guard let offset = points.min() else { return path } path.move(to: .zero) - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.addLine(to: p1) + var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.addLine(to: point1) for pointIndex in 1.. Path { + static func linePathWithPoints(points: [Double], step: CGPoint) -> Path { var path = Path() - if (points.count < 2){ + if points.count < 2 { return path } - guard let offset = points.min() else { return path } - let p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) + guard let offset = points.min() else { + return path + } + let point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: point1) for pointIndex in 1.. Path { + static func closedLinePathWithPoints(points: [Double], step: CGPoint) -> Path { var path = Path() - if (points.count < 2){ + if points.count < 2 { + return path + } + guard let offset = points.min() else { return path } - guard let offset = points.min() else { return path } - var p1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: p1) + var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + path.move(to: point1) for pointIndex in 1.. CGPoint { - let x = CGPoint.value(x: self.x, y: to.x, t: t, c1: control1.x, c2: control2.x) - let y = CGPoint.value(x: self.y, y: to.y, t: t, c1: control1.y, c2: control2.x) + let x = CGPoint.value(x: self.x, y: to.x, t: t, control1: control1.x, control2: control2.x) + let y = CGPoint.value(x: self.y, y: to.y, t: t, control1: control1.y, control2: control2.x) return CGPoint(x: x, y: y) } @@ -306,12 +310,12 @@ extension CGPoint { return value } - static func value(x: CGFloat, y: CGFloat, t: CGFloat, c1: CGFloat, c2: CGFloat) -> CGFloat { + static func value(x: CGFloat, y: CGFloat, t: CGFloat, control1: CGFloat, control2: CGFloat) -> CGFloat { var value: CGFloat = 0.0 // (1-t)^3 * p0 + 3 * (1-t)^2 * t * c1 + 3 * (1-t) * t^2 * c2 + t^3 * p1 value += pow(1-t, 3) * x - value += 3 * pow(1-t, 2) * t * c1 - value += 3 * (1-t) * pow(t, 2) * c2 + value += 3 * pow(1-t, 2) * t * control1 + value += 3 * (1-t) * pow(t, 2) * control2 value += pow(t, 3) * y return value } @@ -327,20 +331,21 @@ extension CGPoint { return sqrt((pow(self.x - to.x, 2) + pow(self.y - to.y, 2))) } - static func midPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { - return CGPoint(x:(p1.x + p2.x) / 2,y: (p1.y + p2.y) / 2) + static func midPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { + return CGPoint( + x: (firstPoint.x + secondPoint.x) / 2, + y: (firstPoint.y + secondPoint.y) / 2) } - static func controlPointForPoints(p1:CGPoint, p2:CGPoint) -> CGPoint { - var controlPoint = CGPoint.midPointForPoints(p1:p1, p2:p2) - let diffY = abs(p2.y - controlPoint.y) + static func controlPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { + var controlPoint = CGPoint.midPointForPoints(firstPoint: firstPoint, secondPoint: secondPoint) + let diffY = abs(secondPoint.y - controlPoint.y) - if (p1.y < p2.y){ + if firstPoint.y < secondPoint.y { controlPoint.y += diffY - } else if (p1.y > p2.y) { + } else if firstPoint.y > secondPoint.y { controlPoint.y -= diffY } return controlPoint } } - diff --git a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift index fbfc7fb2..06e57edc 100644 --- a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift @@ -1,7 +1,7 @@ import SwiftUI extension View { - public func type(_ type: S) -> some View where S : ChartType { + public func type(_ type: S) -> some View where S: ChartType { self.environment(\.chartType, AnyChartType(type)) } diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index a3134e54..6e304785 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -3,7 +3,7 @@ import SwiftUI @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) public protocol ChartLabel { - associatedtype Body : View + associatedtype Body: View func makeLabel(configuration: Self.Configuration) -> Self.Body diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift index 9e3478be..0d166936 100644 --- a/Sources/SwiftUICharts/Base/Style/Colors.swift +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -5,6 +5,6 @@ public enum ChartColors { static let orangeBright = Color(hexString: "#FF782C") static let orangeDark = Color(hexString: "#EC2301") - static let LegendColor:Color = Color(hexString: "#E8E7EA") - static let IndicatorKnob:Color = Color(hexString: "#FF57A6") + static let legendColor: Color = Color(hexString: "#E8E7EA") + static let indicatorKnob: Color = Color(hexString: "#FF57A6") } diff --git a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift index 5a3f5694..925ecc7f 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift @@ -10,14 +10,14 @@ import SwiftUI struct IndicatorPoint: View { var body: some View { - ZStack{ + ZStack { Circle() - .fill(ChartColors.IndicatorKnob) + .fill(ChartColors.indicatorKnob) Circle() .stroke(Color.white, style: StrokeStyle(lineWidth: 4)) } .frame(width: 14, height: 14) - .shadow(color: ChartColors.LegendColor, radius: 6, x: 0, y: 6) + .shadow(color: ChartColors.legendColor, radius: 6, x: 0, y: 6) } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 2138d5a8..ce51c420 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -45,14 +45,14 @@ public struct Line: View { self.getBackgroundPathView() } self.getLinePathView() - if(self.showIndicator) { + if self.showIndicator { IndicatorPoint() .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) .rotationEffect(.degrees(180), anchor: .center) .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) } } - .onAppear() { + .onAppear { self.frame = geometry.frame(in: .local) } .gesture(DragGesture() diff --git a/Sources/SwiftUICharts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift similarity index 100% rename from Sources/SwiftUICharts/PieChart/PieChart.swift rename to Sources/SwiftUICharts/Charts/PieChart/PieChart.swift diff --git a/Sources/SwiftUICharts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift similarity index 100% rename from Sources/SwiftUICharts/PieChart/PieChartCell.swift rename to Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift similarity index 100% rename from Sources/SwiftUICharts/PieChart/PieChartRow.swift rename to Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift diff --git a/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift index 35b1e304..ad77114c 100644 --- a/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift +++ b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift @@ -42,4 +42,3 @@ class ArrayExtensionTests: XCTestCase { } } - diff --git a/Tests/SwiftUIChartsTests/SwiftUIChartsTests.swift b/Tests/SwiftUIChartsTests/SwiftUIChartsTests.swift index 0171d836..dc7dc53a 100644 --- a/Tests/SwiftUIChartsTests/SwiftUIChartsTests.swift +++ b/Tests/SwiftUIChartsTests/SwiftUIChartsTests.swift @@ -9,6 +9,6 @@ final class SwiftUIChartsTests: XCTestCase { } static var allTests = [ - ("testExample", testExample), + ("testExample", testExample) ] } diff --git a/Tests/SwiftUIChartsTests/XCTestManifests.swift b/Tests/SwiftUIChartsTests/XCTestManifests.swift index a3999a87..e80e5857 100644 --- a/Tests/SwiftUIChartsTests/XCTestManifests.swift +++ b/Tests/SwiftUIChartsTests/XCTestManifests.swift @@ -3,7 +3,7 @@ import XCTest #if !canImport(ObjectiveC) public func allTests() -> [XCTestCaseEntry] { return [ - testCase(SwiftUIChartsTests.allTests), + testCase(SwiftUIChartsTests.allTests) ] } #endif From 0caebce9ff8d92d663299f2c28338ce5fbfad126 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Thu, 28 May 2020 18:50:59 +0200 Subject: [PATCH 09/40] added mac os as a build target --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 5a466752..3339018c 100644 --- a/Package.swift +++ b/Package.swift @@ -6,7 +6,7 @@ import PackageDescription let package = Package( name: "SwiftUICharts", platforms: [ - .iOS(.v13), .watchOS(.v6) + .iOS(.v13), .watchOS(.v6), .macOS(.v10_15) ], products: [ // Products define the executables and libraries produced by a package, and make them visible to other packages. From d64d0e9d7ad863b9490b16027ff6d0fc3bb3fbbc Mon Sep 17 00:00:00 2001 From: nicolas Date: Sat, 30 May 2020 11:18:01 -0400 Subject: [PATCH 10/40] Bug Fix: Bar Chart with [0] crashed (#110) --- .../SwiftUICharts/Charts/BarChart/BarChart.swift | 3 +++ .../Charts/BarChart/BarChartCell.swift | 1 + .../SwiftUICharts/Charts/BarChart/BarChartRow.swift | 6 +++++- .../SwiftUICharts/Charts/LineChart/LineChart.swift | 3 +++ .../SwiftUICharts/Charts/PieChart/PieChart.swift | 4 ++++ .../Charts/PieChart/PieChartCell.swift | 13 +++++++++++-- .../SwiftUICharts/Charts/PieChart/PieChartRow.swift | 13 +++++++++---- 7 files changed, 36 insertions(+), 7 deletions(-) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index d91d1db0..e655683d 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -10,6 +10,9 @@ public struct BarChart: ChartType { struct BarChart_Previews: PreviewProvider { static var previews: some View { Group { + BarChart().makeChart( + configuration: .init(data: [0]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) Group { BarChart().makeChart( configuration: .init(data: [1, 2, 3, 5, 1]), diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index 22f2301b..0ab981a9 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -31,6 +31,7 @@ public struct BarChartCell: View { struct BarChartCell_Previews: PreviewProvider { static var previews: some View { Group { + BarChartCell(value: 0, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) Group { BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: .constant(CGFloat())) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 4a517597..5f423e26 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -11,7 +11,10 @@ public struct BarChartRow: View { var style: ChartStyle var maxValue: Double { - data.max() ?? 0 + guard let max = data.max() else { + return 1 + } + return max != 0 ? max : 1 } public var body: some View { @@ -59,6 +62,7 @@ public struct BarChartRow: View { struct BarChartRow_Previews: PreviewProvider { static var previews: some View { Group { + BarChartRow(data: [0], style: styleGreenRed) Group { BarChartRow(data: [1, 2, 3], style: styleGreenRed) BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 5bd76709..2917b4c8 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -11,6 +11,9 @@ public struct LineChart: ChartType { struct LineChart_Previews: PreviewProvider { static var previews: some View { Group { + LineChart().makeChart( + configuration: .init(data: [0]), + style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) Group { LineChart().makeChart( configuration: .init(data: [1, 2, 3, 5, 1]), diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index 9794fda8..721f8ce3 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -17,6 +17,10 @@ public struct PieChart: ChartType { struct PieChart_Previews: PreviewProvider { static var previews: some View { Group { + PieChart().makeChart( + configuration: .init(data: [0]), + style: styleOneColor) + Group { PieChart().makeChart( configuration: .init(data: [56, 78, 53, 65, 54]), diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift index 20157677..7dedd730 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift @@ -12,7 +12,6 @@ struct PieSlice: Identifiable { var startDeg: Double var endDeg: Double var value: Double - //var normalizedValue: Double } public struct PieChartCell: View { @@ -47,7 +46,7 @@ public struct PieChartCell: View { Group { path .fill(self.accentColor.linearGradient(from: .bottom, to: .top)) - .overlay(path.stroke(self.backgroundColor, lineWidth: 2)) + .overlay(path.stroke(self.backgroundColor, lineWidth: (startDeg == 0 && endDeg == 0 ? 0 : 2))) .scaleEffect(self.show ? 1 : 0) .animation(Animation.spring().delay(Double(self.index) * 0.04)) .onAppear { @@ -97,6 +96,16 @@ struct PieChartCell_Previews: PreviewProvider { rect: geometry.frame(in: .local), startDeg: 185.0, endDeg: 290.0, + index: 1, + backgroundColor: Color.purple, + accentColor: ColorGradient(.purple)) + }.frame(width: 100, height: 100) + + GeometryReader { geometry in + PieChartCell( + rect: geometry.frame(in: .local), + startDeg: 0, + endDeg: 0, index: 0, backgroundColor: Color.purple, accentColor: ColorGradient(.purple)) diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index f9428179..de76cd68 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -15,10 +15,10 @@ public struct PieChartRow: View { var slices: [PieSlice] { var tempSlices: [PieSlice] = [] var lastEndDeg: Double = 0 - let maxValue = data.reduce(0, +) + let maxValue: Double = data.reduce(0, +) for slice in data { - let normalized: Double = Double(slice)/Double(maxValue) + let normalized: Double = Double(slice) / (maxValue == 0 ? 1 : maxValue) let startDeg = lastEndDeg let endDeg = lastEndDeg + (normalized * 360) lastEndDeg = endDeg @@ -55,12 +55,17 @@ struct PieChartRow_Previews: PreviewProvider { PieChartRow( data: [8, 23, 32, 7, 23, 43], style: defaultMultiColorChartStyle) - .frame(width: 100, height: 100) + .frame(width: 100, height: 100) PieChartRow( data: [8, 23, 32, 7, 23, 43], style: multiColorChartStyle) - . frame(width: 100, height: 100) + .frame(width: 100, height: 100) + + PieChartRow( + data: [0], + style: multiColorChartStyle) + .frame(width: 100, height: 100) }.previewLayout(.fixed(width: 125, height: 125)) From f0eea58bd8e54a1771d740b98d008892bba3284f Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 30 May 2020 18:07:49 +0200 Subject: [PATCH 11/40] Add CardView and CardLabel (#111) --- .../Base/CardView/CardView.swift | 23 ++++++++++ Sources/SwiftUICharts/Base/ChartView.swift | 1 - .../Base/Label/AnyChartLabel.swift | 19 --------- .../SwiftUICharts/Base/Label/ChartLabel.swift | 42 ++++++++++++++++--- .../Base/Label/ChartLabelConfiguration.swift | 7 ---- .../Charts/BarChart/TitleLabel.swift | 7 ---- .../Environment/Environment.swift | 9 ---- .../Environment/EnvironmentKeys.swift | 4 -- 8 files changed, 60 insertions(+), 52 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/CardView/CardView.swift delete mode 100644 Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift delete mode 100644 Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift delete mode 100644 Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift new file mode 100644 index 00000000..ecfe8f3e --- /dev/null +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -0,0 +1,23 @@ +import SwiftUI + +public struct CardView: View { + @Environment(\.chartStyle) private var chartStyle + + let content: () -> Content + + public init(@ViewBuilder content: @escaping () -> Content) { + self.content = content + } + + public var body: some View { + ZStack{ + Rectangle() + .fill(self.chartStyle.backgroundColor.linearGradient(from: .bottom, to: .top)) + .cornerRadius(20) + .shadow(color: Color.gray, radius: 8) + VStack { + self.content() + } + } + } +} diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift index 9a65c87d..5958a711 100644 --- a/Sources/SwiftUICharts/Base/ChartView.swift +++ b/Sources/SwiftUICharts/Base/ChartView.swift @@ -6,7 +6,6 @@ import SwiftUI public struct ChartView: View { @Environment(\.chartType) private var chartType @Environment(\.chartStyle) private var chartStyle - @Environment(\.title) private var title private var configuration: ChartTypeConfiguration diff --git a/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift b/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift deleted file mode 100644 index 7aaee0a0..00000000 --- a/Sources/SwiftUICharts/Base/Label/AnyChartLabel.swift +++ /dev/null @@ -1,19 +0,0 @@ -import SwiftUI - -struct AnyChartLabel: ChartLabel { - private let labelMaker: (ChartLabel.Configuration) -> AnyView - - init(_ label: S) { - self.labelMaker = label.makeTypeErasedBody - } - - func makeLabel(configuration: ChartLabel.Configuration) -> AnyView { - self.labelMaker(configuration) - } -} - -fileprivate extension ChartLabel { - func makeTypeErasedBody(configuration: ChartLabel.Configuration) -> AnyView { - AnyView(makeLabel(configuration: configuration)) - } -} diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 6e304785..95301dba 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -1,11 +1,43 @@ import SwiftUI -@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) -public protocol ChartLabel { +public enum ChartLabelSize: CGFloat { + case small = 16.0 + case normal = 24.0 + case large = 32.0 +} + +public enum ChartLabelType { + case title + case legend +} + +public struct ChartLabel: View { + private let text: String + private let labelSize: ChartLabelSize + private let labelType: ChartLabelType - associatedtype Body: View + private var labelColor: Color { + switch labelType { + case .title: + return .black + case .legend: + return .gray + } + } - func makeLabel(configuration: Self.Configuration) -> Self.Body + public init (_ text: String, + type: ChartLabelType = .title, + size: ChartLabelSize = .normal) { + self.text = text + labelType = type + labelSize = size + } - typealias Configuration = ChartLabelConfiguration + public var body: some View { + Text(self.text) + .font(.system(size: labelSize.rawValue)) + .bold() + .foregroundColor(self.labelColor) + .padding([.top, .bottom], 16.0) + } } diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift b/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift deleted file mode 100644 index 846126e8..00000000 --- a/Sources/SwiftUICharts/Base/Label/ChartLabelConfiguration.swift +++ /dev/null @@ -1,7 +0,0 @@ -import SwiftUI - -public struct ChartLabelConfiguration { - public let font: Font - public let size: CGFloat - public let color: Color -} diff --git a/Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift b/Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift deleted file mode 100644 index c1962199..00000000 --- a/Sources/SwiftUICharts/Charts/BarChart/TitleLabel.swift +++ /dev/null @@ -1,7 +0,0 @@ -import SwiftUI - -public struct TitleLabel: ChartLabel { - public func makeLabel(configuration: Self.Configuration) -> some View { - return Text("AAA") - } -} diff --git a/Sources/SwiftUICharts/Environment/Environment.swift b/Sources/SwiftUICharts/Environment/Environment.swift index b90e9383..9ebe82ad 100644 --- a/Sources/SwiftUICharts/Environment/Environment.swift +++ b/Sources/SwiftUICharts/Environment/Environment.swift @@ -18,13 +18,4 @@ extension EnvironmentValues { self[ChartStyleKey.self] = newValue } } - - var title: AnyChartLabel { - get { - return self[ChartLabelKey.self] - } - set { - self[ChartLabelKey.self] = newValue - } - } } diff --git a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift index f67f48e3..88950abc 100644 --- a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift @@ -9,7 +9,3 @@ struct ChartStyleKey: EnvironmentKey { foregroundColor: ColorGradient(ChartColors.orangeDark, ChartColors.orangeBright)) } - -struct ChartLabelKey: EnvironmentKey { - static let defaultValue: AnyChartLabel = AnyChartLabel(TitleLabel()) -} From dff16e8d2d1c90cbc95e46f23fcd41139f52c80e Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 21 Jun 2020 18:53:11 +0200 Subject: [PATCH 12/40] Creating a data structure which propagets changes in data to the charts (#114) * Creating a data structure which propagets changes in data to the charts * Fixed appearing animation --- .../Base/Chart/AnyChartType.swift | 10 +-- .../SwiftUICharts/Base/Chart/ChartData.swift | 9 +++ .../SwiftUICharts/Base/Chart/ChartType.swift | 4 +- .../Base/Chart/ChartTypeConfiguration.swift | 5 -- Sources/SwiftUICharts/Base/ChartView.swift | 16 ++-- .../Charts/BarChart/BarChart.swift | 10 +-- .../Charts/BarChart/BarChartCell.swift | 64 +++++++++------ .../Charts/BarChart/BarChartRow.swift | 77 ++++++++++--------- .../SwiftUICharts/Charts/LineChart/Line.swift | 13 ++-- .../Charts/LineChart/LineChart.swift | 10 +-- .../Charts/PieChart/PieChart.swift | 18 ++--- .../Charts/PieChart/PieChartRow.swift | 14 ++-- 12 files changed, 140 insertions(+), 110 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartData.swift delete mode 100644 Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift diff --git a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift index 046dd164..7a758fa4 100644 --- a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift +++ b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift @@ -1,19 +1,19 @@ import SwiftUI struct AnyChartType: ChartType { - private let chartMaker: (ChartType.Configuration, ChartType.Style) -> AnyView + private let chartMaker: (ChartType.Data, ChartType.Style) -> AnyView init(_ type: S) { self.chartMaker = type.makeTypeErasedBody } - func makeChart(configuration: ChartType.Configuration, style: ChartType.Style) -> AnyView { - self.chartMaker(configuration, style) + func makeChart(data: ChartType.Data, style: ChartType.Style) -> AnyView { + self.chartMaker(data, style) } } fileprivate extension ChartType { - func makeTypeErasedBody(configuration: ChartType.Configuration, style: ChartType.Style) -> AnyView { - AnyView(makeChart(configuration: configuration, style: style)) + func makeTypeErasedBody(data: ChartType.Data, style: ChartType.Style) -> AnyView { + AnyView(makeChart(data: data, style: style)) } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift new file mode 100644 index 00000000..9d546de4 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -0,0 +1,9 @@ +import SwiftUI + +public class ChartData: ObservableObject { + @Published public var data: [Double] = [] + + public init(_ data: [Double]) { + self.data = data + } +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartType.swift b/Sources/SwiftUICharts/Base/Chart/ChartType.swift index b7bada4c..de1dc964 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartType.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartType.swift @@ -4,8 +4,8 @@ import SwiftUI public protocol ChartType { associatedtype Body: View - func makeChart(configuration: Self.Configuration, style: Self.Style) -> Self.Body + func makeChart(data: Self.Data, style: Self.Style) -> Self.Body - typealias Configuration = ChartTypeConfiguration + typealias Data = ChartData typealias Style = ChartStyle } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift b/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift deleted file mode 100644 index 0e56a54c..00000000 --- a/Sources/SwiftUICharts/Base/Chart/ChartTypeConfiguration.swift +++ /dev/null @@ -1,5 +0,0 @@ -import SwiftUI - -public struct ChartTypeConfiguration { - public let data: [Double] -} diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift index 5958a711..d13aeba2 100644 --- a/Sources/SwiftUICharts/Base/ChartView.swift +++ b/Sources/SwiftUICharts/Base/ChartView.swift @@ -7,15 +7,21 @@ public struct ChartView: View { @Environment(\.chartType) private var chartType @Environment(\.chartStyle) private var chartStyle - private var configuration: ChartTypeConfiguration + private var data: ChartData + + public init(data: ChartData) { + self.data = data + } public var body: some View { - self.chartType.makeChart(configuration: configuration, style: chartStyle) + self.chartType.makeChart(data: data, style: chartStyle) } } extension ChartView { - public init(data: [Double]) { - self.configuration = ChartTypeConfiguration(data: data) - } +// public init(data: [Double]) { +// self.configuration = ChartTypeConfiguration(data: data) +// } + + } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index e655683d..a5e5c73e 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -1,8 +1,8 @@ import SwiftUI public struct BarChart: ChartType { - public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { - BarChartRow(data: configuration.data, style: style) + public func makeChart(data: Self.Data, style: Self.Style) -> some View { + BarChartRow(chartData: data, style: style) } public init() {} } @@ -11,17 +11,17 @@ struct BarChart_Previews: PreviewProvider { static var previews: some View { Group { BarChart().makeChart( - configuration: .init(data: [0]), + data: .init([0]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) Group { BarChart().makeChart( - configuration: .init(data: [1, 2, 3, 5, 1]), + data: .init([1, 2, 3, 5, 1]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) }.environment(\.colorScheme, .light) Group { BarChart().makeChart( - configuration: .init(data: [1, 2, 3]), + data: .init([1, 2, 3]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) }.environment(\.colorScheme, .dark) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index 0ab981a9..16936138 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -1,49 +1,67 @@ import SwiftUI public struct BarChartCell: View { - @State var value: Double - @State var index: Int = 0 - @State var width: Float - @State var numberOfDataPoints: Int + var value: Double + var index: Int = 0 + var width: Float + var numberOfDataPoints: Int var gradientColor: ColorGradient + var touchLocation: CGFloat var cellWidth: Double { return Double(width)/(Double(numberOfDataPoints) * 1.5) } - @State var scaleValue: Double = 0 - @Binding var touchLocation: CGFloat - + @State var firstDisplay: Bool = true + + public init( value: Double, + index: Int = 0, + width: Float, + numberOfDataPoints: Int, + gradientColor: ColorGradient, + touchLocation: CGFloat) { + self.value = value + self.index = index + self.width = width + self.numberOfDataPoints = numberOfDataPoints + self.gradientColor = gradientColor + self.touchLocation = touchLocation + } + public var body: some View { ZStack { RoundedRectangle(cornerRadius: 4) .fill(gradientColor.linearGradient(from: .bottom, to: .top)) - } - .frame(width: CGFloat(self.cellWidth)) - .scaleEffect(CGSize(width: 1, height: self.scaleValue), anchor: .bottom) - .onAppear { - self.scaleValue = self.value - } - .animation(Animation.spring().delay(self.touchLocation < 0 ? Double(self.index) * 0.04 : 0)) + } + .frame(width: CGFloat(self.cellWidth)) + .scaleEffect(CGSize(width: 1, height: self.firstDisplay ? 0.0 : self.value), anchor: .bottom) + .onAppear { + self.firstDisplay = false + } + .onDisappear { + self.firstDisplay = true + } + .transition(.slide) + .animation(Animation.spring().delay(self.touchLocation < 0 || !firstDisplay ? Double(self.index) * 0.04 : 0)) } } struct BarChartCell_Previews: PreviewProvider { static var previews: some View { Group { - BarChartCell(value: 0, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) Group { - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: .constant(CGFloat())) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: .constant(CGFloat())) + BarChartCell(value: 0, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) } - + Group { - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: .constant(CGFloat())) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: .constant(CGFloat())) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: .constant(CGFloat())) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) + BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) }.environment(\.colorScheme, .dark) } - } } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 5f423e26..21e95af0 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,7 +1,7 @@ import SwiftUI public struct BarChartRow: View { - @State var data: [Double] = [] + @ObservedObject var chartData: ChartData @State var touchLocation: CGFloat = -1.0 enum Constant { @@ -11,7 +11,7 @@ public struct BarChartRow: View { var style: ChartStyle var maxValue: Double { - guard let max = data.max() else { + guard let max = chartData.data.max() else { return 1 } return max != 0 ? max : 1 @@ -20,18 +20,18 @@ public struct BarChartRow: View { public var body: some View { GeometryReader { geometry in HStack(alignment: .bottom, - spacing: (geometry.frame(in: .local).width - Constant.spacing) / CGFloat(self.data.count * 3)) { - ForEach(0.. Double { - return Double(data[index])/Double(maxValue) + print(chartData.data[index]) + return Double(chartData.data[index])/Double(maxValue) } func getScaleSize(touchLocation: CGFloat, index: Int) -> CGSize { - if touchLocation > CGFloat(index)/CGFloat(self.data.count) && - touchLocation < CGFloat(index+1)/CGFloat(self.data.count) { + if touchLocation > CGFloat(index)/CGFloat(chartData.data.count) && + touchLocation < CGFloat(index+1)/CGFloat(chartData.data.count) { return CGSize(width: 1.4, height: 1.1) } return CGSize(width: 1, height: 1) @@ -59,24 +60,24 @@ public struct BarChartRow: View { } -struct BarChartRow_Previews: PreviewProvider { - static var previews: some View { - Group { - BarChartRow(data: [0], style: styleGreenRed) - Group { - BarChartRow(data: [1, 2, 3], style: styleGreenRed) - BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) - } - Group { - BarChartRow(data: [1, 2, 3], style: styleGreenRed) - BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) - }.environment(\.colorScheme, .dark) - } - } -} - -private let styleGreenRed = ChartStyle(backgroundColor: .white, foregroundColor: .greenRed) - -private let styleGreenRedWhiteBlack = ChartStyle( - backgroundColor: ColorGradient.init(.white), - foregroundColor: [ColorGradient.redBlack, ColorGradient.whiteBlack]) +//struct BarChartRow_Previews: PreviewProvider { +// static var previews: some View { +// Group { +// BarChartRow(data: [0], style: styleGreenRed) +// Group { +// BarChartRow(data: [1, 2, 3], style: styleGreenRed) +// BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) +// } +// Group { +// BarChartRow(data: [1, 2, 3], style: styleGreenRed) +// BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) +// }.environment(\.colorScheme, .dark) +// } +// } +//} +// +//private let styleGreenRed = ChartStyle(backgroundColor: .white, foregroundColor: .greenRed) +// +//private let styleGreenRedWhiteBlack = ChartStyle( +// backgroundColor: ColorGradient.init(.white), +// foregroundColor: [ColorGradient.redBlack, ColorGradient.whiteBlack]) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index ce51c420..7eaa484a 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -2,7 +2,8 @@ import SwiftUI public struct Line: View { @State var frame: CGRect = .zero - @State var data: [Double] + @ObservedObject var chartData: ChartData + var style: ChartStyle @State var showIndicator: Bool = false @@ -11,11 +12,11 @@ public struct Line: View { @State var showBackground: Bool = true var curvedLines: Bool = true var step: CGPoint { - return CGPoint.getStep(frame: frame, data: data) + return CGPoint.getStep(frame: frame, data: chartData.data) } var path: Path { - let points = data + let points = chartData.data if curvedLines { return Path.quadCurvedPathWithPoints(points: points, @@ -27,7 +28,7 @@ public struct Line: View { } var closedPath: Path { - let points = data + let points = chartData.data if curvedLines { return Path.quadClosedCurvedPathWithPoints(points: points, @@ -109,8 +110,8 @@ extension Line { struct Line_Previews: PreviewProvider { static var previews: some View { Group { - Line(data: [1, 2, 3, 1, 2, 5, 7], style: blackLineStyle) - Line(data: [1, 2, 3, 1, 2, 5, 7], style: redLineStyle) + Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: blackLineStyle) + Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: redLineStyle) } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 2917b4c8..e86579a2 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -1,8 +1,8 @@ import SwiftUI public struct LineChart: ChartType { - public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { - Line(data: configuration.data, style: style) + public func makeChart(data: Self.Data, style: Self.Style) -> some View { + Line(chartData: data, style: style) } public init() {} @@ -12,17 +12,17 @@ struct LineChart_Previews: PreviewProvider { static var previews: some View { Group { LineChart().makeChart( - configuration: .init(data: [0]), + data: .init([0]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) Group { LineChart().makeChart( - configuration: .init(data: [1, 2, 3, 5, 1]), + data: .init([1, 2, 3, 5, 1]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) }.environment(\.colorScheme, .light) Group { LineChart().makeChart( - configuration: .init(data: [1, 2, 3]), + data: .init([1, 2, 3]), style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) }.environment(\.colorScheme, .dark) diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index 721f8ce3..2907a191 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -8,8 +8,8 @@ import SwiftUI public struct PieChart: ChartType { - public func makeChart(configuration: Self.Configuration, style: Self.Style) -> some View { - PieChartRow(data: configuration.data, style: style) + public func makeChart(data: Self.Data, style: Self.Style) -> some View { + PieChartRow(chartData: data, style: style) } public init() {} } @@ -18,30 +18,30 @@ struct PieChart_Previews: PreviewProvider { static var previews: some View { Group { PieChart().makeChart( - configuration: .init(data: [0]), + data: .init([0]), style: styleOneColor) Group { PieChart().makeChart( - configuration: .init(data: [56, 78, 53, 65, 54]), + data: .init([56, 78, 53, 65, 54]), style: styleOneColor) PieChart().makeChart( - configuration: .init(data: [56, 78, 53, 65, 54]), + data: .init([56, 78, 53, 65, 54]), style: styleTwoColor) PieChart().makeChart( - configuration: .init(data: [1, 1, 1, 1, 1, 1]), + data: .init([1, 1, 1, 1, 1, 1]), style: trivialPursuit) }.environment(\.colorScheme, .light) Group { PieChart().makeChart( - configuration: .init(data: [56, 78, 53, 65, 54]), + data: .init([56, 78, 53, 65, 54]), style: styleOneColor) PieChart().makeChart( - configuration: .init(data: [56, 78, 53, 65, 54]), + data: .init([56, 78, 53, 65, 54]), style: styleTwoColor) PieChart().makeChart( - configuration: .init(data: [1, 1, 1, 1, 1, 1]), + data: .init([1, 1, 1, 1, 1, 1]), style: trivialPursuit) }.environment(\.colorScheme, .dark) diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index de76cd68..aae06735 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -8,16 +8,16 @@ import SwiftUI public struct PieChartRow: View { - var data: [Double] - + @ObservedObject var chartData: ChartData + var style: ChartStyle var slices: [PieSlice] { var tempSlices: [PieSlice] = [] var lastEndDeg: Double = 0 - let maxValue: Double = data.reduce(0, +) + let maxValue: Double = chartData.data.reduce(0, +) - for slice in data { + for slice in chartData.data { let normalized: Double = Double(slice) / (maxValue == 0 ? 1 : maxValue) let startDeg = lastEndDeg let endDeg = lastEndDeg + (normalized * 360) @@ -53,17 +53,17 @@ struct PieChartRow_Previews: PreviewProvider { Group { //Empty Array - Default Colors.OrangeStart PieChartRow( - data: [8, 23, 32, 7, 23, 43], + chartData: ChartData([8, 23, 32, 7, 23, 43]), style: defaultMultiColorChartStyle) .frame(width: 100, height: 100) PieChartRow( - data: [8, 23, 32, 7, 23, 43], + chartData: ChartData([8, 23, 32, 7, 23, 43]), style: multiColorChartStyle) .frame(width: 100, height: 100) PieChartRow( - data: [0], + chartData: ChartData([8, 23, 32, 7, 23, 43]), style: multiColorChartStyle) .frame(width: 100, height: 100) From 57ac969092925a55b4dd7c500e15ee52883f85c2 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 28 Jun 2020 20:25:21 +0200 Subject: [PATCH 13/40] Added ChartLabel interaction --- .../xcschemes/xcschememanagement.plist | 2 +- .../Base/CardView/CardView.swift | 3 +- .../SwiftUICharts/Base/Chart/ChartValue.swift | 6 ++ Sources/SwiftUICharts/Base/ChartView.swift | 11 +--- .../SwiftUICharts/Base/Grid/ChartGrid.swift | 16 +++++ .../SwiftUICharts/Base/Label/ChartLabel.swift | 65 ++++++++++++++----- .../Charts/BarChart/BarChart.swift | 1 + .../Charts/BarChart/BarChartRow.swift | 17 ++++- .../SwiftUICharts/Charts/LineChart/Line.swift | 11 ++++ .../Environment/Environment.swift | 9 +++ .../Environment/EnvironmentKeys.swift | 4 ++ 11 files changed, 114 insertions(+), 31 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartValue.swift create mode 100644 Sources/SwiftUICharts/Base/Grid/ChartGrid.swift diff --git a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist index 540c36e2..a0f26bbb 100644 --- a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ SwiftUICharts.xcscheme_^#shared#^_ orderHint - 1 + 2 diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index ecfe8f3e..87b20154 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -12,12 +12,13 @@ public struct CardView: View { public var body: some View { ZStack{ Rectangle() - .fill(self.chartStyle.backgroundColor.linearGradient(from: .bottom, to: .top)) + .fill(Color.white) .cornerRadius(20) .shadow(color: Color.gray, radius: 8) VStack { self.content() } + .clipShape(RoundedRectangle(cornerRadius: 20)) } } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartValue.swift b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift new file mode 100644 index 00000000..368ae84e --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift @@ -0,0 +1,6 @@ +import SwiftUI + +public class ChartValue: ObservableObject { + @Published var currentValue: Double = 0 + @Published var interactionInProgress: Bool = false +} diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift index d13aeba2..09fea6d3 100644 --- a/Sources/SwiftUICharts/Base/ChartView.swift +++ b/Sources/SwiftUICharts/Base/ChartView.swift @@ -1,6 +1,3 @@ -// ChartView.swift -// Created by Samu András on 2020. 05. 22.. - import SwiftUI public struct ChartView: View { @@ -19,9 +16,7 @@ public struct ChartView: View { } extension ChartView { -// public init(data: [Double]) { -// self.configuration = ChartTypeConfiguration(data: data) -// } - - + public init(points: [Double]) { + self.data = ChartData(points) + } } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift new file mode 100644 index 00000000..6c5e273f --- /dev/null +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -0,0 +1,16 @@ +import SwiftUI + +public struct ChartGrid: View { + let content: () -> Content + + public init(@ViewBuilder content: @escaping () -> Content) { + self.content = content + } + + public var body: some View { + ZStack{ + self.content() + } + } +} + diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 95301dba..03eba4d3 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -1,19 +1,36 @@ import SwiftUI -public enum ChartLabelSize: CGFloat { - case small = 16.0 - case normal = 24.0 - case large = 32.0 -} - public enum ChartLabelType { case title + case subTitle + case largeTitle + case custom(size: CGFloat) case legend } public struct ChartLabel: View { - private let text: String - private let labelSize: ChartLabelSize + @Environment(\.chartValue) private var chartValue: ChartValue + + @State var textToDisplay = "" + @State var isInteractionInProgress: Bool = false + + private var title: String + + private var labelSize: CGFloat { + switch labelType { + case .title: + return 32.0 + case .legend: + return 14.0 + case .subTitle: + return 24.0 + case .largeTitle: + return 38.0 + case .custom(let size): + return size + } + } + private let labelType: ChartLabelType private var labelColor: Color { @@ -22,22 +39,34 @@ public struct ChartLabel: View { return .black case .legend: return .gray + case .subTitle: + return .black + case .largeTitle: + return .black + case .custom(_): + return .black } } - public init (_ text: String, - type: ChartLabelType = .title, - size: ChartLabelSize = .normal) { - self.text = text + public init (_ title: String, + type: ChartLabelType = .title) { + self.title = title labelType = type - labelSize = size } public var body: some View { - Text(self.text) - .font(.system(size: labelSize.rawValue)) - .bold() - .foregroundColor(self.labelColor) - .padding([.top, .bottom], 16.0) + VStack (alignment: self.isInteractionInProgress ? .center : .leading) { + Text(textToDisplay) + .font(.system(size: labelSize)) + .bold() + .foregroundColor(self.labelColor) + .onAppear { + self.textToDisplay = title + } + .onReceive(self.chartValue.objectWillChange) { _ in + self.textToDisplay = self.chartValue.interactionInProgress ? String(format: "%.01f", self.chartValue.currentValue) : self.title + self.isInteractionInProgress = self.chartValue.interactionInProgress + } + } } } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index a5e5c73e..8edd0248 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -4,6 +4,7 @@ public struct BarChart: ChartType { public func makeChart(data: Self.Data, style: Self.Style) -> some View { BarChartRow(chartData: data, style: style) } + public init() {} } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 21e95af0..f4f42865 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,6 +1,7 @@ import SwiftUI public struct BarChartRow: View { + @Environment(\.chartValue) private var chartValue: ChartValue @ObservedObject var chartData: ChartData @State var touchLocation: CGFloat = -1.0 @@ -36,9 +37,15 @@ public struct BarChartRow: View { .padding([.top, .leading, .trailing], 10) .gesture(DragGesture() .onChanged({ value in - self.touchLocation = value.location.x/geometry.frame(in: .local).width + let width = geometry.frame(in: .local).width + self.touchLocation = value.location.x/width + if let currentValue = getCurrentValue(width: width) { + self.chartValue.currentValue = currentValue + self.chartValue.interactionInProgress = true + } }) .onEnded({ value in + self.chartValue.interactionInProgress = false self.touchLocation = -1 }) ) @@ -46,7 +53,6 @@ public struct BarChartRow: View { } func normalizedValue(index: Int) -> Double { - print(chartData.data[index]) return Double(chartData.data[index])/Double(maxValue) } @@ -57,7 +63,12 @@ public struct BarChartRow: View { } return CGSize(width: 1, height: 1) } - + + func getCurrentValue(width: CGFloat) -> Double? { + guard self.chartData.data.count > 0 else { return nil} + let index = max(0,min(self.chartData.data.count-1,Int(floor((self.touchLocation*width)/(width/CGFloat(self.chartData.data.count)))))) + return self.chartData.data[index] + } } //struct BarChartRow_Previews: PreviewProvider { diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 7eaa484a..c152255d 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -1,6 +1,7 @@ import SwiftUI public struct Line: View { + @Environment(\.chartValue) private var chartValue: ChartValue @State var frame: CGRect = .zero @ObservedObject var chartData: ChartData @@ -60,10 +61,13 @@ public struct Line: View { .onChanged({ value in self.touchLocation = value.location self.showIndicator = true + self.getClosestDataPoint(point: self.getClosestPointOnPath(touchLocation: value.location)) + self.chartValue.interactionInProgress = true }) .onEnded({ value in self.touchLocation = .zero self.showIndicator = false + self.chartValue.interactionInProgress = false }) ) } @@ -78,6 +82,13 @@ extension Line { return closest } + private func getClosestDataPoint(point: CGPoint) { + let index = Int(round((point.x)/step.x)) + if (index >= 0 && index < self.chartData.data.count){ + self.chartValue.currentValue = self.chartData.data[index] + } + } + private func getBackgroundPathView() -> some View { self.closedPath .fill(style.backgroundColor.linearGradient(from: .bottom, to: .top)) diff --git a/Sources/SwiftUICharts/Environment/Environment.swift b/Sources/SwiftUICharts/Environment/Environment.swift index 9ebe82ad..b7e0130d 100644 --- a/Sources/SwiftUICharts/Environment/Environment.swift +++ b/Sources/SwiftUICharts/Environment/Environment.swift @@ -18,4 +18,13 @@ extension EnvironmentValues { self[ChartStyleKey.self] = newValue } } + + var chartValue: ChartValue { + get { + return self[ChartValueKey.self] + } + set { + self[ChartValueKey.self] = newValue + } + } } diff --git a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift index 88950abc..4cbcee81 100644 --- a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift @@ -9,3 +9,7 @@ struct ChartStyleKey: EnvironmentKey { foregroundColor: ColorGradient(ChartColors.orangeDark, ChartColors.orangeBright)) } + +struct ChartValueKey: EnvironmentKey { + static let defaultValue: ChartValue = ChartValue() +} From c46902dab8291705183b01fe3dab2c0d58aa18ef Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 25 Jul 2020 18:56:58 +0200 Subject: [PATCH 14/40] Refactor Chart base (#143) --- .../Base/CardView/CardView.swift | 10 +-- .../Base/Chart/AnyChartType.swift | 19 ------ .../SwiftUICharts/Base/Chart/ChartBase.swift | 5 ++ .../SwiftUICharts/Base/Chart/ChartData.swift | 4 ++ .../SwiftUICharts/Base/Chart/ChartType.swift | 11 ---- Sources/SwiftUICharts/Base/ChartView.swift | 22 ------- .../Base/Extensions/Array+Extension.swift | 7 -- .../Base/Extensions/CGRect+Extension.swift | 7 -- .../Base/Extensions/ChartBase+Extension.swift | 10 +++ .../Base/Extensions/View+Extension.swift | 8 +-- .../SwiftUICharts/Base/Grid/ChartGrid.swift | 6 +- .../SwiftUICharts/Base/Label/ChartLabel.swift | 38 +++++++---- .../SwiftUICharts/Base/Style/ChartStyle.swift | 2 +- .../Charts/BarChart/BarChart.swift | 31 ++------- .../Charts/BarChart/BarChartRow.swift | 26 +------- .../SwiftUICharts/Charts/LineChart/Line.swift | 10 ++- .../Charts/LineChart/LineChart.swift | 34 +++------- .../Charts/PieChart/PieChart.swift | 65 +++---------------- .../Environment/Environment.swift | 30 --------- .../Environment/EnvironmentKeys.swift | 15 ----- 20 files changed, 92 insertions(+), 268 deletions(-) delete mode 100644 Sources/SwiftUICharts/Base/Chart/AnyChartType.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartBase.swift delete mode 100644 Sources/SwiftUICharts/Base/Chart/ChartType.swift delete mode 100644 Sources/SwiftUICharts/Base/ChartView.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift delete mode 100644 Sources/SwiftUICharts/Environment/Environment.swift delete mode 100644 Sources/SwiftUICharts/Environment/EnvironmentKeys.swift diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index 87b20154..08b65c86 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -1,19 +1,19 @@ import SwiftUI -public struct CardView: View { - @Environment(\.chartStyle) private var chartStyle - +public struct CardView: View, ChartBase { + public var chartData = ChartData() let content: () -> Content + @EnvironmentObject var style: ChartStyle + public init(@ViewBuilder content: @escaping () -> Content) { self.content = content } public var body: some View { ZStack{ - Rectangle() + RoundedRectangle(cornerRadius: 20) .fill(Color.white) - .cornerRadius(20) .shadow(color: Color.gray, radius: 8) VStack { self.content() diff --git a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift b/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift deleted file mode 100644 index 7a758fa4..00000000 --- a/Sources/SwiftUICharts/Base/Chart/AnyChartType.swift +++ /dev/null @@ -1,19 +0,0 @@ -import SwiftUI - -struct AnyChartType: ChartType { - private let chartMaker: (ChartType.Data, ChartType.Style) -> AnyView - - init(_ type: S) { - self.chartMaker = type.makeTypeErasedBody - } - - func makeChart(data: ChartType.Data, style: ChartType.Style) -> AnyView { - self.chartMaker(data, style) - } -} - -fileprivate extension ChartType { - func makeTypeErasedBody(data: ChartType.Data, style: ChartType.Style) -> AnyView { - AnyView(makeChart(data: data, style: style)) - } -} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift new file mode 100644 index 00000000..3bc2f96a --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift @@ -0,0 +1,5 @@ +import SwiftUI + +public protocol ChartBase { + var chartData: ChartData { get } +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index 9d546de4..b3afb828 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -6,4 +6,8 @@ public class ChartData: ObservableObject { public init(_ data: [Double]) { self.data = data } + + public init() { + self.data = [] + } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartType.swift b/Sources/SwiftUICharts/Base/Chart/ChartType.swift deleted file mode 100644 index de1dc964..00000000 --- a/Sources/SwiftUICharts/Base/Chart/ChartType.swift +++ /dev/null @@ -1,11 +0,0 @@ -import SwiftUI - -@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) -public protocol ChartType { - associatedtype Body: View - - func makeChart(data: Self.Data, style: Self.Style) -> Self.Body - - typealias Data = ChartData - typealias Style = ChartStyle -} diff --git a/Sources/SwiftUICharts/Base/ChartView.swift b/Sources/SwiftUICharts/Base/ChartView.swift deleted file mode 100644 index 09fea6d3..00000000 --- a/Sources/SwiftUICharts/Base/ChartView.swift +++ /dev/null @@ -1,22 +0,0 @@ -import SwiftUI - -public struct ChartView: View { - @Environment(\.chartType) private var chartType - @Environment(\.chartStyle) private var chartStyle - - private var data: ChartData - - public init(data: ChartData) { - self.data = data - } - - public var body: some View { - self.chartType.makeChart(data: data, style: chartStyle) - } -} - -extension ChartView { - public init(points: [Double]) { - self.data = ChartData(points) - } -} diff --git a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift index f2898316..1b2d837b 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift @@ -1,10 +1,3 @@ -// -// File.swift -// -// -// Created by Nicolas Savoini on 2020-05-25. -// - import Foundation extension Array where Element == ColorGradient { diff --git a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift index c84d8374..020717cc 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift @@ -1,10 +1,3 @@ -// -// CGRect+Extension.swift -// SwiftUICharts -// -// Created by Nicolas Savoini on 2020-05-24. -// - import Foundation import SwiftUI diff --git a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift new file mode 100644 index 00000000..b1c8f18b --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift @@ -0,0 +1,10 @@ +import SwiftUI + +extension View where Self: ChartBase { + public func data(_ data: [Double]) -> some View { + chartData.data = data + return self + .environmentObject(chartData) + .environmentObject(ChartValue()) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift index 06e57edc..cea35f8f 100644 --- a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift @@ -1,11 +1,7 @@ import SwiftUI extension View { - public func type(_ type: S) -> some View where S: ChartType { - self.environment(\.chartType, AnyChartType(type)) - } - - public func style(_ style: ChartStyle) -> some View { - self.environment(\.chartStyle, style) + public func chartStyle(_ style: ChartStyle) -> some View { + self.environmentObject(style) } } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index 6c5e273f..254c874a 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -1,8 +1,12 @@ import SwiftUI -public struct ChartGrid: View { +public struct ChartGrid: View, ChartBase { + public var chartData = ChartData() let content: () -> Content + @EnvironmentObject var data: ChartData + @EnvironmentObject var style: ChartStyle + public init(@ViewBuilder content: @escaping () -> Content) { self.content = content } diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 03eba4d3..2a8fb07a 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -4,15 +4,13 @@ public enum ChartLabelType { case title case subTitle case largeTitle - case custom(size: CGFloat) + case custom(size: CGFloat, padding: EdgeInsets, color: Color) case legend } public struct ChartLabel: View { - @Environment(\.chartValue) private var chartValue: ChartValue - - @State var textToDisplay = "" - @State var isInteractionInProgress: Bool = false + @EnvironmentObject var chartValue: ChartValue + @State var textToDisplay:String = "" private var title: String @@ -26,11 +24,26 @@ public struct ChartLabel: View { return 24.0 case .largeTitle: return 38.0 - case .custom(let size): + case .custom(let size, _, _): return size } } + private var labelPadding: EdgeInsets { + switch labelType { + case .title: + return EdgeInsets(top: 16.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + case .legend: + return EdgeInsets(top: 4.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + case .subTitle: + return EdgeInsets(top: 8.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + case .largeTitle: + return EdgeInsets(top: 24.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + case .custom(_, let padding, _): + return padding + } + } + private let labelType: ChartLabelType private var labelColor: Color { @@ -43,8 +56,8 @@ public struct ChartLabel: View { return .black case .largeTitle: return .black - case .custom(_): - return .black + case .custom(_, _, let color): + return color } } @@ -55,18 +68,21 @@ public struct ChartLabel: View { } public var body: some View { - VStack (alignment: self.isInteractionInProgress ? .center : .leading) { + HStack { Text(textToDisplay) .font(.system(size: labelSize)) .bold() .foregroundColor(self.labelColor) + .padding(self.labelPadding) .onAppear { - self.textToDisplay = title + self.textToDisplay = self.title } .onReceive(self.chartValue.objectWillChange) { _ in self.textToDisplay = self.chartValue.interactionInProgress ? String(format: "%.01f", self.chartValue.currentValue) : self.title - self.isInteractionInProgress = self.chartValue.interactionInProgress } + if !self.chartValue.interactionInProgress { + Spacer() + } } } } diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index e23ede3a..c6e91f88 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -1,6 +1,6 @@ import SwiftUI -public struct ChartStyle { +public class ChartStyle: ObservableObject { public let backgroundColor: ColorGradient public let foregroundColor: [ColorGradient] diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index 8edd0248..3b23be9b 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -1,31 +1,14 @@ import SwiftUI -public struct BarChart: ChartType { - public func makeChart(data: Self.Data, style: Self.Style) -> some View { +public struct BarChart: View, ChartBase { + public var chartData = ChartData() + + @EnvironmentObject var data: ChartData + @EnvironmentObject var style: ChartStyle + + public var body: some View { BarChartRow(chartData: data, style: style) } public init() {} } - -struct BarChart_Previews: PreviewProvider { - static var previews: some View { - Group { - BarChart().makeChart( - data: .init([0]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) - Group { - BarChart().makeChart( - data: .init([1, 2, 3, 5, 1]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) - }.environment(\.colorScheme, .light) - - Group { - BarChart().makeChart( - data: .init([1, 2, 3]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) - }.environment(\.colorScheme, .dark) - - } - } -} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index f4f42865..feeae767 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,7 +1,7 @@ import SwiftUI public struct BarChartRow: View { - @Environment(\.chartValue) private var chartValue: ChartValue + @EnvironmentObject var chartValue: ChartValue @ObservedObject var chartData: ChartData @State var touchLocation: CGFloat = -1.0 @@ -39,7 +39,7 @@ public struct BarChartRow: View { .onChanged({ value in let width = geometry.frame(in: .local).width self.touchLocation = value.location.x/width - if let currentValue = getCurrentValue(width: width) { + if let currentValue = self.getCurrentValue(width: width) { self.chartValue.currentValue = currentValue self.chartValue.interactionInProgress = true } @@ -70,25 +70,3 @@ public struct BarChartRow: View { return self.chartData.data[index] } } - -//struct BarChartRow_Previews: PreviewProvider { -// static var previews: some View { -// Group { -// BarChartRow(data: [0], style: styleGreenRed) -// Group { -// BarChartRow(data: [1, 2, 3], style: styleGreenRed) -// BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) -// } -// Group { -// BarChartRow(data: [1, 2, 3], style: styleGreenRed) -// BarChartRow(data: [1, 2, 3], style: styleGreenRedWhiteBlack) -// }.environment(\.colorScheme, .dark) -// } -// } -//} -// -//private let styleGreenRed = ChartStyle(backgroundColor: .white, foregroundColor: .greenRed) -// -//private let styleGreenRedWhiteBlack = ChartStyle( -// backgroundColor: ColorGradient.init(.white), -// foregroundColor: [ColorGradient.redBlack, ColorGradient.whiteBlack]) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index c152255d..6b5a9c19 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -1,7 +1,7 @@ import SwiftUI public struct Line: View { - @Environment(\.chartValue) private var chartValue: ChartValue + @EnvironmentObject var chartValue: ChartValue @State var frame: CGRect = .zero @ObservedObject var chartData: ChartData @@ -91,9 +91,15 @@ extension Line { private func getBackgroundPathView() -> some View { self.closedPath - .fill(style.backgroundColor.linearGradient(from: .bottom, to: .top)) + .fill(LinearGradient(gradient: Gradient(colors: [ + style.foregroundColor.first?.startColor ?? .white, + style.foregroundColor.first?.endColor ?? .white, + .white]), + startPoint: .bottom, + endPoint: .top)) .rotationEffect(.degrees(180), anchor: .center) .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .opacity(0.2) .transition(.opacity) .animation(.easeIn(duration: 1.6)) } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index e86579a2..0d9b3040 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -1,32 +1,14 @@ import SwiftUI -public struct LineChart: ChartType { - public func makeChart(data: Self.Data, style: Self.Style) -> some View { - Line(chartData: data, style: style) - } +public struct LineChart: View, ChartBase { + public var chartData = ChartData() - public init() {} -} + @EnvironmentObject var data: ChartData + @EnvironmentObject var style: ChartStyle -struct LineChart_Previews: PreviewProvider { - static var previews: some View { - Group { - LineChart().makeChart( - data: .init([0]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) - Group { - LineChart().makeChart( - data: .init([1, 2, 3, 5, 1]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient(.black))) - }.environment(\.colorScheme, .light) - - Group { - LineChart().makeChart( - data: .init([1, 2, 3]), - style: .init(backgroundColor: .white, foregroundColor: ColorGradient.redBlack)) - }.environment(\.colorScheme, .dark) - - } - + public var body: some View { + Line(chartData: data, style: style) } + + public init() {} } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index 2907a191..7acfa27c 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -1,63 +1,14 @@ -// -// PieChart.swift -// SwiftUICharts -// -// Created by Nicolas Savoini on 2020-05-24. -// - import SwiftUI -public struct PieChart: ChartType { - public func makeChart(data: Self.Data, style: Self.Style) -> some View { +public struct PieChart: View, ChartBase { + public var chartData = ChartData() + + @EnvironmentObject var data: ChartData + @EnvironmentObject var style: ChartStyle + + public var body: some View { PieChartRow(chartData: data, style: style) } - public init() {} -} -struct PieChart_Previews: PreviewProvider { - static var previews: some View { - Group { - PieChart().makeChart( - data: .init([0]), - style: styleOneColor) - - Group { - PieChart().makeChart( - data: .init([56, 78, 53, 65, 54]), - style: styleOneColor) - PieChart().makeChart( - data: .init([56, 78, 53, 65, 54]), - style: styleTwoColor) - PieChart().makeChart( - data: .init([1, 1, 1, 1, 1, 1]), - style: trivialPursuit) - }.environment(\.colorScheme, .light) - - Group { - PieChart().makeChart( - data: .init([56, 78, 53, 65, 54]), - style: styleOneColor) - PieChart().makeChart( - data: .init([56, 78, 53, 65, 54]), - style: styleTwoColor) - PieChart().makeChart( - data: .init([1, 1, 1, 1, 1, 1]), - style: trivialPursuit) - }.environment(\.colorScheme, .dark) - - }.previewLayout(.fixed(width: 250, height: 400)) - } + public init() {} } - -private let styleOneColor = ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient.init(.pink)) - -private let styleTwoColor = ChartStyle(backgroundColor: ColorGradient(.black), foregroundColor: [ColorGradient(.yellow), ColorGradient(.red)]) - -private let trivialPursuit = ChartStyle( - backgroundColor: .yellow, - foregroundColor: [ColorGradient(.yellow), - ColorGradient(.pink), - ColorGradient(.green), - ColorGradient(.primary), - ColorGradient(.blue), - ColorGradient(.orange)]) diff --git a/Sources/SwiftUICharts/Environment/Environment.swift b/Sources/SwiftUICharts/Environment/Environment.swift deleted file mode 100644 index b7e0130d..00000000 --- a/Sources/SwiftUICharts/Environment/Environment.swift +++ /dev/null @@ -1,30 +0,0 @@ -import SwiftUI - -extension EnvironmentValues { - var chartType: AnyChartType { - get { - return self[ChartTypeKey.self] - } - set { - self[ChartTypeKey.self] = newValue - } - } - - var chartStyle: ChartStyle { - get { - return self[ChartStyleKey.self] - } - set { - self[ChartStyleKey.self] = newValue - } - } - - var chartValue: ChartValue { - get { - return self[ChartValueKey.self] - } - set { - self[ChartValueKey.self] = newValue - } - } -} diff --git a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift b/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift deleted file mode 100644 index 4cbcee81..00000000 --- a/Sources/SwiftUICharts/Environment/EnvironmentKeys.swift +++ /dev/null @@ -1,15 +0,0 @@ -import SwiftUI - -struct ChartTypeKey: EnvironmentKey { - static let defaultValue: AnyChartType = AnyChartType(BarChart()) -} - -struct ChartStyleKey: EnvironmentKey { - static let defaultValue: ChartStyle = ChartStyle(backgroundColor: .white, - foregroundColor: ColorGradient(ChartColors.orangeDark, - ChartColors.orangeBright)) -} - -struct ChartValueKey: EnvironmentKey { - static let defaultValue: ChartValue = ChartValue() -} From 3265d3e16b6480158b748095a227ea04c48f80ad Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 25 Jul 2020 19:32:05 +0200 Subject: [PATCH 15/40] Add public modifier to ChartColors and add showShadow property --- Sources/SwiftUICharts/Base/CardView/CardView.swift | 13 +++++++++---- Sources/SwiftUICharts/Base/Style/Colors.swift | 8 ++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index 08b65c86..eae7856c 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -4,17 +4,22 @@ public struct CardView: View, ChartBase { public var chartData = ChartData() let content: () -> Content + private var showShadow: Bool + @EnvironmentObject var style: ChartStyle - public init(@ViewBuilder content: @escaping () -> Content) { + public init(showShadow: Bool = true, @ViewBuilder content: @escaping () -> Content) { + self.showShadow = showShadow self.content = content } public var body: some View { ZStack{ - RoundedRectangle(cornerRadius: 20) - .fill(Color.white) - .shadow(color: Color.gray, radius: 8) + if showShadow { + RoundedRectangle(cornerRadius: 20) + .fill(Color.white) + .shadow(color: Color.gray, radius: 8) + } VStack { self.content() } diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift index 0d166936..860f27d4 100644 --- a/Sources/SwiftUICharts/Base/Style/Colors.swift +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -2,9 +2,9 @@ import SwiftUI public enum ChartColors { // Orange - static let orangeBright = Color(hexString: "#FF782C") - static let orangeDark = Color(hexString: "#EC2301") + public static let orangeBright = Color(hexString: "#FF782C") + public static let orangeDark = Color(hexString: "#EC2301") - static let legendColor: Color = Color(hexString: "#E8E7EA") - static let indicatorKnob: Color = Color(hexString: "#FF57A6") + public static let legendColor: Color = Color(hexString: "#E8E7EA") + public static let indicatorKnob: Color = Color(hexString: "#FF57A6") } From 7fb2a0013c23e464eeeee9ffebb4535c719f8347 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Wed, 29 Jul 2020 18:49:57 +0200 Subject: [PATCH 16/40] Fix cornerMasking on card view when no shadow is set --- Sources/SwiftUICharts/Base/CardView/CardView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index eae7856c..affb5977 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -23,7 +23,7 @@ public struct CardView: View, ChartBase { VStack { self.content() } - .clipShape(RoundedRectangle(cornerRadius: 20)) + .clipShape(RoundedRectangle(cornerRadius: showShadow ? 20 : 0)) } } } From 2ef73c84e2033341741c53580e57cd8602e27bb2 Mon Sep 17 00:00:00 2001 From: Sagar Patel Date: Fri, 31 Jul 2020 07:13:56 -0400 Subject: [PATCH 17/40] Dark/Light mode fixes (#148) Fix for making text work with both Dark/Light mode. Also solves line chart background to appear white in dark mode --- Sources/SwiftUICharts/Base/Label/ChartLabel.swift | 8 ++++---- Sources/SwiftUICharts/Charts/LineChart/Line.swift | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 2a8fb07a..877bc2a1 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -49,13 +49,13 @@ public struct ChartLabel: View { private var labelColor: Color { switch labelType { case .title: - return .black + return Color(UIColor.label) case .legend: - return .gray + return Color(UIColor.secondaryLabel) case .subTitle: - return .black + return Color(UIColor.label) case .largeTitle: - return .black + return Color(UIColor.label) case .custom(_, _, let color): return color } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 6b5a9c19..bae3a53b 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -94,7 +94,7 @@ extension Line { .fill(LinearGradient(gradient: Gradient(colors: [ style.foregroundColor.first?.startColor ?? .white, style.foregroundColor.first?.endColor ?? .white, - .white]), + .clear]), startPoint: .bottom, endPoint: .top)) .rotationEffect(.degrees(180), anchor: .center) From ed01f5305d71f9b459290bfb824e769a83f8e8c2 Mon Sep 17 00:00:00 2001 From: Dan Wood <207080+danwood@users.noreply.github.com> Date: Mon, 24 Aug 2020 07:24:33 -0700 Subject: [PATCH 18/40] recalculate geometry if orientation has changed (#156) Co-authored-by: Dan Wood --- .../SwiftUICharts/Charts/LineChart/Line.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index bae3a53b..b2ff21e6 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -41,6 +41,13 @@ public struct Line: View { } public var body: some View { + + let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) + .makeConnectable() + .autoconnect() // see https://stackoverflow.com/a/62370919 + // This lets geometry be recalculated when device rotates. However it doesn't cover issue of app changing + // from full screen to split view. Not possible in SwiftUI? Feedback submitted to apple FB8451194. + GeometryReader { geometry in ZStack { if self.showFull && self.showBackground { @@ -56,7 +63,16 @@ public struct Line: View { } .onAppear { self.frame = geometry.frame(in: .local) + } + .onReceive(orientationChanged) { _ in + // When we receive notification here, the geometry is still the old value + // so delay evaluation to get the new frame! + DispatchQueue.main.async { + self.frame = geometry.frame(in: .local) // recalculate layout with new frame + } + } + .gesture(DragGesture() .onChanged({ value in self.touchLocation = value.location From 51db5a067a55c1cb3f968382cc974890f1364af2 Mon Sep 17 00:00:00 2001 From: Dan Wood <207080+danwood@users.noreply.github.com> Date: Mon, 24 Aug 2020 07:30:30 -0700 Subject: [PATCH 19/40] Issue 99 documentation (#159) * Starting on filling in documentation. * First pass on most/all files * more descriptions filled in * Some documentation but TBH the author would be better suited to explain how this works! * more basic stuff filled in * Add a description and bunch of discussion text for most of the view `body` declarations * more explanations Co-authored-by: Dan Wood --- .../Base/CardView/CardView.swift | 8 + .../SwiftUICharts/Base/Chart/ChartBase.swift | 1 + .../SwiftUICharts/Base/Chart/ChartData.swift | 3 + .../SwiftUICharts/Base/Chart/ChartValue.swift | 1 + .../Base/Extensions/Array+Extension.swift | 4 + .../Base/Extensions/CGPoint+Extension.swift | 6 + .../Base/Extensions/CGRect+Extension.swift | 4 +- .../Base/Extensions/ChartBase+Extension.swift | 4 + .../Base/Extensions/Color+Extension.swift | 2 + .../Base/Extensions/Path+QuadCurve.swift | 173 +++++++++++++++--- .../Base/Extensions/View+Extension.swift | 4 + .../SwiftUICharts/Base/Grid/ChartGrid.swift | 6 + .../SwiftUICharts/Base/Label/ChartLabel.swift | 20 +- .../SwiftUICharts/Base/Style/ChartStyle.swift | 27 ++- .../Base/Style/ColorGradient.swift | 17 +- Sources/SwiftUICharts/Base/Style/Colors.swift | 1 + .../Charts/BarChart/BarChart.swift | 4 + .../Charts/BarChart/BarChartCell.swift | 6 +- .../Charts/BarChart/BarChartRow.swift | 21 ++- .../Charts/LineChart/IndicatorPoint.swift | 6 +- .../SwiftUICharts/Charts/LineChart/Line.swift | 41 ++++- .../Charts/LineChart/LineChart.swift | 4 + .../Charts/PieChart/PieChart.swift | 4 + .../Charts/PieChart/PieChartCell.swift | 9 +- .../Charts/PieChart/PieChartRow.swift | 8 +- 25 files changed, 338 insertions(+), 46 deletions(-) diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index affb5977..9109a2b3 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -1,5 +1,6 @@ import SwiftUI +/// View containing data and some kind of chart content public struct CardView: View, ChartBase { public var chartData = ChartData() let content: () -> Content @@ -8,11 +9,18 @@ public struct CardView: View, ChartBase { @EnvironmentObject var style: ChartStyle + /// Initialize with view options and a nested `ViewBuilder` + /// - Parameters: + /// - showShadow: should card have a rounded-rectangle shadow around it + /// - content: <#content description#> public init(showShadow: Bool = true, @ViewBuilder content: @escaping () -> Content) { self.showShadow = showShadow self.content = content } + /// The content and behavior of the `CardView`. + /// + /// public var body: some View { ZStack{ if showShadow { diff --git a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift index 3bc2f96a..9cf00102 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift @@ -1,5 +1,6 @@ import SwiftUI +/// Protocol for any type of chart, to get access to underlying data public protocol ChartBase { var chartData: ChartData { get } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index b3afb828..61beec79 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -1,8 +1,11 @@ import SwiftUI +/// An observable wrapper for an array of data for use in any chart public class ChartData: ObservableObject { @Published public var data: [Double] = [] + /// Initialize with data array + /// - Parameter data: Array of `Double` public init(_ data: [Double]) { self.data = data } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartValue.swift b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift index 368ae84e..48ff0c99 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartValue.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift @@ -1,5 +1,6 @@ import SwiftUI +/// Representation of a single data point in a chart that is being observed public class ChartValue: ObservableObject { @Published var currentValue: Double = 0 @Published var interactionInProgress: Bool = false diff --git a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift index 1b2d837b..874430ca 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift @@ -1,6 +1,10 @@ import Foundation extension Array where Element == ColorGradient { + + /// <#Description#> + /// - Parameter index: offset in data table + /// - Returns: <#description#> func rotate(for index: Int) -> ColorGradient { if self.isEmpty { return ColorGradient.orangeBright diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index 07f3325c..a9a9b086 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -1,6 +1,12 @@ import SwiftUI extension CGPoint { + + /// Calculate X and Y delta for each data point, based on data min/max and enclosing frame. + /// - Parameters: + /// - frame: Rectangle of enclosing frame + /// - data: array of `Double` + /// - Returns: X and Y delta as a `CGPoint` static func getStep(frame: CGRect, data: [Double]) -> CGPoint { let padding: CGFloat = 30.0 diff --git a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift index 020717cc..e66ee562 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift @@ -2,7 +2,9 @@ import Foundation import SwiftUI extension CGRect { - // Return the coordinate for a rectangle center + + /// Midpoint of rectangle + /// - Returns: the coordinate for a rectangle center public var mid: CGPoint { return CGPoint(x: self.midX, y: self.midY) } diff --git a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift index b1c8f18b..90060e3e 100644 --- a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift @@ -1,6 +1,10 @@ import SwiftUI extension View where Self: ChartBase { + + /// Set data for a chart + /// - Parameter data: array of `Double` + /// - Returns: modified `View` with data attached public func data(_ data: [Double]) -> some View { chartData.data = data return self diff --git a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift index 8742decf..6f3bd22f 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Color+Extension.swift @@ -1,6 +1,8 @@ import SwiftUI extension Color { + /// Create a `Color` from a hexadecimal representation + /// - Parameter hexString: 3, 6, or 8-character string, with optional (ignored) punctuation such as "#" init(hexString: String) { let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int = UInt64() diff --git a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift index 9e9e3cdf..1da24afc 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift @@ -1,23 +1,37 @@ import SwiftUI extension Path { + + /// Returns a tiny segment of path based on percentage along the path + /// + /// TODO: Explain why more than 1 gets 0 and why less than 0 gets 1 + /// - Parameter percent: fraction along data set, between 0.0 and 1.0 (underflow and overflow are handled) + /// - Returns: tiny path right around the requested fraction func trimmedPath(for percent: CGFloat) -> Path { - // percent difference between points let boundsDistance: CGFloat = 0.001 let completion: CGFloat = 1 - boundsDistance let pct = percent > 1 ? 0 : (percent < 0 ? 1 : percent) - + + // Start/end points centered around given percentage, but capped if right at the very end let start = pct > completion ? completion : pct - boundsDistance let end = pct > completion ? 1 : pct + boundsDistance return trimmedPath(from: start, to: end) } - + + /// Find the `CGPoint` for the given fraction along the path. + /// + /// This works by requesting a very tiny trimmed section of the path, then getting the center of the bounds rectangle + /// - Parameter percent: fraction along data set, between 0.0 and 1.0 (underflow and overflow are handled) + /// - Returns: a `CGPoint` representing the location of that section of the path func point(for percent: CGFloat) -> CGPoint { let path = trimmedPath(for: percent) return CGPoint(x: path.boundingRect.midX, y: path.boundingRect.midY) } - + + /// <#Description#> + /// - Parameter maxX: <#maxX description#> + /// - Returns: <#description#> func point(to maxX: CGFloat) -> CGPoint { let total = length let sub = length(to: maxX) @@ -25,7 +39,9 @@ extension Path { return point(for: percent) } - var length: CGFloat { + /// <#Description#> + /// - Returns: <#description#> + var length: CGFloat { var ret: CGFloat = 0.0 var start: CGPoint? var point = CGPoint.zero @@ -56,7 +72,10 @@ extension Path { } return ret } - + + /// <#Description#> + /// - Parameter maxX: <#maxX description#> + /// - Returns: <#description#> func length(to maxX: CGFloat) -> CGFloat { var ret: CGFloat = 0.0 var start: CGPoint? @@ -107,7 +126,13 @@ extension Path { } return ret } - + + /// <#Description#> + /// - Parameters: + /// - points: <#points description#> + /// - step: <#step description#> + /// - globalOffset: <#globalOffset description#> + /// - Returns: <#description#> static func quadCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { var path = Path() if points.count < 2 { @@ -126,7 +151,13 @@ extension Path { } return path } - + + /// <#Description#> + /// - Parameters: + /// - points: <#points description#> + /// - step: <#step description#> + /// - globalOffset: <#globalOffset description#> + /// - Returns: <#description#> static func quadClosedCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { var path = Path() if points.count < 2 { @@ -149,7 +180,12 @@ extension Path { path.closeSubpath() return path } - + + /// <#Description#> + /// - Parameters: + /// - points: <#points description#> + /// - step: <#step description#> + /// - Returns: <#description#> static func linePathWithPoints(points: [Double], step: CGPoint) -> Path { var path = Path() if points.count < 2 { @@ -166,7 +202,12 @@ extension Path { } return path } - + + /// <#Description#> + /// - Parameters: + /// - points: <#points description#> + /// - step: <#step description#> + /// - Returns: <#description#> static func closedLinePathWithPoints(points: [Double], step: CGPoint) -> Path { var path = Path() if points.count < 2 { @@ -189,20 +230,39 @@ extension Path { } extension CGPoint { + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - x: <#x description#> + /// - Returns: <#description#> func point(to: CGPoint, x: CGFloat) -> CGPoint { let a = (to.y - self.y) / (to.x - self.x) let y = self.y + (x - self.x) * a return CGPoint(x: x, y: y) } - + + /// <#Description#> + /// - Parameter to: <#to description#> + /// - Returns: <#description#> func line(to: CGPoint) -> CGFloat { dist(to: to) } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - x: <#x description#> + /// - Returns: <#description#> func line(to: CGPoint, x: CGFloat) -> CGFloat { dist(to: point(to: to, x: x)) } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - control: <#control description#> + /// - Returns: <#description#> func quadCurve(to: CGPoint, control: CGPoint) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -217,7 +277,13 @@ extension CGPoint { } return dist } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - control: <#control description#> + /// - x: <#x description#> + /// - Returns: <#description#> func quadCurve(to: CGPoint, control: CGPoint, x: CGFloat) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -242,14 +308,26 @@ extension CGPoint { } return dist } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - t: <#t description#> + /// - control: <#control description#> + /// - Returns: <#description#> func point(to: CGPoint, t: CGFloat, control: CGPoint) -> CGPoint { let x = CGPoint.value(x: self.x, y: to.x, t: t, c: control.x) let y = CGPoint.value(x: self.y, y: to.y, t: t, c: control.y) return CGPoint(x: x, y: y) } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - control1: <#control1 description#> + /// - control2: <#control2 description#> + /// - Returns: <#description#> func curve(to: CGPoint, control1: CGPoint, control2: CGPoint) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -266,7 +344,14 @@ extension CGPoint { return dist } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - control1: <#control1 description#> + /// - control2: <#control2 description#> + /// - x: <#x description#> + /// - Returns: <#description#> func curve(to: CGPoint, control1: CGPoint, control2: CGPoint, x: CGFloat) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -293,14 +378,28 @@ extension CGPoint { return dist } - + + /// <#Description#> + /// - Parameters: + /// - to: <#to description#> + /// - t: <#t description#> + /// - control1: <#control1 description#> + /// - control2: <#control2 description#> + /// - Returns: <#description#> func point(to: CGPoint, t: CGFloat, control1: CGPoint, control2: CGPoint) -> CGPoint { let x = CGPoint.value(x: self.x, y: to.x, t: t, control1: control1.x, control2: control2.x) let y = CGPoint.value(x: self.y, y: to.y, t: t, control1: control1.y, control2: control2.x) return CGPoint(x: x, y: y) } - + + /// <#Description#> + /// - Parameters: + /// - x: <#x description#> + /// - y: <#y description#> + /// - t: <#t description#> + /// - c: <#c description#> + /// - Returns: <#description#> static func value(x: CGFloat, y: CGFloat, t: CGFloat, c: CGFloat) -> CGFloat { var value: CGFloat = 0.0 // (1-t)^2 * p0 + 2 * (1-t) * t * c1 + t^2 * p1 @@ -309,7 +408,15 @@ extension CGPoint { value += pow(t, 2) * y return value } - + + /// <#Description#> + /// - Parameters: + /// - x: <#x description#> + /// - y: <#y description#> + /// - t: <#t description#> + /// - control1: <#control1 description#> + /// - control2: <#control2 description#> + /// - Returns: <#description#> static func value(x: CGFloat, y: CGFloat, t: CGFloat, control1: CGFloat, control2: CGFloat) -> CGFloat { var value: CGFloat = 0.0 // (1-t)^3 * p0 + 3 * (1-t)^2 * t * c1 + 3 * (1-t) * t^2 * c2 + t^3 * p1 @@ -319,24 +426,42 @@ extension CGPoint { value += pow(t, 3) * y return value } - + + /// <#Description#> + /// - Parameters: + /// - point1: <#point1 description#> + /// - point2: <#point2 description#> + /// - Returns: <#description#> static func getMidPoint(point1: CGPoint, point2: CGPoint) -> CGPoint { return CGPoint( x: point1.x + (point2.x - point1.x) / 2, y: point1.y + (point2.y - point1.y) / 2 ) } - + + /// <#Description#> + /// - Parameter to: <#to description#> + /// - Returns: <#description#> func dist(to: CGPoint) -> CGFloat { return sqrt((pow(self.x - to.x, 2) + pow(self.y - to.y, 2))) } - + + /// <#Description#> + /// - Parameters: + /// - firstPoint: <#firstPoint description#> + /// - secondPoint: <#secondPoint description#> + /// - Returns: <#description#> static func midPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { return CGPoint( x: (firstPoint.x + secondPoint.x) / 2, y: (firstPoint.y + secondPoint.y) / 2) } - + + /// <#Description#> + /// - Parameters: + /// - firstPoint: <#firstPoint description#> + /// - secondPoint: <#secondPoint description#> + /// - Returns: <#description#> static func controlPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { var controlPoint = CGPoint.midPointForPoints(firstPoint: firstPoint, secondPoint: secondPoint) let diffY = abs(secondPoint.y - controlPoint.y) diff --git a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift index cea35f8f..2ddcea31 100644 --- a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift @@ -1,6 +1,10 @@ import SwiftUI extension View { + + /// Attach chart style to a View + /// - Parameter style: chart style + /// - Returns: `View` with chart style attached public func chartStyle(_ style: ChartStyle) -> some View { self.environmentObject(style) } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index 254c874a..4562b37f 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -1,5 +1,6 @@ import SwiftUI +/// <#Description#> public struct ChartGrid: View, ChartBase { public var chartData = ChartData() let content: () -> Content @@ -7,10 +8,15 @@ public struct ChartGrid: View, ChartBase { @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle + /// <#Description#> + /// - Parameter content: <#content description#> public init(@ViewBuilder content: @escaping () -> Content) { self.content = content } + /// The content and behavior of the `ChartGrid`. + /// + /// TODO: Explain why this is in a `ZStack` public var body: some View { ZStack{ self.content() diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 877bc2a1..14a89fc8 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -1,5 +1,6 @@ import SwiftUI +/// What kind of label - this affects color, size, position of the label public enum ChartLabelType { case title case subTitle @@ -8,12 +9,15 @@ public enum ChartLabelType { case legend } +/// A chart may contain any number of labels in pre-set positions based on their `ChartLabelType` public struct ChartLabel: View { @EnvironmentObject var chartValue: ChartValue - @State var textToDisplay:String = "" + @State private var textToDisplay:String = "" private var title: String + /// Label font size + /// - Returns: the font size of the label private var labelSize: CGFloat { switch labelType { case .title: @@ -29,6 +33,8 @@ public struct ChartLabel: View { } } + /// Padding around label + /// - Returns: the edge padding to use based on position of the label private var labelPadding: EdgeInsets { switch labelType { case .title: @@ -44,8 +50,11 @@ public struct ChartLabel: View { } } + /// Which type (color, size, position) for label private let labelType: ChartLabelType + /// Foreground color for this label + /// - Returns: Color of label based on its `ChartLabelType` private var labelColor: Color { switch labelType { case .title: @@ -61,12 +70,19 @@ public struct ChartLabel: View { } } - public init (_ title: String, + /// Initialize + /// - Parameters: + /// - title: Any `String` + /// - type: Which `ChartLabelType` to use + public init(_ title: String, type: ChartLabelType = .title) { self.title = title labelType = type } + /// The content and behavior of the `ChartLabel`. + /// + /// Displays current value if chart is currently being touched along a data point, otherwise the specified text. public var body: some View { HStack { Text(textToDisplay) diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index c6e91f88..dafdaece 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -1,25 +1,44 @@ import SwiftUI +/// Descripton of colors/styles for any kind of chart public class ChartStyle: ObservableObject { - public let backgroundColor: ColorGradient + /// colors for background are of chart + public let backgroundColor: ColorGradient + /// colors for foreground fill of chart public let foregroundColor: [ColorGradient] + /// Initialize with a single background color and an array of `ColorGradient` for the foreground + /// - Parameters: + /// - backgroundColor: a `Color` + /// - foregroundColor: array of `ColorGradient` public init(backgroundColor: Color, foregroundColor: [ColorGradient]) { self.backgroundColor = ColorGradient.init(backgroundColor) self.foregroundColor = foregroundColor } - + + /// Initialize with a single background color and a single `ColorGradient` for the foreground + /// - Parameters: + /// - backgroundColor: a `Color` + /// - foregroundColor: a `ColorGradient` public init(backgroundColor: Color, foregroundColor: ColorGradient) { self.backgroundColor = ColorGradient.init(backgroundColor) self.foregroundColor = [foregroundColor] } - + + /// Initialize with a single background `ColorGradient` and a single `ColorGradient` for the foreground + /// - Parameters: + /// - backgroundColor: a `ColorGradient` + /// - foregroundColor: a `ColorGradient` public init(backgroundColor: ColorGradient, foregroundColor: ColorGradient) { self.backgroundColor = backgroundColor self.foregroundColor = [foregroundColor] } - + + /// Initialize with a single background `ColorGradient` and an array of `ColorGradient` for the foreground + /// - Parameters: + /// - backgroundColor: a `ColorGradient` + /// - foregroundColor: array of `ColorGradient` public init(backgroundColor: ColorGradient, foregroundColor: [ColorGradient]) { self.backgroundColor = backgroundColor self.foregroundColor = foregroundColor diff --git a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift index 5446cd7d..0258d3c1 100644 --- a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift +++ b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift @@ -1,26 +1,35 @@ import SwiftUI +/// An encapsulation of a simple gradient between one color and another public struct ColorGradient: Equatable { - public let startColor: Color + public let startColor: Color public let endColor: Color + /// Initialize as a solid color + /// - Parameter color: a single `Color` (no gradient effect visible) public init(_ color: Color) { self.startColor = color self.endColor = color } - - public init (_ startColor: Color, _ endColor: Color) { + + /// Initialize a color gradient from two specified colors + /// - Parameters: + /// - startColor: starting color + /// - endColor: ending color + public init(_ startColor: Color, _ endColor: Color) { self.startColor = startColor self.endColor = endColor } + /// Convert to a `Gradient` object (more complicated than just two colors) + /// - Returns: a `Gradient` between the specified start and end colors public var gradient: Gradient { return Gradient(colors: [startColor, endColor]) } } extension ColorGradient { - /// Convenience method to return a LinearGradient from the ColorGradient + /// Convenience method to return a SwiftUI LinearGradient view from the ColorGradient /// - Parameters: /// - startPoint: starting point /// - endPoint: ending point diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift index 860f27d4..1590fbcf 100644 --- a/Sources/SwiftUICharts/Base/Style/Colors.swift +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -1,5 +1,6 @@ import SwiftUI +/// Some predefined colors, used for demos, defaults if color is missing, and data indicator point public enum ChartColors { // Orange public static let orangeBright = Color(hexString: "#FF782C") diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index 3b23be9b..6ce279f7 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -1,11 +1,15 @@ import SwiftUI +/// A type of chart that displays vertical bars for each data point public struct BarChart: View, ChartBase { public var chartData = ChartData() @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle + /// The content and behavior of the `BarChart`. + /// + /// public var body: some View { BarChartRow(chartData: data, style: style) } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index 16936138..761add15 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -1,5 +1,6 @@ import SwiftUI +/// A single vertical bar in a `BarChart` public struct BarChartCell: View { var value: Double var index: Int = 0 @@ -12,7 +13,7 @@ public struct BarChartCell: View { return Double(width)/(Double(numberOfDataPoints) * 1.5) } - @State var firstDisplay: Bool = true + @State private var firstDisplay: Bool = true public init( value: Double, index: Int = 0, @@ -28,6 +29,9 @@ public struct BarChartCell: View { self.touchLocation = touchLocation } + /// The content and behavior of the `BarChartCell`. + /// + /// Animated when first displayed, using the `firstDisplay` variable, with an increasing delay through the data set. public var body: some View { ZStack { RoundedRectangle(cornerRadius: 4) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index feeae767..4ab28f44 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,9 +1,10 @@ import SwiftUI +/// A single row of data, a view in a `BarChart` public struct BarChartRow: View { @EnvironmentObject var chartValue: ChartValue @ObservedObject var chartData: ChartData - @State var touchLocation: CGFloat = -1.0 + @State private var touchLocation: CGFloat = -1.0 enum Constant { static let spacing: CGFloat = 16.0 @@ -18,6 +19,11 @@ public struct BarChartRow: View { return max != 0 ? max : 1 } + /// The content and behavior of the `BarChartRow`. + /// + /// Shows each `BarChartCell` in an `HStack`; may be scaled up if it's the one currently being touched. + /// Not using a drawing group for optimizing animation. + /// As touched (dragged) the `touchLocation` is updated and the current value is highlighted. public var body: some View { GeometryReader { geometry in HStack(alignment: .bottom, @@ -51,11 +57,19 @@ public struct BarChartRow: View { ) } } - + + /// Value relative to maximum value + /// - Parameter index: index into array of data + /// - Returns: data value at given index, divided by data maximum func normalizedValue(index: Int) -> Double { return Double(chartData.data[index])/Double(maxValue) } + /// Size to scale the touch indicator + /// - Parameters: + /// - touchLocation: fraction of width where touch is happening + /// - index: index into data array + /// - Returns: a scale larger than 1.0 if in bounds; 1.0 (unscaled) if not in bounds func getScaleSize(touchLocation: CGFloat, index: Int) -> CGSize { if touchLocation > CGFloat(index)/CGFloat(chartData.data.count) && touchLocation < CGFloat(index+1)/CGFloat(chartData.data.count) { @@ -64,6 +78,9 @@ public struct BarChartRow: View { return CGSize(width: 1, height: 1) } + /// Get data value where touch happened + /// - Parameter width: width of chart + /// - Returns: value as `Double` if chart has data func getCurrentValue(width: CGFloat) -> Double? { guard self.chartData.data.count > 0 else { return nil} let index = max(0,min(self.chartData.data.count-1,Int(floor((self.touchLocation*width)/(width/CGFloat(self.chartData.data.count)))))) diff --git a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift index 925ecc7f..d144fcd8 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift @@ -8,8 +8,12 @@ import SwiftUI +/// A dot representing a single data point as user moves finger over line in `LineChart` struct IndicatorPoint: View { - var body: some View { + /// The content and behavior of the `IndicatorPoint`. + /// + /// A filled circle with a thick white outline and a shadow + public var body: some View { ZStack { Circle() .fill(ChartColors.indicatorKnob) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index b2ff21e6..d94bf6a6 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -1,21 +1,27 @@ import SwiftUI +/// A single line of data, a view in a `LineChart` public struct Line: View { @EnvironmentObject var chartValue: ChartValue - @State var frame: CGRect = .zero + @State private var frame: CGRect = .zero @ObservedObject var chartData: ChartData var style: ChartStyle - @State var showIndicator: Bool = false - @State var touchLocation: CGPoint = .zero + @State private var showIndicator: Bool = false + @State private var touchLocation: CGPoint = .zero @State private var showFull: Bool = false - @State var showBackground: Bool = true + @State private var showBackground: Bool = true var curvedLines: Bool = true - var step: CGPoint { + + /// Step for plotting through data + /// - Returns: X and Y delta between each data point based on data and view's frame + var step: CGPoint { return CGPoint.getStep(frame: frame, data: chartData.data) } + /// Path of line graph + /// - Returns: A path for stroking representing the data, either curved or jagged. var path: Path { let points = chartData.data @@ -28,6 +34,8 @@ public struct Line: View { return Path.linePathWithPoints(points: points, step: step) } + /// Path of linegraph, but also closed at the bottom side + /// - Returns: A path for filling representing the data, either curved or jagged var closedPath: Path { let points = chartData.data @@ -40,6 +48,11 @@ public struct Line: View { return Path.closedLinePathWithPoints(points: points, step: step) } + /// The content and behavior of the `Line`. + /// + /// Draw the background if showing the full line (?) and the `showBackground` option is set. Above that draw the line, and then the data indicator if the graph is currently being touched. + /// On appear, set the frame so that the data graph metrics can be calculated. On a drag (touch) gesture, highlight the closest touched data point. + /// TODO: explain rotation public var body: some View { let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) @@ -93,11 +106,17 @@ public struct Line: View { // MARK: - Private functions extension Line { + + /// Calculate point closest to where the user touched + /// - Parameter touchLocation: location in view where touched + /// - Returns: `CGPoint` of data point on chart private func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { let closest = self.path.point(to: touchLocation.x) return closest } + /// Figure out where closest touch point was + /// - Parameter point: location of data point on graph, near touch location private func getClosestDataPoint(point: CGPoint) { let index = Int(round((point.x)/step.x)) if (index >= 0 && index < self.chartData.data.count){ @@ -105,6 +124,10 @@ extension Line { } } + /// Get the view representing the filled in background below the chart, filled with the foreground color's gradient + /// + /// TODO: explain rotations + /// - Returns: SwiftUI `View` private func getBackgroundPathView() -> some View { self.closedPath .fill(LinearGradient(gradient: Gradient(colors: [ @@ -120,6 +143,11 @@ extension Line { .animation(.easeIn(duration: 1.6)) } + /// Get the view representing the line stroked in the `foregroundColor` + /// + /// TODO: Explain how `showFull` works + /// TODO: explain rotations + /// - Returns: SwiftUI `View` private func getLinePathView() -> some View { self.path .trim(from: 0, to: self.showFull ? 1:0) @@ -149,5 +177,8 @@ struct Line_Previews: PreviewProvider { } } +/// Predefined style, black over white, for preview private let blackLineStyle = ChartStyle(backgroundColor: ColorGradient(.white), foregroundColor: ColorGradient(.black)) + +/// Predefined stylem red over white, for preview private let redLineStyle = ChartStyle(backgroundColor: .whiteBlack, foregroundColor: ColorGradient(.red)) diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 0d9b3040..379fbd37 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -1,11 +1,15 @@ import SwiftUI +/// A type of chart that displays a line connecting the data points public struct LineChart: View, ChartBase { public var chartData = ChartData() @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle + /// The content and behavior of the `LineChart`. + /// + /// public var body: some View { Line(chartData: data, style: style) } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index 7acfa27c..f23d3c96 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -1,11 +1,15 @@ import SwiftUI +/// A type of chart that displays a slice of "pie" for each data point public struct PieChart: View, ChartBase { public var chartData = ChartData() @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle + /// The content and behavior of the `PieChart`. + /// + /// public var body: some View { PieChartRow(chartData: data, style: style) } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift index 7dedd730..bacc4f28 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift @@ -7,6 +7,7 @@ import SwiftUI +/// One slice of a `PieChartRow` struct PieSlice: Identifiable { var id = UUID() var startDeg: Double @@ -14,6 +15,7 @@ struct PieSlice: Identifiable { var value: Double } +/// A single row of data, a view in a `PieChart` public struct PieChartCell: View { @State private var show: Bool = false var rect: CGRect @@ -21,7 +23,9 @@ public struct PieChartCell: View { return min(rect.width, rect.height)/2 } var startDeg: Double - var endDeg: Double + var endDeg: Double + + /// Path representing this slice var path: Path { var path = Path() path.addArc( @@ -42,6 +46,9 @@ public struct PieChartCell: View { // Section color var accentColor: ColorGradient + /// The content and behavior of the `PieChartCell`. + /// + /// Fills and strokes with 2-pixel line (unless start/end degrees not yet set). Animates by scaling up to 100% when first appears. public var body: some View { Group { path diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index aae06735..fccf259f 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -7,6 +7,7 @@ import SwiftUI +/// A single "row" (slice) of data, a view in a `PieChart` public struct PieChartRow: View { @ObservedObject var chartData: ChartData @@ -27,7 +28,10 @@ public struct PieChartRow: View { return tempSlices } - + + /// The content and behavior of the `PieChartRow`. + /// + /// public var body: some View { GeometryReader { geometry in ZStack { @@ -72,10 +76,12 @@ struct PieChartRow_Previews: PreviewProvider { } } +/// Predefined color style, for preview private let defaultMultiColorChartStyle = ChartStyle( backgroundColor: Color.white, foregroundColor: [ColorGradient]()) +/// Predefined color style, for preview private let multiColorChartStyle = ChartStyle( backgroundColor: Color.purple, foregroundColor: [ColorGradient.greenRed, ColorGradient.whiteBlack]) From 8ee353c93adb6f69962ab0bb919ca94762c6b390 Mon Sep 17 00:00:00 2001 From: Dan Wood <207080+danwood@users.noreply.github.com> Date: Mon, 24 Aug 2020 07:31:17 -0700 Subject: [PATCH 20/40] Activity-type Rings charts (#161) Co-authored-by: Dan Wood --- .../Charts/RingsChart/Ring.swift | 187 ++++++++++++++++++ .../Charts/RingsChart/RingsChart.swift | 22 +++ .../Charts/RingsChart/RingsChartRow.swift | 133 +++++++++++++ 3 files changed, 342 insertions(+) create mode 100644 Sources/SwiftUICharts/Charts/RingsChart/Ring.swift create mode 100644 Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift create mode 100644 Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift diff --git a/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift b/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift new file mode 100644 index 00000000..dee10540 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift @@ -0,0 +1,187 @@ +// +// Ring.swift +// ChartViewV2Demo +// +// Created by Dan Wood on 8/20/20. +// Based on article and playground code by Frank Jia +// https://medium.com/@frankjia/creating-activity-rings-in-swiftui-11ef7d336676 + +import SwiftUI + + +extension Double { + func toRadians() -> Double { + return self * Double.pi / 180 + } + func toCGFloat() -> CGFloat { + return CGFloat(self) + } +} + +struct RingShape: Shape { + /// Helper function to convert percent values to angles in degrees + /// - Parameters: + /// - percent: percent, greater than 100 is OK + /// - startAngle: angle to add after converting + /// - Returns: angle in degrees + static func percentToAngle(percent: Double, startAngle: Double) -> Double { + (percent / 100 * 360) + startAngle + } + private var percent: Double + private var startAngle: Double + private let drawnClockwise: Bool + + // This allows animations to run smoothly for percent values + var animatableData: Double { + get { + return percent + } + set { + percent = newValue + } + } + + init(percent: Double = 100, startAngle: Double = -90, drawnClockwise: Bool = false) { + self.percent = percent + self.startAngle = startAngle + self.drawnClockwise = drawnClockwise + } + + /// This draws a simple arc from the start angle to the end angle + /// + /// - Parameter rect: The frame of reference for describing this shape. + /// - Returns: A path that describes this shape. + func path(in rect: CGRect) -> Path { + let width = rect.width + let height = rect.height + let radius = min(width, height) / 2 + let center = CGPoint(x: width / 2, y: height / 2) + let endAngle = Angle(degrees: RingShape.percentToAngle(percent: self.percent, startAngle: self.startAngle)) + return Path { path in + path.addArc(center: center, radius: radius, startAngle: Angle(degrees: startAngle), endAngle: endAngle, clockwise: drawnClockwise) + } + } +} + +struct Ring: View { + + private static let ShadowColor: Color = Color.black.opacity(0.2) + private static let ShadowRadius: CGFloat = 5 + private static let ShadowOffsetMultiplier: CGFloat = ShadowRadius + 2 + + private let ringWidth: CGFloat + private let percent: Double + private let foregroundColor: ColorGradient + private let startAngle: Double = -90 + + private let touchLocation: CGFloat + + + + private var gradientStartAngle: Double { + self.percent >= 100 ? relativePercentageAngle - 360 : startAngle + } + private var absolutePercentageAngle: Double { + RingShape.percentToAngle(percent: self.percent, startAngle: 0) + } + private var relativePercentageAngle: Double { + // Take into account the startAngle + absolutePercentageAngle + startAngle + } + private var lastGradientColor: Color { + self.foregroundColor.endColor + } + + private var ringGradient: AngularGradient { + AngularGradient( + gradient: self.foregroundColor.gradient, + center: .center, + startAngle: Angle(degrees: self.gradientStartAngle), + endAngle: Angle(degrees: relativePercentageAngle) + ) + } + + init(ringWidth: CGFloat, percent: Double, foregroundColor: ColorGradient, touchLocation:CGFloat) { + self.ringWidth = ringWidth + self.percent = percent + self.foregroundColor = foregroundColor + self.touchLocation = touchLocation + } + + var body: some View { + GeometryReader { geometry in + ZStack { + // Background for the ring. Use the final color with reduced opacity + RingShape() + .stroke(style: StrokeStyle(lineWidth: self.ringWidth)) + .fill(lastGradientColor.opacity(0.142857)) + // Foreground + RingShape(percent: self.percent, startAngle: self.startAngle) + .stroke(style: StrokeStyle(lineWidth: self.ringWidth, lineCap: .round)) + .fill(self.ringGradient) + // End of ring with drop shadow + if self.getShowShadow(frame: geometry.size) { + Circle() + .fill(self.lastGradientColor) + .frame(width: self.ringWidth, height: self.ringWidth, alignment: .center) + .offset(x: self.getEndCircleLocation(frame: geometry.size).0, + y: self.getEndCircleLocation(frame: geometry.size).1) + .shadow(color: Ring.ShadowColor, + radius: Ring.ShadowRadius, + x: self.getEndCircleShadowOffset().0, + y: self.getEndCircleShadowOffset().1) + } + } + } + // Padding to ensure that the entire ring fits within the view size allocated + .padding(self.ringWidth / 2) + } + + private func getEndCircleLocation(frame: CGSize) -> (CGFloat, CGFloat) { + // Get angle of the end circle with respect to the start angle + let angleOfEndInRadians: Double = relativePercentageAngle.toRadians() + let offsetRadius = min(frame.width, frame.height) / 2 + return (offsetRadius * cos(angleOfEndInRadians).toCGFloat(), offsetRadius * sin(angleOfEndInRadians).toCGFloat()) + } + + private func getEndCircleShadowOffset() -> (CGFloat, CGFloat) { + let angleForOffset = absolutePercentageAngle + (self.startAngle + 90) + let angleForOffsetInRadians = angleForOffset.toRadians() + let relativeXOffset = cos(angleForOffsetInRadians) + let relativeYOffset = sin(angleForOffsetInRadians) + let xOffset = relativeXOffset.toCGFloat() * Ring.ShadowOffsetMultiplier + let yOffset = relativeYOffset.toCGFloat() * Ring.ShadowOffsetMultiplier + return (xOffset, yOffset) + } + + private func getShowShadow(frame: CGSize) -> Bool { + if self.percent >= 100 { + return true + } + let circleRadius = min(frame.width, frame.height) / 2 + let remainingAngleInRadians = (360 - absolutePercentageAngle).toRadians().toCGFloat() + + return circleRadius * remainingAngleInRadians <= self.ringWidth + } +} + +struct Ring_Previews: PreviewProvider { + static var previews: some View { + VStack { + Ring( + ringWidth: 50, percent: 5 , + foregroundColor: ColorGradient(.green, .blue), touchLocation: -1.0 + ) + .frame(width: 200, height: 200) + + Ring( + ringWidth: 20, percent: 110 , + foregroundColor: ColorGradient(.red, .blue), touchLocation: -1.0 + ) + .frame(width: 200, height: 200) + + + + } + } +} diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift new file mode 100644 index 00000000..f70aed0e --- /dev/null +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift @@ -0,0 +1,22 @@ +// +// RingsChart.swift +// ChartViewV2Demo +// +// Created by Dan Wood on 8/20/20. +// + +import SwiftUI + +public struct RingsChart: View, ChartBase { + public var chartData = ChartData() + + @EnvironmentObject var data: ChartData + @EnvironmentObject var style: ChartStyle + + // TODO - should put background opacity, ring width & spacing as chart style values + + public var body: some View { + RingsChartRow(width:10.0, spacing:5.0, chartData: data, style: style) + } + +} diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift new file mode 100644 index 00000000..cbdbfbde --- /dev/null +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift @@ -0,0 +1,133 @@ +// +// RingsChartRow.swift +// ChartViewV2Demo +// +// Created by Dan Wood on 8/20/20. +// + +import SwiftUI + +public struct RingsChartRow: View { + + var width : CGFloat + var spacing : CGFloat + + @EnvironmentObject var chartValue: ChartValue + @ObservedObject var chartData: ChartData + @State var touchRadius: CGFloat = -1.0 + + var style: ChartStyle + + public var body: some View { + GeometryReader { geometry in + + ZStack { + + // FIXME: Why is background circle offset strangely when frame isn't specified? See Preview below. Related to the .animation somehow ???? + Circle() + .fill(RadialGradient(gradient: self.style.backgroundColor.gradient, center: .center, startRadius: min(geometry.size.width, geometry.size.height)/2.0, endRadius: 1.0)) + + ForEach(0.. Bool { + let radius = min(size.width, size.height) / 2.0 + return index == self.touchedCircleIndex(maxRadius: radius) + } + + /// Find which circle has been touched + /// - Parameter maxRadius: radius of overall view circle + /// - Returns: which circle index was touched, if found. 0 = outer, 1 = next one in, etc. + func touchedCircleIndex(maxRadius: CGFloat) -> Int? { + guard self.chartData.data.count > 0 else { return nil } // no data + + // Pretend actual circle goes ½ the inter-ring spacing out, so that a touch + // is registered on either side of each ring + let radialDistanceFromEdge = (maxRadius + spacing/2) - self.touchRadius; + guard radialDistanceFromEdge >= 0 else { return nil } // touched outside of ring + + let touchIndex = Int(floor(radialDistanceFromEdge / (width + spacing))) + + if touchIndex >= self.chartData.data.count { return nil } // too far from outside, no ring + + return touchIndex + } + + /// Description + /// - Parameter maxRadius: radius of overall view circle + /// - Returns: percentage value of the touched circle, based on `touchRadius` if found + func getCurrentValue(maxRadius: CGFloat) -> Double? { + + guard let index = self.touchedCircleIndex(maxRadius: maxRadius) else { return nil } + return self.chartData.data[index] + } +} + + +struct RingsChartRow_Previews: PreviewProvider { + static var previews: some View { + + let multiStyle = ChartStyle(backgroundColor: ColorGradient(Color.black.opacity(0.05), Color.white), + foregroundColor: + [ColorGradient(.purple, .blue), + ColorGradient(.orange, .red), + ColorGradient(.green, .yellow), + ]) + + return RingsChartRow(width:20.0, spacing:10.0, chartData: ChartData([25,50,75,100,125]), style: multiStyle) + + // and why does this not get centered when frame isn't specified? + .frame(width:300, height:400) + } +} + + From 9210d01137157bb2481da7a34ee65890fc15fd63 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Mon, 24 Aug 2020 16:51:22 +0200 Subject: [PATCH 21/40] V2 beta 2 changes (#150) * Add PieChart interaction PR changes to v2 * Add custom string format for ChartLabel when interactionInProgress = true (#151) * Dark/Light mode fixes (#148) Fix for making text work with both Dark/Light mode. Also solves line chart background to appear white in dark mode * Add custom string format for ChartLabel when interactionInProgress = true Co-authored-by: Sagar Patel * Prepare charts to display x and y values souch as a value for a given point Co-authored-by: Roddy Munro Co-authored-by: Sagar Patel --- .../SwiftUICharts/Base/Chart/ChartData.swift | 14 ++- .../Base/Extensions/ChartBase+Extension.swift | 7 ++ .../SwiftUICharts/Base/Label/ChartLabel.swift | 11 ++- .../Charts/BarChart/BarChartRow.swift | 6 +- .../Charts/LineChart/IndicatorPoint.swift | 8 -- .../SwiftUICharts/Charts/LineChart/Line.swift | 25 +++-- .../Charts/PieChart/PieChartCell.swift | 7 -- .../Charts/PieChart/PieChartHelpers.swift | 34 +++++++ .../Charts/PieChart/PieChartRow.swift | 92 ++++++++----------- .../Charts/RingsChart/RingsChartRow.swift | 4 +- 10 files changed, 115 insertions(+), 93 deletions(-) create mode 100644 Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index 61beec79..28c2065d 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -2,11 +2,23 @@ import SwiftUI /// An observable wrapper for an array of data for use in any chart public class ChartData: ObservableObject { - @Published public var data: [Double] = [] + @Published public var data: [(String, Double)] = [] + + var points: [Double] { + data.map { $0.1 } + } + + var values: [String] { + data.map { $0.0 } + } /// Initialize with data array /// - Parameter data: Array of `Double` public init(_ data: [Double]) { + self.data = data.map { ("", $0) } + } + + public init(_ data: [(String, Double)]) { self.data = data } diff --git a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift index 90060e3e..73873d78 100644 --- a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift @@ -6,6 +6,13 @@ extension View where Self: ChartBase { /// - Parameter data: array of `Double` /// - Returns: modified `View` with data attached public func data(_ data: [Double]) -> some View { + chartData.data = data.map { ("", $0) } + return self + .environmentObject(chartData) + .environmentObject(ChartValue()) + } + + public func data(_ data: [(String, Double)]) -> some View { chartData.data = data return self .environmentObject(chartData) diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 14a89fc8..96a86303 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -12,7 +12,8 @@ public enum ChartLabelType { /// A chart may contain any number of labels in pre-set positions based on their `ChartLabelType` public struct ChartLabel: View { @EnvironmentObject var chartValue: ChartValue - @State private var textToDisplay:String = "" + @State var textToDisplay:String = "" + var format: String = "%.01f" private var title: String @@ -74,10 +75,12 @@ public struct ChartLabel: View { /// - Parameters: /// - title: Any `String` /// - type: Which `ChartLabelType` to use - public init(_ title: String, - type: ChartLabelType = .title) { + public init (_ title: String, + type: ChartLabelType = .title, + format: String = "%.01f") { self.title = title labelType = type + self.format = format } /// The content and behavior of the `ChartLabel`. @@ -94,7 +97,7 @@ public struct ChartLabel: View { self.textToDisplay = self.title } .onReceive(self.chartValue.objectWillChange) { _ in - self.textToDisplay = self.chartValue.interactionInProgress ? String(format: "%.01f", self.chartValue.currentValue) : self.title + self.textToDisplay = self.chartValue.interactionInProgress ? String(format: format, self.chartValue.currentValue) : self.title } if !self.chartValue.interactionInProgress { Spacer() diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 4ab28f44..366a3319 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -13,7 +13,7 @@ public struct BarChartRow: View { var style: ChartStyle var maxValue: Double { - guard let max = chartData.data.max() else { + guard let max = chartData.points.max() else { return 1 } return max != 0 ? max : 1 @@ -62,7 +62,7 @@ public struct BarChartRow: View { /// - Parameter index: index into array of data /// - Returns: data value at given index, divided by data maximum func normalizedValue(index: Int) -> Double { - return Double(chartData.data[index])/Double(maxValue) + return Double(chartData.points[index])/Double(maxValue) } /// Size to scale the touch indicator @@ -84,6 +84,6 @@ public struct BarChartRow: View { func getCurrentValue(width: CGFloat) -> Double? { guard self.chartData.data.count > 0 else { return nil} let index = max(0,min(self.chartData.data.count-1,Int(floor((self.touchLocation*width)/(width/CGFloat(self.chartData.data.count)))))) - return self.chartData.data[index] + return self.chartData.points[index] } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift index d144fcd8..c0249477 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift @@ -1,11 +1,3 @@ -// -// IndicatorPoint.swift -// LineChart -// -// Created by András Samu on 2019. 09. 03.. -// Copyright © 2019. András Samu. All rights reserved. -// - import SwiftUI /// A dot representing a single data point as user moves finger over line in `LineChart` diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index d94bf6a6..942342de 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -16,14 +16,14 @@ public struct Line: View { /// Step for plotting through data /// - Returns: X and Y delta between each data point based on data and view's frame - var step: CGPoint { - return CGPoint.getStep(frame: frame, data: chartData.data) + var step: CGPoint { + return CGPoint.getStep(frame: frame, data: chartData.points) } /// Path of line graph /// - Returns: A path for stroking representing the data, either curved or jagged. var path: Path { - let points = chartData.data + let points = chartData.points if curvedLines { return Path.quadCurvedPathWithPoints(points: points, @@ -37,7 +37,7 @@ public struct Line: View { /// Path of linegraph, but also closed at the bottom side /// - Returns: A path for filling representing the data, either curved or jagged var closedPath: Path { - let points = chartData.data + let points = chartData.points if curvedLines { return Path.quadClosedCurvedPathWithPoints(points: points, @@ -47,20 +47,19 @@ public struct Line: View { return Path.closedLinePathWithPoints(points: points, step: step) } + + // see https://stackoverflow.com/a/62370919 + // This lets geometry be recalculated when device rotates. However it doesn't cover issue of app changing + // from full screen to split view. Not possible in SwiftUI? Feedback submitted to apple FB8451194. + let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) + .makeConnectable() + .autoconnect() /// The content and behavior of the `Line`. - /// /// Draw the background if showing the full line (?) and the `showBackground` option is set. Above that draw the line, and then the data indicator if the graph is currently being touched. /// On appear, set the frame so that the data graph metrics can be calculated. On a drag (touch) gesture, highlight the closest touched data point. /// TODO: explain rotation public var body: some View { - - let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) - .makeConnectable() - .autoconnect() // see https://stackoverflow.com/a/62370919 - // This lets geometry be recalculated when device rotates. However it doesn't cover issue of app changing - // from full screen to split view. Not possible in SwiftUI? Feedback submitted to apple FB8451194. - GeometryReader { geometry in ZStack { if self.showFull && self.showBackground { @@ -120,7 +119,7 @@ extension Line { private func getClosestDataPoint(point: CGPoint) { let index = Int(round((point.x)/step.x)) if (index >= 0 && index < self.chartData.data.count){ - self.chartValue.currentValue = self.chartData.data[index] + self.chartValue.currentValue = self.chartData.points[index] } } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift index bacc4f28..f733bcd7 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift @@ -1,10 +1,3 @@ -// -// PieChartCell.swift -// SwiftUICharts -// -// Created by Nicolas Savoini on 2020-05-24. -// - import SwiftUI /// One slice of a `PieChartRow` diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift new file mode 100644 index 00000000..d9c68d8b --- /dev/null +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift @@ -0,0 +1,34 @@ +import SwiftUI + +func isPointInCircle(point: CGPoint, circleRect: CGRect) -> Bool { + let r = min(circleRect.width, circleRect.height) / 2 + let center = CGPoint(x: circleRect.midX, y: circleRect.midY) + let dx = point.x - center.x + let dy = point.y - center.y + let distance = sqrt(dx * dx + dy * dy) + return distance <= r +} + +func degree(for point: CGPoint, inCircleRect circleRect: CGRect) -> Double { + let center = CGPoint(x: circleRect.midX, y: circleRect.midY) + let dx = point.x - center.x + let dy = point.y - center.y + let acuteDegree = Double(atan(dy / dx)) * (180 / .pi) + + let isInBottomRight = dx >= 0 && dy >= 0 + let isInBottomLeft = dx <= 0 && dy >= 0 + let isInTopLeft = dx <= 0 && dy <= 0 + let isInTopRight = dx >= 0 && dy <= 0 + + if isInBottomRight { + return acuteDegree + } else if isInBottomLeft { + return 180 - abs(acuteDegree) + } else if isInTopLeft { + return 180 + abs(acuteDegree) + } else if isInTopRight { + return 360 - abs(acuteDegree) + } + + return 0 +} diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index fccf259f..f812a17e 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -1,24 +1,18 @@ -// -// PieChartRow.swift -// SwiftUICharts -// -// Created by Nicolas Savoini on 2020-05-24. -// - import SwiftUI /// A single "row" (slice) of data, a view in a `PieChart` public struct PieChartRow: View { @ObservedObject var chartData: ChartData + @EnvironmentObject var chartValue: ChartValue var style: ChartStyle var slices: [PieSlice] { var tempSlices: [PieSlice] = [] var lastEndDeg: Double = 0 - let maxValue: Double = chartData.data.reduce(0, +) + let maxValue: Double = chartData.points.reduce(0, +) - for slice in chartData.data { + for slice in chartData.points { let normalized: Double = Double(slice) / (maxValue == 0 ? 1 : maxValue) let startDeg = lastEndDeg let endDeg = lastEndDeg + (normalized * 360) @@ -29,59 +23,47 @@ public struct PieChartRow: View { return tempSlices } - /// The content and behavior of the `PieChartRow`. - /// - /// + @State private var currentTouchedIndex = -1 { + didSet { + if oldValue != currentTouchedIndex { + chartValue.interactionInProgress = currentTouchedIndex != -1 + guard currentTouchedIndex != -1 else { return } + chartValue.currentValue = slices[currentTouchedIndex].value + } + } + } + public var body: some View { GeometryReader { geometry in ZStack { ForEach(0.. touchDegree }) ?? -1 + } else { + currentTouchedIndex = -1 + } + }) + .onEnded({ value in + currentTouchedIndex = -1 + }) + ) } } - -} - -struct PieChartRow_Previews: PreviewProvider { - static var previews: some View { - Group { - //Empty Array - Default Colors.OrangeStart - PieChartRow( - chartData: ChartData([8, 23, 32, 7, 23, 43]), - style: defaultMultiColorChartStyle) - .frame(width: 100, height: 100) - - PieChartRow( - chartData: ChartData([8, 23, 32, 7, 23, 43]), - style: multiColorChartStyle) - .frame(width: 100, height: 100) - - PieChartRow( - chartData: ChartData([8, 23, 32, 7, 23, 43]), - style: multiColorChartStyle) - .frame(width: 100, height: 100) - - }.previewLayout(.fixed(width: 125, height: 125)) - - } } - -/// Predefined color style, for preview -private let defaultMultiColorChartStyle = ChartStyle( - backgroundColor: Color.white, - foregroundColor: [ColorGradient]()) - -/// Predefined color style, for preview -private let multiColorChartStyle = ChartStyle( -backgroundColor: Color.purple, -foregroundColor: [ColorGradient.greenRed, ColorGradient.whiteBlack]) diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift index cbdbfbde..7e2dd82b 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift @@ -39,7 +39,7 @@ public struct RingsChartRow: View { // make sure it doesn't get to crazy value ) - Ring(ringWidth:scaledWidth, percent: self.chartData.data[index], foregroundColor:self.style.foregroundColor.rotate(for: index), + Ring(ringWidth:scaledWidth, percent: self.chartData.points[index], foregroundColor:self.style.foregroundColor.rotate(for: index), touchLocation: self.touchRadius) @@ -108,7 +108,7 @@ public struct RingsChartRow: View { func getCurrentValue(maxRadius: CGFloat) -> Double? { guard let index = self.touchedCircleIndex(maxRadius: maxRadius) else { return nil } - return self.chartData.data[index] + return self.chartData.points[index] } } From 84578d2f6fa5aecd230ed8998dba570037db55ce Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Mon, 24 Aug 2020 20:26:37 +0200 Subject: [PATCH 22/40] Add a public init() to RingsChart --- Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift index f70aed0e..1f59a651 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift @@ -19,4 +19,5 @@ public struct RingsChart: View, ChartBase { RingsChartRow(width:10.0, spacing:5.0, chartData: data, style: style) } + public init() {} } From 7861bbcad138feb91162cd448f0a54caa5ca639e Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Wed, 9 Jun 2021 08:54:04 +0200 Subject: [PATCH 23/40] feat(core): refactoring chart dispalying (#191) now it is possible to add background lines precisely as charts are displayed at correct size also rewrote basics to conform with Shapes and Animatable protocol --- .../UserInterfaceState.xcuserstate | Bin 0 -> 37983 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../xcschemes/xcschememanagement.plist | 15 +- .../SwiftUICharts/Base/Chart/ChartData.swift | 16 +- .../Base/Extensions/CGPoint+Extension.swift | 2 +- .../SwiftUICharts/Base/Grid/ChartGrid.swift | 43 ++++- .../Charts/BarChart/BarChartCell.swift | 41 ++-- .../Charts/BarChart/BarChartCellShape.swift | 44 +++++ .../Charts/BarChart/BarChartRow.swift | 31 ++-- .../SwiftUICharts/Charts/LineChart/Line.swift | 175 +++++------------- .../LineChart/LineBackgroundShape.swift | 31 ++++ .../LineChart/LineBackgroundShapeView.swift | 19 ++ .../Charts/LineChart/LineShape.swift | 30 +++ .../Charts/LineChart/LineShapeView.swift | 26 +++ .../ArrayExtensionTests.swift | 7 - 15 files changed, 292 insertions(+), 194 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 .swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/LineShape.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a5f64f0a3fb188a684c45c82893ce8c09350485d GIT binary patch literal 37983 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 Y3qKB5{5$+b$e;hZ{oeoj{|vYN15fB^BLDyZ literal 0 HcmV?d00001 diff --git a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..867e4fe8 --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist index a0f26bbb..1be8e537 100644 --- a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,20 @@ SwiftUICharts.xcscheme_^#shared#^_ orderHint - 2 + 0 + + + SuppressBuildableAutocreation + + SwiftUICharts + + primary + + + SwiftUIChartsTests + + primary + diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index 28c2065d..b598975c 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -12,8 +12,20 @@ public class ChartData: ObservableObject { data.map { $0.0 } } - /// Initialize with data array - /// - Parameter data: Array of `Double` + var normalisedPoints: [Double] { + points.map { $0 / (points.max() ?? 1.0) } + } + + var normalisedRange: Double { + (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) + } + + var isInNegativeDomain: Bool { + (points.min() ?? 0.0) < 0 + } + + /// Initialize with data array + /// - Parameter data: Array of `Double` public init(_ data: [Double]) { self.data = data.map { ("", $0) } } diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index a9a9b086..363cd2c3 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -8,7 +8,7 @@ extension CGPoint { /// - data: array of `Double` /// - Returns: X and Y delta as a `CGPoint` static func getStep(frame: CGRect, data: [Double]) -> CGPoint { - let padding: CGFloat = 30.0 + let padding: CGFloat = 0 // stepWidth var stepWidth: CGFloat = 0.0 diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index 4562b37f..ecaf270b 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -1,25 +1,52 @@ import SwiftUI -/// <#Description#> public struct ChartGrid: View, ChartBase { public var chartData = ChartData() let content: () -> Content + let numberOfHorizontalLines = 4 @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle - /// <#Description#> - /// - Parameter content: <#content description#> public init(@ViewBuilder content: @escaping () -> Content) { self.content = content } - /// The content and behavior of the `ChartGrid`. - /// - /// TODO: Explain why this is in a `ZStack` public var body: some View { - ZStack{ - self.content() + HStack { + ZStack { + VStack { + ForEach(0.. Path { + let baseLine: CGFloat = CGFloat(frame.height / 2) + var hLine = Path() + hLine.move(to: CGPoint(x:0, y: baseLine)) + hLine.addLine(to: CGPoint(x: frame.width, y: baseLine)) + return hLine + } + + var body: some View { + GeometryReader { geometry in + line(frame: geometry.frame(in: .local)) + .stroke(Color(white: 0.3), style: StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10])) } } } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index 761add15..e457d3cd 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -4,27 +4,17 @@ import SwiftUI public struct BarChartCell: View { var value: Double var index: Int = 0 - var width: Float - var numberOfDataPoints: Int var gradientColor: ColorGradient var touchLocation: CGFloat - var cellWidth: Double { - return Double(width)/(Double(numberOfDataPoints) * 1.5) - } - - @State private var firstDisplay: Bool = true + @State private var didCellAppear: Bool = false public init( value: Double, index: Int = 0, - width: Float, - numberOfDataPoints: Int, gradientColor: ColorGradient, touchLocation: CGFloat) { self.value = value self.index = index - self.width = width - self.numberOfDataPoints = numberOfDataPoints self.gradientColor = gradientColor self.touchLocation = touchLocation } @@ -33,20 +23,15 @@ public struct BarChartCell: View { /// /// Animated when first displayed, using the `firstDisplay` variable, with an increasing delay through the data set. public var body: some View { - ZStack { - RoundedRectangle(cornerRadius: 4) - .fill(gradientColor.linearGradient(from: .bottom, to: .top)) - } - .frame(width: CGFloat(self.cellWidth)) - .scaleEffect(CGSize(width: 1, height: self.firstDisplay ? 0.0 : self.value), anchor: .bottom) - .onAppear { - self.firstDisplay = false + BarChartCellShape(value: didCellAppear ? value : 0.0) + .fill(gradientColor.linearGradient(from: .bottom, to: .top)) .onAppear { + self.didCellAppear = true } .onDisappear { - self.firstDisplay = true + self.didCellAppear = false } .transition(.slide) - .animation(Animation.spring().delay(self.touchLocation < 0 || !firstDisplay ? Double(self.index) * 0.04 : 0)) + .animation(Animation.spring().delay(self.touchLocation < 0 || !didCellAppear ? Double(self.index) * 0.04 : 0)) } } @@ -54,17 +39,17 @@ struct BarChartCell_Previews: PreviewProvider { static var previews: some View { Group { Group { - BarChartCell(value: 0, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + BarChartCell(value: 0, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) + BarChartCell(value: 0.5, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + BarChartCell(value: 0.75, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) + BarChartCell(value: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) } Group { - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) - BarChartCell(value: 1, width: 50, numberOfDataPoints: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) + BarChartCell(value: 1, gradientColor: ColorGradient.greenRed, touchLocation: CGFloat()) + BarChartCell(value: 1, gradientColor: ColorGradient.whiteBlack, touchLocation: CGFloat()) + BarChartCell(value: 1, gradientColor: ColorGradient(.purple), touchLocation: CGFloat()) }.environment(\.colorScheme, .dark) } } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift new file mode 100644 index 00000000..5cf99839 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift @@ -0,0 +1,44 @@ +import SwiftUI + +struct BarChartCellShape: Shape, Animatable { + var value: Double + var cornerRadius: CGFloat = 6.0 + var animatableData: CGFloat { + get { CGFloat(value) } + set { value = Double(newValue) } + } + + func path(in rect: CGRect) -> Path { + let adjustedOriginY = rect.height - (rect.height * CGFloat(value)) + var path = Path() + path.move(to: CGPoint(x: 0.0 , y: rect.height)) + path.addLine(to: CGPoint(x: 0.0, y: adjustedOriginY + cornerRadius)) + path.addArc(center: CGPoint(x: cornerRadius, y: adjustedOriginY + cornerRadius), + radius: cornerRadius, + startAngle: Angle(radians: Double.pi), + endAngle: Angle(radians: -Double.pi/2), + clockwise: false) + path.addLine(to: CGPoint(x: rect.width - cornerRadius, y: adjustedOriginY)) + path.addArc(center: CGPoint(x: rect.width - cornerRadius, y: adjustedOriginY + cornerRadius), + radius: cornerRadius, + startAngle: Angle(radians: -Double.pi/2), + endAngle: Angle(radians: 0), + clockwise: false) + path.addLine(to: CGPoint(x: rect.width, y: rect.height)) + path.closeSubpath() + + return path + } +} + +struct BarChartCellShape_Previews: PreviewProvider { + static var previews: some View { + Group { + BarChartCellShape(value: 0.75) + .fill(Color.red) + + BarChartCellShape(value: 0.3) + .fill(Color.blue) + } + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 366a3319..5cfd64b9 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -6,10 +6,6 @@ public struct BarChartRow: View { @ObservedObject var chartData: ChartData @State private var touchLocation: CGFloat = -1.0 - enum Constant { - static let spacing: CGFloat = 16.0 - } - var style: ChartStyle var maxValue: Double { @@ -27,20 +23,18 @@ public struct BarChartRow: View { public var body: some View { GeometryReader { geometry in HStack(alignment: .bottom, - spacing: (geometry.frame(in: .local).width - Constant.spacing) / CGFloat(self.chartData.data.count * 3)) { - ForEach(0.. Double { - return Double(chartData.points[index])/Double(maxValue) - } - /// Size to scale the touch indicator /// - Parameters: /// - touchLocation: fraction of width where touch is happening @@ -87,3 +74,11 @@ public struct BarChartRow: View { return self.chartData.points[index] } } + +struct BarChartRow_Previews: PreviewProvider { + static let chartData = ChartData([6, 2, 5, 8, 6]) + static let chartStyle = ChartStyle(backgroundColor: .white, foregroundColor: .orangeBright) + static var previews: some View { + BarChartRow(chartData: chartData, style: chartStyle) + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 942342de..0e9fa34f 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -3,57 +3,16 @@ import SwiftUI /// A single line of data, a view in a `LineChart` public struct Line: View { @EnvironmentObject var chartValue: ChartValue - @State private var frame: CGRect = .zero @ObservedObject var chartData: ChartData var style: ChartStyle @State private var showIndicator: Bool = false @State private var touchLocation: CGPoint = .zero - @State private var showFull: Bool = false @State private var showBackground: Bool = true - var curvedLines: Bool = true - - /// Step for plotting through data - /// - Returns: X and Y delta between each data point based on data and view's frame - var step: CGPoint { - return CGPoint.getStep(frame: frame, data: chartData.points) - } - - /// Path of line graph - /// - Returns: A path for stroking representing the data, either curved or jagged. - var path: Path { - let points = chartData.points - - if curvedLines { - return Path.quadCurvedPathWithPoints(points: points, - step: step, - globalOffset: nil) - } - - return Path.linePathWithPoints(points: points, step: step) - } - - /// Path of linegraph, but also closed at the bottom side - /// - Returns: A path for filling representing the data, either curved or jagged - var closedPath: Path { - let points = chartData.points - - if curvedLines { - return Path.quadClosedCurvedPathWithPoints(points: points, - step: step, - globalOffset: nil) - } - - return Path.closedLinePathWithPoints(points: points, step: step) - } + @State private var didCellAppear: Bool = false - // see https://stackoverflow.com/a/62370919 - // This lets geometry be recalculated when device rotates. However it doesn't cover issue of app changing - // from full screen to split view. Not possible in SwiftUI? Feedback submitted to apple FB8451194. - let orientationChanged = NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification) - .makeConnectable() - .autoconnect() + var curvedLines: Bool = true /// The content and behavior of the `Line`. /// Draw the background if showing the full line (?) and the `showBackground` option is set. Above that draw the line, and then the data indicator if the graph is currently being touched. @@ -62,34 +21,35 @@ public struct Line: View { public var body: some View { GeometryReader { geometry in ZStack { - if self.showFull && self.showBackground { - self.getBackgroundPathView() - } - self.getLinePathView() - if self.showIndicator { - IndicatorPoint() - .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + if self.didCellAppear && self.showBackground { + LineBackgroundShapeView(chartData: chartData, + geometry: geometry, + style: style) } + LineShapeView(chartData: chartData, + geometry: geometry, + style: style, + trimTo: didCellAppear ? 1.0 : 0.0) + .animation(.easeIn) +// if self.showIndicator { +// IndicatorPoint() +// .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) +// .rotationEffect(.degrees(180), anchor: .center) +// .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) +// } } .onAppear { - self.frame = geometry.frame(in: .local) - + didCellAppear = true + } + .onDisappear() { + didCellAppear = false } - .onReceive(orientationChanged) { _ in - // When we receive notification here, the geometry is still the old value - // so delay evaluation to get the new frame! - DispatchQueue.main.async { - self.frame = geometry.frame(in: .local) // recalculate layout with new frame - } - } .gesture(DragGesture() .onChanged({ value in self.touchLocation = value.location self.showIndicator = true - self.getClosestDataPoint(point: self.getClosestPointOnPath(touchLocation: value.location)) +// self.getClosestDataPoint(point: self.getClosestPointOnPath(touchLocation: value.location)) self.chartValue.interactionInProgress = true }) .onEnded({ value in @@ -104,80 +64,37 @@ public struct Line: View { // MARK: - Private functions -extension Line { - - /// Calculate point closest to where the user touched - /// - Parameter touchLocation: location in view where touched - /// - Returns: `CGPoint` of data point on chart - private func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { - let closest = self.path.point(to: touchLocation.x) - return closest - } +//extension Line { +// /// Calculate point closest to where the user touched +// /// - Parameter touchLocation: location in view where touched +// /// - Returns: `CGPoint` of data point on chart +// private func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { +// let closest = self.path.point(to: touchLocation.x) +// return closest +// } +// +// /// Figure out where closest touch point was +// /// - Parameter point: location of data point on graph, near touch location +// private func getClosestDataPoint(point: CGPoint) { +// let index = Int(round((point.x)/step.x)) +// if (index >= 0 && index < self.chartData.data.count){ +// self.chartValue.currentValue = self.chartData.points[index] +// } +// } +//} - /// Figure out where closest touch point was - /// - Parameter point: location of data point on graph, near touch location - private func getClosestDataPoint(point: CGPoint) { - let index = Int(round((point.x)/step.x)) - if (index >= 0 && index < self.chartData.data.count){ - self.chartValue.currentValue = self.chartData.points[index] - } - } +struct Line_Previews: PreviewProvider { + /// Predefined style, black over white, for preview + static let blackLineStyle = ChartStyle(backgroundColor: ColorGradient(.white), foregroundColor: ColorGradient(.black)) - /// Get the view representing the filled in background below the chart, filled with the foreground color's gradient - /// - /// TODO: explain rotations - /// - Returns: SwiftUI `View` - private func getBackgroundPathView() -> some View { - self.closedPath - .fill(LinearGradient(gradient: Gradient(colors: [ - style.foregroundColor.first?.startColor ?? .white, - style.foregroundColor.first?.endColor ?? .white, - .clear]), - startPoint: .bottom, - endPoint: .top)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - .opacity(0.2) - .transition(.opacity) - .animation(.easeIn(duration: 1.6)) - } + /// Predefined style red over white, for preview + static let redLineStyle = ChartStyle(backgroundColor: .whiteBlack, foregroundColor: ColorGradient(.red)) - /// Get the view representing the line stroked in the `foregroundColor` - /// - /// TODO: Explain how `showFull` works - /// TODO: explain rotations - /// - Returns: SwiftUI `View` - private func getLinePathView() -> some View { - self.path - .trim(from: 0, to: self.showFull ? 1:0) - .stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, - startPoint: .leading, - endPoint: .trailing), - style: StrokeStyle(lineWidth: 3, lineJoin: .round)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - .animation(Animation.easeOut(duration: 1.2)) - .onAppear { - self.showFull = true - } - .onDisappear { - self.showFull = false - } - .drawingGroup() - } -} - -struct Line_Previews: PreviewProvider { static var previews: some View { Group { - Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: blackLineStyle) + Line(chartData: ChartData([8, 23, 32, 7, 23, -4]), style: blackLineStyle) Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: redLineStyle) } } } -/// Predefined style, black over white, for preview -private let blackLineStyle = ChartStyle(backgroundColor: ColorGradient(.white), foregroundColor: ColorGradient(.black)) - -/// Predefined stylem red over white, for preview -private let redLineStyle = ChartStyle(backgroundColor: .whiteBlack, foregroundColor: ColorGradient(.red)) diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift new file mode 100644 index 00000000..06b02811 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift @@ -0,0 +1,31 @@ +import SwiftUI + +struct LineBackgroundShape: Shape { + var data: [Double] + func path(in rect: CGRect) -> Path { + let path = Path.quadClosedCurvedPathWithPoints(points: data, step: CGPoint(x: 1.0, y: 1.0)) + return path + } +} + +struct LineBackgroundShape_Previews: PreviewProvider { + static var previews: some View { + Group { + GeometryReader { geometry in + LineBackgroundShape(data: [0, 0.5, 0.8, 0.6, 1]) + .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height)) + .fill(Color.red) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } + GeometryReader { geometry in + LineBackgroundShape(data: [0, -0.5, 0.8, -0.6, 1]) + .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height / 1.6)) + .fill(Color.blue) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } + } + } +} + diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift new file mode 100644 index 00000000..25ba8214 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift @@ -0,0 +1,19 @@ +import SwiftUI + +struct LineBackgroundShapeView: View { + var chartData: ChartData + var geometry: GeometryProxy + var style: ChartStyle + + var body: some View { + LineBackgroundShape(data: chartData.normalisedPoints) + .transform(CGAffineTransform(scaleX: geometry.size.width / CGFloat(chartData.normalisedPoints.count - 1), + y: geometry.size.height / CGFloat(chartData.normalisedRange))) + .fill(LinearGradient(gradient: Gradient(colors: [style.foregroundColor.first?.startColor ?? .white, + style.backgroundColor.startColor]), + startPoint: .bottom, + endPoint: .top)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift new file mode 100644 index 00000000..64fff658 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift @@ -0,0 +1,30 @@ +import SwiftUI + +struct LineShape: Shape { + var data: [Double] + func path(in rect: CGRect) -> Path { + let path = Path.quadCurvedPathWithPoints(points: data, step: CGPoint(x: 1.0, y: 1.0)) + return path + } +} + +struct LineShape_Previews: PreviewProvider { + static var previews: some View { + Group { + GeometryReader { geometry in + LineShape(data: [0, 0.5, 0.8, 0.6, 1]) + .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height)) + .stroke(Color.red) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } + GeometryReader { geometry in + LineShape(data: [0, -0.5, 0.8, -0.6, 1]) + .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height / 1.6)) + .stroke(Color.blue) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } + } + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift new file mode 100644 index 00000000..d7143932 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift @@ -0,0 +1,26 @@ +import SwiftUI + +struct LineShapeView: View, Animatable { + var chartData: ChartData + var geometry: GeometryProxy + var style: ChartStyle + var trimTo: Double = 0 + + var animatableData: CGFloat { + get { CGFloat(trimTo) } + set { trimTo = Double(newValue) } + } + + var body: some View { + LineShape(data: chartData.normalisedPoints) + .trim(from: 0, to: CGFloat(trimTo)) + .transform(CGAffineTransform(scaleX: geometry.size.width / CGFloat(chartData.normalisedPoints.count - 1), + y: geometry.size.height / CGFloat(chartData.normalisedRange))) + .stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, + startPoint: .leading, + endPoint: .trailing), + style: StrokeStyle(lineWidth: 3, lineJoin: .round)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } +} diff --git a/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift index ad77114c..f76c00e2 100644 --- a/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift +++ b/Tests/SwiftUIChartsTests/ArrayExtensionTests.swift @@ -1,10 +1,3 @@ -// -// File.swift -// -// -// Created by Nicolas Savoini on 2020-05-25. -// - @testable import SwiftUICharts import XCTest From caa75ecbc0d68f2b50d714909566406f80214186 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Wed, 11 Aug 2021 22:01:43 +0200 Subject: [PATCH 24/40] feat: add linechart interaction point (#202) * feat: add linechart interaction point * feat: add ability to show current data point on linechart --- .../xcschemes/xcschememanagement.plist | 14 +++++ .../Base/CardView/CardView.swift | 4 +- .../SwiftUICharts/Base/Chart/ChartData.swift | 3 +- .../Base/Extensions/CGPoint+Extension.swift | 6 ++ .../SwiftUICharts/Base/Grid/ChartGrid.swift | 2 +- .../SwiftUICharts/Charts/LineChart/Line.swift | 57 +++++++++++-------- 6 files changed, 59 insertions(+), 27 deletions(-) create mode 100644 .swiftpm/xcode/xcuserdata/samuandras.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.swiftpm/xcode/xcuserdata/samuandras.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/samuandras.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..a0f26bbb --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/samuandras.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + SwiftUICharts.xcscheme_^#shared#^_ + + orderHint + 2 + + + + diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index 9109a2b3..e5d7eb3a 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -26,9 +26,9 @@ public struct CardView: View, ChartBase { if showShadow { RoundedRectangle(cornerRadius: 20) .fill(Color.white) - .shadow(color: Color.gray, radius: 8) + .shadow(color: Color(white: 0.9, opacity: 1), radius: 8) } - VStack { + VStack (alignment: .leading) { self.content() } .clipShape(RoundedRectangle(cornerRadius: showShadow ? 20 : 0)) diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index b598975c..17b79ee8 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -13,7 +13,8 @@ public class ChartData: ObservableObject { } var normalisedPoints: [Double] { - points.map { $0 / (points.max() ?? 1.0) } + let absolutePoints = points.map { abs($0) } + return points.map { $0 / (absolutePoints.max() ?? 1.0) } } var normalisedRange: Double { diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index 363cd2c3..31c401d9 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -38,4 +38,10 @@ extension CGPoint { return CGPoint(x: stepWidth, y: stepHeight) } + + func denormalize(with geometry: GeometryProxy) -> CGPoint { + let width = geometry.frame(in: .local).width + let height = geometry.frame(in: .local).height + return CGPoint(x: self.x * width, y: self.y * height) + } } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index ecaf270b..eb48a98e 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -46,7 +46,7 @@ struct DashedLine: View { var body: some View { GeometryReader { geometry in line(frame: geometry.frame(in: .local)) - .stroke(Color(white: 0.3), style: StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10])) + .stroke(Color(white: 0.85), style: StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10])) } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 0e9fa34f..107367fa 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -13,6 +13,10 @@ public struct Line: View { @State private var didCellAppear: Bool = false var curvedLines: Bool = true + var path: Path { + Path.quadCurvedPathWithPoints(points: chartData.normalisedPoints, + step: CGPoint(x: 1.0, y: 1.0)) + } /// The content and behavior of the `Line`. /// Draw the background if showing the full line (?) and the `showBackground` option is set. Above that draw the line, and then the data indicator if the graph is currently being touched. @@ -31,12 +35,13 @@ public struct Line: View { style: style, trimTo: didCellAppear ? 1.0 : 0.0) .animation(.easeIn) -// if self.showIndicator { -// IndicatorPoint() -// .position(self.getClosestPointOnPath(touchLocation: self.touchLocation)) -// .rotationEffect(.degrees(180), anchor: .center) -// .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) -// } + if self.showIndicator { + IndicatorPoint() + .position(self.getClosestPointOnPath(geometry: geometry, + touchLocation: self.touchLocation)) + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } } .onAppear { didCellAppear = true @@ -49,7 +54,7 @@ public struct Line: View { .onChanged({ value in self.touchLocation = value.location self.showIndicator = true -// self.getClosestDataPoint(point: self.getClosestPointOnPath(touchLocation: value.location)) + self.getClosestDataPoint(geometry: geometry, touchLocation: value.location) self.chartValue.interactionInProgress = true }) .onEnded({ value in @@ -64,24 +69,30 @@ public struct Line: View { // MARK: - Private functions -//extension Line { -// /// Calculate point closest to where the user touched -// /// - Parameter touchLocation: location in view where touched -// /// - Returns: `CGPoint` of data point on chart -// private func getClosestPointOnPath(touchLocation: CGPoint) -> CGPoint { -// let closest = self.path.point(to: touchLocation.x) -// return closest -// } -// +extension Line { + /// Calculate point closest to where the user touched + /// - Parameter touchLocation: location in view where touched + /// - Returns: `CGPoint` of data point on chart + private func getClosestPointOnPath(geometry: GeometryProxy, touchLocation: CGPoint) -> CGPoint { + let geometryWidth = geometry.frame(in: .local).width + let normalisedTouchLocationX = (touchLocation.x / geometryWidth) * CGFloat(chartData.normalisedPoints.count - 1) + let closest = self.path.point(to: normalisedTouchLocationX) + var denormClosest = closest.denormalize(with: geometry) + denormClosest.x = denormClosest.x / CGFloat(chartData.normalisedPoints.count - 1) + denormClosest.y = denormClosest.y / CGFloat(chartData.normalisedRange) + return denormClosest + } + // /// Figure out where closest touch point was // /// - Parameter point: location of data point on graph, near touch location -// private func getClosestDataPoint(point: CGPoint) { -// let index = Int(round((point.x)/step.x)) -// if (index >= 0 && index < self.chartData.data.count){ -// self.chartValue.currentValue = self.chartData.points[index] -// } -// } -//} + private func getClosestDataPoint(geometry: GeometryProxy, touchLocation: CGPoint) { + let geometryWidth = geometry.frame(in: .local).width + let index = Int(round((touchLocation.x / geometryWidth) * CGFloat(chartData.points.count - 1))) + if (index >= 0 && index < self.chartData.data.count){ + self.chartValue.currentValue = self.chartData.points[index] + } + } +} struct Line_Previews: PreviewProvider { /// Predefined style, black over white, for preview From bd29afc4c9eaa93e540b6e93f19447d6d1fca835 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 3 Sep 2022 18:55:59 +0200 Subject: [PATCH 25/40] fix: BarChartCellShape to handle negative numbers correctly (#250) --- .../Charts/BarChart/BarChartCellShape.swift | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift index 5cf99839..268f4229 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCellShape.swift @@ -3,6 +3,7 @@ import SwiftUI struct BarChartCellShape: Shape, Animatable { var value: Double var cornerRadius: CGFloat = 6.0 + var animatableData: CGFloat { get { CGFloat(value) } set { value = Double(newValue) } @@ -16,14 +17,14 @@ struct BarChartCellShape: Shape, Animatable { path.addArc(center: CGPoint(x: cornerRadius, y: adjustedOriginY + cornerRadius), radius: cornerRadius, startAngle: Angle(radians: Double.pi), - endAngle: Angle(radians: -Double.pi/2), - clockwise: false) - path.addLine(to: CGPoint(x: rect.width - cornerRadius, y: adjustedOriginY)) + endAngle: Angle(radians: value < 0 ? Double.pi/2 : -Double.pi/2), + clockwise: value < 0 ? true : false) + path.addLine(to: CGPoint(x: rect.width - cornerRadius, y: value < 0 ? adjustedOriginY + 2 * cornerRadius : adjustedOriginY)) path.addArc(center: CGPoint(x: rect.width - cornerRadius, y: adjustedOriginY + cornerRadius), radius: cornerRadius, - startAngle: Angle(radians: -Double.pi/2), + startAngle: Angle(radians: value < 0 ? Double.pi/2 : -Double.pi/2), endAngle: Angle(radians: 0), - clockwise: false) + clockwise: value < 0 ? true : false) path.addLine(to: CGPoint(x: rect.width, y: rect.height)) path.closeSubpath() @@ -39,6 +40,10 @@ struct BarChartCellShape_Previews: PreviewProvider { BarChartCellShape(value: 0.3) .fill(Color.blue) + + BarChartCellShape(value: -0.3) + .fill(Color.blue) + .offset(x: 0, y: -600) } } } From d7e9802debff03bc7fde8601369a8302bcd5e3bb Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 3 Sep 2022 19:01:01 +0200 Subject: [PATCH 26/40] fix: remove UIColors which caused CI build errors (#251) --- .../SwiftUICharts/Base/Label/ChartLabel.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index 96a86303..fb1a8909 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -39,13 +39,13 @@ public struct ChartLabel: View { private var labelPadding: EdgeInsets { switch labelType { case .title: - return EdgeInsets(top: 16.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + return EdgeInsets(top: 16.0, leading: 0, bottom: 0.0, trailing: 8.0) case .legend: - return EdgeInsets(top: 4.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + return EdgeInsets(top: 4.0, leading: 0, bottom: 0.0, trailing: 8.0) case .subTitle: - return EdgeInsets(top: 8.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + return EdgeInsets(top: 8.0, leading: 0, bottom: 0.0, trailing: 8.0) case .largeTitle: - return EdgeInsets(top: 24.0, leading: 8.0, bottom: 0.0, trailing: 8.0) + return EdgeInsets(top: 24.0, leading: 0, bottom: 0.0, trailing: 8.0) case .custom(_, let padding, _): return padding } @@ -59,13 +59,13 @@ public struct ChartLabel: View { private var labelColor: Color { switch labelType { case .title: - return Color(UIColor.label) + return Color.primary case .legend: - return Color(UIColor.secondaryLabel) + return Color.secondary case .subTitle: - return Color(UIColor.label) + return Color.primary case .largeTitle: - return Color(UIColor.label) + return Color.primary case .custom(_, _, let color): return color } From ebaaf81d1946d2ccbbbaf58ac6bbe92b928f9a66 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Mon, 24 Oct 2022 16:07:51 +0200 Subject: [PATCH 27/40] =?UTF-8?q?feat:=20new=20protocol=20for=20chained=20?= =?UTF-8?q?functions,=20and=20added=20support=20for=20expli=E2=80=A6=20(#2?= =?UTF-8?q?52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: new protocol for chained functions, and added support for explicit Y ranges. X coming as well * feat: add new axis interface (#253) --- .../SwiftUICharts/Base/Axis/AxisLabels.swift | 98 +++++++ .../Axis/Extension/AxisLabels+Extension.swift | 57 ++++ .../Base/Axis/Model/AxisLabelsPosition.swift | 11 + .../Base/Axis/Model/AxisLabelsStyle.swift | 11 + .../Base/Axis/Model/AxisLablesData.swift | 10 + .../SwiftUICharts/Base/Chart/ChartBase.swift | 2 +- .../SwiftUICharts/Base/Chart/ChartData.swift | 55 +++- .../Base/Common/ViewGeometry.swift | 10 + .../Base/Common/ViewPreferenceKey.swift | 15 + .../Base/Common/ViewSizeData.swift | 14 + .../Base/Extensions/Array+Extension.swift | 7 + .../Base/Extensions/ChartBase+Extension.swift | 26 +- .../Base/Extensions/Path+QuadCurve.swift | 256 +++++++----------- .../Base/Extensions/Range+Extension.swift | 7 + .../Base/Extensions/Shape+Extension.swift | 17 ++ .../Base/Extensions/View+Extension.swift | 6 + .../SwiftUICharts/Base/Grid/ChartGrid.swift | 51 +--- .../Base/Grid/ChartGridBaseShape.swift | 18 ++ .../Base/Grid/ChartGridShape.swift | 28 ++ .../Base/Grid/Extension/Grid+Extension.swift | 31 +++ .../Base/Grid/Model/GridOptions.swift | 14 + .../SwiftUICharts/Base/Style/ChartStyle.swift | 20 -- .../Base/Style/ColorGradient.swift | 14 - Sources/SwiftUICharts/Base/Style/Colors.swift | 2 - .../Charts/BarChart/BarChart.swift | 9 +- .../Charts/BarChart/BarChartCell.swift | 4 - .../Charts/BarChart/BarChartRow.swift | 14 - .../Extension/LineChart+Extension.swift | 24 ++ .../Charts/LineChart/IndicatorPoint.swift | 4 - .../SwiftUICharts/Charts/LineChart/Line.swift | 64 +++-- .../LineChart/LineBackgroundShape.swift | 16 +- .../LineChart/LineBackgroundShapeView.swift | 13 +- .../Charts/LineChart/LineChart.swift | 13 +- .../Charts/LineChart/LineShape.swift | 32 +-- .../Charts/LineChart/LineShapeView.swift | 77 +++++- .../Charts/LineChart/MarkerShape.swift | 23 ++ .../LineChart/Model/LineChartProperties.swift | 13 + .../Charts/LineChart/Model/LineStyle.swift | 6 + .../Charts/PieChart/PieChart.swift | 5 +- .../Charts/RingsChart/RingsChart.swift | 12 +- 40 files changed, 730 insertions(+), 379 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Axis/AxisLabels.swift create mode 100644 Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsPosition.swift create mode 100644 Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift create mode 100644 Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift create mode 100644 Sources/SwiftUICharts/Base/Common/ViewGeometry.swift create mode 100644 Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift create mode 100644 Sources/SwiftUICharts/Base/Common/ViewSizeData.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/Range+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Extensions/Shape+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift create mode 100644 Sources/SwiftUICharts/Base/Grid/ChartGridShape.swift create mode 100644 Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/MarkerShape.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift create mode 100644 Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift diff --git a/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift b/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift new file mode 100644 index 00000000..0efaa897 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift @@ -0,0 +1,98 @@ +import SwiftUI + +public struct AxisLabels: View { + struct YAxisViewKey: ViewPreferenceKey { } + struct ChartViewKey: ViewPreferenceKey { } + + var axisLabelsData = AxisLabelsData() + var axisLabelsStyle = AxisLabelsStyle() + + @State private var yAxisWidth: CGFloat = 25 + @State private var chartWidth: CGFloat = 0 + @State private var chartHeight: CGFloat = 0 + + let content: () -> Content + + public init(@ViewBuilder content: @escaping () -> Content) { + self.content = content + } + + var yAxis: some View { + VStack(spacing: 0.0) { + ForEach(Array(axisLabelsData.axisYLabels.reversed().enumerated()), id: \.element) { index, axisYData in + Text(axisYData) + .font(axisLabelsStyle.axisFont) + .foregroundColor(axisLabelsStyle.axisFontColor) + .frame(height: getYHeight(index: index, + chartHeight: chartHeight, + count: axisLabelsData.axisYLabels.count), + alignment: getYAlignment(index: index, count: axisLabelsData.axisYLabels.count)) + } + } + .padding([.leading, .trailing], 4.0) + .background(ViewGeometry()) + .onPreferenceChange(YAxisViewKey.self) { value in + yAxisWidth = value.first?.size.width ?? 0.0 + } + } + + func xAxis(chartWidth: CGFloat) -> some View { + HStack(spacing: 0.0) { + ForEach(Array(axisLabelsData.axisXLabels.enumerated()), id: \.element) { index, axisXData in + Text(axisXData) + .font(axisLabelsStyle.axisFont) + .foregroundColor(axisLabelsStyle.axisFontColor) + .frame(width: chartWidth / CGFloat(axisLabelsData.axisXLabels.count - 1)) + } + } + .frame(height: 24.0, alignment: .top) + } + + var chart: some View { + self.content() + .background(ViewGeometry()) + .onPreferenceChange(ChartViewKey.self) { value in + chartWidth = value.first?.size.width ?? 0.0 + chartHeight = value.first?.size.height ?? 0.0 + } + } + + public var body: some View { + VStack(spacing: 0.0) { + HStack { + if axisLabelsStyle.axisLabelsYPosition == .leading { + yAxis + } else { + Spacer(minLength: yAxisWidth) + } + chart + if axisLabelsStyle.axisLabelsYPosition == .leading { + Spacer(minLength: yAxisWidth) + } else { + yAxis + } + } + xAxis(chartWidth: chartWidth) + } + } + + private func getYHeight(index: Int, chartHeight: CGFloat, count: Int) -> CGFloat { + if index == 0 || index == count - 1 { + return chartHeight / (CGFloat(count - 1) * 2) + 10 + } + + return chartHeight / CGFloat(count - 1) + } + + private func getYAlignment(index: Int, count: Int) -> Alignment { + if index == 0 { + return .top + } + + if index == count - 1 { + return .bottom + } + + return .center + } +} diff --git a/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift b/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift new file mode 100644 index 00000000..7698ac4e --- /dev/null +++ b/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift @@ -0,0 +1,57 @@ +import SwiftUI + +extension AxisLabels { + public func setAxisYLabels(_ labels: [String], + position: AxisLabelsYPosition = .leading) -> AxisLabels { + self.axisLabelsData.axisYLabels = labels + self.axisLabelsStyle.axisLabelsYPosition = position + return self + } + + public func setAxisXLabels(_ labels: [String]) -> AxisLabels { + self.axisLabelsData.axisXLabels = labels + return self + } + + public func setAxisYLabels(_ labels: [(Double, String)], + range: ClosedRange, + position: AxisLabelsYPosition = .leading) -> AxisLabels { + let overreach = range.overreach + 1 + var labelArray = [String](repeating: "", count: overreach) + labels.forEach { + let index = Int($0.0) - range.lowerBound + if labelArray[safe: index] != nil { + labelArray[index] = $0.1 + } + } + + self.axisLabelsData.axisYLabels = labelArray + self.axisLabelsStyle.axisLabelsYPosition = position + + return self + } + + public func setAxisXLabels(_ labels: [(Double, String)], range: ClosedRange) -> AxisLabels { + let overreach = range.overreach + 1 + var labelArray = [String](repeating: "", count: overreach) + labels.forEach { + let index = Int($0.0) - range.lowerBound + if labelArray[safe: index] != nil { + labelArray[index] = $0.1 + } + } + + self.axisLabelsData.axisXLabels = labelArray + return self + } + + public func setColor(_ color: Color) -> AxisLabels { + self.axisLabelsStyle.axisFontColor = color + return self + } + + public func setFont(_ font: Font) -> AxisLabels { + self.axisLabelsStyle.axisFont = font + return self + } +} diff --git a/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsPosition.swift b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsPosition.swift new file mode 100644 index 00000000..66735d7b --- /dev/null +++ b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsPosition.swift @@ -0,0 +1,11 @@ +import Foundation + +public enum AxisLabelsYPosition { + case leading + case trailing +} + +public enum AxisLabelsXPosition { + case top + case bottom +} diff --git a/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift new file mode 100644 index 00000000..58221426 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift @@ -0,0 +1,11 @@ +import SwiftUI + +public final class AxisLabelsStyle: ObservableObject { + @Published public var axisFont: Font = .callout + @Published public var axisFontColor: Color = .primary + @Published var axisLabelsYPosition: AxisLabelsYPosition = .leading + @Published var axisLabelsXPosition: AxisLabelsXPosition = .bottom + public init() { + // no-op + } +} diff --git a/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift b/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift new file mode 100644 index 00000000..f28f35ac --- /dev/null +++ b/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift @@ -0,0 +1,10 @@ +import SwiftUI + +public final class AxisLabelsData: ObservableObject { + @Published public var axisYLabels: [String] = [] + @Published public var axisXLabels: [String] = [] + + public init() { + // no-op + } +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift index 9cf00102..f1876dcb 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift @@ -1,6 +1,6 @@ import SwiftUI /// Protocol for any type of chart, to get access to underlying data -public protocol ChartBase { +public protocol ChartBase: View { var chartData: ChartData { get } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index 17b79ee8..f1eeec36 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -2,37 +2,70 @@ import SwiftUI /// An observable wrapper for an array of data for use in any chart public class ChartData: ObservableObject { - @Published public var data: [(String, Double)] = [] + @Published public var data: [(Double, Double)] = [] + public var rangeY: ClosedRange? + public var rangeX: ClosedRange? var points: [Double] { - data.map { $0.1 } + data.filter { rangeX?.contains($0.0) ?? true }.map { $0.1 } } - var values: [String] { - data.map { $0.0 } + var values: [Double] { + data.filter { rangeX?.contains($0.0) ?? true }.map { $0.0 } } var normalisedPoints: [Double] { let absolutePoints = points.map { abs($0) } - return points.map { $0 / (absolutePoints.max() ?? 1.0) } + var maxPoint = absolutePoints.max() + if let rangeY = rangeY { + maxPoint = Double(rangeY.overreach) + return points.map { ($0 - rangeY.lowerBound) / (maxPoint ?? 1.0) } + } + + return points.map { $0 / (maxPoint ?? 1.0) } } - var normalisedRange: Double { - (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) + var normalisedValues: [Double] { + let absoluteValues = values.map { abs($0) } + var maxValue = absoluteValues.max() + if let rangeX = rangeX { + maxValue = Double(rangeX.overreach) + return values.map { ($0 - rangeX.lowerBound) / (maxValue ?? 1.0) } + } + + return values.map { $0 / (maxValue ?? 1.0) } + } + + var normalisedData: [(Double, Double)] { + Array(zip(normalisedValues, normalisedPoints)) + } + + var normalisedYRange: Double { + return rangeY == nil ? (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) : 1 + } + + var normalisedXRange: Double { + return rangeX == nil ? (normalisedValues.max() ?? 0.0) - (normalisedValues.min() ?? 0.0) : 1 } var isInNegativeDomain: Bool { - (points.min() ?? 0.0) < 0 + if let rangeY = rangeY { + return rangeY.lowerBound < 0 + } + + return (points.min() ?? 0.0) < 0 } /// Initialize with data array /// - Parameter data: Array of `Double` - public init(_ data: [Double]) { - self.data = data.map { ("", $0) } + public init(_ data: [Double], rangeY: ClosedRange? = nil) { + self.data = data.enumerated().map{ (index, value) in (Double(index), value) } + self.rangeY = rangeY } - public init(_ data: [(String, Double)]) { + public init(_ data: [(Double, Double)], rangeY: ClosedRange? = nil) { self.data = data + self.rangeY = rangeY } public init() { diff --git a/Sources/SwiftUICharts/Base/Common/ViewGeometry.swift b/Sources/SwiftUICharts/Base/Common/ViewGeometry.swift new file mode 100644 index 00000000..ea8357f1 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Common/ViewGeometry.swift @@ -0,0 +1,10 @@ +import SwiftUI + +public struct ViewGeometry: View where T: PreferenceKey { + public var body: some View { + GeometryReader { geometry in + Color.clear + .preference(key: T.self, value: [ViewSizeData(size: geometry.size)] as! T.Value) + } + } +} diff --git a/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift b/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift new file mode 100644 index 00000000..d3c4c1f1 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift @@ -0,0 +1,15 @@ +import SwiftUI + +public protocol ViewPreferenceKey: PreferenceKey { + typealias Value = [ViewSizeData] +} + +public extension ViewPreferenceKey { + static var defaultValue: [ViewSizeData] { + [] + } + + static func reduce(value: inout [ViewSizeData], nextValue: () -> [ViewSizeData]) { + value.append(contentsOf: nextValue()) + } +} diff --git a/Sources/SwiftUICharts/Base/Common/ViewSizeData.swift b/Sources/SwiftUICharts/Base/Common/ViewSizeData.swift new file mode 100644 index 00000000..9a53cec3 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Common/ViewSizeData.swift @@ -0,0 +1,14 @@ +import SwiftUI + +public struct ViewSizeData: Identifiable, Equatable, Hashable { + public let id: UUID = UUID() + public let size: CGSize + + public static func == (lhs: Self, rhs: Self) -> Bool { + return lhs.id == rhs.id + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift index 874430ca..1e4bedd7 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Array+Extension.swift @@ -17,3 +17,10 @@ extension Array where Element == ColorGradient { return self[index] } } + +extension Collection { + /// Returns the element at the specified index if it is within bounds, otherwise nil. + subscript (safe index: Index) -> Element? { + return indices.contains(index) ? self[index] : nil + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift index 73873d78..96ec022a 100644 --- a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift @@ -1,21 +1,23 @@ import SwiftUI -extension View where Self: ChartBase { - - /// Set data for a chart - /// - Parameter data: array of `Double` - /// - Returns: modified `View` with data attached - public func data(_ data: [Double]) -> some View { - chartData.data = data.map { ("", $0) } +extension ChartBase { + public func data(_ data: [Double]) -> some ChartBase { + chartData.data = data.enumerated().map{ (index, value) in (Double(index), value) } return self - .environmentObject(chartData) - .environmentObject(ChartValue()) } - public func data(_ data: [(String, Double)]) -> some View { + public func data(_ data: [(Double, Double)]) -> some ChartBase { chartData.data = data return self - .environmentObject(chartData) - .environmentObject(ChartValue()) + } + + public func rangeY(_ range: ClosedRange) -> some ChartBase{ + chartData.rangeY = range + return self + } + + public func rangeX(_ range: ClosedRange) -> some ChartBase{ + chartData.rangeX = range + return self } } diff --git a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift index 1da24afc..8085fd0c 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift @@ -1,47 +1,31 @@ import SwiftUI extension Path { - - /// Returns a tiny segment of path based on percentage along the path - /// - /// TODO: Explain why more than 1 gets 0 and why less than 0 gets 1 - /// - Parameter percent: fraction along data set, between 0.0 and 1.0 (underflow and overflow are handled) - /// - Returns: tiny path right around the requested fraction func trimmedPath(for percent: CGFloat) -> Path { let boundsDistance: CGFloat = 0.001 let completion: CGFloat = 1 - boundsDistance let pct = percent > 1 ? 0 : (percent < 0 ? 1 : percent) - // Start/end points centered around given percentage, but capped if right at the very end + // Start/end points centered around given percentage, but capped if right at the very end let start = pct > completion ? completion : pct - boundsDistance let end = pct > completion ? 1 : pct + boundsDistance return trimmedPath(from: start, to: end) } - /// Find the `CGPoint` for the given fraction along the path. - /// - /// This works by requesting a very tiny trimmed section of the path, then getting the center of the bounds rectangle - /// - Parameter percent: fraction along data set, between 0.0 and 1.0 (underflow and overflow are handled) - /// - Returns: a `CGPoint` representing the location of that section of the path func point(for percent: CGFloat) -> CGPoint { let path = trimmedPath(for: percent) return CGPoint(x: path.boundingRect.midX, y: path.boundingRect.midY) } - /// <#Description#> - /// - Parameter maxX: <#maxX description#> - /// - Returns: <#description#> func point(to maxX: CGFloat) -> CGPoint { let total = length let sub = length(to: maxX) let percent = sub / total return point(for: percent) } - - /// <#Description#> - /// - Returns: <#description#> - var length: CGFloat { + + var length: CGFloat { var ret: CGFloat = 0.0 var start: CGPoint? var point = CGPoint.zero @@ -73,9 +57,6 @@ extension Path { return ret } - /// <#Description#> - /// - Parameter maxX: <#maxX description#> - /// - Returns: <#description#> func length(to maxX: CGFloat) -> CGFloat { var ret: CGFloat = 0.0 var start: CGPoint? @@ -127,19 +108,13 @@ extension Path { return ret } - /// <#Description#> - /// - Parameters: - /// - points: <#points description#> - /// - step: <#step description#> - /// - globalOffset: <#globalOffset description#> - /// - Returns: <#description#> static func quadCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { var path = Path() if points.count < 2 { return path } let offset = globalOffset ?? points.min()! -// guard let offset = points.min() else { return path } + // guard let offset = points.min() else { return path } var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) path.move(to: point1) for pointIndex in 1.. - /// - Parameters: - /// - points: <#points description#> - /// - step: <#step description#> - /// - globalOffset: <#globalOffset description#> - /// - Returns: <#description#> - static func quadClosedCurvedPathWithPoints(points: [Double], step: CGPoint, globalOffset: Double? = nil) -> Path { + static func quadCurvedPathWithPoints(data: [(Double, Double)], in rect: CGRect) -> Path { var path = Path() - if points.count < 2 { + if data.count < 2 { return path } - let offset = globalOffset ?? points.min()! -// guard let offset = points.min() else { return path } - path.move(to: .zero) - var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + let convertedXValues = data.map { CGFloat($0.0) * rect.width } + let convertedYPoints = data.map { CGFloat($0.1) * rect.height } + + var point1 = CGPoint(x: convertedXValues[0], y: convertedYPoints[0]) + path.move(to: point1) + for pointIndex in 1.. Path { + var path = Path() + let filteredData = data.filter { $0.1 <= 1 && $0.1 >= 0 } + + if filteredData.count < 1 { + return path + } + + let convertedXValues = filteredData.map { CGFloat($0.0) * rect.width } + let convertedYPoints = filteredData.map { CGFloat($0.1) * rect.height } + + let markerSize = CGSize(width: 8, height: 8) + for pointIndex in 0.. Path { + var path = Path() + + for index in 0.. Path { + var path = Path() + if data.count < 2 { + return path + } + + let convertedXValues = data.map { CGFloat($0.0) * rect.width } + let convertedYPoints = data.map { CGFloat($0.1) * rect.height } + + path.move(to: CGPoint(x: convertedXValues[0], y: 0)) + var point1 = CGPoint(x: convertedXValues[0], y: convertedYPoints[0]) path.addLine(to: point1) - for pointIndex in 1.. - /// - Parameters: - /// - points: <#points description#> - /// - step: <#step description#> - /// - Returns: <#description#> - static func linePathWithPoints(points: [Double], step: CGPoint) -> Path { + static func linePathWithPoints(data: [(Double, Double)], in rect: CGRect) -> Path { var path = Path() - if points.count < 2 { + if data.count < 2 { return path } - guard let offset = points.min() else { - return path - } - let point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) + + let convertedXValues = data.map { CGFloat($0.0) * rect.width } + let convertedYPoints = data.map { CGFloat($0.1) * rect.height } + + let point1 = CGPoint(x: convertedXValues[0], y: convertedYPoints[0]) path.move(to: point1) - for pointIndex in 1.. - /// - Parameters: - /// - points: <#points description#> - /// - step: <#step description#> - /// - Returns: <#description#> - static func closedLinePathWithPoints(points: [Double], step: CGPoint) -> Path { + static func closedLinePathWithPoints(data: [(Double, Double)], in rect: CGRect) -> Path { var path = Path() - if points.count < 2 { - return path - } - guard let offset = points.min() else { + if data.count < 2 { return path } - var point1 = CGPoint(x: 0, y: CGFloat(points[0]-offset)*step.y) - path.move(to: point1) - for pointIndex in 1.. - /// - Parameters: - /// - to: <#to description#> - /// - x: <#x description#> - /// - Returns: <#description#> func point(to: CGPoint, x: CGFloat) -> CGPoint { let a = (to.y - self.y) / (to.x - self.x) let y = self.y + (x - self.x) * a return CGPoint(x: x, y: y) } - /// <#Description#> - /// - Parameter to: <#to description#> - /// - Returns: <#description#> func line(to: CGPoint) -> CGFloat { dist(to: to) } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - x: <#x description#> - /// - Returns: <#description#> func line(to: CGPoint, x: CGFloat) -> CGFloat { dist(to: point(to: to, x: x)) } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - control: <#control description#> - /// - Returns: <#description#> func quadCurve(to: CGPoint, control: CGPoint) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -278,12 +289,6 @@ extension CGPoint { return dist } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - control: <#control description#> - /// - x: <#x description#> - /// - Returns: <#description#> func quadCurve(to: CGPoint, control: CGPoint, x: CGFloat) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -309,12 +314,6 @@ extension CGPoint { return dist } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - t: <#t description#> - /// - control: <#control description#> - /// - Returns: <#description#> func point(to: CGPoint, t: CGFloat, control: CGPoint) -> CGPoint { let x = CGPoint.value(x: self.x, y: to.x, t: t, c: control.x) let y = CGPoint.value(x: self.y, y: to.y, t: t, c: control.y) @@ -322,12 +321,6 @@ extension CGPoint { return CGPoint(x: x, y: y) } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - control1: <#control1 description#> - /// - control2: <#control2 description#> - /// - Returns: <#description#> func curve(to: CGPoint, control1: CGPoint, control2: CGPoint) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -345,13 +338,6 @@ extension CGPoint { return dist } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - control1: <#control1 description#> - /// - control2: <#control2 description#> - /// - x: <#x description#> - /// - Returns: <#description#> func curve(to: CGPoint, control1: CGPoint, control2: CGPoint, x: CGFloat) -> CGFloat { var dist: CGFloat = 0 let steps: CGFloat = 100 @@ -379,13 +365,6 @@ extension CGPoint { return dist } - /// <#Description#> - /// - Parameters: - /// - to: <#to description#> - /// - t: <#t description#> - /// - control1: <#control1 description#> - /// - control2: <#control2 description#> - /// - Returns: <#description#> func point(to: CGPoint, t: CGFloat, control1: CGPoint, control2: CGPoint) -> CGPoint { let x = CGPoint.value(x: self.x, y: to.x, t: t, control1: control1.x, control2: control2.x) let y = CGPoint.value(x: self.y, y: to.y, t: t, control1: control1.y, control2: control2.x) @@ -393,13 +372,6 @@ extension CGPoint { return CGPoint(x: x, y: y) } - /// <#Description#> - /// - Parameters: - /// - x: <#x description#> - /// - y: <#y description#> - /// - t: <#t description#> - /// - c: <#c description#> - /// - Returns: <#description#> static func value(x: CGFloat, y: CGFloat, t: CGFloat, c: CGFloat) -> CGFloat { var value: CGFloat = 0.0 // (1-t)^2 * p0 + 2 * (1-t) * t * c1 + t^2 * p1 @@ -409,14 +381,6 @@ extension CGPoint { return value } - /// <#Description#> - /// - Parameters: - /// - x: <#x description#> - /// - y: <#y description#> - /// - t: <#t description#> - /// - control1: <#control1 description#> - /// - control2: <#control2 description#> - /// - Returns: <#description#> static func value(x: CGFloat, y: CGFloat, t: CGFloat, control1: CGFloat, control2: CGFloat) -> CGFloat { var value: CGFloat = 0.0 // (1-t)^3 * p0 + 3 * (1-t)^2 * t * c1 + 3 * (1-t) * t^2 * c2 + t^3 * p1 @@ -427,11 +391,6 @@ extension CGPoint { return value } - /// <#Description#> - /// - Parameters: - /// - point1: <#point1 description#> - /// - point2: <#point2 description#> - /// - Returns: <#description#> static func getMidPoint(point1: CGPoint, point2: CGPoint) -> CGPoint { return CGPoint( x: point1.x + (point2.x - point1.x) / 2, @@ -439,29 +398,16 @@ extension CGPoint { ) } - /// <#Description#> - /// - Parameter to: <#to description#> - /// - Returns: <#description#> func dist(to: CGPoint) -> CGFloat { return sqrt((pow(self.x - to.x, 2) + pow(self.y - to.y, 2))) } - /// <#Description#> - /// - Parameters: - /// - firstPoint: <#firstPoint description#> - /// - secondPoint: <#secondPoint description#> - /// - Returns: <#description#> static func midPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { return CGPoint( x: (firstPoint.x + secondPoint.x) / 2, y: (firstPoint.y + secondPoint.y) / 2) } - /// <#Description#> - /// - Parameters: - /// - firstPoint: <#firstPoint description#> - /// - secondPoint: <#secondPoint description#> - /// - Returns: <#description#> static func controlPointForPoints(firstPoint: CGPoint, secondPoint: CGPoint) -> CGPoint { var controlPoint = CGPoint.midPointForPoints(firstPoint: firstPoint, secondPoint: secondPoint) let diffY = abs(secondPoint.y - controlPoint.y) diff --git a/Sources/SwiftUICharts/Base/Extensions/Range+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Range+Extension.swift new file mode 100644 index 00000000..547a0435 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/Range+Extension.swift @@ -0,0 +1,7 @@ +import Foundation + +public extension ClosedRange where Bound: AdditiveArithmetic { + var overreach: Bound { + self.upperBound - self.lowerBound + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/Shape+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/Shape+Extension.swift new file mode 100644 index 00000000..5624e0db --- /dev/null +++ b/Sources/SwiftUICharts/Base/Extensions/Shape+Extension.swift @@ -0,0 +1,17 @@ +import SwiftUI + +extension Shape { + func fill(_ fillStyle: Fill, strokeBorder strokeStyle: Stroke, lineWidth: Double = 1) -> some View { + self + .stroke(strokeStyle, lineWidth: lineWidth) + .background(self.fill(fillStyle)) + } +} + +extension InsettableShape { + func fill(_ fillStyle: Fill, strokeBorder strokeStyle: Stroke, lineWidth: Double = 1) -> some View { + self + .strokeBorder(strokeStyle, lineWidth: lineWidth) + .background(self.fill(fillStyle)) + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift index 2ddcea31..1edeb22e 100644 --- a/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/View+Extension.swift @@ -8,4 +8,10 @@ extension View { public func chartStyle(_ style: ChartStyle) -> some View { self.environmentObject(style) } + + public func toStandardCoordinateSystem() -> some View { + self + .rotationEffect(.degrees(180), anchor: .center) + .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + } } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index eb48a98e..ba8bfe8d 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -1,53 +1,24 @@ import SwiftUI -public struct ChartGrid: View, ChartBase { - public var chartData = ChartData() +public struct ChartGrid: View { let content: () -> Content - let numberOfHorizontalLines = 4 - - @EnvironmentObject var data: ChartData - @EnvironmentObject var style: ChartStyle + public var gridOptions = GridOptions() public init(@ViewBuilder content: @escaping () -> Content) { self.content = content } public var body: some View { - HStack { - ZStack { - VStack { - ForEach(0.. Path { - let baseLine: CGFloat = CGFloat(frame.height / 2) - var hLine = Path() - hLine.move(to: CGPoint(x:0, y: baseLine)) - hLine.addLine(to: CGPoint(x: frame.width, y: baseLine)) - return hLine - } - - var body: some View { - GeometryReader { geometry in - line(frame: geometry.frame(in: .local)) - .stroke(Color(white: 0.85), style: StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10])) - } - } -} - diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift b/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift new file mode 100644 index 00000000..6b9bd68c --- /dev/null +++ b/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift @@ -0,0 +1,18 @@ +import SwiftUI + +struct ChartGridBaseShape: Shape { + func path(in rect: CGRect) -> Path { + var path = Path() + path.move(to: CGPoint(x: 0, y: 0)) + path.addLine(to: CGPoint(x: rect.width, y: 0)) + return path + } +} + +struct ChartGridBaseShape_Previews: PreviewProvider { + static var previews: some View { + ChartGridBaseShape() + .stroke() + .rotationEffect(.degrees(180), anchor: .center) + } +} diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGridShape.swift b/Sources/SwiftUICharts/Base/Grid/ChartGridShape.swift new file mode 100644 index 00000000..ccb6e18b --- /dev/null +++ b/Sources/SwiftUICharts/Base/Grid/ChartGridShape.swift @@ -0,0 +1,28 @@ +import SwiftUI + +struct ChartGridShape: Shape { + var numberOfHorizontalLines: Int + var numberOfVerticalLines: Int + + func path(in rect: CGRect) -> Path { + let path = Path.drawGridLines(numberOfHorizontalLines: numberOfHorizontalLines, + numberOfVerticalLines: numberOfVerticalLines, + in: rect) + return path + } +} + +struct ChartGridShape_Previews: PreviewProvider { + static var previews: some View { + Group { + ChartGridShape(numberOfHorizontalLines: 5, numberOfVerticalLines: 0) + .stroke() + .toStandardCoordinateSystem() + + ChartGridShape(numberOfHorizontalLines: 4, numberOfVerticalLines: 4) + .stroke() + .toStandardCoordinateSystem() + } + .padding() + } +} diff --git a/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift b/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift new file mode 100644 index 00000000..05e15ed8 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift @@ -0,0 +1,31 @@ +import SwiftUI + +extension ChartGrid { + public func setNumberOfHorizontalLines(_ numberOfLines: Int) -> ChartGrid { + self.gridOptions.numberOfHorizontalLines = numberOfLines + return self + } + + public func setNumberOfVerticalLines(_ numberOfLines: Int) -> ChartGrid { + self.gridOptions.numberOfVerticalLines = numberOfLines + return self + } + + public func setStoreStyle(_ strokeStyle: StrokeStyle) -> ChartGrid { + self.gridOptions.strokeStyle = strokeStyle + return self + } + + public func setColor(_ color: Color) -> ChartGrid { + self.gridOptions.color = color + return self + } + + public func showBaseLine(_ show: Bool, with style: StrokeStyle? = nil) -> ChartGrid { + self.gridOptions.showBaseLine = show + if let style = style { + self.gridOptions.baseStrokeStyle = style + } + return self + } +} diff --git a/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift b/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift new file mode 100644 index 00000000..2e107a30 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift @@ -0,0 +1,14 @@ +import SwiftUI + +public final class GridOptions: ObservableObject { + @Published public var numberOfHorizontalLines: Int = 3 + @Published public var numberOfVerticalLines: Int = 3 + @Published public var strokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10]) + @Published public var color: Color = Color(white: 0.85) + @Published public var showBaseLine: Bool = true + @Published public var baseStrokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1.5, lineCap: .round, dash: [5, 0]) + + public init() { + // no-op + } +} diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index dafdaece..5ecc3a44 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -1,44 +1,24 @@ import SwiftUI -/// Descripton of colors/styles for any kind of chart public class ChartStyle: ObservableObject { - - /// colors for background are of chart public let backgroundColor: ColorGradient - /// colors for foreground fill of chart public let foregroundColor: [ColorGradient] - /// Initialize with a single background color and an array of `ColorGradient` for the foreground - /// - Parameters: - /// - backgroundColor: a `Color` - /// - foregroundColor: array of `ColorGradient` public init(backgroundColor: Color, foregroundColor: [ColorGradient]) { self.backgroundColor = ColorGradient.init(backgroundColor) self.foregroundColor = foregroundColor } - /// Initialize with a single background color and a single `ColorGradient` for the foreground - /// - Parameters: - /// - backgroundColor: a `Color` - /// - foregroundColor: a `ColorGradient` public init(backgroundColor: Color, foregroundColor: ColorGradient) { self.backgroundColor = ColorGradient.init(backgroundColor) self.foregroundColor = [foregroundColor] } - /// Initialize with a single background `ColorGradient` and a single `ColorGradient` for the foreground - /// - Parameters: - /// - backgroundColor: a `ColorGradient` - /// - foregroundColor: a `ColorGradient` public init(backgroundColor: ColorGradient, foregroundColor: ColorGradient) { self.backgroundColor = backgroundColor self.foregroundColor = [foregroundColor] } - /// Initialize with a single background `ColorGradient` and an array of `ColorGradient` for the foreground - /// - Parameters: - /// - backgroundColor: a `ColorGradient` - /// - foregroundColor: array of `ColorGradient` public init(backgroundColor: ColorGradient, foregroundColor: [ColorGradient]) { self.backgroundColor = backgroundColor self.foregroundColor = foregroundColor diff --git a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift index 0258d3c1..6625428e 100644 --- a/Sources/SwiftUICharts/Base/Style/ColorGradient.swift +++ b/Sources/SwiftUICharts/Base/Style/ColorGradient.swift @@ -1,39 +1,25 @@ import SwiftUI -/// An encapsulation of a simple gradient between one color and another public struct ColorGradient: Equatable { public let startColor: Color public let endColor: Color - /// Initialize as a solid color - /// - Parameter color: a single `Color` (no gradient effect visible) public init(_ color: Color) { self.startColor = color self.endColor = color } - /// Initialize a color gradient from two specified colors - /// - Parameters: - /// - startColor: starting color - /// - endColor: ending color public init(_ startColor: Color, _ endColor: Color) { self.startColor = startColor self.endColor = endColor } - /// Convert to a `Gradient` object (more complicated than just two colors) - /// - Returns: a `Gradient` between the specified start and end colors public var gradient: Gradient { return Gradient(colors: [startColor, endColor]) } } extension ColorGradient { - /// Convenience method to return a SwiftUI LinearGradient view from the ColorGradient - /// - Parameters: - /// - startPoint: starting point - /// - endPoint: ending point - /// - Returns: a Linear gradient public func linearGradient(from startPoint: UnitPoint, to endPoint: UnitPoint) -> LinearGradient { return LinearGradient(gradient: self.gradient, startPoint: startPoint, endPoint: endPoint) } diff --git a/Sources/SwiftUICharts/Base/Style/Colors.swift b/Sources/SwiftUICharts/Base/Style/Colors.swift index 1590fbcf..a230e901 100644 --- a/Sources/SwiftUICharts/Base/Style/Colors.swift +++ b/Sources/SwiftUICharts/Base/Style/Colors.swift @@ -1,8 +1,6 @@ import SwiftUI -/// Some predefined colors, used for demos, defaults if color is missing, and data indicator point public enum ChartColors { - // Orange public static let orangeBright = Color(hexString: "#FF782C") public static let orangeDark = Color(hexString: "#EC2301") diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index 6ce279f7..5727831c 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -1,17 +1,12 @@ import SwiftUI -/// A type of chart that displays vertical bars for each data point -public struct BarChart: View, ChartBase { +public struct BarChart: ChartBase { public var chartData = ChartData() - @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle - /// The content and behavior of the `BarChart`. - /// - /// public var body: some View { - BarChartRow(chartData: data, style: style) + BarChartRow(chartData: chartData, style: style) } public init() {} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift index e457d3cd..13153557 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartCell.swift @@ -1,6 +1,5 @@ import SwiftUI -/// A single vertical bar in a `BarChart` public struct BarChartCell: View { var value: Double var index: Int = 0 @@ -19,9 +18,6 @@ public struct BarChartCell: View { self.touchLocation = touchLocation } - /// The content and behavior of the `BarChartCell`. - /// - /// Animated when first displayed, using the `firstDisplay` variable, with an increasing delay through the data set. public var body: some View { BarChartCellShape(value: didCellAppear ? value : 0.0) .fill(gradientColor.linearGradient(from: .bottom, to: .top)) .onAppear { diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 5cfd64b9..1115d30b 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,6 +1,5 @@ import SwiftUI -/// A single row of data, a view in a `BarChart` public struct BarChartRow: View { @EnvironmentObject var chartValue: ChartValue @ObservedObject var chartData: ChartData @@ -15,11 +14,6 @@ public struct BarChartRow: View { return max != 0 ? max : 1 } - /// The content and behavior of the `BarChartRow`. - /// - /// Shows each `BarChartCell` in an `HStack`; may be scaled up if it's the one currently being touched. - /// Not using a drawing group for optimizing animation. - /// As touched (dragged) the `touchLocation` is updated and the current value is highlighted. public var body: some View { GeometryReader { geometry in HStack(alignment: .bottom, @@ -52,11 +46,6 @@ public struct BarChartRow: View { } } - /// Size to scale the touch indicator - /// - Parameters: - /// - touchLocation: fraction of width where touch is happening - /// - index: index into data array - /// - Returns: a scale larger than 1.0 if in bounds; 1.0 (unscaled) if not in bounds func getScaleSize(touchLocation: CGFloat, index: Int) -> CGSize { if touchLocation > CGFloat(index)/CGFloat(chartData.data.count) && touchLocation < CGFloat(index+1)/CGFloat(chartData.data.count) { @@ -65,9 +54,6 @@ public struct BarChartRow: View { return CGSize(width: 1, height: 1) } - /// Get data value where touch happened - /// - Parameter width: width of chart - /// - Returns: value as `Double` if chart has data func getCurrentValue(width: CGFloat) -> Double? { guard self.chartData.data.count > 0 else { return nil} let index = max(0,min(self.chartData.data.count-1,Int(floor((self.touchLocation*width)/(width/CGFloat(self.chartData.data.count)))))) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift b/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift new file mode 100644 index 00000000..1b2c30b4 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift @@ -0,0 +1,24 @@ +import SwiftUI + +extension LineChart { + public func setLineWidth(width: CGFloat) -> LineChart { + self.chartProperties.lineWidth = width + return self + } + + public func setBackground(colorGradient: ColorGradient) -> LineChart { + self.chartProperties.backgroundGradient = colorGradient + return self + } + + public func showChartMarks(_ show: Bool, with color: ColorGradient? = nil) -> LineChart { + self.chartProperties.showChartMarks = show + self.chartProperties.customChartMarksColors = color + return self + } + + public func setLineStyle(to style: LineStyle) -> LineChart { + self.chartProperties.lineStyle = style + return self + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift index c0249477..69d8d88c 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/IndicatorPoint.swift @@ -1,10 +1,6 @@ import SwiftUI -/// A dot representing a single data point as user moves finger over line in `LineChart` struct IndicatorPoint: View { - /// The content and behavior of the `IndicatorPoint`. - /// - /// A filled circle with a thick white outline and a shadow public var body: some View { ZStack { Circle() diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 107367fa..ca2b7cfc 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -2,45 +2,48 @@ import SwiftUI /// A single line of data, a view in a `LineChart` public struct Line: View { - @EnvironmentObject var chartValue: ChartValue @ObservedObject var chartData: ChartData + @ObservedObject var chartProperties: LineChartProperties + var curvedLines: Bool = true var style: ChartStyle @State private var showIndicator: Bool = false @State private var touchLocation: CGPoint = .zero - @State private var showBackground: Bool = true @State private var didCellAppear: Bool = false - var curvedLines: Bool = true var path: Path { Path.quadCurvedPathWithPoints(points: chartData.normalisedPoints, step: CGPoint(x: 1.0, y: 1.0)) } + + public init(chartData: ChartData, + style: ChartStyle, + chartProperties: LineChartProperties) { + self.chartData = chartData + self.style = style + self.chartProperties = chartProperties + } - /// The content and behavior of the `Line`. - /// Draw the background if showing the full line (?) and the `showBackground` option is set. Above that draw the line, and then the data indicator if the graph is currently being touched. - /// On appear, set the frame so that the data graph metrics can be calculated. On a drag (touch) gesture, highlight the closest touched data point. - /// TODO: explain rotation public var body: some View { GeometryReader { geometry in ZStack { - if self.didCellAppear && self.showBackground { + if self.didCellAppear, let backgroundColor = chartProperties.backgroundGradient { LineBackgroundShapeView(chartData: chartData, geometry: geometry, - style: style) + backgroundColor: backgroundColor) } LineShapeView(chartData: chartData, + chartProperties: chartProperties, geometry: geometry, style: style, trimTo: didCellAppear ? 1.0 : 0.0) - .animation(.easeIn) + .animation(Animation.easeIn(duration: 0.75)) if self.showIndicator { IndicatorPoint() .position(self.getClosestPointOnPath(geometry: geometry, touchLocation: self.touchLocation)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .toStandardCoordinateSystem() } } .onAppear { @@ -49,20 +52,17 @@ public struct Line: View { .onDisappear() { didCellAppear = false } - - .gesture(DragGesture() - .onChanged({ value in - self.touchLocation = value.location - self.showIndicator = true - self.getClosestDataPoint(geometry: geometry, touchLocation: value.location) - self.chartValue.interactionInProgress = true - }) - .onEnded({ value in - self.touchLocation = .zero - self.showIndicator = false - self.chartValue.interactionInProgress = false - }) - ) +// .gesture(DragGesture() +// .onChanged({ value in +// self.touchLocation = value.location +// self.showIndicator = true +// self.getClosestDataPoint(geometry: geometry, touchLocation: value.location) +// }) +// .onEnded({ value in +// self.touchLocation = .zero +// self.showIndicator = false +// }) +// ) } } } @@ -79,7 +79,7 @@ extension Line { let closest = self.path.point(to: normalisedTouchLocationX) var denormClosest = closest.denormalize(with: geometry) denormClosest.x = denormClosest.x / CGFloat(chartData.normalisedPoints.count - 1) - denormClosest.y = denormClosest.y / CGFloat(chartData.normalisedRange) + denormClosest.y = denormClosest.y / CGFloat(chartData.normalisedYRange) return denormClosest } @@ -89,7 +89,7 @@ extension Line { let geometryWidth = geometry.frame(in: .local).width let index = Int(round((touchLocation.x / geometryWidth) * CGFloat(chartData.points.count - 1))) if (index >= 0 && index < self.chartData.data.count){ - self.chartValue.currentValue = self.chartData.points[index] +// self.chartValue.currentValue = self.chartData.points[index] } } } @@ -103,8 +103,12 @@ struct Line_Previews: PreviewProvider { static var previews: some View { Group { - Line(chartData: ChartData([8, 23, 32, 7, 23, -4]), style: blackLineStyle) - Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: redLineStyle) + Line(chartData: ChartData([8, 23, 32, 7, 23, -4]), + style: blackLineStyle, + chartProperties: LineChartProperties()) + Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), + style: redLineStyle, + chartProperties: LineChartProperties()) } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift index 06b02811..3b57733e 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShape.swift @@ -1,9 +1,9 @@ import SwiftUI struct LineBackgroundShape: Shape { - var data: [Double] + var data: [(Double, Double)] func path(in rect: CGRect) -> Path { - let path = Path.quadClosedCurvedPathWithPoints(points: data, step: CGPoint(x: 1.0, y: 1.0)) + let path = Path.quadClosedCurvedPathWithPoints(data: data, in: rect) return path } } @@ -12,18 +12,14 @@ struct LineBackgroundShape_Previews: PreviewProvider { static var previews: some View { Group { GeometryReader { geometry in - LineBackgroundShape(data: [0, 0.5, 0.8, 0.6, 1]) - .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height)) + LineBackgroundShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)]) .fill(Color.red) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .toStandardCoordinateSystem() } GeometryReader { geometry in - LineBackgroundShape(data: [0, -0.5, 0.8, -0.6, 1]) - .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height / 1.6)) + LineBackgroundShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)]) .fill(Color.blue) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .toStandardCoordinateSystem() } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift index 25ba8214..2a4f45eb 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineBackgroundShapeView.swift @@ -3,17 +3,14 @@ import SwiftUI struct LineBackgroundShapeView: View { var chartData: ChartData var geometry: GeometryProxy - var style: ChartStyle + var backgroundColor: ColorGradient var body: some View { - LineBackgroundShape(data: chartData.normalisedPoints) - .transform(CGAffineTransform(scaleX: geometry.size.width / CGFloat(chartData.normalisedPoints.count - 1), - y: geometry.size.height / CGFloat(chartData.normalisedRange))) - .fill(LinearGradient(gradient: Gradient(colors: [style.foregroundColor.first?.startColor ?? .white, - style.backgroundColor.startColor]), + LineBackgroundShape(data: chartData.normalisedData) + .fill(LinearGradient(gradient: Gradient(colors: [backgroundColor.startColor, + backgroundColor.endColor]), startPoint: .bottom, endPoint: .top)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + .toStandardCoordinateSystem() } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 379fbd37..c069ec0b 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -1,17 +1,14 @@ import SwiftUI -/// A type of chart that displays a line connecting the data points -public struct LineChart: View, ChartBase { +public struct LineChart: ChartBase { public var chartData = ChartData() - - @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle + public var chartProperties = LineChartProperties() - /// The content and behavior of the `LineChart`. - /// - /// public var body: some View { - Line(chartData: data, style: style) + Line(chartData: chartData, + style: style, + chartProperties: chartProperties) } public init() {} diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift index 64fff658..e22be2f4 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShape.swift @@ -1,9 +1,16 @@ import SwiftUI struct LineShape: Shape { - var data: [Double] + var data: [(Double, Double)] + var lineStyle: LineStyle = .curved func path(in rect: CGRect) -> Path { - let path = Path.quadCurvedPathWithPoints(points: data, step: CGPoint(x: 1.0, y: 1.0)) + var path = Path() + switch lineStyle { + case .curved: + path = Path.quadCurvedPathWithPoints(data: data, in: rect) + case .straight: + path = Path.linePathWithPoints(data: data, in: rect) + } return path } } @@ -11,20 +18,13 @@ struct LineShape: Shape { struct LineShape_Previews: PreviewProvider { static var previews: some View { Group { - GeometryReader { geometry in - LineShape(data: [0, 0.5, 0.8, 0.6, 1]) - .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height)) - .stroke(Color.red) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - } - GeometryReader { geometry in - LineShape(data: [0, -0.5, 0.8, -0.6, 1]) - .transform(CGAffineTransform(scaleX: geometry.size.width / 4.0, y: geometry.size.height / 1.6)) - .stroke(Color.blue) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) - } + LineShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)]) + .stroke() + .toStandardCoordinateSystem() + + LineShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)], lineStyle: .straight) + .stroke() + .toStandardCoordinateSystem() } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift index d7143932..308debbc 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift @@ -2,6 +2,8 @@ import SwiftUI struct LineShapeView: View, Animatable { var chartData: ChartData + var chartProperties: LineChartProperties + var geometry: GeometryProxy var style: ChartStyle var trimTo: Double = 0 @@ -11,16 +13,71 @@ struct LineShapeView: View, Animatable { set { trimTo = Double(newValue) } } + var chartMarkColor: LinearGradient { + if let customColor = chartProperties.customChartMarksColors { + return customColor.linearGradient(from: .leading, to: .trailing) + } + + return LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, + startPoint: .leading, + endPoint: .trailing) + } + var body: some View { - LineShape(data: chartData.normalisedPoints) - .trim(from: 0, to: CGFloat(trimTo)) - .transform(CGAffineTransform(scaleX: geometry.size.width / CGFloat(chartData.normalisedPoints.count - 1), - y: geometry.size.height / CGFloat(chartData.normalisedRange))) - .stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, - startPoint: .leading, - endPoint: .trailing), - style: StrokeStyle(lineWidth: 3, lineJoin: .round)) - .rotationEffect(.degrees(180), anchor: .center) - .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) + ZStack { + LineShape(data: chartData.normalisedData, lineStyle: chartProperties.lineStyle) + .trim(from: 0, to: CGFloat(trimTo)) + .stroke(LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient, + startPoint: .leading, + endPoint: .trailing), + style: StrokeStyle(lineWidth: chartProperties.lineWidth, lineJoin: .round)) + .toStandardCoordinateSystem() + .clipped() + if chartProperties.showChartMarks { + MarkerShape(data: chartData.normalisedData) + .trim(from: 0, to: CGFloat(trimTo)) + .fill(.white, + strokeBorder: chartMarkColor, + lineWidth: chartProperties.lineWidth) + .toStandardCoordinateSystem() + } + } } } + +struct LineShapeView_Previews: PreviewProvider { + static let chartData = ChartData([6, 8, 6], rangeY: 6...10) + static let chartDataOutOfRange = ChartData([-1, 8, 6, 12, 3], rangeY: -5...15) + + static let chartDataOutOfRange2 = ChartData([6,6,8,5], rangeY: 5...10) + + static let chartStyle = ChartStyle(backgroundColor: Color.white, + foregroundColor: [ColorGradient(Color.orange, Color.red)]) + static var previews: some View { + Group { + GeometryReader { geometry in + LineShapeView(chartData: chartData, + chartProperties: LineChartProperties(), + geometry: geometry, + style: chartStyle, + trimTo: 1.0) + } + GeometryReader { geometry in + LineShapeView(chartData: chartDataOutOfRange, + chartProperties: LineChartProperties(), + geometry: geometry, + style: chartStyle, + trimTo: 1.0) + } + GeometryReader { geometry in + LineShapeView(chartData: chartDataOutOfRange2, + chartProperties: LineChartProperties(), + geometry: geometry, + style: chartStyle, + trimTo: 1.0) + } + } + } +} + + diff --git a/Sources/SwiftUICharts/Charts/LineChart/MarkerShape.swift b/Sources/SwiftUICharts/Charts/LineChart/MarkerShape.swift new file mode 100644 index 00000000..0207b896 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/MarkerShape.swift @@ -0,0 +1,23 @@ +import SwiftUI + +struct MarkerShape: Shape { + var data: [(Double, Double)] + func path(in rect: CGRect) -> Path { + let path = Path.drawChartMarkers(data: data, in: rect) + return path + } +} + +struct MarkerShape_Previews: PreviewProvider { + static var previews: some View { + Group { + MarkerShape(data: [(0, 0), (0.25, 0.5), (0.5,0.8), (0.75, 0.6), (1, 1)]) + .stroke() + .toStandardCoordinateSystem() + + MarkerShape(data: [(0, -0.5), (0.25, 0.8), (0.5,-0.6), (0.75,0.6), (1, 1)]) + .stroke() + .toStandardCoordinateSystem() + } + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift new file mode 100644 index 00000000..59cc9060 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift @@ -0,0 +1,13 @@ +import SwiftUI + +public class LineChartProperties: ObservableObject { + @Published var lineWidth: CGFloat = 2.0 + @Published var backgroundGradient: ColorGradient? + @Published var showChartMarks: Bool = true + @Published var customChartMarksColors: ColorGradient? + @Published var lineStyle: LineStyle = .curved + + public init() { + // no-op + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift b/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift new file mode 100644 index 00000000..c3c3d4a2 --- /dev/null +++ b/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift @@ -0,0 +1,6 @@ +import Foundation + +public enum LineStyle { + case curved + case straight +} diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index f23d3c96..63e91260 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -1,17 +1,16 @@ import SwiftUI /// A type of chart that displays a slice of "pie" for each data point -public struct PieChart: View, ChartBase { +public struct PieChart: ChartBase { public var chartData = ChartData() - @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle /// The content and behavior of the `PieChart`. /// /// public var body: some View { - PieChartRow(chartData: data, style: style) + PieChartRow(chartData: chartData, style: style) } public init() {} diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift index 1f59a651..a46e0408 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift @@ -1,22 +1,14 @@ -// -// RingsChart.swift -// ChartViewV2Demo -// -// Created by Dan Wood on 8/20/20. -// - import SwiftUI -public struct RingsChart: View, ChartBase { +public struct RingsChart: ChartBase { public var chartData = ChartData() - @EnvironmentObject var data: ChartData @EnvironmentObject var style: ChartStyle // TODO - should put background opacity, ring width & spacing as chart style values public var body: some View { - RingsChartRow(width:10.0, spacing:5.0, chartData: data, style: style) + RingsChartRow(width:10.0, spacing:5.0, chartData: chartData, style: style) } public init() {} From 7fd5b185f867f0bb323e53ad6ce9d9a8bbba0539 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 26 Nov 2022 14:34:45 +0100 Subject: [PATCH 28/40] Feat/new protocol and range (#255) * feat: new protocol for chained functions, and added support for explicit Y ranges. X coming as well * feat: add new axis interface (#253) From 7140b8b6fd7413ccbcf31b748b32233f08314dab Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sat, 26 Nov 2022 14:37:17 +0100 Subject: [PATCH 29/40] feat: add animation toggle interface (#256) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: “Andras <“andras.samu@supercharge.io”> --- .../Extension/LineChart+Extension.swift | 5 +++ .../SwiftUICharts/Charts/LineChart/Line.swift | 42 +++++++++---------- .../LineChart/Model/LineChartProperties.swift | 2 +- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift b/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift index 1b2c30b4..03920e1e 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift @@ -21,4 +21,9 @@ extension LineChart { self.chartProperties.lineStyle = style return self } + + public func withAnimation(_ enabled: Bool) -> LineChart { + self.chartProperties.animationEnabled = enabled + return self + } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index ca2b7cfc..2e2fc214 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -33,18 +33,7 @@ public struct Line: View { geometry: geometry, backgroundColor: backgroundColor) } - LineShapeView(chartData: chartData, - chartProperties: chartProperties, - geometry: geometry, - style: style, - trimTo: didCellAppear ? 1.0 : 0.0) - .animation(Animation.easeIn(duration: 0.75)) - if self.showIndicator { - IndicatorPoint() - .position(self.getClosestPointOnPath(geometry: geometry, - touchLocation: self.touchLocation)) - .toStandardCoordinateSystem() - } + lineShapeView(geometry: geometry) } .onAppear { didCellAppear = true @@ -52,17 +41,24 @@ public struct Line: View { .onDisappear() { didCellAppear = false } -// .gesture(DragGesture() -// .onChanged({ value in -// self.touchLocation = value.location -// self.showIndicator = true -// self.getClosestDataPoint(geometry: geometry, touchLocation: value.location) -// }) -// .onEnded({ value in -// self.touchLocation = .zero -// self.showIndicator = false -// }) -// ) + } + } + + @ViewBuilder + private func lineShapeView(geometry: GeometryProxy) -> some View { + if chartProperties.animationEnabled { + LineShapeView(chartData: chartData, + chartProperties: chartProperties, + geometry: geometry, + style: style, + trimTo: didCellAppear ? 1.0 : 0.0) + .animation(Animation.easeIn(duration: 0.75)) + } else { + LineShapeView(chartData: chartData, + chartProperties: chartProperties, + geometry: geometry, + style: style, + trimTo: 1.0) } } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift index 59cc9060..24893be2 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift @@ -6,7 +6,7 @@ public class LineChartProperties: ObservableObject { @Published var showChartMarks: Bool = true @Published var customChartMarksColors: ColorGradient? @Published var lineStyle: LineStyle = .curved - + @Published var animationEnabled: Bool = true public init() { // no-op } From 0879fb236e4731202087443c95986d571d2c4a52 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 13:06:23 +0100 Subject: [PATCH 30/40] Refactor composable API and unify x-axis alignment --- .github/workflows/swift.yml | 34 ++ CHANGELOG.md | 28 ++ Examples/SwiftUIChartsShowcase/README.md | 18 + .../project.pbxproj | 333 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/SwiftUIChartsShowcase.xcscheme | 87 +++++ .../AppDelegate.swift | 16 + .../SwiftUIChartsShowcaseApp/Info.plist | 51 +++ .../SceneDelegate.swift | 19 + .../ShowcaseHomeView.swift | 321 +++++++++++++++++ Examples/SwiftUIChartsShowcase/project.yml | 31 ++ MIGRATION.md | 111 ++++++ README.md | 236 +++++-------- Resources/barchartcard.png | Bin 0 -> 65497 bytes Resources/barvid2.gif | Bin 0 -> 128234 bytes Resources/chartpic1.png | Bin 0 -> 98722 bytes Resources/chartpic2.png | Bin 0 -> 105517 bytes Resources/chartpic3.png | Bin 0 -> 111879 bytes Resources/chartpic4.png | Bin 0 -> 119310 bytes Resources/chartpic5.png | Bin 0 -> 78258 bytes Resources/chartpic6.png | Bin 0 -> 114202 bytes Resources/chartpic7.png | Bin 0 -> 156899 bytes Resources/linechartcard.png | Bin 0 -> 58319 bytes Resources/linevid2.gif | Bin 0 -> 111415 bytes Resources/piechartcard.png | Bin 0 -> 83773 bytes Resources/pievid2.gif | Bin 0 -> 363233 bytes Resources/ringchart1.png | Bin 0 -> 199339 bytes .../SwiftUICharts/Base/Axis/AxisLabels.swift | 208 +++++++---- .../Axis/Extension/AxisLabels+Extension.swift | 57 --- .../Base/Axis/Model/AxisLabelsStyle.swift | 11 +- .../Base/Axis/Model/AxisLablesData.swift | 10 +- .../Base/CardView/CardView.swift | 20 +- .../SwiftUICharts/Base/Chart/ChartBase.swift | 6 +- .../SwiftUICharts/Base/Chart/ChartData.swift | 47 ++- .../SwiftUICharts/Base/Chart/ChartValue.swift | 12 +- .../Base/Chart/ChartXScale.swift | 64 ++++ .../Base/Common/ViewPreferenceKey.swift | 4 +- .../Base/Config/ChartAxisConfig.swift | 37 ++ .../Base/Config/ChartGridConfig.swift | 24 ++ .../Base/Config/ChartLineConfig.swift | 24 ++ .../Environment/ChartEnvironmentKeys.swift | 89 +++++ .../Environment/ChartPreferenceKeys.swift | 46 +++ .../Base/Extensions/CGPoint+Extension.swift | 37 +- .../Base/Extensions/CGRect+Extension.swift | 16 + .../Base/Extensions/ChartBase+Extension.swift | 23 -- .../Base/Extensions/Path+QuadCurve.swift | 46 ++- .../Base/Extensions/View+Extension.swift | 10 +- .../SwiftUICharts/Base/Grid/ChartGrid.swift | 15 +- .../Base/Grid/ChartGridBaseShape.swift | 1 + .../Base/Grid/Extension/Grid+Extension.swift | 31 -- .../Base/Grid/Model/GridOptions.swift | 14 +- .../SwiftUICharts/Base/Label/ChartLabel.swift | 105 +++--- .../Base/Modifiers/ChartAxisModifiers.swift | 126 +++++++ .../Base/Modifiers/ChartDataModifiers.swift | 51 +++ .../Base/Modifiers/ChartGridModifiers.swift | 59 ++++ .../Modifiers/ChartInteractionModifier.swift | 15 + .../Base/Modifiers/ChartLineModifiers.swift | 85 +++++ .../Base/Modifiers/ChartStyleModifier.swift | 15 + .../SwiftUICharts/Base/Style/ChartStyle.swift | 9 +- .../Charts/BarChart/BarChart.swift | 13 +- .../Charts/BarChart/BarChartRow.swift | 78 ++-- .../Extension/LineChart+Extension.swift | 29 -- .../SwiftUICharts/Charts/LineChart/Line.swift | 61 +--- .../Charts/LineChart/LineChart.swift | 21 +- .../Charts/LineChart/LineShapeView.swift | 14 +- .../LineChart/Model/LineChartProperties.swift | 13 +- .../Charts/LineChart/Model/LineStyle.swift | 2 +- .../Charts/PieChart/PieChart.swift | 17 +- .../Charts/PieChart/PieChartCell.swift | 9 +- .../Charts/PieChart/PieChartHelpers.swift | 6 + .../Charts/PieChart/PieChartRow.swift | 65 ++-- .../Charts/RingsChart/Ring.swift | 8 +- .../Charts/RingsChart/RingsChart.swift | 23 +- .../Charts/RingsChart/RingsChartRow.swift | 219 +++++------- .../CGPointExtensionTests.swift | 10 +- .../ChartXAlignmentTests.swift | 87 +++++ .../ComposableUsageSmokeTests.swift | 108 ++++++ .../DocumentationIntegrityTests.swift | 49 +++ .../MigrationGuideTests.swift | 41 +++ example.md | 163 +++++++++ 80 files changed, 2813 insertions(+), 832 deletions(-) create mode 100644 .github/workflows/swift.yml create mode 100644 CHANGELOG.md create mode 100644 Examples/SwiftUIChartsShowcase/README.md create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/xcshareddata/xcschemes/SwiftUIChartsShowcase.xcscheme create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/AppDelegate.swift create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/Info.plist create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift create mode 100644 Examples/SwiftUIChartsShowcase/project.yml create mode 100644 MIGRATION.md create mode 100644 Resources/barchartcard.png create mode 100644 Resources/barvid2.gif create mode 100644 Resources/chartpic1.png create mode 100644 Resources/chartpic2.png create mode 100644 Resources/chartpic3.png create mode 100644 Resources/chartpic4.png create mode 100644 Resources/chartpic5.png create mode 100644 Resources/chartpic6.png create mode 100644 Resources/chartpic7.png create mode 100644 Resources/linechartcard.png create mode 100644 Resources/linevid2.gif create mode 100644 Resources/piechartcard.png create mode 100644 Resources/pievid2.gif create mode 100644 Resources/ringchart1.png delete mode 100644 Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartXScale.swift create mode 100644 Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift create mode 100644 Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift create mode 100644 Sources/SwiftUICharts/Base/Config/ChartLineConfig.swift create mode 100644 Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift create mode 100644 Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift delete mode 100644 Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift delete mode 100644 Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartGridModifiers.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartLineModifiers.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartStyleModifier.swift delete mode 100644 Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift create mode 100644 Tests/SwiftUIChartsTests/ChartXAlignmentTests.swift create mode 100644 Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift create mode 100644 Tests/SwiftUIChartsTests/DocumentationIntegrityTests.swift create mode 100644 Tests/SwiftUIChartsTests/MigrationGuideTests.swift create mode 100644 example.md diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml new file mode 100644 index 00000000..1e6268cc --- /dev/null +++ b/.github/workflows/swift.yml @@ -0,0 +1,34 @@ +name: Swift + +on: + push: + branches: [ master, new-version ] + pull_request: + +jobs: + build-and-test: + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Select Xcode + run: sudo xcode-select -s /Applications/Xcode.app + + - name: Build + run: swift build + + - name: Test + run: swift test + + - name: Build Showcase App + run: | + cd Examples/SwiftUIChartsShowcase + xcodebuild \ + -project SwiftUIChartsShowcase.xcodeproj \ + -scheme SwiftUIChartsShowcase \ + -sdk iphonesimulator \ + -destination "generic/platform=iOS Simulator" \ + CODE_SIGNING_ALLOWED=NO \ + build diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d2252fdc --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +## 2.0.0-beta.9 + +### Added + +- Full SwiftUI-idiomatic modifier API: + - `chartData`, `chartXRange`, `chartYRange` + - `chartGridLines`, `chartGridStroke`, `chartGridBaseline` + - `chartXAxisLabels`, `chartYAxisLabels`, `chartAxisFont`, `chartAxisColor` + - `chartLineWidth`, `chartLineBackground`, `chartLineMarks`, `chartLineStyle`, `chartLineAnimation` + - `chartInteractionValue` +- Immutable chart configuration structs and environment-key-based composition. +- Updated docs/examples and generated showcase app. + +### Changed + +- Major clean break from mutating chain APIs. +- Chart style/data/range/axis/grid/line configs are now modifier-driven and value-based. + +### Fixed + +- Removed required `@EnvironmentObject` interaction dependency for basic chart rendering paths. +- Existing regression and smoke tests remain green after API shift. + +### Migration + +- See `MIGRATION.md` for full old-to-new mapping. diff --git a/Examples/SwiftUIChartsShowcase/README.md b/Examples/SwiftUIChartsShowcase/README.md new file mode 100644 index 00000000..ef33ba81 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/README.md @@ -0,0 +1,18 @@ +# SwiftUICharts Showcase App + +This iOS app demonstrates the current composable API features of `SwiftUICharts`: + +- Line chart with marks, ranges, style, background fill, and animation +- Grid and axis labels +- Multiple overlaid line charts +- Mixed bar + line chart in one frame +- Interactive bar chart with shared `ChartValue` + `ChartLabel` +- Pie and rings charts +- Card-based composition with `CardView` + +## Open in Xcode + +1. `cd Examples/SwiftUIChartsShowcase` +2. `xcodegen generate` +3. Open `SwiftUIChartsShowcase.xcodeproj` +4. Run the `SwiftUIChartsShowcase` scheme on an iOS simulator diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj new file mode 100644 index 00000000..5208dbfc --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj @@ -0,0 +1,333 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0A17A65BC7246EF894FB4C46 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FEFD8F7975122CADED38BF /* AppDelegate.swift */; }; + 282BC43F66ABF75981A2CA5E /* ShowcaseHomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472650295568456DC645EC4F /* ShowcaseHomeView.swift */; }; + 5C46F84CBBE811CF1BACDC53 /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = C3965A0A2A9FEBF45BC880B8 /* SwiftUICharts */; }; + 78F8536EADC5FE60A9B6D6B6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 07C74870F224E2F5213D5F81 /* ChartView */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ChartView; path = ../..; sourceTree = SOURCE_ROOT; }; + 09A022B6E881286CD3B96CB5 /* SwiftUIChartsShowcase.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = SwiftUIChartsShowcase.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 472650295568456DC645EC4F /* ShowcaseHomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowcaseHomeView.swift; sourceTree = ""; }; + 4EC45D31E6FCC4FF27B4F3B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + F8FEFD8F7975122CADED38BF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F9428672158235A7E14E3CBE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5C46F84CBBE811CF1BACDC53 /* SwiftUICharts in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 58E5FB23E95DB74437A4AAC4 /* Packages */ = { + isa = PBXGroup; + children = ( + 07C74870F224E2F5213D5F81 /* ChartView */, + ); + name = Packages; + sourceTree = ""; + }; + A30E7F93B90AC7C66A7B151C = { + isa = PBXGroup; + children = ( + 58E5FB23E95DB74437A4AAC4 /* Packages */, + C75B23F4C6E0261F5CF362F1 /* SwiftUIChartsShowcaseApp */, + A54955542983F1195821FBA1 /* Products */, + ); + sourceTree = ""; + }; + A54955542983F1195821FBA1 /* Products */ = { + isa = PBXGroup; + children = ( + 09A022B6E881286CD3B96CB5 /* SwiftUIChartsShowcase.app */, + ); + name = Products; + sourceTree = ""; + }; + C75B23F4C6E0261F5CF362F1 /* SwiftUIChartsShowcaseApp */ = { + isa = PBXGroup; + children = ( + F8FEFD8F7975122CADED38BF /* AppDelegate.swift */, + 4EC45D31E6FCC4FF27B4F3B7 /* Info.plist */, + CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */, + 472650295568456DC645EC4F /* ShowcaseHomeView.swift */, + ); + path = SwiftUIChartsShowcaseApp; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1157F58C037245E8EAA47268 /* SwiftUIChartsShowcase */ = { + isa = PBXNativeTarget; + buildConfigurationList = BAC9D2E2CC2F3EFE9AE1C7D7 /* Build configuration list for PBXNativeTarget "SwiftUIChartsShowcase" */; + buildPhases = ( + 2FEC21B48626CFA9E502C36C /* Sources */, + F9428672158235A7E14E3CBE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwiftUIChartsShowcase; + packageProductDependencies = ( + C3965A0A2A9FEBF45BC880B8 /* SwiftUICharts */, + ); + productName = SwiftUIChartsShowcase; + productReference = 09A022B6E881286CD3B96CB5 /* SwiftUIChartsShowcase.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8B7A7FE05FB51DACF82D3B42 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; + TargetAttributes = { + }; + }; + buildConfigurationList = E4A630DF3DA41D75EA5D748D /* Build configuration list for PBXProject "SwiftUIChartsShowcase" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = A30E7F93B90AC7C66A7B151C; + packageReferences = ( + 71626CD6A68405D598C36A30 /* XCLocalSwiftPackageReference "../.." */, + ); + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1157F58C037245E8EAA47268 /* SwiftUIChartsShowcase */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2FEC21B48626CFA9E502C36C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A17A65BC7246EF894FB4C46 /* AppDelegate.swift in Sources */, + 78F8536EADC5FE60A9B6D6B6 /* SceneDelegate.swift in Sources */, + 282BC43F66ABF75981A2CA5E /* ShowcaseHomeView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 53F29F46DD197EDB34FB3BBE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = SwiftUIChartsShowcaseApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.appear.swiftuicharts.showcase; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B63534D891123660CA98BC1E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = SwiftUIChartsShowcaseApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.appear.swiftuicharts.showcase; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B94BEAEF1BE98CCEA81C480D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + CC0F00DD9662CAB69A592EDC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + BAC9D2E2CC2F3EFE9AE1C7D7 /* Build configuration list for PBXNativeTarget "SwiftUIChartsShowcase" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B63534D891123660CA98BC1E /* Debug */, + 53F29F46DD197EDB34FB3BBE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + E4A630DF3DA41D75EA5D748D /* Build configuration list for PBXProject "SwiftUIChartsShowcase" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CC0F00DD9662CAB69A592EDC /* Debug */, + B94BEAEF1BE98CCEA81C480D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 71626CD6A68405D598C36A30 /* XCLocalSwiftPackageReference "../.." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + C3965A0A2A9FEBF45BC880B8 /* SwiftUICharts */ = { + isa = XCSwiftPackageProductDependency; + productName = SwiftUICharts; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 8B7A7FE05FB51DACF82D3B42 /* Project object */; +} diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/xcshareddata/xcschemes/SwiftUIChartsShowcase.xcscheme b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/xcshareddata/xcschemes/SwiftUIChartsShowcase.xcscheme new file mode 100644 index 00000000..d43aa136 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/xcshareddata/xcschemes/SwiftUIChartsShowcase.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/AppDelegate.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/AppDelegate.swift new file mode 100644 index 00000000..acacd5c9 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/AppDelegate.swift @@ -0,0 +1,16 @@ +import UIKit + +@UIApplicationMain +final class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + true + } + + func application(_ application: UIApplication, + configurationForConnecting connectingSceneSession: UISceneSession, + options: UIScene.ConnectionOptions) -> UISceneConfiguration { + UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } +} diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/Info.plist b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/Info.plist new file mode 100644 index 00000000..e46a7097 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/Info.plist @@ -0,0 +1,51 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UILaunchStoryboardName + + UIMainStoryboardFile + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift new file mode 100644 index 00000000..69c32129 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift @@ -0,0 +1,19 @@ +import SwiftUI +import UIKit + +final class SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + func scene(_ scene: UIScene, + willConnectTo session: UISceneSession, + options connectionOptions: UIScene.ConnectionOptions) { + guard let windowScene = scene as? UIWindowScene else { + return + } + + let window = UIWindow(windowScene: windowScene) + window.rootViewController = UIHostingController(rootView: ShowcaseHomeView()) + self.window = window + window.makeKeyAndVisible() + } +} diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift new file mode 100644 index 00000000..3d725b1a --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -0,0 +1,321 @@ +import SwiftUI +import SwiftUICharts + +struct ShowcaseHomeView: View { + private let sharedBarValue = ChartValue() + @ObservedObject private var liveFeed = MockLiveChartFeed() + + var body: some View { + NavigationView { + ScrollView { + VStack(alignment: .leading, spacing: 20) { + headline + dynamicDataSection + lineChartSection + overlayLineSection + mixedChartSection + interactiveBarCard + pieAndRingsSection + } + .padding(16) + .frame(maxWidth: .infinity, alignment: .leading) + } + .navigationBarTitle("SwiftUICharts Showcase", displayMode: .inline) + .background(Color(white: 0.95)) + } + } + + private var headline: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Composable chart examples") + .font(.title) + .bold() + Text("Demonstrates line, bar, pie, and rings charts with modifier-based data, style, axis, grid, and interaction APIs.") + .font(.subheadline) + .foregroundColor(.secondary) + } + } + + private var lineChartSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Line Chart + Grid + Axis + Marks + Range") + .font(.headline) + + AxisLabels { + ChartGrid { + LineChart() + .chartLineWidth(3) + .chartLineBackground(ColorGradient(.blue.opacity(0.2), .clear)) + .chartLineMarks(true, color: ColorGradient(.blue, .purple)) + .chartLineStyle(.curved) + .chartLineAnimation(true) + .chartData([12, 34, 23, 18, 36, 22, 26]) + .chartYRange(10...40) + .chartXRange(0...6) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.blue, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 6) + } + .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) + .chartYAxisLabels([(0, "10"), (1, "20"), (2, "30"), (3, "40")], range: 0...3) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + } + } + + private var dynamicDataSection: some View { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text("Live Dynamic Data Source (Mock)") + .font(.headline) + Spacer(minLength: 8) + Text(String(format: "%.1f", liveFeed.latestValue)) + .font(.subheadline.monospacedDigit()) + .foregroundColor(.secondary) + } + Text("Updates every few seconds with simulated network delay.") + .font(.caption) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + LineChart() + .chartLineWidth(3) + .chartLineMarks(true, color: ColorGradient(.green, .blue)) + .chartLineStyle(.curved) + .chartLineAnimation(true) + .chartData(liveFeed.points) + .chartYRange(liveFeed.yRange) + .chartXRange(0...Double(max(0, liveFeed.points.count - 1))) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.green, .blue))) + } + .chartGridLines(horizontal: 5, vertical: max(2, liveFeed.points.count)) + } + .chartXAxisLabels(liveFeed.xLabels) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + } + .onAppear { + liveFeed.start() + } + .onDisappear { + liveFeed.stop() + } + } + + private var overlayLineSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Multiple Line Charts In One Frame") + .font(.headline) + + AxisLabels { + ChartGrid { + LineChart() + .chartLineMarks(true) + .chartLineStyle(.curved) + .chartData([3, 5, 4, 1, 0, 2, 4]) + .chartYRange(0...8) + .chartXRange(0...6) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.orange, .red))) + + LineChart() + .chartLineMarks(true) + .chartLineStyle(.straight) + .chartLineAnimation(false) + .chartData([4, 1, 0, 2, 6, 3, 5]) + .chartYRange(0...8) + .chartXRange(0...6) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.green, .yellow))) + } + .chartGridLines(horizontal: 5, vertical: 6) + } + .chartXAxisLabels([(0, "1"), (1, "2"), (2, "3"), (3, "4"), (4, "5"), (5, "6"), (6, "7")], range: 0...6) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + } + } + + private var mixedChartSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Mixed Bar + Line Chart") + .font(.headline) + + AxisLabels { + ChartGrid { + BarChart() + .chartData([2, 4, 1, 3, 5]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.orange, .red))) + + LineChart() + .chartLineMarks(true) + .chartData([2, 4, 1, 3, 5]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.blue, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 5) + } + .chartXAxisLabels([(0, "A"), (1, "B"), (2, "C"), (3, "D"), (4, "E")], range: 0...4) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + } + } + + private var interactiveBarCard: some View { + CardView { + ChartLabel("Weekly Sales", type: .title) + ChartLabel("Drag bars to inspect values", type: .legend, format: "%.0f") + + AxisLabels { + ChartGrid { + BarChart() + .chartData([14, 22, 18, 31, 26, 19, 24]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: [ + ColorGradient(.red, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow) + ])) + } + .chartGridLines(horizontal: 5, vertical: 0) + } + .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 170) + } + .frame(maxWidth: .infinity) + .frame(height: 280) + .padding(6) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.blue, .purple))) + .chartInteractionValue(sharedBarValue) + } + + private var pieAndRingsSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Pie and Rings Charts") + .font(.headline) + + HStack(spacing: 12) { + PieChart() + .chartData([34, 23, 12]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: [ + ColorGradient(.red, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow) + ])) + .frame(maxWidth: .infinity) + .frame(height: 180) + .padding(10) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + + RingsChart() + .chartData([25, 50, 75, 90]) + .chartStyle(ChartStyle(backgroundColor: ColorGradient(.white, .gray.opacity(0.12)), + foregroundColor: [ + ColorGradient(.purple, .blue), + ColorGradient(.orange, .red), + ColorGradient(.green, .yellow), + ColorGradient(.pink, .purple) + ])) + .frame(maxWidth: .infinity) + .frame(height: 180) + .padding(10) + .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + } + } + } +} + +struct ShowcaseHomeView_Previews: PreviewProvider { + static var previews: some View { + ShowcaseHomeView() + } +} + +final class MockLiveChartFeed: ObservableObject { + @Published private(set) var points: [Double] = [18, 23, 20, 27, 29, 24, 28, 31] + @Published private(set) var latestValue: Double = 31 + + private var timer: Timer? + + var xLabels: [String] { + (1...points.count).map(String.init) + } + + var yRange: ClosedRange { + let minValue = points.min() ?? 0 + let maxValue = points.max() ?? 10 + let lower = max(0, floor(minValue / 5) * 5 - 5) + let upper = max(lower + 10, ceil(maxValue / 5) * 5 + 5) + return lower...upper + } + + func start() { + guard timer == nil else { return } + let liveTimer = Timer.scheduledTimer(withTimeInterval: 2.2, repeats: true) { [weak self] _ in + self?.simulateFetch() + } + liveTimer.tolerance = 0.4 + timer = liveTimer + } + + func stop() { + timer?.invalidate() + timer = nil + } + + deinit { + stop() + } + + private func simulateFetch() { + let current = points.last ?? 25 + let delay = Double.random(in: 0.15...0.7) + + DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + delay) { [weak self] in + guard let self = self else { return } + let delta = Double.random(in: -4.5...4.5) + let nextValue = min(45, max(10, current + delta)) + + DispatchQueue.main.async { + self.push(nextValue) + } + } + } + + private func push(_ value: Double) { + guard !points.isEmpty else { + points = [value] + latestValue = value + return + } + + points.removeFirst() + points.append(value) + latestValue = value + } +} diff --git a/Examples/SwiftUIChartsShowcase/project.yml b/Examples/SwiftUIChartsShowcase/project.yml new file mode 100644 index 00000000..1405fcb9 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/project.yml @@ -0,0 +1,31 @@ +name: SwiftUIChartsShowcase +options: + bundleIdPrefix: com.appear +settings: + base: + IPHONEOS_DEPLOYMENT_TARGET: 13.0 +targets: + SwiftUIChartsShowcase: + type: application + platform: iOS + deploymentTarget: "13.0" + sources: + - path: SwiftUIChartsShowcaseApp + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: com.appear.swiftuicharts.showcase + INFOPLIST_FILE: SwiftUIChartsShowcaseApp/Info.plist + SWIFT_VERSION: 5.0 + dependencies: + - package: SwiftUICharts + product: SwiftUICharts +packages: + SwiftUICharts: + path: ../.. +schemes: + SwiftUIChartsShowcase: + build: + targets: + SwiftUIChartsShowcase: all + run: + config: Debug diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 00000000..580943a8 --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,111 @@ +# SwiftUICharts Migration Guide + +## Version direction + +This release moves to a strict SwiftUI-idiomatic modifier API. + +- Immutable configuration +- `ViewModifier` composition +- Environment keys instead of mutable reference state in view structs + +## Old -> new mapping + +### Previous chart data/range chains + +| Old | New | +| --- | --- | +| `.data([Double])` | `.chartData([Double])` | +| `.data([(Double, Double)])` | `.chartData([(Double, Double)])` | +| `.rangeX(...)` | `.chartXRange(...)` | +| `.rangeY(...)` | `.chartYRange(...)` | + +### Grid chains + +| Old | New | +| --- | --- | +| `.setNumberOfHorizontalLines(h)` + `.setNumberOfVerticalLines(v)` | `.chartGridLines(horizontal: h, vertical: v)` | +| `.setStoreStyle(style)` + `.setColor(color)` | `.chartGridStroke(style: style, color: color)` | +| `.showBaseLine(show, with: style)` | `.chartGridBaseline(show, style: style)` | + +### Axis chains + +| Old | New | +| --- | --- | +| `.setAxisXLabels([String])` | `.chartXAxisLabels([String])` | +| `.setAxisXLabels([(Double, String)], range:)` | `.chartXAxisLabels([(Double, String)], range:)` | +| `.setAxisYLabels([String], position:)` | `.chartYAxisLabels([String], position:)` | +| `.setAxisYLabels([(Double, String)], range:, position:)` | `.chartYAxisLabels([(Double, String)], range:, position:)` | +| `.setFont(font)` | `.chartAxisFont(font)` | +| `.setColor(color)` | `.chartAxisColor(color)` | + +### Line-specific chains + +| Old | New | +| --- | --- | +| `.setLineWidth(width:)` | `.chartLineWidth(...)` | +| `.setBackground(colorGradient:)` | `.chartLineBackground(...)` | +| `.showChartMarks(_, with:)` | `.chartLineMarks(_, color:)` | +| `.setLineStyle(to:)` | `.chartLineStyle(...)` | +| `.withAnimation(_)` | `.chartLineAnimation(...)` | + +### Interaction wiring + +| Old | New | +| --- | --- | +| `.chartValue(...)` on chart views | `.chartInteractionValue(...)` on any parent container | +| `@EnvironmentObject ChartValue` requirement | optional environment interaction value | + +### Legacy public type replacements + +| Legacy type | Replacement | +| --- | --- | +| `LineChartView` | `LineChart` with modifiers | +| `BarChartView` | `BarChart` with modifiers | +| `PieChartView` | `PieChart` with modifiers | +| `MultiLineChartView` | multiple `LineChart` overlays | +| `LineView` | `CardView` + `LineChart` + modifiers | +| `GradientColor` | `ColorGradient` | +| `GradientColors` | explicit `ColorGradient` values | +| `Colors` | `ChartColors` + `Color` | +| `Styles` | explicit `ChartStyle` initialization | +| `ChartForm` | SwiftUI layout (`frame`, stacks, spacing) | +| `MultiLineChartData` | multiple `chartData`-configured line layers | +| `MagnifierRect` | no direct replacement | +| `TestData` | app/test-local fixtures | + +## Example migration + +Before: + +```swift +AxisLabels { + ChartGrid { + LineChart() + .showChartMarks(true) + .data([8, 23, 54, 32]) + .rangeY(0...60) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.orange, .red))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels(["Q1", "Q2", "Q3", "Q4"]) +``` + +After: + +```swift +AxisLabels { + ChartGrid { + LineChart() + .chartLineMarks(true) + .chartData([8, 23, 54, 32]) + .chartYRange(0...60) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.orange, .red))) + } + .chartGridLines(horizontal: 5, vertical: 4) +} +.chartXAxisLabels(["Q1", "Q2", "Q3", "Q4"]) +``` diff --git a/README.md b/README.md index 88198213..98b76141 100644 --- a/README.md +++ b/README.md @@ -1,192 +1,124 @@ # SwiftUICharts -Swift package for displaying charts effortlessly. +SwiftUICharts is an open-source chart library for SwiftUI with iOS 13 compatibility. -![SwiftUI Charts](./Resources/showcase1.gif "SwiftUI Charts") +This release uses a fully composable, SwiftUI-idiomatic API based on immutable configuration and `ViewModifier` chains. -It supports: -* Line charts -* Bar charts -* Pie charts +

+ +

-### Installation: +## Charts -It requires iOS 13 and Xcode 11! +- `LineChart` +- `BarChart` +- `PieChart` +- `RingsChart` -In Xcode got to `File -> Swift Packages -> Add Package Dependency` and paste inthe repo's url: `https://github.com/AppPear/ChartView` +## Installation -### Usage: +Use Swift Package Manager in Xcode and add: -import the package in the file you would like to use it: `import SwiftUICharts` +`https://github.com/AppPear/ChartView` -You can display a Chart by adding a chart view to your parent view: +## Migration -### Demo +This is a major composable API release. -Added an example project, with **iOS, watchOS** target: https://github.com/AppPear/ChartViewDemo +- Previous chain APIs like `.data`, `.rangeX`, `.rangeY`, `.setAxisXLabels`, `.setNumberOfHorizontalLines`, and line-specific setters were replaced by typed chart modifiers. +- Full old-to-new mapping: [MIGRATION.md](./MIGRATION.md) -## Line charts +## Quick Start -**LineChartView with multiple lines!** -First release of this feature, interaction is disabled for now, I'll figure it out how could be the best to interact with multiple lines with a single touch. -![Multiine Charts](./Resources/multiline1.gif "Multiine Charts") +**Simple line chart** -Usage: -```swift -MultiLineChartView(data: [([8,32,11,23,40,28], GradientColors.green), ([90,99,78,111,70,60,77], GradientColors.purple), ([34,56,72,38,43,100,50], GradientColors.orngPink)], title: "Title") -``` -Gradient colors are now under the `GradientColor` struct you can create your own gradient by `GradientColor(start: Color, end: Color)` - -Available preset gradients: -* orange -* blue -* green -* blu -* bluPurpl -* purple -* prplPink -* prplNeon -* orngPink - -**Full screen view called LineView!!!** - -![Line Charts](./Resources/fullscreen2.gif "Line Charts") - -```swift - LineView(data: [8,23,54,32,12,37,7,23,43], title: "Line chart", legend: "Full screen") // legend is optional, use optional .padding() -``` - -Adopts to dark mode automatically - -![Line Charts](./Resources/showcase3.gif "Line Charts") - -You can add your custom darkmode style by specifying: - -```swift -let myCustomStyle = ChartStyle(...) -let myCutsomDarkModeStyle = ChartStyle(...) -myCustomStyle.darkModeStyle = myCutsomDarkModeStyle -``` - -**Line chart is interactive, so you can drag across to reveal the data points** - -You can add a line chart with the following code: - -```swift - LineChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", legend: "Legendary") // legend is optional -``` - -**Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** - - -## Bar charts -![Bar Charts](./Resources/showcase2.gif "Bar Charts") - -**[New feature] you can display labels also along values and points for each bar to descirbe your data better!** -**Bar chart is interactive, so you can drag across to reveal the data points** - -You can add a bar chart with the following code: - -Labels and points: - -```swift - BarChartView(data: ChartData(values: [("2018 Q4",63150), ("2019 Q1",50900), ("2019 Q2",77550), ("2019 Q3",79600), ("2019 Q4",92550)]), title: "Sales", legend: "Quarterly") // legend is optional -``` -Only points: +

+ +

```swift - BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", legend: "Legendary") // legend is optional +LineChart() + .chartData([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) ``` -**ChartData** structure -Stores values in data pairs (actually tuple): `(String,Double)` -* you can have duplicate values -* keeps the data order - -You can initialise ChartData multiple ways: -* For integer values: `ChartData(points: [8,23,54,32,12,37,7,23,43])` -* For floating point values: `ChartData(points: [2.34,3.14,4.56])` -* For label,value pairs: `ChartData(values: [("2018 Q4",63150), ("2019 Q1",50900)])` +**Add background grid** - -You can add different formats: -* Small `ChartForm.small` -* Medium `ChartForm.medium` -* Large `ChartForm.large` - -```swift -BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", form: ChartForm.small) -``` - -For floating point numbers, you can set a custom specifier: +

+ +

```swift -BarChartView(data: ChartData(points:[1.23,2.43,3.37]) ,title: "A", valueSpecifier: "%.2f") +ChartGrid { + LineChart() + .chartData([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) +} +.chartGridLines(horizontal: 5, vertical: 4) ``` -For integers you can disable by passing: `valueSpecifier: "%.0f"` - -You can set your custom image in the upper right corner by passing in the initialiser: `cornerImage:Image(systemName: "waveform.path.ecg")` +**Axis labels** +

+ +

- **Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** - - ### You can customize styling of the chart with a ChartStyle object: - -Customizable: -* background color -* accent color -* second gradient color -* text color -* legend text color - -```swift - let chartStyle = ChartStyle(backgroundColor: Color.black, accentColor: Colors.OrangeStart, secondGradientColor: Colors.OrangeEnd, chartFormSize: ChartForm.medium, textColor: Color.white, legendTextColor: Color.white ) - ... - BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: chartStyle) -``` - -You can access built-in styles: ```swift - BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: Styles.barChartMidnightGreen) +AxisLabels { + ChartGrid { + LineChart() + .chartData([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + } + .chartGridLines(horizontal: 5, vertical: 4) +} +.chartXAxisLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -#### All styles available as a preset: -* barChartStyleOrangeLight -* barChartStyleOrangeDark -* barChartStyleNeonBlueLight -* barChartStyleNeonBlueDark -* barChartMidnightGreenLight -* barChartMidnightGreenDark -![Midnightgreen](./Resources/midnightgreen.gif "Midnightgreen") +**Line config + ranges** -![Custom Charts](./Resources/showcase5.png "Custom Charts") - - -### You can customize the size of the chart with a ChartForm object: - -**ChartForm** -* `.small` -* `.medium` -* `.large` -* `.detail` +

+ +

```swift -BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", form: ChartForm.small) +AxisLabels { + ChartGrid { + LineChart() + .chartLineMarks(true) + .chartData([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartYRange(0...10) + .chartXRange(0...5) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + } + .chartGridLines(horizontal: 5, vertical: 4) +} +.chartXAxisLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -### WatchOS support for Bar charts: - -![Pie Charts](./Resources/watchos1.png "Pie Charts") - -## Pie charts -![Pie Charts](./Resources/showcase4.png "Pie Charts") +**Mix chart types** -You can add a pie chart with the following code: +

+ +

```swift - PieChartView(data: [8,23,54,32], title: "Title", legend: "Legendary") // legend is optional +AxisLabels { + ChartGrid { + BarChart() + .chartData([2, 4, 1, 3]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + + LineChart() + .chartLineMarks(true) + .chartData([2, 4, 1, 3]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.blue, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 4) +} +.chartXAxisLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -**Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** +## Full Examples +See [example.md](./example.md) and [`Examples/SwiftUIChartsShowcase`](./Examples/SwiftUIChartsShowcase) for complete showcase code. diff --git a/Resources/barchartcard.png b/Resources/barchartcard.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8161797a0ab75693b37594ce0c5171e74537a9 GIT binary patch literal 65497 zcmZ_!1yr0(?>`RXuEpI;aVhTZR&;SM-Qw=9#odY)D+P)aio1JZad&rL^uO)>+;YC} z?}f8xubnFy$t06Z^7*8uB8!efi~jS+e1O2i2@}h z)#N25Db<|p-vezdp`heGrRX36GzRf=^b_O7K0w12hOEFP5Q`}wv0TMcGEyO9DMSb6 znaL9188k-(pc~@7tAa5T#}s<3YvvO32Q@IJ&U1#T0M)k z-`hguyqY;;5n4@s-JvG~>Z?(ZP;2~WWNys|DmUBk!J*)Y1Z^mRZsGFH!Y83 zkiPC^#JWWW(G*b5gxm!O&|iiV7FozkyxMyH3eB4fZ;jwW>9*wv(?!V>z$ceZLiBwN z^cGIsCSn~$yaX9#?i}k-q9r1ig0SRlo;HWHEFzTWeT1$OyniZ9YHvzk6WgG?3FDQq z)%iS%uTtF`CJ|&al%Ac?pdPshEh@Kx@lU84chM|EX3`ko2)gRY$5E=-ZPehW?R$V} z7~dQ1b>qx5Q7&T}jnn|L(vAm|nhnXV>&}HnQr%|<);YSi_zd>K?r{nN5iSC9QA#xt z_ah?XbgYtJU`ocbxRkhFhA&GWLPhO{#?ezRim{rv2>KZMHa@{Sh!0(#qrDS%X%SLw zdGi^Em}MN%7^4ds6%I-uz9SXmb+8TP-jVe|u+BveWe2obJn~(KQ72lAT;es-ItK=B zpeWTw@Z-AUbB&S6n~=v@Q*FOmM53A%iTMc9Gq?>QECi?ZIw>9nK2jEJp|I#RiV6NI zN7J^(D*1;OVbLBxtMqte9rnch2$wo4RWnMC073~g>V>uY2F#Pt@a_T%8x=m-Tf)qK zcmFON34(R1b>jTb4%UfzfJco~>^zbKM23$E&*m%+ieL95A2wIi$QU;T8bqr44NXX2 zpPZhqZLoh*2nJ_&jG4+-y%y`&tA1Y&E6CW}U3OS)k9W0 z!RumGlrrL8?tJ9>NPWt*rkd1N0Bv3Kp$QP5p(SS3#Rii*hVMisGm%Z2odq55XS`Ke z$;(l5itq(=p8fd+5o)C(I5;@G-8sJk>c}-b?j`>;iyPKYAQ_s^JAw(DV2Izqi?X9W zgxF{DDgc`ucE&+Or32jqS`-UOLL4^&anOW%LYr?6J|?sdP;J3EVeCuTQDMd#ZE;^9_p0G(qH;^IOia9i zwftiGK}Z04RH`ITdJo2hK`(G7ulbkE6`U7zYnWRB+b?J|lc98s_d)aKXwjk4rVIdt z*M0BJivaxE!PDj}XClU(P1PbtG%7tnKC=37CO$aTj>bD&AD%Y2${zQ%7!N@|c>jRg z%~d4LAn4B6HF*=9K5R~84P?3yr!Jl@@h*lt=4-4K>`zi;U+^Z#M4|?JY&Os~UTt`p z!JhL~N8Ls6iBTt9$+^+mtK)u>WTZ@qpGj~_(34M-7cRt97*gm{P*D(9U{H`KGAnW_ z%2w!4W@QrAx>wSs*N+z-d}l%KDd0)u$QtCH_ z`w`lep)S=c(JS{}Jf-*`Z%BK)bnIP)x~*nw`Mr8f`TP7n&Cg%83$?%hG(P^Kmn)#V zte#yo_Aa-=sK`(5DeOJ~LD@W7CRrw@?^R4T@h(>mFp-Oe8rrs6XlgtLtj&hHBlcT|Zu1TYqf+K>tw{^nFs~+j2$lKH#9r)yXw= z{|MCh{Sp|mjwTFeM4J? zU-Yx)6Z(D0)q~8(m@DEzGF<_u)qzEXuYncf<(+83EC^%>uwgP`onh47u3_}(5792s zkI^+T+9YIe54eko9tcsRbx7)oMN6zf8CM2g@U7V^_GTup%&0l$Z6<*i^HW1yowakd zomV+Tz0szrrau?TN6S~2=7hR@iaoQzwx~7m-PFTo6}?1Jx2f8x@~NmSpP6%Y_w}kP zBFhiTPxLe@d@D)-vjF2dss(l%C!3i?gBodDL)#xVWj1UJ`EGV@FwNI)h6P9kLNds* z)6q?)m1g6$Y_*j?{MYg}u};*Eer=sO)q?kuCzxb%iJnF$ra5LE%Qmw)GR-CWapQnQ zmkWb4pAI#*U8XY*NVkOg8|T3(QQ4@gmchfyI+@lXhZ3_qvz2xyc4qZn^+xW_w_LX$ zZ%NQtWVp&q(IufBvSdP1(|Dxk=Ks}uul&~ydrDP9 z)lgOV`p@-^vs5H5YA!Rao@KcxIa3P_+z2z-ipVAcTRdU9dj~X**8;_iJMu^Aa~aiE z8y_5#Hr)DJqi*Aj@%`yL1;i77rG8CK&jftF6JekPTB_eROl-c7X^t&+ zwoxP^q~P-#z01*@ol2ZK#3_HR^x47g%X81tCt3PZ8SCbf9862HRq;ovHQ-qkrn3E@{4j2Xhk&!j})@RR*nZ> z70t1mtj?vvr7)qQmf99c31!pRD&LxkEnrf!l-rkA?{0C&8LW%1qPlw)FA^S+!K3hc zXR>XQW-MUoi@aYYRo~9Kr+P{sN`Oi@Du?NIg1+ZhCDP*3?V}x54pz0JTp9fKJHfgm zx}U9Ret@j%M>#(KFi{y_T5A;CdAGAY^3Xb0?O}Po2$sLp$0uY>Z(f^V>ujG&`I;J` zXvch|*WifVCRg>3No;UHeg>fy*4Y%UN$pl8Tdt znr3Xg-fY&d5R)R!L{Sk5m~O~yYjU|>srH}$LgmMoVbP8b<6zxCtK4u={I8gWH>*{i;9}KhD2A^zJBoF zYbuQz@I5OIy}GVH^QzmstZps)xG~+%lr4tVi>_vPr#aML<=nSkJRsa!KUaYZ@)s)} z_JRWt$uKv`S3G-suQnW?H`#=6Sp(V);z#@}piKZs^fT?m(< z1-^uAdrM_BLaSlEteW4it&XBY-PnXKvVE;gMG@n|3-G`U5D>(y&u`7NF=pVVUP82q ze9X*A!+4Gvyv-8bdb%W%(=zNB-}Q%<7V*(}ATSVw+$d5l0rKyam7y3R&qz@4(669i zAy3ede<)~TDEL3mP*4icB>z0CL%;bS4Ga`iI1mc%e>8fK@85s%kPn3Wf8Vf)VNi&W zU#}pakUW^bsbK(luzx>8cR=1jiEBv8%R|03%$+PP?VLZ@ySSv_j6xca9prSKp`h^T zet)3l)oITlSE5;S62fyB{ba4*|%dt)+`8rH8GJowI<4 zF!dh_0m$?3W;SZdKO`>J!qfm|HA+c)Cre5mR(4i)Y7rDlN=hLoi}wQRQZoNzhx`(z z{@~)`Ai&1v?(WX&{+89=$%>7GpP!$Nos*4|lLbP-;_PYXV(P(S=S=fgCx7=NW$A40 z1axo#+S^h7?$^}J-ql5zn)>%Z|NQ+mPfHKrza!Z>|8H541+x8q!^XkN&i4Oea{<2p z|HJnC&0lPP*7etLLcco`Py>2c+5n`0wh&Q6rY6GwmR;!2F#kVq{+;MwoLbJ7PLlSv z5Jne~fA{Kt%>RA)e;NM_sr&DcJp5e$9r8bK{=@lu2?FYt&h|F0zeT8J2XqnP6k_{- zHUD2O-GA9cIJh8V{bBlV>;L5d{69JV+xmYwRGokjIhg*Qnh3}LM)+^r|LBF-esBGM zRN*f@`_l?hG!YabwttjX1ckyzEENh$3`$-~T+;*kC>uV&uorw|#Y^HI972iwy^{qH zS*xaiT3f`zjpF)n@cpGpgZH4w=vxD>J1RaGvOFcZgbOdz?dR2{hozAm;aRuSla6J0rjWk6naMBvOWCv{qA1KqNw#umCExG9)f8E?gVpO~>lTAb3PI z8Oc^GW*Sx4y>CB?iGNd=KnVHa4pKgFV{E-eE1i5NFKWh#9}aR!9x73y%8=LxUSH9& z=*Deam@fl?j()}=56$R<_eqYXYHzY1%{;f0)1rN@QYJG-*h0Y3+7+HH^P!UFxC8N+NisWw@g^7)0zeyuaq0xy|8rL@< zL+6&RQb;H=1BYIq6cGeh3R*_){}7Vwz+#6(gO<$8!TOrKhnvWjjG^6oF*JB;-(nqR zl0wZLdcmYjuogPRu*h_t*H6eMb(`iasjbrUNB9iZSz6 zR6^I^L%RLbdthgP7%_O?PEU{D6u_*?`Lup3*r`Ax0hOS{hNqe;KSY1|iNG1S9W|(* z^UqQVvEHQp!cB|Hg=Tq^jss8S-xb4nj%JBD|iapV&MK%;}_XAOe5jjGW{Pc{nQqgeYvafo9zIZ1% zL0XaJZ;VB9~^_vE+m5O867BaqEaI7Nv{ zehhN;DuNw#E$App2vCyUSZZMt}-% z=Rf)YgquW)p4=*sUUzzw;G8V*={Vgvo z+HlZoo1FBS+$xkkH}j*b>AeE{vq5T6NXd$FD1!{bH=FFfv6~@8`YHI~=01}b=JR}{ zX-vuF!aq%0%-tl$29@E-({lU?AfaS=7%tjdn}isbFnE%&wq#DIWzA6c7l~D;lPM zw+;}&P<;JnV2~b^tivpv`X7@?$HEdvQ4ojhBS!sa_pCNvz!Um#K7M?HR*S zGN&{Y`jG1I-5{6rrjS243KBY#kdSN^`lNGi^^0UE45QvS=IKC;c}tSBT9r=(E}mKE z&e1QwYKTEJmMNMoJWB=5l+-b6BP2zpft0>=d*DW@xbk3Mo}|JC2*)TK*Tkb}n3i(D zvOIa9s96wG1UcW>rkIA-n}VI)51FU%i*8em_Ica=vA%9!etQrb*z@a9wdUOyc!M*{ zWY~6r7cR#@`rrVy0gQF2lN51sx>N~h}H$aA4snk1J!G1i-ecY5k= z^_yDs0BY`!9;6V3?$-f?d}@$W;be&|v*8d;Eip`FnUcvS-A=ohkj*G$O3q0>1Pc8* zo}VDc$Fm6%J%?OhsCd51MbvhRh7sq*M7UyetXT$MJ0PRM*OAb0u;Gf}GRZRW+{|*b zMPhryC3L%g+xu0j2zdKIf}FrywI!assLVi5cM^p^MRkWjL3Ic(ir$rWvv(+UD9W{W zU446KG))D(oytTzYbabagg3;NoHNs=U;!GsmDaoPQ!@~;#iB}-R%o+G1Q$C0^1lcP z9^yzG z_Q}SbbWE0a4xI#9u#En#EQHZWxYX=}E-~ZB$H%df<~B-sav(yM4Y*{ioU)yC(ZY7nl`{hg0GTh)5M|a6nRLRDY?uVh1;78zX zeJd?x$O@65r?#v7$BrP!xEIogkuZb0y1K@h8SQ%4L+#ng$yZ%dTowcItQL_@(Tmh_ z7xLyuaZe3($=yW><$zfBn#s>2Wil;{f{kU8j=>vTU6GIzj+0uU5TZXJn+;pZ2noc( zUM@KXL>ZCeA^!{(xF8OmTUXE=hQU_KA!K9kJ+iv#iwYUz8mNmF`dp~-W6Chl=b(yZ-RtI3P<=rrFS@6 zi79eUoAD|zv4|;yBB_)Q4JDEZG9yRWNE2u*)|({L4Qgda0Prppqay$iL&D3d1RpkZ z6!)K=sgh^ILD&o2IAF&`2H9MYaJQLaRrTx}jH*q<)6FELyHirH zq`%0~GaK($kCU<mq5+(T5XWe)9Vl_7yc;ewK57V(|1tU-;M&} z{3(z+;L|xnK48yGnQ#AgL1=;Z zvH{D`4)M$l5=s$Lg*{9?3|ktp4hF?)#QUx5UZEzX8iTQu(336^2J43rmm5HF8l6_h zd*zb9w?eHMNvviKky^JFcT!4k(lk3rGC~tOHhVG!f0(f%)9=2dboeXP{Fw#z1qfqn za#9{=Fmap*Es0*0XISf%!M`z0FkE1@d4Cv#WP|t!9*QG!5kXM+W1EB450lc)3lMRo z3cW8jV-Ze&^$tp+<=EdA2=St9Fy(`0h#owzdtbpDW9dNQ6@8M8mjS4Ndy-O_2Q?Q@ zf5MjmBooP)ado_oqHH<=vN6P3<;27P5rTLC6v#iGITdvuz9C(Zwp&ah(||PgGI2k# zGRzn+s0d+5ryIAQ%|-0%08VvR|3~IfqFs1-WEh zJQT=kQ2~01zpH#JxR?fl9R;8kO6()^KYISHAsuUyP<|a@n}p^L8(5q(5zcQ6k?<6B z{Os>q6{@DFh`(0}#IT8-xtg@rly09r=lZAp?L&jp^gJm6LQRvlrjeF87 zx=aml^xl)pR8-U{Nq~4h-JU+uGX8&~LUy=GtPZ5NK6hswG$^`NJuH($X$l24+y-&T z+Dj1)@6KVa8wybRMFc#UpgPj^xvl=y*f23-m^0Kinb&TE9$7l04!v+? zYTXcphyvlo`VOv{x7Ls?mU((9r~RW^{zx4Jwa(rnG>N9ySyx;oE?^+%vT|9vNiQDW zN38upq283VE9jvaquxEexxZ!eXQqU(RuPSGP8_oln9jh(-P#NPqSn-Hj;2s&ww@rdqZ#XgXW{A-rV5+GzBfiYN2(Ik}) zM>snjL6)FkpqyUj-}5v<>Otz@NW^D8N8Z|~+F+~{dR%d7m8sg0DSHb94!sS+D=;_x zSCntU0-`zPzu@-wazyTbf<(qznL1iQc)Xk#W$zBYUYJqvFqWlljq?6uqtKF+=+J0y z8`AZAS|m(Ul>1Ux+cn#^hOWyLsx%p5n5WgY(`cAl{}T=dP(i^ETK3R|$T6rSBZ=^W3A@3G=xoVrIj_SgSlFjfuFVuwbVT`nSp}^ zSzcvS1viBW&1Rm{U%m78urO+Q(Mtj+<7(YzoL49B7fFC&ruKOs1t1ERrw-?Vzpplb z2QI9AK5JI4@|v7`J`lQ=z&Gm>BW@n}0btFTO%lPls^O4$f0$w-#)-KUrkg z9focPDpp=UT-xl5ac(}Ui4t53fL&4%JjUJ9`d+`F73H;mneD!^pUP%TZWJth)&aX5 zP4u=4OuPqc?d<%cc|DB8Kv6M@M9{5V@amT&+3vCd7>QZ8rsp^5_lkrfXtD_c4*Sb!~r@{aN4tLxcv zgn2IhNfrKWT=$d4-KMwWLLlXI_WXFjaB;I>pT1ip5t^QVtlt2z|eEVM39P2rYz zZIPtrnfyL|?{Na}_@($_Z(WH3WIEcg5y=!3Y8@whgQT4WapX;>zNg-HlZEo@QrGXj z%cf6r4)Wv9!R7TL&MJ--6&1pvAAhCI3L{`$yJe%@Cs{)g!ocDNdOSupV~JL7T&A)H1AQo+=UAs*MgSL*1HAq1Wy_^m*%Z< zk5z=urEX*0Te^?yW{plZqS!D%RFz)SWdegU-n1eVjtx2YhLum>N}MfxIsV+H4d9wC zl}eQCpZJc>aZO8O(?IJ^77EizBWWtdcdSi&)V!8MxVIy3#~W1r??ER;Y`#EBoq--i z)HPk_>oDGyPT%LtTzAN_0dH>mMV}{xAC7*k)5_UTmiQIneN^NWX8C@jnW-b!rskFZ zvv`m|k!fb7!GNk!V&73Wbd#swbo;i4Z7LS>({S)7?Pj$NDQjV~nwQ>u!*_{ol%oE7 zTvl5BH-_7jk7kyU+eP~|Tz}3U6snHP!eqrHs*3snyyJbmpp=;ei`|5YgpsoMKF14n z>oFzQhqKMXw@aYbvrslPid6infU;oQTX_oZkICNGWyWNg)n3;hZ!7(uh9OkW*_lO2 z)VWHb6VSSwa>d~xF#a1nRMf(Ee03V<@#z<`VBj&8s@EIFd0cL~q{OC3yof_3vjR7K zCRHQm680vqNyO>FMp^o%DlY|kNPuE9siU9#-D630d%a{omD%&#+tiq0oYd%pNYF1T z-$9p+-mEL?q~Zd=JRjRU=6+XyDY+?jTHRj>lpLA{+}8w=o-XK${^MDEkg;<#=7vRl5wzSdI@h5w`D?UaTpKfdN$TSYR!Yy0No zpC*=BBEC(6FOQeaN?-+9DvD*NEUT)G$Mc^I`n*-}(6)=dx693Y+Jf^nYZI~*=uahv z1I}Z1t=BVoQ4GKpxot0X-!8baH$ubQap@Y3cT>76NE3X7;53HvUm!n#=^)2y~scZlePqx6EvIMlzDl4>vCE3ctVAE?qv_SfQ?3SHhK-*S*=|Se{oWc3v-yLE zFM-MJ5S0;3x%RHKeAK2Q8WXQ!?G<($dc2=)9}D1!z1J*R&1H5zs_x$z7P%OpA!@hR z-5H>X8!3^Gd#v=kE+bOixM-4~yzhP*@x0Ja!ks#=tMq00@qRRO#4^n=H4VHcE1D^4 z|5byeF}3~qx^j1WDt6BQCFB!}|k`!#RFYt5)3f2mH z#HNv1gAeaTLY+D^x^1dzFuG5v;Ezw2I)k>1v5C$;DFTSqlUvX?S5&5L1- zQzccLaBsWJK1-$bW!svQno1(yMV3f^73GS@DA{yyPEh*reA|91)QK`fUap;E0IwKs z@d$tLXmaG?*^$&3^s)LT%XLO~JrrhTCwei6bqp4x?A46;%!Fxn(xp@z$Wzmcfg%cr zWXx}ih633>ws_DS+Dv!_a@wCep!eD;4w=J0Y_s|AKSM^L{~?i8v(}d>rn)C^O{E*) zJo=M*z>J}&oHX6!6FkB9QKrh4$=1v4Q2kFZvMIpt^jp^{$uAEu6xy;mf)}QJldrUmYEr$zR#I zZvkTd!umgBR^y&pw=V z1IZ|`%=&UZ;9+A7+j|K7kEHniP4^UC)0E6i6h}ifm_|c7ng8HxfdmDW5LTJ!)4u8n zWb-7`KYDMHtP&pZZ^cXQNxYL4UX${s`i4bD3NmhoEJ|Y49NvA^*WDvO0QxhqzP@Ff z#q?5Jj^2wff(miv0;f2C<$k6f!SGxr?|{II3h(L(A}o{;L?=}37W8kt66W9r7Dqx- zhpCrdHa`v}M~SY^pf)i*%5SsA{=NfNUZeVy-N^@5B9|FLsg8z_C==DzJn}pUmDK^u zt~hR=9+c-)zvL8knfmz=9C(-Ib1~>iy}=@7I=UL?|G4RpU6nvT+Zkna^+jbjL&QOi z?cO2l);yN~b?x{IBP!c_vAd3F5ub~sTr~Zp4;1W%yh<@OjjT`aKV|^M#^?))45&hn zX!^;W;>*)ow&+Zo$fC{YeUE5vlX4$v4U8Y>?k3{=aEn#u`6+_>H3fPS&~2z@+rgvu zU3DSlEPE;%+v_EjiEu5cy^^TS02ysGf1*bHcB0ypelhHI%b9?JS zTwu#uA z@0A#{;rb}2p*SmJI~m1ahP)BQOPdPk7wB6~I%SW^N!}Cz`@fvN!29l5M85j*lXS;k zH9|sU_AO@)R?&gkeG&seH7AJlR$NFc#%K&(fKP>QJ;XsIH0@wZu}U)J)s1ciJbi}5 z>@@;@4Lzkn)6kAg315NuTWiZKdI#`6B|iN_CsSqQ&nk4dF-#QquiY+!6|Uz(g=s$=lv8E#Yo^OOnjvMj$2qj74sg8{E+EHw}SS-1O@4w zX-0=r?-U(AhG;;TTj_XLROl(-wZjpAm{xe`k)uA+E?72gkvle(9qtCDnWBV zeI(`}_wYPChB$8BbcE}u%u7)CWZ<~iCy>5(2+{XW z8R^`O&KtsKyET1<%GSb;235Ygk>)Y^3C_gv&CZ6-1Vj{A>aUH;g}rZ%*ypN^;PpU-HE9;FwnH&ZEKo5QcnJS{_*97n*tk;4z>N^4y5_*M}B&>Wq7QiJIFA09a?wOM`Ew3y&@}`%H9@o261wN z~2jds4>bI)<6n!gI&t^pl+lz=RHbSyL&G#4~nQYB{&vhDzk zd9xunRM@BvDzn0BwQTq!dFs&ZaOtZ(rkxF5=%irE9@zfm*=xUd+#!mo;au7ARP8bh zt2_v1q)(FdJ}a4pYlU9kyog%B_%yl1T@o_<%z^Pt(*(mf z?|%^l21is;=16Y|Kd6Y6CCa`n4CCK{j2hpWLBZ7Q+&l-$V!YvgTPwO5$J z5N4U_Q_Y2BuH=V0Xa*fQ$Zf%1u^Kv*#OhhKuB^&aZHaEkL62(0k>PYnsUeRz7(L!T zP`r?tOh4ARGdjan;tdVc%PXWC-0vmBU%blipyWJ$t<5q(xc>1*>pH{!cOF#CpIYq} zj*0&c^{CbbedY1s{V1|0gFKfY=7^!f~97=;#NF1BfW*4Ws)S= zPpRteH5oqYK`)Btn7B88x>uJ(fO!HR$%mRJ=tBcaIDpI^Y%p)E^z^m>PpZW^rv`ty zYVZdR^q#)_F0L8)z$AE-VN6hTZS|7hC!{YLyEHSaAO{~i?x&1mjalT7AoO>2DS?l* zoV}BC)X<2HK~*&m0#aNeqVeSSBXy`_e04NZ-yZ36?kxn7DwLTt(Pz+jA3{ z*KdiD2%)$<7|QwDe{Kd^K)m;eYKdI?m0Q1#Fj^HL>#lBG6PXsZ1X|&kIyN|fW9~;C zZ1{}B#L8Wa)J#JD+Zjp1#0ZsE>~NL3P>0N@PjnVhK)DEHso+vcm)>+SG;n++DPPSQ zSw@5K0f|!-J`0NV@|-0(YIwO}(L%8R<8=|mi09@z+a&S>t@e2kYJZRma}dxT>zhF) zn~m8;7rzx_6&86DhR5OediK1E1@b@^st$<<-%`VYp50H}K?~D4Erpv+VwjvQzzFgz zmo>@Sc|_D8hJKfdVsh^v?cc`#g2;H01UAtE0{SG0t)a9DNHws0{K9&B%k52nfyCRo z?&8^*xqUQLqykmfdhl6>u6o{KVxV@F8C`#SB&I;1FXkp%+T;ONSur8|fi=QlH-ZXm z&!_M-IMD2>$@fi!i9TER%|zuDc2J;u?7?dAfGjX+AeXEXCD-b(=o{*&@ms`mDjEQY zGIa3ftG}LL-%g2AM)mvfmKC>nl%F_jCJqE5Q)Ty5xIRHLg^~8JYqS;8H78}5`JLhg z0pqeixltDm9!caWl2OXg&#lJ@6{i2J@+_#&gAU zH}sU{V>8A+)^`KcbCT#54#r2iq$yj+Klwz2S1_)MRW7eE1dpn!28fwZQ6uNm!bdrY zG<6}xGWB{RlCDBEl=e zh-yu7jCt&A;}^aaTnltmFT%Vky>+?nA-K}c4QbCSF=kKLc>AG=Q-xbfv$X=&az-B- z)z9iRBqCcWHy<6gQvBP*!!6B@R z@SeAL1C8qebC+bIZ7c)HM4*0?1^rkz@tUVyZwb7tx8F&SI7s51i~|s7u~t*IntHkh znkpnTMzY$|T8}JE6*4JMj_44-V=+%F4Z_mo0X%W+64|gAICWmkXj$gruf|2H> zg{J_c54@)Ap=dRGS%)wsZUgkn_=H{6Noc#_&Q9}|X`%aC<*p{whlH*Y3XW^Y^Ykn+ zNaocc0gf!mPE(lB{lqfHQ{*X|lH>6P7-Mu#TMKJ3+Eqb!j>ZlZVmWiek(H!t8zRnR zlLSaY7qxL|tW^Wm0fw`jGb#}x_-YZv8lgWs46V9VJkP`F zo1N`n9j(f z^)gWF;)$wt=iyc3qql^!7`K(%IN_VM0)+||1C0`qe1uI@xt-9sN$ z5gxx(->#9)W)FfXV1`q&JhT41|B4xxIoe7enwjNsqon0350~i`h2{Hiuu(X&9Q}(L z3lB)B;*Vv<+j8c%)7O3nA;EO)JF0YJ3*4 zhw(thaiY&2RR&ch_#Wd|_|m???^ai$9;Eg6*zjL>*`O!XcF-}rz|IE_2} zDwU%6hptqdRton!KyrG{rX@Un&#+@_E2QLr3F^zzFE8sQwXBYKhncE;HCW1al~yW$ zfAGn#AuJuAE|=G#@q3lagvx!SR(hM0@(>K8Az-#)e2+<+kG&|j{P@eUfqe^?gyFzf z;VwDbx2wO)+kt`6V!;$6ciehElRPq2iNjy$KHnlAu5~KS>BC$gIu;uf9@WYe9ray_ z#qTo|zaexXEaY15&-;cbaH#`n;`e>FeL`iVlH z=ND@PY%mL~o6^aBlkea?C0=d9&p`fJOM8Af@>xnLvPlg5r|rbuPlsWLnEk@y4^4-F zQ$*9PEXhPF&+RsoiDiL`-&mh1QJCmWAJdTCNDRNba~e!h6`HY54@P6t_(?uCQI$j1 z#NbF1j);L?N=9Wrey8n$!hM>GtR|4fP=$t*JlUX2FK7XGw`e=*wT=SMnCeetvLV&s zs7ozlDt-viOpC&4QaZEC(Q~kPo2tYog@Lx@u|Y{)yD9lQpJnoE;ob{coQLfJf~0rk z$7+E4BwLN9t;vg&a2vfgm-N4)aVofv*(TFZxTZd4iI^96RBZefiB3aNPfixJtA_Iy z4@1*5jq2NUC2oCw)h&Qn2ZnhIza`d-L~zQ1>QGu_$#h9=+lS8wU$O`9H-7dzISQqGuh}De%EdudSZ_>$Ka% zYMY(D@vP1Xe}!A~w~ERozx2PrQcs~`%csH9#vOXCe}hFJ2w@Lw_8@ML@z(35f3Xf; z$j~%^R=Dy~?tkC{ft^tS*yWwxCl$N@GXGLUBJ4b%Gf}Si7qx(91Q%_BzT#{z{4drZ z&`6>KNt+E?P;IL30Y|HB^k{d1#H(yt1oRIE_lgH5*o&fk1;L$i?=mn@-+imO!XbphN1c*oN*5j0{Q!bw>Poa0fF%y<%~$JM&g)jgYMNEIQf3*5;Xfo9x^g1Q>T9YSx?$DQ_7rM_|(&tZAmM z!khl^0V}u<(!DsA8MF1+DjUGAEU2#x7qt_Hm(;8MqG9R54LHt{y};K zddcRU$Tsih8lRrDJ*c5SNU+k55#D9KVwYdugt0sDD^c z>M8ssEiMv!F>kU>k){pKdvlL7Tj5nR?=#Hy>Z%jKGq!Jl!M~7sZO-2%KTrF5X#B=i zzdanCWM^<82ZAG5PFl$Kth-(29T$E)D>#8<|1(J5zIUO2l3#Xw0(yED;s3#E|HcJ> z#Ql8_j)_6FfLG^J4<%u%5S5i}TSfR)u2 z&nW$-DYlahS2JyuOtJS|t{!DH(!%EDi+!665y@sUaAJIaNUX)FmZkCLH;rj#3x-4dZi`XsIIe9gAq z<<6-1>Qt%5^4kFw)k9h|I=>yK)XWk z7}CSm;_6O?cY*KcpSSll>6D20kV#aj^5rm;ihBO(L)s-;FbFVP=?-`phCC#hF{ir@AB)r0)h4S*ngs5NM<*02AdEU zE-DF%Vc>oq$k7##$gH>7XNimwvS<9#G?ncYl?u1f zW9EbO3sPu2jukjK6SMh1A99fU(lXV$2H%fpb~&Yi+AK#&wqOjiRrxUL1a8sAw&4xoLO#xPEn?-2YKNw@=eb zmhzMLah=sy+2a!bIH8NLi&nX<%a7nVcy-sub7z>&FRD}SWBgW#iEg9ZvxpLW76VxB zAm#cno-D^cpj~fdN`3`om1V-E*$MrjZKj3>Egq%6(F5cQ#eO!{6`_B_tpXRMP1LZM zAufjpVjkS_jLcf)qg@g;ki<+#3lQ`ZH5IR%`K{I1h^m!o>3RhpevfJvAJxF?myT6R z77`vC2Z-ji3vR{3lBE(2Oyj5u5ki$VwFRm4go&j?U_i;gFc$70WpvN^ z#h}pryUn<33yTPPa#rR^|Fu9w*mLh*rZF`9-08B}hQrGC!KYJyUIP$l=ix2DIMe~g{cI@?gz0j^%F<`7<)gExfM ze+>^KL(V+KcsgazkkLQsli!%sy4c?qIDicM%suj5#(Xc?s5^cDCpi zn*%hMA4rH3+agv&5YioOL@rI;`sHK(PwCnEd6|_YXgSIj_VT_A9 zAkGYOVBnnOAFl!h^We1uM(+t z`xs8Cd87T{xK5$gMi>eJ6N@kXGW+7I0%&+ zHIHGdYZDb~eb0ER&^HCvNzFufZHT@BB$Gv_+cihuSfP=s&x*k`Y@c#%t^ zCa5jCCz*jTv^7a7H2*NiX|oSYG#>8McC#Fcn1;85p{MtAmsV8yyRndo0i;UjG*hv> zPd0N6YzCr@(=t)$!M~3RX)NE}=`3;4YosFJ<>~=CzAadfL7gFb1&~)8ntos=RQ}(D z_I0Q?h&Ug-GzJOG`0~t_vh>1T91JLzl@pOA z%N4bJa#0nYX!)M;Wn+~8wY&N}OX+`+!}?}0%$7tc`onY%Us_Sl-f_v{8*RtBWgbG3 zt}&KVF%9nCX891b7LLAul(I(?Yu|fU9@ESOVff8msN8(^poC9(QCg!*2 z;I6Ivs7xJbT>RboV~t1?*{hSP5<3hPF{Bv6s2|o3!Y-hL$-(!j#)np zq4#~tO)VjC%gT9jHW&h@5HFb1kHUg=X0yp;X7V3Bqe;n~mK+pkJ7s>E&Q)MrE;j`V zd^Pe=b{u+ZRwfxiNL)jqpFvM}KiA+rq^NyN4XGmoJ{Bj~x9KV4~-kiwC!F;+n zi7ZX9mNXOvmkD_ys&8xtSXKmz9Sj-gxMXp1B1~Htg2(KsCK4*@SaW%;mi-Kh5C=kj zeEqZ~);&ft9^*1sfwvM+9c9ebr&%NuLw#GzcXD>*IdAm@QTJ?jD>c;_0R5j~@&E24 z`*gp;t$4>u3y?b~bLd&Nn9;Wja+?~?SN;qUaX(%(@{^EJg?K=r43stOH!S|XN{dsS z%r8BvNqIYs{&dr-{!1{6lpE;uK9N#`0{&ni6eRNB+(MoYqGg|tKwhv(2C@iw@R7XR zf0`K1!6ei4OSXeYo+|~t%~a<0q(R_XUb_fXHLgvNc+JhSoBs)Og$Zmt>9VhJA;vkJ zOLTT~mkD+!vg4>ILS2egiy)Xa@1&|N!$FCWk+J26BOexYz!io-OhkcPO=r;3<(|0; zUq_isV^2)GP6u^a(^qMi>8PXn9b)3pgU%YXzV$xYx7DEh|1lPt5}C(HIBrZtwta`E zIGI7Peq6>dvi*OP*gKci`9$$2T@E5K#KeDbJgF_~uV79ymuOaxpU_-6Ltx9jrad2y z2x=(52(}(gqf=Ljbk(x5f6iR9FOD=J4}k_Hj&xlaeAEzb4D)))!; zK~+qLUW-J`>XO&<3x2ZRNpnJdns#O1H%yxf)wNfejV7aZ*r(vh#(m3cW9Y~iU-z$X zT%VNuOD(LdAG=kHP3(b6MD zoD3|KJOiR|tK>b?R}{pguc52kir4bPmO)uAe~h(FW)!DEKPQEbDwb-9ji{DW006S@ z4wfkqp<710{bJ6@SdBUEngUEI)9F=gTY14@Sx!&)SG-MDD8_2WAhxZ2j(>lM%y`TX zm$0%h_0nBUE*N!MR?X~k;c3<#He<`m-HItY?CsDnXJeCz_DV`ul+`)8G!qb|as`Ob#){Jb$WjXN{Kjj%K1#^bJ^Qf(|}^FNFOo(~!=9oC#ZGeyw}t<_P?GkaU+pOnD#eCbw~41#JAjH^ykmBd?Oo66 zAzQL}^0!!)512jbiNt+iQlQPZ#6W0Sz;wEcV&i6o9mi{oU{y|glKgU?@5A?tDd?eHO|6Npp*&hth>rS=HR5ATiNc`Uo zU_qu2TU0X~Sl#o#hI$_g_!bB2w zOByixz=4*8{5)_6nfMmb+A=9YU~)uN{DKfgw*q(L!Kh$||Cig?C-D)Lfsjf7_D@@S zwPNd|BO=T7t~1O1$pW3>>-{M+pw$%I0cgDaJo$y?@DHrNV^BX?bcd)~KHcvu^+i$q zV>bsz1@kgJTWwvjDuf-EXadPQ{toE6DBfEMH)5{;e?%v+g?5 zoN+DSaP|M#1@wu-qJ0o|PVU-GMgza?&lM5><4Hw`eMH3}#`1;(C%|fqqU=eo^I9S+ z`)u?^qO=ujR?h?G=1GxMN{#~ho!k-p6HCTF~6fk2S#&a^K*^~V$(Qz9LhBbhFpcw)?vcZ_Eb{;UMfc&hk zGDm|Aba)q$JM9%wn67hHDIIyC9i zT&GP;*oZ>lS1wpjDssXw*+3PB2~&g9Xf}oaZryLh^&w;|eK_^s6`AAdmkEDqvzBmw zAC598RO~{L#ffKJw=FI*e3}Lf=6(zZ71O0UGcxdL0IGta97?C|;iZ*QSjI1(UEa;1 z!e9ZRz+4G*j6}UIYQMKa%mGf75i~S3^jy-e1+Bq%JtYE6FvR>)mdSok!!&{{YRJ5H-*@nu_wUta8|XQ%LF zv?p~NVURkHp0K@iT8kZ^r*?Ik{3-?e8~7Z|ajde!`E&t;@u3T+*R#>_c8V3+L2W#f zM-QWJ(`1_GeSv2Qj&j&S-aC3;zt|1=?&;}ib5`O-v~&b+E*H(IZAnx!+s;SLGF$B) zMbmGLR=hgFVic07BhiC~i@|rp0p=MlgB8_r+?0*ywp<2V;e)n>9>y4K_q4Y72}ToY zQOi7njN0-#a(ClQHRsZ1xK?Qu!=;2$jk5$L_zj<{W!0u^=lz-H<5HLN7(DVK57EA( z!;-3MzYvQ3s=78OmRZyN5FOVaYCW=zLOb<3s{LS$h?-3E5r!BB(T~q>^Kk9~?qK5n zia?AH2Hg#`_F)kyH9t6=G~YZ3Rvsh53?tDH?vSeT*oPDGPp3JrBLTC-V<+xKYr7AL z3Vf!eDMB6(q%m9~fnjgGMu+BEq}3=eOcjgS7(MB1hc+zxE>Lvb#4F86ww+>cY|{uw zE_nKT*)ap;3AEh^VCiYRcRImk5m?#Ujlz6!6k5YGE34%{2wStw5}N`SV)0IDs*F?h zJmQ(fgiYB?wSD2Ho5JfI4yL`E2eLy2YWips^ks0Fsf}lbO%{GTMyUleL6|3*f~4wU zWslwl=S2Q|C*)E5Nxed6w=D}-a4VX89+=(TpR!3V5?5mgZtWwZ{h1Ngp3pyhv3qe4 zcnLGRk?IZD5^7n#Ly+NGSqTlNpsDMzVSn_f@FQ6F;HJFkM%eqK9#*UeEWBUd`@p~G zhX-!`?lAr=FhmpX7g*=s!FS84$n%g#WVKKo$OD7_%cKYO#k!ESw{1ut^kdY3)m>KB ztZzrY^CwTx*TCMWHxQ2_<Z;GkuHyAg6N^jq9BgP89Y5AB= z%BgVaT2V0B4Q=iLn%g{MLZ|c3Q4?qf?pa?Y zc!D!p4PJ>7Ix0Rxjy|slXF+0R*NCc=`F=LdQFT1fhpgzKbLD4>dPB{366+F0-HrJK zof9^#^z$D28vQlRn;qt$`-jZ-moGo&mpLPr7C4V=3(b;U!U*^*gm;o3BNJ9@_Wn{O zzCw_yB2eO806^0DVW=|Q?>qelr)R2Us`v=6yT2*&+N@%L_&0wq_;9!)G41p9++sGl z1lB1v`I$EVHSC%)&&g`-7rdGB^KUPZ?05zsv4$qZyHLT1LYUSg&XA#oE0 z97-Y;oGcnM4g!d7k-3f68JIsMrCJWWnqPcGeSoSh=lf!OO6&H#+TtF5 zzzH6M`dwiCd~qPZjsKP`_1aFqYHYe<=zwH^8rzLg#eXqJEL%w?+EW4-A!zjfQ^QGQ>yOAyz&B!q2 zj}|hPQOr}^rq&ZS#*s$G+NX}{#dA1eBA$Vfj)$w*BdxRx<{qBu>Vw@=;}E>_)twHq zk%O~A(#OR{=Ehnxy|bzX+o9ga$Y^>ye=?I-RYD&^3RI$b!}jrW#>q1cH8ji@j48)5 zXeg6*5r;~F#%EMo4DxKZ<)IT71|+8k^?Y1{o0=Id3$hRGlv0Qrzk!Vn9vxbHF3?z z0^>)kFfI-`R_gEE!dMxd?o=9gv~YymD}$Rm)4y@N{Yw5JAFBk!Glj9*3MbcUgxqt@ z>UX3(pZF%uo&&`jTl304w+AB=wf~G8ROexu7>-^4VuePqmTc8Ds^vj)X>-zGdNrjV zg3LHd6;|X>0XDa)nR>cVw;21q{cI}X@bgGPZ~fp8UkMAN|7(GbnB*xp!eMn@=3{lr zc$zP@C{c;h)o3@GVLKqB;F-WClx0viXs){!ZsxhKWIG3b;(Yzdcz;jStRv0X_DVdb zUoc16I|oc2;{gTgx-O}XXR;g{TJ#i8heNUJIOodM%pnd&`+jKjKq~x1wb@JqO@=$$ z;aV*~%Vg%@^!rMaXobBZMxJ&%DIM4BaaRE0_HzWlv38!%BE9N>5o?X>z=O;L07oun zygYut>3XO53+GQ{cXIZ@pTw{&RRo~%m})O?&@`?NsXiAdeN1YS7tb}3?RRp11OLu0 zpiM*q>i5PBw`H1B{Q*c&SZ=SLtJExG*(43SqTc>48byshPUdVbu+%ibEak;*rop?w z;bgY0O6+FVD6-zl^CIQ=m0kFr?vm%WC#$!=e3{2xU*>US=3^emUZ(~!iR_w6-+5e! zV|MA6730tFTDC&jNIQ2`5#>e!n4cHN*HeHQ@i``TUVU@35BNxyfSM_bzS~-rm;mkN zBICs#V5Jt8Y5~>>a_(v9(-#El5PnH`^b@OS1&cZy;AbgNvg{2oGBt?>x{{)S4Ll$Z-Mz@^uE7 zuG_51!f>GZb~_UMgW8UGJ--XWRZB986pTMy<;Wap$mIc2T0T2I6AZ>hQ?-KKDIFE=dJScMBOLHqDx3Q4;n%ovc4J&V;1#$zgMbTx%cqrYl&qx8oBZGOc^ zPf7mTm&_X7D21(FAs5*MCWlu#WeFGHPr!gUM*|y8Jg8CUikJvj&H$pWORuKyTJUcDwO9ZpO_oI^+6U+0THr zvG%W{W>sljt%}1ys{rGCEUne-TK%v|BaFAMq%h~)rYfKiQ|vyK6e~}#2t+b`u07Ae z%?QsmqQQ%cyg&rfWHya>w>~lg*(8URrdEe4lAZ;wl!46oY&N>7%)IXXwDMAN*MX&4>ddJ|5Y);V^4cQYR=x^=&LXOQ^N{$N@<&#> z%rcP*O@kIPASA*Xur=z?$Ne)34D>4xh78@HxMUT0H-X_`}~B5Wr5E1qi^$6fd{ z+G6r{sYEkHxpx5RbzZqlw^ulRSkqeCwztcYALHlXhg@7Eh&tg2!ko*~KU+ zV!W=G^MuwqVDvlt1fb-|ptx~^yCtd2CjO>}`x4_?tW(9UTLYcX7!_w43>ip_ zd!zf^qB?%o@ZW#kiK3*uW@}LdB34oQ{ zZi~N=A`!kWkMuv^4|T8R-HUkv+`ltRUN29_0EA;g`WVJa^nPyiwg0?=a5<11 z0}xHW5-)RGI)EPgrO&8cH>%@tHRaQ_XgkQ5C48xIQ2fJeJUC1QR%6rSelH&Z8d;`c z_jhQA=z~nJL9W~FT43ir)qMbA*E^+O*eDFT5A!qd9pZeythz(6vq&(d2fVRBqr%e@ z;e@>7PXOqOj#H`Vv9B!pyd(VLLYj}O=U&baD8m;+0rt&nXjX`4+yE2j10Melxg8A@ zdOtpu@1CVCV*LIsO8<0qY$~;Ue5JF)YXLz-_#h(tc)BgB^LH7G zovEserq;&z;93McIYl4=;wCE6y^F|U@@xBfdmB>LD7P{m4_=>yIiyD<3}ojAhpKd5 zkdUdRp0X$E0s1^3z4R^MeNV;O zry){02Yj5fPpb&Rh!bCSCsr}O{?-8nlH!8?kSd+HtvsaW36k08d}YQ-z+?XgOTS>I zdyzaE`DzFC`D?)087wVo4-n#NwIf0gzxYU5cnm&}*9(94(|)?HZAG(?B$ma3-2+5x zWMg|kX>fWKOKIVTck@g1W!#bqVVqccKHmatGTWsGfZey__oc+V#wQS}(G3$&sym3o zlQn_rd6+R3`WSD4r@YmUK`8&k{NtN?XsK}w-c3wy^I3@gkZ+U06kV^+yTH;&+kr&6 z5iH2Zj&!5hQ2a~GgtEdQTz;_Zc7hg{hB}#!scj)(=hTNHZTo#)l49Ff{;)J7xU+Ya zojo?QC*0b}MPtI#hvX-$tO9Z*719H?4ZrU1K!AsV_qP=IVpY^}ay2D1tj_)R28KM` z^3SZZ>>fdIfp8Z*c>~rffM>sBA*4_AJ?V$oUe?S?-5|bMd?bB^9tG^{ z5DxLcU#xwRWIwP=WR+AM6ID9958Fi!ZJksdOx1_riot)#asyO-0-LNvh)h-Dn`k;x zBp&v=BqpTV{;4ctBsc;=7#}u_93EO<9$NKHLTYXF`Qi$A5z!`sLB4+w5I({rTnzJ% zhz3YS5)(};`>^gDwIh(&%dz*M>wr$|bw@d8VsvVjq4@JotTDM4fqVas<*Co*jg&O2 zMFN~s7b7C>EyZ7CV=Y@|Qhl6aU8w2?Ix@B`!LTB&GE;WgeL|levKBv2u<=RJsbAMa z-15)3#q{SL1}nOXvp?J>v2dmE3h?^Hd_av`(RfhWxCnHxL~f){z&W8FI0`+?jRX`h zG6-tsOTft)1ta#k`fT}E3uw~&n*?)e@krxO7-;%+8Jgp$i6?{Jhf|@LMdT%en7g$i z)`B)Z`GT{WGj6+RI`GN!;K@*b&H(KH60nsE1GBVLfElO(OSvG%aH)E1 zMoEbgRfW3~cEL*#{{5vTE%*4<4FYfAqePfdSJME3=!^FGfy-x!i<0_CD+>L(_Xrt0 z^TRPEPP1Eovd4GMihh_FM(IKcL??7!|3S}mOfp-(9V&6K#Zz5Ns1Z|u4ovL}{fr!{ zK8@V%({eBZBaBgOAHsUP?ciZZK|0c{XamaE{pe9u`JbQ5Z9P|SQX;s*k~g_o3J=HV z-+EvD@_Un7`vie1zfJl0i9sHd4$*g$j0_*NHDNCQQH+?BtHRhIiEi6C*oOylnk>(+ zL7@`S$<{gjmS_I=bzfkg=%>Vx&Sd32R>olL$O5)2haq-S}vH9Q$-x>mq@)XV*~+R<(TW>ue`%YfcYm?5#!B+ zvNEEIW5SHe#6c4)xFpeftLN9KSuPEkw5(!YH_(b_Go$Bs+c}Vb8^-+5hlq;DIm{W6 zddxR{H!>vR+@L+#u(zH8s)~oi)A+=O1ny7L%7PXgM5g` z1Fk}<O0 zMKzy0PL34IyiLkqsAX%D%JL~eVo%PLO`>1yO2=u5Qy*Ez@ChH(y_HjxSa$K7^IO-1 z_BdNSwUOylATXeK?rgCi63BPZ>sK!@*514AZ!#A6_-=+m&?bo|mELTD1CjOufet!+ zBfqW(@1gP9@gwAuQWB z!3C4ShYaUh)T?cz)GTtX>!0x3wVqJ$o-xjM4SvS$&H178(H2J;>7>rX`WQJq9rNt} z(gqxJ>;3iWS_Lo%_!C`qbx%tLBLkP{&~bWc%@gPo$pIqIZ!+RFNJ~=L%2C&NBIb>o zL{#I=5mBXKZFBMrE}gmUPqH7Sj}RuqUP}6HiCfq|pp#G&lQ4WlX8X8DHR#;z3DhIa zF$4_@=4EZYC?G2LZ_BJ;F<56iZ~@QsHaO4ECxheYp^H>IIL0JIFw@#Sn@MIok*@PC zOp;*;xPYF4TduquQHYuZF#VyJRj+dejY7g<)tGAR^^-B202~GGTsl!;+STBx;raeR zW`FaNv8SlCfi7d2$S{k|+@a0TcAiFnj7@U__O6qRW`3IR$ePXc<`*OTh+( zF(vP<3)w#n+)}vMug`Lk3*F?1+E1zV$5@s+VzQv99i@g2Gh&^|Jopg2%dC0?#Td)> zcbh~T*#Bv|q%vW!L`0>8CFS?_bk40!!d;yO6IcO`uR(?$F5(A`mBVuDc8u-ppsg z9orC1ek4Ej#cd)rH*3qwKeXwNC8PA`KA)ZTmggqp1O=RCc;1`dgj=~&V2a=@Y>ei5 ze(|bTs4&O>?3J`^G$w>{t?_F_E8-G{JV-ptMk#hfZHmpA32`M7yE~eR1xsU+sG`-&Bka9z;Vb^e3>tx2Wr=TkhTgf5EIbG`5Q;>Vzd>WK8c){&^6ttk%vjnCpL zM>rxYR>4=ib@y?&d!dj&F#o6z)GhxqJwsaQi8}e zexeZA7BXIjKjlH1L`#DzmHCv-L1WGYZ_U(zKFcsXo-m`Qy?`kf_oAF!=>2^n0aE^|2c*eb327k@%Ho2T8#StT1U=^8k zE&wvNZbf(~N3;^{c81X!2MTr`y801l z6om|kw6%Zn7VrhxDOb(}Prp%F4(I#WUT}($JPpU)$f({j(>gxHheo_e$O-&R%(>TU zGd#;DMHkU1OW^+Huyix0@T$>d1H{-sk>dsny_&v~muD&M-b&e2f_<;Ci>d9L4V?GA zA)PYyJf#aY{jEnep1}mq9Vm;5b}L6SdUqpB_8aL2d?-aI8Gkf3^U+)!4gK{s!En>$ z>Kp*?`YjW6l)<%EshvHkJ;4_Bv57b63JE%2AP?rGekVOMV~=^DvS%NV=TOzy`?LJ6 zgbzQXf7DO$1$>7bRa=1Oi81jFq(>VG7icPoh+={DHH#5s_yfhL?KPTU-q$j(b+qIu z6S6Gw>-JN4v0507`MFFAnGPssvgMY8wpc(H)_K1mU(BOek3zu%F5?H0sp;PbcW$RCgG~e^NQVQKe>7V(@*A>la2YR-* zCT>Ukhih=4(KEQ0;<=7l18c02P=K(Zr;FC>11)iVCHNFDZq18N^#o_B%AAz~$AOiE z6R$mF3}T%|3fbDGU);{{8Xp;hxa735j!UaK-S4j`{H-##7610v)@bF-tJD;?^+Pkk zCLJ*k-l+zHzh80JgRVnW<*3)) z>y(>7{X9hx^Nno%+bz^TsF{SAg^4Or0ig&w{n5i^S2>;gzS&^|-40*iZK(wByGag2 z5loDU#MSts8&vfcar%3XXwdRqC5lxN&i%kI6wNs_7nCuV8*H0j6M|F=T-UFAU8e#+ zpcrp7{K&YMnB&lqahb}pEj}SHc8peRihh>O-~VhDX#DpC4=CYW1N2T}OJkc<=vHFX zloR%2R^EB2O=Iq=!&bB^;7f+tXDjg299Au#?^rz)h`so1WpzH<*R9a^W9aK>$0OJ) z03RuC3SYLZHb^r|73dCky`Wh<_1oEG zFI->;n%n)_Kv#^r(2^W`KYe9MwA!s&8e+X>0^B4Q-^Bc$}DhQmvWqtMWL5;0m0vtC3 z5`crIUizw<&^e$9wE zxBZUJ()2q8J4UDFL(P+hF_ZK&k{65RRorJ|+)sg)$~}YJVGF}(N!4Wpu7BNt>xXV9 z{{6To#FV*1KIfrG*So^=70KrXEIo7xxzAuEjE6+jZj8OeyDl~k6=2vI-5z;Gt7A%6 zR(E~|II$ffpr(t*jG#5}Yi3$XpDq)CvF)JF!gx2+#Ug&I=`N09<|F+|c28YT!9smr z+GE6aOx}H`mu+wB7B*o#V^j@a;9$e65~u^NT@vJDJ??{|-2X&=aMNQ@wfN3abDjK=-lU1YyDUHwHvyYfqq}zZ3u}H!@DKwk~Lt zm_Zc_kz7r(l>7_B4@6Xs1Ry}Ydgc2juUf56J9N%en&UPm< zBNR|feius{uftGgW)W|Qh-watjFqQf@Y_tX5dIpeW|{!H*-vDKXxBBLctXe{v<(m$BE<~CjW@LW$CYC*(Z&GMVJ!%L-`X`@OHn)hvDX^^u}VkX zu=BW$WA5b)s5NzDmr&-+cf4jhAt*xXr`AG|~rXB;d@c zpbC=y(D2EyVfV>TwhiB5W}L3bnr92^82>(xMqzv3A4UHOc^X^AYGOquP2zv%EK*W^ zM7!3r28fcJYWCec~0Fh2@nHBwh%W#@xVMOtMctX zKf(uSKj=4=z$G&cXj1vCPgl*PN~c!@(rEne!TA90HAJ=WG%zt|zLJ<)K@g(P;&>>Th`BInBS`< zi3#~hYS(~Ma|xhfu-}xP5c2+98ef}cGPN1pwz4(DF}F!ktErzxBPwm4^ZGmRt}rhu z+;aC;lG`#c%d$~WvflI|%yy%OU>iTh7MWZJ1{>Y1_VrsaUca@o1mpAE$chluTph}b$_&Rmkv^&A~i+>SFw8YP^}9TA$$ zeHZM8dAQ9l!K7B9Yoddx05u2onF% z`^yqeDA#Sj<5nfdclAvb#t-1C`)j>J+~nSDcBTg5-I24&rn&27yffVrTf2XX=`Z0-WJ;jPeBeDu7NyNg zicOmbb85zaW~OF8v|h9@GBZxj&+p@s8d>h{CnqP`@%(bm=-=HXe69$%fnOLnhuc<(4sD)Ms#+ z&te{Tj%7>jEG#5g1Rcybxl}GRI22_wE(XHPjYYnO>9?Sg9LwiXrIu23jhAMK+KQ~^WeB)b5O5D;d@`vs zY@ihyt2G1SOig~AFVT*bepJq@15)PIazYXGDYZeNsNd{ z9?$6{j$koNP_jX0A~0Yf^wKsJUILN-W(W|aw{aLX-d4J88tpAp`f($Yd6NlCth{|h{pr7eVB{xy6}BD=W7d_9 z_9IHG9M8Z-Igy~aHsBpY79^~`GqVGByS|@t_X?|Ywx&SYO1!q!{Z^HyZSn+5IIT9j zUt0exE%-lP9W9{VjU8b-kumC+-txpLHz@wR3|-04flLXyo=7@P7QE9ja_L!q^bW4R zeFY64W_yLU(_OZczJxzp>pTNei1qh02Q_C$+U8adv`N(U)`z7Nv4>qLFaEy0ICb4U zq4TK7ODAPlZQ;!;KxnlYOkid%l-)6We!M%D)w_>wyj>6F?;lBG@AUw%MF$|TT04Q{ zR~js%5*AP})A<%z{leSTSc&yekWxH4U5#AN;;rYQq=k)B%uB!g$?YN<{MOc!O@1qf ze)z^z=<|bQ1pXerln5XtsjKvf=pt$KbFxi|t5d;JsLC*v$1kW338~4dvoe?oDymByZ6|k z%q{Jq9m8{V`8>WB_I%izE--?JIG>(DSUy6)o>GTQqrWKZk=3Zje(c==m~d<3vThkf z9Zw<16cZcju-hA+*Rf$6Eemv=<*t+zMCXH3s?zC~Vhwlgzv#K9WHja>&S!@I#GXH# zw61sn>8sXK#4g6tuaUJ&`NB`8PLF53jju`OZCY2*q@3ryK(Uh=q%gEP_W_-Fu^u6J z+GDrAA4YNQ3lHuNue9sw6N$SvSXGkiBfU6CtUhyJDSlm)CYXo#$J`gh906~;`fWUD z&OoRHGdHas!KY853st-ul8QgQN}>m&8M;sHwwiErIz8Tr z2_3(n4b^SQE-c!<#2b==G|oVx`4IRXYBasoU9?% zVAmSRD(eyyV9kIV7-MVG1Wsib+n3drG#FrOcE6fZN3gw0J8|!AKF~QCh+zxDhDAHr zrAp9#TT0^ji;5L2bTKFel!SMnt2E=s)uTs&`RM?qy@3Rh&pja?V);#}`^K7tGz{1_ zuBCrm0K1TgH!HDkb-N-4lY8+L=RNnsya3+7``ak+nXqj|g2&@J99K!AW$vZGBhUTI zVKY*bg_P=!-pw+1>!yh>CFa|=&~NbG8b^QqEjPeWX%u>DC8~vIex%lj-DuIM)oocd zB`G|fSyjTrg7N!r3??QX95k5-G*XhD?s*>nXFB&dDYOfD2zh_!Jozj|Hi{nr$_~iz59bQr~M6*7iR=zdyeu7=)wUKj%ncQa+1B`;7WaA=-_=wunzC&{-2xNKede0$W9MG}`(JK> z{EMQ$EyBxQ4Nji%f$YBgPRDWpx|E)=v$mLRUW1%PM!b+_u0`gx=8s!LzYvyG`K@c{ zL$*#*yYPZh81@o@WnH_v{s)+yD4qmr;qhS3BH_OE4Ax3J>x9Nds-=tco6BX^X zb?yojJqE6>>LLEjE>pX#YMUB98|-k_W^nWo^fkF7JS)Ke=Q(g|*>My2rXxNJlc?Ns z7H)N0U)(TovDo7!pX$9Z3uZ8PjeYWkh{x#;iZv9s1FdI z=2wGR@KpH9^U(@17!L9A`Q*j30a!}YB3hpwZt`0n2V3PvJdW)UjQ0diTt+S!X`p%_ zzQQ6yBQK95`P{(i?a5oYD!aD95U;Mk%7Wu%j{{{nuQD~vzVKtG@S!6wgW{W8%o&oW zF_PTZnC<1~@r0I50dpwGeTX+4uWK*=a+K!=x2KUvSfvKD>sYA32+Q^HQVJB+h;tA7 z+wXC@_u~l-kAMobdI>~Z&$nYC?DRWm%rpJLJ))2t!!SvC{KY5qa45rd<~0m^j+ zd_gDrNY-6x*~RyWKgta|WF@%4O)pO;H^FzDWiH`miBO{u7}~XCacVE9MMlS+inghd zr^S)nUcqCVV0PsUz$){^#Hq%!ewXS5EIR0=#8-c$?i}A0F$*xQ0zu=ID`W7PP&q6H zW^eP=2r_+0HdmgnYx%#tLDhDgGeK7Ysos~Y+?T)xi6VG;qpD3oDc{1-BB8FLK%jZL zc7T^Fl&GMV@DBFqw3~-6?I}2YUIFr$2|1v(p(vpk)of423B74`yCjZ5{^UDW9tT>2 z+kpa`Waur!!0QFNLMF79&v8cJNP}jhrjR#)>};Ext5?^dFs|BKAKcC^RFykZF~gZN ziW*J5%xb>pe*Sn&`Xyy+L0}_Pu-{0~?>ExLbsAtgPJ=XH0F>ot)S_mV3_NuYwR%Grz3{eOnz}!)|mNJ?_{%78Ul7;4d|M zwgDXtHDMzTdBP(2qvX}d^hmc9; zr*UQ~-P9}tHe)tn;2j+9{2?WDC6Y1;7W8U?iHWMSy7!^2wPF^=o9;)HkY}ke{9GLIU zD0-LNBRvj{bYM^03$a&28p$=V#@CKsBM6T#aJ|lOC+yNM2=(N}WT0XmG5Hs4%4sp8 zsEK+IGYw?F_@9+q+!eLn7p1ckZ(#bY0eALFPQCzO3xtScWOf%$+<3j*JgDWGpVcGM zwro-{oBE)*tK}}A25{Fg_E%QG&cgg)b@ZMFzD;NZj^3bnfA1?YhU=)`W94@fi*a(y zywuVBAu=Z@x{Qq*kChwVRU9j&1=Uhvm@|TGz28dQLNM;F2b?8Ndj*ohHGy*}pQ!g0 z=t&&R8o%kkGxnBs9-~f_@KZPnZCN5C*n31bkY$J368O1SUDXpY2PNFDS7Fi4Fmt(t z6Sz&o3Z-wk^A%9BZQfK~lz$pDH7|)r4 z34S{18F>~}Jf`Wx7YD_VxV{>Koif^DS{rWyzVjw1At+dp7%04osy7~~CWdZc{;ACJ zpWMbXD5ZsFj$?cC%X$u}M=w@}r6toJV zDJ{(kWPF5lNUeDbilE~^gJg{1O3QXn`Lr@NeJ>0)sOr^Nk>0 zXbHdaC~08+Fof)0R&?2aGe%j~FcR-Pxn2~}G+&BW7jB{-xFlHTapNoh%kj(N^!bL# zkTA^yh44l$jtD0V1KffQ_Y0zy;D;q)x%7GK*=5I!Dk_WWN>B`r{GUD;N*?Ae6i7GY zHDThn&@e`tHr&8+qu~4Bp^|7pnAV0xMP)4QFw(HoJdxe;*z{k^p~UQmX~#|NB0l?f zZWV`=Q{^KO=|d;NK;C?KK=zKBaeWWcB%*WVd(EEX!kL)jE4?}&>iib-u+XiMi=kl5RW4h=Buz;Hhd+zMbp zxiIqUqvazmbR|D*Xw#*5prU^hTFCE0VW0=Wl=3i);NS(8l*4@47#2YvPw<~28OAMV zy98A3HjL-fAS3?k5bluOoiBoE@-V}%BD(X4j|Lhq;PCx!-%qb^98Z;90J?HBHt2Ed2 z_{L5=Pag)v6?hBBUS{fu!s8$11+zgBpyV1{iJID8@mRryv|x0_Xp`t*NoxGqpNJPa zs_3J(x1Utk8JO`LYNH8F~Qe?(Syj7-GnG zxbNqA-rxSh2Vl!S5I-VgMaisnKCZ8Rwt?qF^#8A2+}?}7%-VS~cJ%5xq)QAYoz$UZ#d?@fJ7PxPU0 zFjltInE604kw=yq5<0x~0`oJ#pl@UT^rc!^sA;R2a%r{Cgoxjn1gMLYXqIkU+eLyH zGQvM*_N7^w(T?mX=m69JoPmTY89T;89;|1(XqslDYcZnH3agc`U!@z93u+F`POFaz zdqzK`CXvwQwW7~E^4&js)Voy^Vx3zO{~dXm`nOle-1l z?@H!cL9RBEx(E3cidRY`GUSg5;m^;wl);EzYZC)PBsYm|p$X3yj1!Nf; zPY7-Bkb@8}e_!%InX8!ErEr5p(Phe0yl%`kuXH$IV)p|s^6Y1L`#FKiW%f_O2GOu}J@*Lx>I@j@(2PmLBUY7Bw-p>d)0tS2d7-p6f3@wH8b8{L^2 zf!F!>0Uv>klDW-D>nJ!8*Ra{?syc(8zkqf$*7Z|@X2E1}soNm53Y@C_jHX^M^0Z>8 zm(m#+?9`hoN9kA)!L3w^=QKlABDd)GivxnYkrA*ZATs*FL5S|BxS@#scgAV7-CmRt ztlJIohmFf`>79eNYJ>URlI+)^q!3h{SUQqGcDyK;2^0^hhYs;ODe~Ahry6<&FLhwt zhE)teI{h=VED`kSa1UasoPhP}q#!`q_ zMR@WITbDx^N06_5{En>@{qIe$NS4dve*>IzpQssyV>!BbC4n0U;B~W!ZmIOn7SEz4 zdauNT=ctWjcIDa|aw2X!px294ksN7*q;_%`wti^?fn}8%%2jeSzB8BbzZ?r4;)gB{ z(?8EVQ}?sK$&-o+f-SBu=5fVFWj3wcBYb;L1~Z12+*xFlw`{(-s3*y9(1gM`ZXmJhgRlXhy6gsU^@IHP$2xcGopZ!q)#1e=-eE&bs|` zvdHZ$TnZ3E(XK5OMRU1C;cQjZf48h9wb3OmGF5YdnlXU^+Ly^{()Jwgb9(%9rZy{{ z(qVL`+PLLll&+a1pw-^PJtfC;Y9$z-4RXuN@32`*;GQ_LdQ{dGxMz87L_fkQMAu7 zDwMUY0xu3(@bd9n?+aXEJ@|QOw+BbG(^??suy|rne$c}5g6VtPrs-d#W+gqhV2K#e zvnApIlIazYo&brcvxoO6(yWp|*^-MBk-czJ8oA($0iQE`7|Mr-iLYcqeY>3JL5~Lj zom{Nsp(2HkcWjqey>1ZR>l!(rlK5F?2JDAHsk~Bvs7($fX*_9EdMs5VJ>;%mb z)x1l6T;7o$5f_DfYMp%78>I5yA{#e8XgK^UDp4O^HMgSSO|ingm{A<1rUIs3Ghy1M z0`(~UL{GTyTy_*BcbQ3V{j<^KTLYfC5INzS7{$_CV8Y$!1L=%;s*G&0jgD%ik9d*MxekfqW?spk`GHI)J#| z{H+G-%NY3)SW_zr$$e*BnCv)^;_$L)tEf+4k*xl@roJl?WDoHXE zMk68Xy$PmXjLkfYVS_CwoWn5CK8Ig6aLm!S0y%8)I(m{rYen?#6tzwXeBIevulp9p z&$DVoGn|-JdM&>TLtM1vw76BdIa9the&fn~=OxuoY{D4*=#ZTT)6dVpD-?-M*8mSAR2 zI>DdAVLxLh;R~8DwzRTrV~%S{S%oEgmTq=ZoM(-je-feFAg-26 zy^x7-dP(DD1P!gru4c~-IBVS^kcot#rWdVOP`&Z{BS;MU?X>gFY;w~0POH5~{gJ_E z{`ul*6rX0oRXBx#~+SSUN!B1Z@rwO zlPZJSbWy#r9jUFds&UeED7-gu4C_lbvAWcrV^*m7dS=^diOgHg4kN#=^jz*V!Q^@} z*r1ehc{Is*qFx7k#qOpfdT6oo7hmJ<-GzEF1upLD!Va3_ZCKHwtS;7*qXJ{IX z>B|Nz7Nc>&hTp#a&X_MJ6?ouMMVUUm`t1OH#b3mrtV)3S-rNGqUiSH42P%p#^6gQ# zn+RNuBDmRmG(QQORiWy3dD)9fo(G|%)NiTZ=D3l6eb7*nx*vzq77mC|GC-Bg2a#0P zi4hXJrEJB#8nS8`&FW4jZ?B9)DvyPqD+W#bEgFm#<=ZDj3dl3ItA4 z#<#@A#BXIA_%l-P2Ho3eZf(AozS(8pY+b}2$d3WKk|TO^*aYv_%P02qh9v%Hw3$DJ zTa^eU!iCYN(s?>ZW_<7~YVLoeq4`P8)b`RRcpIoWy&te!&#-iSFH8Fh{0!i4+w_rEa0R zE%J{4JDf3?+lsaR0ZCszq$o8_p{`!%k`7WGx-;T?vm}x`>x{1{%g2Ad%2(EqBflOm zCzA30qu#`e_P?Wrw1Tl=(pk~m_zhN|SVT{o-04qx%k&`=Z>im}^g8m2sWATDu$3SC z*mYA5o0HL1u?&q9WJWnQHrPgnWNCZTjmS{??=X(TnItOxT;9 zrA}XR^T*nm0#^l{n~j4DSj3-N2Afskq=I8E+*X_sui(t#=BB@Gc86`x;Y=YBt@2Rp zsk*0l`0rRFEn?B`aH$p)jKX2SQF?BYe$AQIvAc1gG~fX++sP@q*sC3*$tVb0b36PA zyP57Tx-Vz!w5pC&)VOH0Rh`K;Y&FlHM!tXl9SKkW&O(+?fx5E|`y~zhC5mKT7i678 z>0TSZIw%63V+0FhARU|e;zE*jw5cIFC|SS~F$|(oE!TW`RP)(xBV5X;CG4f#>|y$h z=Kl|yVw^95waoNsKe9g?@tSl&{zcTx61SEg#k1I0Pz#T8ZSPhKaSs`gj+zLM9G^@C zm7C&}1gig{@Ao29iUBKQXn=O7d!byTXCGw9!I?iNZNpUeQ&9#0BuXuOd-8EGjV}^{EMmFEQo1>^ote4WdMtUn(Re$`mO3iOP^IO%b{BG#1 zb(KC!3-m4=l1HjybQ@=U^N-1eHOpqpDR=xb9s4L6L{#n6T#H#2#p$^l+cQPL!R}c} z{l%{OX;G=~LoO<57r9X@YknX0Zd;;BZ1VNzqN{S}{k;8Z)cAg$rZyDuXkCW zwkY$7`hhXXdsHp=RG;1fhJirn3x@bIb@F%=XtLbU^*<ZtLUB3(uNpbxt49LU&3X z9;VBmntHosX;o!!>(@>hvdT4@pkIa&a#girR9wa+oo8U1(`k;vE^_hoB>M+#T`@Q= znkN4|uhptN$?{@zdj+M9{lMY)VpLOJa6D8PH0RP0b`=ibfvF=53J8X+hoG-qet+Sl{jf z4m=As^OE0;ha|K1z*b*h(Pm{wy%7XuV!T{A+vp7o28y+156M4Yy4h9wEbQU=naUEgGn-D{y|a42tMS6C2#2lGZW z^xbugHsB8BI-;j>p+m_QPV5AexZB*!s4x4!)jT#{72In*>gdh~G_ZYK8t!e1s7t^+ zR!BW`dEg!@FF?0jn1L<6uyJ}+f~_V#(or@evL=p%?^Nf#{{=_tga31Ng-=&!BYyaS zyU9_OkRb9y=<*=>A!n{)f*raySw60Gb|S?43nT4|FBZ=e&_)WtU?=0ECGLaLGCW#l zSK9uNdbM&;bsWQlQ+@=5u&eyyLjsDJo5V$X&G8<8zMs~;nyyaOR54;A5}NSM!v$q? z-|V8RjecEI6X(|uoAzy~>ve&`_@5xHJW;Dwrb7YPw;omK|HN0HgkRk4I~^fiuGGW7 z1Ieagu7$it4>?jAX^pJ0{H2k~eJqEA^9~FJKryuRUFOE9L#AAJY9kXH`GkXdUGF%J z*6AKo46gclpNq7K$d#K8S5HJ|4Nof@8(Do-q`1#ee#ekqpY2Vv^?t3jLcxPGRmGs| zj*9#(zF}6`ZTE5Bz0aeK0YMK|NqJRS$rPOx(928kbRH+T`PBgEeL%+VDZ!h++x!Q=qz=`B^^M3y<#n170@C&vu+mxx^=tD7t z7}R=lBI2X>^&iUHQCmR>SH8e>>Y=VxU1<8uHxJk)QvOIT8)ph`mRQ(hW6&tm(@+Hkqgwaq~pS z?QXUE0a`!6%9MASjYoT}@|gJKdCoL#UM%dT+w<#h|5Ph>7%qoccJ<AXDV7iY1VDKoI?iK5IUihiAZ z{p+`0- zdW;@HR>oWj<%7I33`5GUqiTngXr!y_+VV3-x0$Z{Y(_OBw+S^h{|bypY!wigpS%nr zHW%cl7Z1mA`I|)#gWr4yyT&C)5v8-pGPc zGW52o)u&|%Sk$7x-tbQJG*m?~0wy@(H7xCQkF@a1T1K|_3Uf9gRaVE5t(^%+NW0U* zV?^e$Q#Rxenm~63H?cvIK4Zxxbc|yM`A}+Z(%!6-2ffzJ zvet(dnCd);nzsf|AEonN*Cxi>=Y7f>3Ihrqm4%A zWn(?y^S0^`YLUraMfSKmd!L3Ir9Zg}H!i*}Opk*&tYnro?lB*WBMXkok6W#G$*#zb z`=(ktgI5KJAV*OP3%jeMrIwwFPL5U;8ODdW!VhY6j8NCfXlGjvR>z(~woiOk|MJj4 zDTZ0mVh9_MiP>w)O{O?{<@vo5D&l}?WxP^$==Hj0^w;tyz+xB!2wf*C|8#})s-idC z=e5kf<Ub$)0^p1h6Mq{#|?U2mPH=vWPKaDeigd#On_32q#pDwiPV$_Xa?K-iFQ0|?y;rnRHIaaTn0TQ>Gd?@^8Gxn8%^C$z`_&t(1NcBJH@gD@; zBeEX7kYeX76XK8O;)O`|aNqy1qWA(S)3UhTM7~%9XSmSV(nO}04cgbKZ?#&zy>8kt z#SQ{qh+QDR8X@_k6C9MH<@=+nLa7kEn+KkOqLuq4e1)A%pB=uSWTbC79H|k(gH#0$ z_3t(w$s`!3qelFyu^I^l56+W$q4vg$CZ%liPKA?*^7vxP#wz>#@MU2pMX0hhK7%Fm zoK9<&mxi^R$LID*$bXU1_8y{nZ-uP`b9YuXNB5tRW$3s1#n*d$FgXq4Mnjw%>CPwH zFW$aKlNO%%?m&L!H=NUDC(9G*|3!R{El(<>T*b%X!F0Z5-&ceE!rY+(x}9n_PW^aF zU5JGDV6c^kg@CkS!JTx?RisLU-wkqZ5I=C@8GMI{*ye*&9FTevdhhifK+H#SRavEWJP_nPO5okMK140j$zkkXhE(g# zS@#tubd+8h%x-dvRB?e++tt-uW*L~SvXbrmTAi4o9@sPC zzkfw{7V%rVPdwN&maeD2>jh)F@p;FK;b?@Z;?~Z0cK^AueU{mkI)|**ULxmGV`cTx zu17iXn=yE8x!;i1->0%#Z9{iA{{1LE;_}?i=vKEiQ=1lSaY!n_jzVlChJ+`@5m-cz zFA*WlRi-=dN*!qpo%v3uh{Kx ze9on?_{>#IWHZ?(vdmp)=cbPO#qTELi~XNtzI*WI^aGOl!o*vOv7djm&}*5u7_l$J zX?lBoqH|D4#b8$Y?d=?sLwv>kE2jxIBV{XAYEIR5YS%b&RjS>Sd+D_ZqMc+W#a=>& zk?LU~miu*%hn%c-!E;5Q@n#}TMkMUy&n9~E4PPCnuIwk}A zJ>qML#5|}rX{6)Dy(wgo>Mtvq%a@Qk!I=7)mZPntrepBVa{N^7CbQJkv9HvxR9zDKnGVNBoHNE1O#@xJA> zJM91f`+AAL`t}ynDqxO%un<`j&UB|8uG^tR?(Om$hmK1Kgy3zD>-Rn*>i|mMj<#v= zL*Fj-DJ!)`RKc~nqf}6h38ZNZ{@Il;hQ&fymvP3*qQ&NDM!)J;{+pDKlLZAuntHy; z^yV`oECzAk3X?ZaJCscJ>U^zF6d7+)Jq^2T*wTd1hVD}F*p8HLNgQgxEo@#aqhg+r ztD3GtHVFt8cO+YfOaF1KcXEfATl~K?n5uADB^} z2c176#2(fTn;Mu2O80Wt!=iezwg?WP*e7Hq^U4kK@YsZ_AfNRX(XGH8`ByF#=2C$8;|G_C& zPAMTiRowUGj~A`uUG8F7F$CDFZ#eIs*4p!tt>*LL^O0T5fD_Ea=o^)WqHe+q(=;OP zzy+l8-kmGbz(@!?6)>L+h10K4ZD!wEw&=W#+JTIVv1?TTl<|FLgYMTGw^R2Is`m=i zlS)uDbU$JuHGn-~ti&`C^k1Ma>nji;?)~o>Z;i}%kC#R3J4FV%+TKZg;hU)&b5pZy zTmWra>%9TJcUy}36=#bx@A1fdH(K!y=4OXxN%$)Yljo;Lqv~O~x6q|?eAWJN#PkbG zvu=;rpDP&b-i|tZ{jM*aZpUO;(A02B4jnFwG#7d#Fz`626fu*pgMNYh#1NMgBe^V% zlpl<6TYx`0RWpbVf6=mN>y4wJxho8W+l-TM=onn*8{N>0Gj>Sh6`AmEAy*7LR9|bE zkmI+8sD||xUxTM8C0;J*1fnxI4zB|;Q|b}yxBbW_vA`FUno-dGCg?!>8y2%g#1-}9 zMu6+d#blw_lwUJq$iY3PZI1KE5N*<0CQOV)q|+0rO;u+ca;y$z*+SDp)||zUScIMg z5GRmZ;Nyq;{eb&&0zK`B#1A=WFA;ND_c}&iw@A!vEf5bKv{QM1kyO{*1q=M78N+n8 zld-MD)BWrho#7_ph=E`Hlt6r~!ICKAE>1(!17IFVcC?80BgP|;3GnMHCxD10XfysR zjq}Jfxge@_G4JWa-5X+T&f;<3tat>J;F?Ll_hhP*zd=@oLVK%+JnmW9Kn#_Oc+ z--%zpJUa9KoKp?u0yTj?_1oqO{;pFNeZE;Rz;o9TJ^&fN8bWq7i4L)`6~rGZ$Yi@F zno6#QU#HrY)qd@~zr^9qf zlr$m*nfK~S)XD=1t0*+NJ73LQ|9gXYy%DZ4^SSg%m~BP(jYA*amxW}Sy2f)7pPF_O zhWmx3BlkmT?qRA0=Jc6AvRX0(+>mQjajO3Des!Vx<^*COeQ#9uLQIn{JZh!9@Bj5m}d(R!nvOF2na-MGKV^2RzqqF)fLlB0Bo?W$ih7$S#UvDOKfRSLety$$~fF z<-_O~lLZ{1Kr{eaoBEn?+t5ZJM*v?NBO?Fg9$jLc0X2|BFDeYzxL+UuksL7R&U3_T{P>JgIH;cB~ zrT?j*l)l5NZKq?We|8S_evSIUL|EhQ)k-7lg>Aqk4n;B`+||aJS%Y7^b#;e)wddcD zzX2&ga&|V9;KqMOR=aI!EsjFg!|kaKG&nzvEwx^eY5B(T8{KtC!`W6aNYHt0-hd4* zL+>=-^G9?|??zDyPlQnprgL*5Q#0x~F>(y2poQ%ri~u)1_8|vl#LHIYZMM#^57An# zB?fpHUFJ(nLb$n+#zdmD|ZI;_T^iPqHH|o=!qyQP% z`bhxLkt9t{hRP7!bux^Kf=b@d)*-g)7~&nsJT4Vj+@bI$Lq_I;_|WP>JU%Rb%YkH?EGa*JyUsD2$K5rx-U`o{omrBHbAK!? z-o3>JFvN6t5YD`Q)SSb5X6$76;$|z^=*T_gdhTrfCfiYzCTL}*d7Br{_ZK}X{xJ1v z$TKlS?nfx1BQQq{qzMIJ0KXz#f;n7-!?0hXU7NCm|62n29_OeGb}Fx>r{INk6h0wZ zhGyaE?;VsW&bpZ?0aB-G6FU*F1An?$0DrF~cbo&;otGouir4gUZ~)e)w2Te|o_}zE zpi!r?(I6zTYU!nu*|3TLl2pazcieBr|05L$yEDb~1F!+?Qopk=v;rKUA%MBZtH%c; zOx;p4)ST$@<8L-q{22#M*cGmSl40{L3-&XY0Tdy?If2KZRqE4+d&~oBt%rfk7hzzT z&6EnJyN!>^3e)*Zp*NTGz!_-3ZwiPD?d9>(bL--@j8H`|F|*qMbWw5JZW&c{?x8V5 z-0h}GsrUXf<5pA3Wx8t{lqa>v_@z2_;IAO{?m3by7E7n(Wcx{uL!Nc1t!iATE22v9 zqDBJ@NyMW&CyiwBin#Z97CFI&@NM6xQ0_~EM1!xB;Walsad&s$QDPBG?#j&i8q1am zH!*2;eJs{FA&SzfL(TI=fN4$w0oqfa6wM6e`Cohd+U9d+lqvK%UtH6crnRILiv{Qs!kN^4F`WrEKo z6$jHV)*Rg%{4{mD3?J%}7=hP&F2tCt?bP9CEL46VsfQ_}`>!`n!s0TBr=P^Hhc4e_ z2Ojo#ep(DZi2TY0>8f{$2J;PDS4J|3_g12IVi6OFU2f{}X}6m!0;Iv)zv>L#A{gf* zDo16b-po#K9uNjgory39iT7WpYg=r}28~#Fq3%XDO=~&G5 z#YwBE_$rN?c?Lz#Y3{ zSZF^AQsY-}zjcYyx)9U4ht%yHS#YVKf{H1W{NUP4(~|f$!Uws~!Ov~anq;rqS{$3_ zrOQ3Y76v)R<9^~=8h5k9YwZS-G#)5Kz4baCrT#S{1UiVTXpD_L3dAyft6GBFlC4BXOUj=c+%<5_k2x7S#$h(x@WVcuP6vdg{cuCNE?&<7E>L z&fG$>7%k28oqNw!oULAOYWgs^5kXtEV<)}xud~(q65P@gD!XjMjwm*qo&#B;n2{2X z#RB1-l8(b(He12RA2lU!us)!s|B3}G4HH&kb!$=vpBn-M9(pZ=l}q^iAlXjtpJ+@{ z6sZj)g21X+h+l$Z#jh$ksU5Fd;6Wnpz33iSr=Af{ZA9=y{;ltcw0J8j8iXNYB%rP; zna^safz%L6l#(2uTu+VkO{~>tj@#)ZAvbQ6v>n$q7B6~b%1}$+{^oW)FSx`Bt8*i| zrxQkO#@{(%>(#j{Tq4h==&(Qd_w0K9t%I4aw=mZS#LhevF6G;r8XjwLg*>YNxs2X} z!$Vbk$A?+$txcl`$x{f#8GLD#oRUPV9;HL^McM0(DoL84(_b-hw^o z0%Bl%Nj|DXo?5GyX+HXb0|?)n%WHNt6}s>AN%4SsD_MX4m-}3sc8yfQ_mT4y*45c7 z-RD4{4lpL%WV*>bR~|`YPzNhkE-@N}atoe+LO&Yc0KVkccibUu!y0`j@lC{)O7dm6 zsc{z;XD?QwxxnC%4kOk|i3mBCkvD}*O-B+Xi`A=|gi2Y22?*w>O(pTkx1TXO$2dLV zNtn{^j3toXz-pHK?5T;!Pw|!Yzn#)IBQrS(-pUlG3|>oPg(EUfIan_@6&KzGb2|r` zNPr32Gm94?Dx#_xHNisV1b6=BpbUFVTUAdkABz@3}mp4Y|D zcVDU%?~%B1CxqmTAOhj6J;OEUaSUXy%-BhpgOBN!Uz2g>N|^Kg#Ox*AO>;a@@c0sm zn>Y$L!GVLhN0ZgT(SLC&D0>T*NPUJ?gzK^r@hIjU9=kzlqjmA5#Rlk&Z*FDTGxwOP z!;cPX?JJa77@S0;R*0CWK&&KI;|f zK93aWG2E})26gf{79S>3Ph zaqSe6s`Wcxc+$6)eyP0arVJHn{I+AF7Q=X)?iE)CtnQa(1rj)W8sQUJ2q%0vagj~u zWx4pdw5jgTE>a$GuDZC|#!MHofjH0^TSoy03Un2vn6kB&;++*?O9lOoVOuMZ3R z*uoGwQo@fhR8<|Wxr#M{id3XCvGGMbem=ngy~O%>x!47E7HPdjG6rYl1)oh6^kLGG zHog`mRSeX%&_k=h{U6RvOCHKrS;&UG-z6(akl|Ao7DO3O>yLk1xpp)$nv5uaK1#eB zHew?^zFQC#Ib1Bx`uqL|c6jO{vRm&C-Z;}T{4FUnv@^pHc<9vg8>{4_5PYzo5PdXv z>Sf>9jv6K5(pI;D1x4zPyI-cH%o>mc@a^AumOxfV5~;@^$}a!|kl%@hlBT==xn5vr zo1|M8jcS*CqUl-_k)LLO=N+n_#4}@bnv3Qg(GhoaDp(sv;6D?8tdZ39SX@G&jj#$d z{lm6WYi*CGAaz&6`|dVP)?i_T082r~(WpQ@-gAw+8=ydWcZLUmE07a_O{J1!MNZ_{ ztMojKgIca{XUrV?mhh$&PaWQnjubc)v&75WueQpM(0B2V6h;vo=~lug1Tyh4J|kKPmCy9RaKu;|vu>vqsl+)Jq*Xy-By7V4{P;==VLt8K zdj&x+1q7C+p0+82K3CZRPUs-de=fp)@oTP~4COKc;zevSFuk8TJ@D}Q=tqb(P~JDPi>bV7NJR&FE^g%oPb%+QbELTu!W{LO5$dvZ#T(<-ESnj zoOJE{lhj6O-H(^Y@UAN-6=Im}F@I+^9xisbi&S%s->nr>yFbRO`Q>6+!fVjOjp zE(!`N7o!Xw?P0Nri2q2zoFB1k_gBzLc5Sz(G#C--SvlrmZZ5jMJxJn(!K$Pu|F{Tj z>!GdEzi;UprYa39ZC_AS|@S-3w(xWkOo*69~i%rkJBlyye zNLPRm^6@{mWb{-?Z9;0T_K%0UOg4aJ(GbhsM!q}LD*h(V>mfKzYhKc4HUbna1ZsCWcpqwgq*Qe&~q%nvZswomP9jNwm@K#pi_ z$Q%(8n3~Wjp`K$s{6)2~`=8(TwlVUan9OH$l}YPXPNaN-pt^U8(2jx>LTU^Ft}nIB4$C+AkV>!tR#1!=m)=(;#P$aV*EVNIbw#~ zS7v~nxwULv-OA;UMLK%DDY@5N+Z5FGW>`4CC;fiXb?lJJd^D`5jfPd4&u5;`lqH>gLmYRAp&$)?n%Xb#ou!z!rH_bmg$-q$7hWG% zV8*`9{T#Y4IYY9sqlGJAR~vvR_z`)Vank}@uck^ns<>4yOLigT<;sW7AgMNrrl-d} z;SX6Gs83%)E5W8Vefed=;!tTJ2>Lk18Pew}i)j^`6s5+$sBURr|K6wiQIvwA*w9ST zfp9r?GsJ}#z?4H5udr?DJsoTh)^x4m@H%Mb`Dy2-h(tZFh;LDLeX`tFT&F{K@;LM# zIbd03E$<8(kHcX}9sCP!-6OmnS_Gl1qc=$iFl-ZCSa6$l*6TWELz3T==_@%e7Vv{= z%~{d16|WeHoIW+ir6IU4&?KC^9iX%5Nf@SbWioiUJvaHlIXT8gYY-pg##1?{RV>(~ z@w1Oh_PdFQ1!gqdZ3 zWtJGHS~y#98P9ZW|4cG_lPGH04MA-Xeo2Z~?eKen%kj74%imz>IRUD(uRYpG>aRiw zjmQ{0+{f_e4JzPSZOI4X>EbEIkCC5HyriDdZGCTUlS-H=R?YL0&9mYaam%QK@GCY5 zb`cDLa}s}4acq5xJ{+E*nSyJ+s<0?AYH>v%PZQ}V5^?4J^XUEJxKu5iBh{;6cKr_7x2R=Zawgz_L98dCLWhoIUjA>Zbx7^P~t1PX3wdN zYKS2>Cj*)r`cv~QnI01j#!LM77k`4pQsF*c+3|)yW6?Om1hPY)38sL%Ul;1kVkLgn zteU)}REc-0yF5~7(|{{4E4{+vJIG%mtAojU4qQ>Zg|O;Pv-`aw@ZiCC^~LrtY0>|T zH)&7nOu;VG^XrIA+F-hH_n!{rqLLP?qaAM~$t)ZQ@r{&x=}J}pIkVuE;fORS_+S?h z1>4raija;oqU0YmC9CakuYXQ6aN(+UXe%VUYjq4iXL~MK37z^s5;fupzs@~(f!C9= zY|a^i*m?l(bW?+OK|a`R9X4v2v7bWRvE{LTn#=2rf8!vv-d86BbbNcblx|3ucBD(S zO%JEGQBpN+z`09Ot;sDjf6E3TU#Knq|Mw7!ya(BLJ4IFVepQ@nJM>i8*t*;>eBhR3 zye}h{1b5YbqxTDnJUe*O*X!3O-&gwU$7)-7?Og~MAVv;Bu{e_ zS$TI=cyb{UwN774{+G>7{r11z&}4e?Lg&pRceb0MMx3-gjPpg-m}?zOeL&>G`jrh_ z#c>1YHH44T7QOk)np9K8A-LBY4(c{Z@7kkq1#CMipeO2+hegCGhxeZuev)o+2aL{yQPI9iv~BwT zl(ym%a~GeTJAm=AhSRi4RljT5HO0D!`1>p8UX?uDubD!nuabO!UnR(+`ChpF|FmatLwlq;L=ts8B58L;lHsr1s^y#4%_7fn|* zw}CpJ@n41yzvBuH^T;)vInwnL+Ls~Uk`b9Y)47x>jA}-1^}bQ`)W843wLa0K({ad9 zpN?yxD<)?UH6i_E%l+QFiN5rxNuolk)nLvRuAS-hY9CWW+3xnNE0Fdq%>B=Z;ihcT zEoAfXyhLV519dTWXwvGh5 z8?nwOWn6$yS2=uK9Db}v9>^Jd3VW^mvhVwlFkGFOm|v-knadt$F6klmo*v%dY7I+* z52cA^l`Z?&%(r@0ql1ix(|ssDyr~Uey->q5X>v89N;i@4xti7(*I`^?$!OU5&Ldt| zTVeQrfWO@nj&0Ys{Bzg##=Q8;H{!x!DAasF_fr0*!awWK282_c0gI6K9F`1vwJ5bA z6eR*ND5Av~CHGKf0hU(TeavZa2(|@CmuUGx==tpYme`CGvYO9uVg2OdNqB54sah3_ zDa~GANFBWhybHRbp}Bl)f6WFuDJxD1q}67;+;>-YjheR;T$gR46-ky)U%-&I!2HTF zGG+g1`FM(z-%pXQXd_G}KeRdDNHybt9>OE<7kV*vYaM6g(=ra!gQPiav#&q98np-M zmdku(*ljhM?Huh-fsm^%X7D0xMI+9(XzUI*SlIMyudrcgMt&BJu(m`S6MLZ>+?(@pfH`E``$Pz}!bFoJY-1-34}h+O$1gc{9ytr5s=062{!_ntzF#(j^}UUB|K5 z&BT>X`9Y&Pp8=f&M$bG?Rr;KMW!jPS9xPumxNqR@U0iJiks@!TSR< z{>T)~N^2e%y9xJ>^>zNhdDL;iehoWh^rGM_9!6FD9x~>Qm4I0iZc#32w96(q+jQ5B zU&vyAT}qBSO}6uYds52NdZ`o-j!ZCE%QbPXVg8=(P7L}^y4&-)cFYbmDksNP^L~%t z4W5Xe>aihb6h|KOyJe$*{Pq>HqM-eq273Um+4^SW`t^mT!iF7}aEY6i2HvdX<$yzd z=bHuAMACl(Mb#rT;zP@}dXoFrf?LC85xs(~Hfj0F#4V#&eD~W^zP{`ZW_v)3mWBp| ztM%zLyp~+dj72YGXyPVv;bT$$f0oJB`T+^ipjw!?GlNh;UsVDD4YxI251$q=xp{n9vM+LEn~G;=2u-!}S;~ z1*Z9FP`f*UKCy$)a9tfL&W*+BnRSW?vyKkMRTFUE#>K{}ajk7;94a-FFS;z*gVIh(JxVa+Ny z4@F#@c$%K9P?JjBYI-4W+YOice6?4J%@k|xUH3Lli0rv^egP?1C|9^UD|)q11^ckE zEI&>T-}M;gpYH1O$nnNT3F)EZQ^@78z49@ z4AXIPOY6wLHMHx@Fv7${59DqF#eqcb7}px^g!|0#&qg_0uvTA^RI-qVg+EXjW23PV zfNAqdf#hi220r(i6&0QGV-hdSD6%I)ol2G__mYH^NvcUT>=>`(el4~+Lr`w{F!N85 zO=kbyA5#RLLMgpCl4!CaO=O=Jn)aeP4bTx`^H$7;FAqnIEbz~$5>0vUtdALXzQCM3 zVXN|09SsHg{G~40EJOf&W^Kk<2@X7OTQm`)o_cP=(CQ3}ae@0Jj0NBU>l5NI&>PYQnR=cWBWT@3%(i=HG> zrZYR}>`aWeCkSn&v-l5{xH;537i_KQRzGqcSaew}DiSbq%QyW_y-?&DnMAwPn|N)Y z06Ge7Ta$gBA88bbNlg|0qm_dbSntb&Cp#^ zBHcMO3`pl7h;(;%cMT0ANOyNB9Rkv=XXdByKi73W!kOpg%(G+d757?u?|V|rtMwnE z@f_UCTD$R8YYo~%I}KxU>g~4J4Uk9@IZ}#7OH5zt)`cU8c1YIHi;TDwm#!3=Ci#HySsD&owqddC!If65Ni}!FLk8}@bwIfA(Y^!QL>%3C9P0I%b z>s%F8ns4MRS01VGq~0=VBC~bD*z`};c=|cS`y})&*XYAltH<;}@YEIl$R)t!l|L}k zEzLgg==1y>!~#;IKY+qY2zo<4CR!1fkTkAPMCoNHwaY$<9>a3_tvX<8E!*Rz2f;3~ z;DBMVP(Oa-co1!$!gtGtKxVNG5ebhf(zt>=g%aZZiD^1bi1NZ;T*--415eZEj_d5S z?C=)3E3jR6MTD@;F|dzNp@!i^)vjwTvY0V>4E$r+I&09fPUR&wQ|rpd#WR-J!8G>S zW|t=V)g9YlPjfJ|`pjH^QuT?uK)|#&C1MVeeytAQ13bae4=Mx*_#G+bg4ITAkbhPs=gz$dm*r z|4q)LcAPNh$tXE7u~HIBx^nC@w!9j&5j~YX#m{No$8;q`if@x?Pr(Ew9O9Ar*S^PT zts;T~NB$M%PQ10M_wZH|)^Rd}f|N*c63b(BPrOMLf{vXe=e#weYO$wa`Oazyq483I z;h6(Yr$Ph-<^*YR5fyLn&vF++r%IiwctJj1;jF#6kDmO#koO*;%r-=U-Mn2%T3@mU zF9;LkxXKvUrLJ~s)GhAUC&mo6K79_g?a_AEA^UcQvDH@l7nevMOR;+?n%dO^Oy_$g zU>B5~1lXLk3=7Ub2Z$QCDGi{VXR;2)C&=5v!VX=oVt7>CB8Pi*Q242MiPL=q{|V0k z&KF5FhYZ>IYRpqn@9Gs1hs@?AY5K8X2V%vDRo%gab^>NV_WDq1%Py<^|+nlLWOm%&QsnHcr$PS)a+TbeHKwOh{smAaTWDD$;?vp+C_TL4Cavt?`P)_ft`Z zPo+q??$NUx)5hqT1?C|6L9yPYz{FwS59UpBW6VuyNrc*%=G3EcD?x?|83yE_K-&v0 zKTnG%;K`yhI+GS=5nlO};B4ND>lN9gS=ddT{h-x7qBwL&9 zcI|+C^6UU%_0Re-z_Zm7rmNGZuJ$V99@pDiNf+E@S@T6PtMb=tJ*XbU zamu|!#9Yl7o|hNr2xFPZgMbxeLPB=FU@OQqJMZ^50hbdJ5+>xi_G?+m!K^QkK#Y^K7=y4c2h*+{S79?q$b4q+rj z(cx)H93RiV@R;%l9M|PAsB4H7p)zv)j@g#gC3diOF=lK+U`xLcUh8TCy&hPHpEPR1>>l~yxfY2@(9l}F4-v13QNO)32|#L9E{<+yW_ z@{GqRZgZ0JwGQg@T=iYlMyB#9$DY#@=<{+upc$g%(kR;U%8!<*Awrp9!$yxPxJ~}D)_Q4L%@(H7z*Hx1V zS>K12O_=(Jwixa!1tbCbE$c`#Yh|WUYO0J2_aEmYnKyL438YL0E$r{SVW)jM2h!_% z#<7DO&61&^M{m5!{u!uZyY3nl6-44O<8t?Fy3oW8A9D~j1!2=BHY|G1o@K%e_^RQ( z@WIpBX+?7B2=&jqF4XpDkMXSuM7#{>t0qhC?v1Jl9wk+F=7kN*^nS1nXP<(VaH7In zJ$GJ@BD=3fe=(mW$P}xjI9s&373T84vG#2IDuS()RQKdvU)ioX<@hhA7m@9%WcB8n z6+Z0#2y^DDeaGlnUUkVUU;}CZ!V!U?!!{Z1ZSVLgXZ%K-%5{I7AllFKIe*C)WbY_N zn`v9=C;;}mO&F)*A4o0Afk~)>MC$*8&#z%&W+)PZp=kJ$1h8<0tU3He;_KrN*(u}R z>D!lMfruDNx%K=0Hrd}$#?x!NA>L|^NKL(1CUk6cjINfSy?tYM7yHNOyq@rUSf_V5 zO9z{<#F}*49i~}Dy)DnNJO|;h7rVywwwTcDFl46lod`dxXS5$g7~9Zp#FVLXZZUNH zDkxrC_;G8yqEi1M#bk#^)uiz{!nj0LPQ#ZO^ZVAsFx^>|1}OJH6=((f)2G7_`3VB~ zrMQ=~B(sS!%$@Gg0c;q%mMNNQnc^>X$y2NtFMriIZR$mU%&R^IqUv??-Bs1CnfoY_ zMaXiA?fp!icoOIgk?hr+2Cy7fl{tB&ToCeu~bAoYNHf7nnjFQozu_a zMGj76jyX&Es$dp-XvoiZ3SuauGgOTy#pWQbK#`WS>Mqa5U2r>}e)LSaGWsg|!20w` zv`&}SVc*HMqqg~}FzvjxOQzJ*Mk8DYVQRhSObfG7kvDySXX+p#-J$i9%SW1o<|eXd zt^dYhFby+NPOHuEhV&tKxmd&1!5i){pnQ6;SWNNts#KG8P=NKiY{L9SD3NGv0=j#L zBNe;hKEXH7hCXw4$W&-ngXazs-^+Z-cFU+_ztni@Cge%mNjA;2@fmcmQOxtHM0Kn% zEpicZp?*I7V51LDlao8FyBe~CU_^ue5HTZMJL2oZCdLN?dkpuX=Gmo}*+qD1n)SJG zCbcb;NwM|_Pb?|l7g{e&z&=k3x-`Om=pqyGvKnK*Ww0@*(423A6NAol4m#d{&N7h1 zb3PS*ooyHl$U7z7sOcnHnTxOfGg$6RcwuEL3V4kfwP+}I@i912E7?(TI|g6>+C=}9 zGn}OusANNtM&5joL#gba1zoR=EAoOY%#ig0GlcW*E2pKju!)w@f~DRi%_%cy*r)8M z)a-KD$fnIkfaXFW((~gfwE%JNlyh9H&+(eZ+Tbtp!{p%aAU>YS?Tvt%Zvk0G(e34! z(;*84HB4_K?KN5baBF^4(}axC$}d`ebGjl>wI0wQmv4bK#WLT3dE?anx#5rNaAk`c zISM69CQP#&*HpF-r!Ex}LiDXZjEX}9|2Rh;OFWE8kC)WY8UN~0CnUYJS=;N(w{$wk2`Os+Q#43oXV{%&%gw!7 zUhMnVEdk;15;Px?NSKH}p_iJCssVn?i~_4o`jIY-J0ufKRu}Nn1?Ou4kTgU*r;T7~ zgnk#P!<_Ls+E+%*R}1M}T3*W*^5ou<`rzhl_ZTXg^IBCp`!`qG0Z03Vy)7iT9{_>{rsP&efn*8h1!HUC5vxytWQWPi7CB2V+sh8#0H{BogSP{)B{6<)tL*&q>?*lxGEF5W5SrHf2 z5N`2hKxWucJ4D`ZNxb(%|Bjv`ku)3sK6i{MW^pbo+PosKS8dsU&oelDKh%Y&7r#v* zATSWngYWa2qn`caMQ%1H({|sajwI$%DDTMu|9q@-8Jr#k{^Y|cQYN;nft(zF!j9+5 z9oK_qBm%~sQ12^B1{^WGGK#)4G>REdIu)=+LV;Atuk`GP4o6RDn`ROZZAj3WY-?Ne zWo7U@6K#DGYW$tcpeZJ?$gj*g!X>2RH~DQ}Dv5T!N#AXXpZs8ct+jM8#4{lGTUFwZ ziG3A@`Z1e$+z*sHS3*W&Of;rr*LwF!h6#M?Y=*>dZDLAtFsSGF$HLF{kLAKemMugk zG=0c5VmMR!@Ug8}u~RWp+v&cI7;V058@-Z8uO1@~=zGU-tov0l)N#(}10p5$-bjZf zMy)72*T>y7d8rQf4)rj4S~IO@L~M z=4XtfqX4;|A(CZE$5{!G*HE3(*tjJ^OX28d%kDSzHvPAiyb^u%Di{Q4YY8p8s;CI! zjgLLB8^Sq`N)Ob&vB5aV1>Q}W-osA@xS7S5g1&^CN>3fI51(4fdPCE>sK6DpjL(B5k>7B_QSXRQg8 zopjg|*?d>?gCYk}8I&)NH#r$wntqcOH)TGEe*Gzjp$Gmr^rTNd`{(Oza?sQg;PiRxJ+1B{}A^L-Gar`&ryKF`<;rGGCJ-pHi7^n{+gMcLjVb zagea8b?^&kmp;WPteLPI3(AYxVX&y=q0Z$iD&&)009{88=C?VJM27M*UXn(NsDG9h z7_~jke2l$J7)d;N=6keJXZR!E`QDbP;XCOu8y0JMi71>R=kme9<^&bF33qnat0iRl z%)g0tMJA{|5(}f0v^X}EY_QpK3J~|5z9-+!{Apktw>O8vP2#BKtlgaVN3<+1=k*-T z8swchhx@xEAUcaaZ0k}Is&RjcJqij+?7<)b2h#mMCMeDBmfj3`x72(7VW+sq9;+8e)LC(C zwfgtM{8wclrppVOwpx}PitV7Va!fQ>dQVw^I%AO+icG~ZShpRm{;8XY{Wk-{$zHRm zyv~@;PVxRl7m@kAUq?K-Rg5Cx_R&W5`DVakP*B3@w8j>w!CD-kitRj8myUf*$T>C^ zYCpOoWtndRo~d~wen+#kTg_=M+FKScne(s{VF5?~9CP!+bE?8Qsjqc8%jP3EYHj=? zHtEstSkl`oO8mmRydiG)U}g_{nVa_B8_UMhgdLk)H;2e|@<`WeEY5GvrB|YC8Qvk) zW0wD`iY3Ei(9op+04H|NW{=|UfIb$HdJhXRbo2>Qisiv?-Dzrei6SZMoEcoyW>t#? z?7}e-)aXYl7ZPvNz4bE&Asj-zwoguavTL&`xY?gk`I1V!RwyyyyG*EklVsI5fO&`h zlcH;lE!^A}U|DgGV&~x~7Ss)pNlyw_UrC+A_Z^TCLCjwibd-iT72+=NCPt&m?UE>x z*>n9Wr`lMtxaRDy*je1JJ~it?-X8M>=kjxBP1VA$5B*VBsXe1`S( zWp)i^+Yc`n%oSa{YUIEVrQCnOm9k`mU6)<)e8@c+BZy+SAemG`S-*CB`|3Of>xnr_ zFe3S#5@zyGJh}5biT*0w-Jx8Mi2^XqRJ{J znm_NbzWpP>@b>KJ#@sh&w_a`60=GoJN$K8-^5IqN31h1qlQr~r&8eJO5`?JY$&P^n z<2S}pS?@4)YyIrGulA{k@IZB1`F3&ob9VK+*{>kGl;0`cx40ZeBihZN;cq0$7B|7Q z{2V_eu7)R08Gm-pyuriK)OXA|1rAoT%8;cS5x-Txy0@n_IE=g`Atep6_kR=oE`_65 z)6uwD0Y6zUT3alv$b=oGcXx0+yKq?GI!fs?=5?${kwI5njvvFm3{pHF?|7bMe8&D# zPm%Cjjw&)%IW~W3V`}uq;J@&NL3ZL8$7@B>Ta#%I$?&2)`hI6|sn$E!Y}MPJJN z_+Q-}ejY_Wtr|mRl*B!B#8oz4$-jYw`a;^D#KcHD;{!RyGK+ggy4rN7wk)iW9p+ow zNFZTtMU0~ml`c?`FGn}y!isVI&H3xy&*uM5Fa1{nhL_B#N2a=EE$ft9kFZM53*Fo~ z&8TJ4Cr`u=zvonaPH8u+$bXgG(RZj7XCcS!@UHQA{(DV~vZ?cu!h41=# zsDI1nJkELo2}t@{AWoPow>(xvHBVuh$2I!3>jREw0m0oj07y(#;btEzWb8kblXGhN zqYuAUuV!{vA=o8;lSerAEW+iP57x zLU+AIl4eHVm&&6cD{or;%I6$O_``I564?|dtcVdgp|dk-A3s z621!+S^FT+Klp|%=d_F1yJC1By5%CFsYJoW{ zdGJw|6wzs~@7L~^KB`ZI)7q!wj52KkR~18+ECAxbrqnM);DXnS0MQBKMLjDH6b$af za$j5oVi$Q#GUJTl;izb8=o#ToRB+{d*?-w)!~TDVG%htQ@~zs0Z3DsVhU6IVvqsS~ zGt3s-dyj2NgUPP}d^T#Cl6C;F(^8u8HV1lzcmhkUc{#x{h3+v%SUHlw9@1|}96qGL zQc}Hq_SQ2BM(b)#Vd$1R>?;@$q@$8`UzLd>G$$wKQ7UGO5Pf28Z|pUx+V=clH=ur#6?F^Wn)#XZ5v!`^$^VZ?J;GzXe zw}APpA%yuh@d!f>j`|+F0^{nlC!~O9VXgjgLD9CZYhLwiP2~@#N21_-ag-Ad97%v3 z)Zg%C(dqM_P65o6di{skRg~^xotV@$O^?O724>^-dFK3nz|hFn(Wqch@a9 z#eEka;_(i9-G=#Uqp)c<8Lzhr+~V6XSuIXK(M4r5X6^#r=Juy}r*hS>PrA zmUhCUfVu8xzf=LjV%=`Vz!BP(aTqXSk*DE`agE< z);=6bd%3>w&DnD&z1%h*J1{`+*jM=0E~ckj<68E5VHEw!k-UWSwOxG{J}(`UHSDly znq&`sLKW8>Ywa}tc_uM2s}Qm2-K${n|M<+{E{ok1UaG^ce{G3WlQt3`rcFKMzhitB zmJdZ_*hm!BtsQgWQQx(eRd0DjENL7czKe7`;d1ON$^N~~8Xu!~<-1f;Z%Wh9hrvW|TxY4U;k$Y5ict0*aRauOd$m}T zQ8Cu9W*$I!DBP!Zcapks4uu0aEhWizAxVOqA>BzYwHE5%$0}+&Yx7{aTY?njDHd|{ zqFHh>`m+RzH2nmNJa_QHkD8+k1nYYG-Z_sqk*vKrQlMZT{=-cS66`?@cTjl<3vee0 zSo3Rpvqi5lfovv&C{#Wzm$dN(w(tUZ^!VhzxWatKs-MZmcx6CfTzxU4xfSlY6=zM& z!>N54yV6EWG=xUuRym$(LVp8Ik0nfr<{=r@sk`RSeGz`qL{?ANwx< zG#OL5vyPq`GqS$WdV5+W+L~Mv2sX{!sg*H&^7$7HV21THDoSq6OrVFCt+2oJKg;LF zgkvPryGTy7dKAQOh2tG&R#lw}Wdd`%W7<@dnp0rst`z7dlj!fQa$eDJtg>hN$X~9J zeFY=l{Ng(!;!y{w=TsYHpoSp`uUCAFyHuXploNirwC!Q3jZG)FhNRg_&7t4*H(j-S z;tzK-uY-7Y*SRMw;zPfSJ`yGFir}x!Bi=KYI*ra3bcS7)`HjqJ8V{>2(GRXt<}kX? z$>&Op&VHtHEOnJ@X%s!+b!AWfld%(KKxqn*94Yy3)#b@E6jm`pd~U3KcC8VQ`-CNB zV-B)j|BzU)!a`h^wRL`7rEqAG?GqT2W4Jp6MvHkQn^wpCL5Vl1EaNq-YJr&9%^DRU zVXweqA1iE%OR{jdYC!ni!&~9-~S3 zSoe{gYX1xEWCeP(_z3&Qs8_UT3$AaI`}Wc2Jj=XPM0pBnNkeg%LC?>(%9@SsKvgqZ z{`0>pYY3AR(9T(_Xy=tuPzJ;&3SKDp`RW~Kh0)nr=Lrlnfy?RXW%X_*mZg%4Tkd^s z72z!RBnu#Rh^kGdU;XQK?P(XY7wr<9D+)#)k?XO1!Z$vg#uu)W33$Xzl-TTaC~vW` zcPQ(CRxr=skM)tv_=PO{PW(wO^_uEwp>|!*Y;=S5u&u(*=ox_UlX}xp)82SL>e~W{ ztE(mQ=f*Ps!tz!_?WUjcq&wBeGUDDZ?L_iR|J=~%hd5XaKsOxson{I^PwMdZa}x2a ztHv5w>LYDtUBsH~+-!Lp>_@%vUPwz%y#l^!WDLSIXT4R@SH~UPY7oC$b0-Wh?hqN>e7ZbVgJ!Ov^kys)aW(BBNSl+ z5k!s6v&}eluXIAyw~jljU7LCJ zE1+|)6Xzq$&j;lj2TZZ6OJUC#M`p$=C&v?&79E_pxaLECHJ*p3#Afa`D;poU$8IX! z;uGHt-R$qD`Zn_<=cUO`kS3R)Ic_ESJ-0P=4!3z+b7bF)F*5DsdQvm{!^r|V$73o= z9WFHUEPQMJ6Y)m?lSzeJ)2`UwzGy(hJLA@=-wJD6z_o~+|(#Wxo&T6Sk8 zZs%89wj5kGx20F-3xDM3DggjMGJRQZb{fA=QVY+OQzasbFaqKWZZPuY*P^7upY6VB z=YOt*Y|3?;0V6gxHURYs!HLCY7hAFpw*hDV^8#%1|6YeLQDy)FB0Z9s zheva>$Jvrg{ibG635-L``Ot94m;2#Yuf!01a5FC}%IfMX0L;)!(UU3lKh~d+WDkM+ zT>3DQl7ov%J@8qAAu<#4D|oZ;3CVbWrQq++y-O`FZb_x3;VXw-AeshbeKs|5WE7P3~~LjadvS@xmfn7ce~n1 zcsBLrKkb6`;obJ=5%Tn-5Xy8iTd7hCx$nFD7DkYdwrau4Q{(>G?V{14qC4=DUe|im<6Mq@9 z8eJtaR@52fcR?rgpXlDowh?ulzfrHT_i>6&*;stg83SBoHHyk<5$SS7>MgiJ!bNQW zMtS!sHTH>SP@5L{WGV8$#(io;4L*JP(^SO zPfyMMdV^Tf{VfscVNmE;8fqMjd^Y9+!wO85-PQ(jVfdkb56edDBgm-OFMownmE1OJV>++;_wPwY1NUQIly)Izv244%T(|v)rx_A*%fwn z1x`62mco4Kcpc?5C_iSJlpb4ymcVuqFfWikY~Asqz|-CsA$* z96&TAx!1S?UvGUSeJM~Cq>bpM(oqTR6j30E#P|8bxUNw&gfz?=$a}c)fhE5Z@HBw< z_*`noJ;M^D_iemj@rf?~uoz$oOzU|MdW)s890*#}S*+y3-y`V|eVB#>3i?h^R?7%y z-S8O?Ur^h4&^2Cxj{7!GaYo)Io(%fKloH$4dLkmsQ8!A3taUTaNi+J@a5eI}_?U>n zwlb_i^zGRq4~@P?j35)>Rf@I@E#wQw5kk!c$~c8|mpm(VwOUwjS@X!#nX4@PETbk|1WF%0h zv&FN}QteaH5N8^4tDbAvtK*$J{@J7U?}7URyHQ!dl$4aTwpAvzfG^MQoyId{XJ_Xo zxk)TV{a$s4(mnpGk4)Y9ze-R`9qpFAzr?3-S(Y?_MWP$Vbs2~rgwl&O%C{i&`x2N? z?H{Oydf~7ZU__*y!$?)R+Lv?qxGNE?JvEzf7IJv(#P9mcJHv|Q9mD<00Vub>I-W0K zB&i4$_G*1Ynv6J_bs17|ruCVsPi(lHRR4PTf}u!>egb+D>HAMPzguICDzh#HM%A`e z?@!?K$V}5T>V#=H`NT2NEqOm$_om5rhS75AIV*^a|5NBxJ4E*j87@P6qHos}T5I-l z;H#=GuT$Ue9_NVuga&O9OR==L|QQ;E@N1Z6US5Xg5?W$vI zh=s_XD5}sFPzE#HNo0wu-O_hzrI?c4OaJ}zM*?$A4qNY!ED|~WTyQu8IQ@a;N%KsM zmE8=JoOO!AwD}z$#-Xe3ax|F_L2{V-(Ou#8{z82-F;kNVu9Mhl8ExrXNFPy(Gb?IDddaacQ>5p10?spF%=QE)1Rn4ajc+w7a!1JXNiP)z8IWNnRLl)YsQv5<%A=Uox*0a_U;Jma39Cl zG3iE;(Z1XO%HFWLko=iNw2F%Hz<#NH&gm7}tCZG_(qu!pd;VjpM7??Kn;)9Y#J@1} zg4+byQFlg{9+m!&Omk;k`4xP+Yv;8aG<7&GHMV<~ljl10&gT&x(Th0Y5-HcaJz|kl z38Z_rAQ0yW|B0N-JM%K4?{;&nWPgYD5f616_tg^17@!G}DeN~VOBJ%#C zIbNm`)0FE*s1c_Yu1}ty27i|X4_?`=j{avE#%J_Xc}4@Q+B35IdM&P19@aD^P~49? z*bgEsp~|$X!wjNp-J}$uvZK%!At6iI6RNShRO2%FQX7} zhf|sZp4#q0y*ZucjQjfw0X_XMol{pQTg_rFjSO|@O2B{q&8Oy_@Qkqj^R?e#(BOuV zZpL916tK5MN9tZHH9g}zrODmrB7{%B!Ov8ym0`rQ@HoS>fx6rBO7(F(-Uf3IS}6GH zV4?m@!`DRz(EW3vy9ojqDmpY>0faRRb>};T5{hB`HA4ek6b4F;an=JV`jvolqOO=* zj!mtZylFShhzQmzOR5E`zb#)+>D$kI&iNh)wv}|dnGf|urPh3;tQP<*wi|?6>Qe5x zl8~>B9R@E%5S+M^oOp(NgqH2LJn5BwnAD{(wU8dX24Q< zYax!O_ejr&%_mhji1ntLYGqa0Ofl?+Yz=x`bjWIF(~~WKr=t%`YTqEr5{HXYo$nLN zEXF#p#$UT9(1H02lWEF-?x9s3CYx`Rbk$0Jir>J#SLRsZmT)P3r~jm4wWvRtzqS+s zIGfTpNf9^L0K9U=V;)m4yKda%4SA!D`j+!-O_y#fP4*^ypqQ3idp@Eu^{YA92Gi)@ z?Sx2M5dm+aMIZV)c7|L&9~q8%)`Y7`z~rZ!mLV-@)}OYB!#%%UqQN>IJlfX zQMpvMp!zxs&2!-2oP#)rp`g&StNx-cyPDn~BU!gUEZzUDRgH+jJIMMmtLci`q&*Z^ z2fJG`=CWMJyp>G5FY`DaK=C76J^@*dDB^D0gQ+8^al5Bw6|3Poe6ES?9$d63B0}{f zOXzgv-8~LGUN4cLjOcK$N9R;PpDAC5_Q0;B?k!yMb#D~Z>9n%3R5SQ=XAktlQ?5MxK z)&SkA6;&nVM-`%3p$$!jZ}VW{B7f&UM{efR7KzZ$NR?L;5MxlX3%4=8M^R$~J9yYuGTHF&hcxK0L zI?T$s*Y>vFUzxIUyo+4wlEloq3G@0s7U)RVEDLVWNf0p<=QL4*T7oB(T^2h7;VW*R^l(` zxyB1@JUJVR+gz-dABjp4n$GpINr#w5dF@|~J3JrC*qnfF(Rali4ulaN5@`<=#NXI> zGA&4S7XrALT*yXJYB)Cot#(pIcor7j?W?lfw?GaK>qf=uvPpS%BgAD}vOTD$`4++Pgq_7F^Oj>W;2vugIe6=)bPwcEJ3QA!z0bF7#wp3z(`cJ&FSbPwTPRn- znc42tJ7}s^d=+q0HB8$WzejSV)@&;MTI!40SqO0DUO1)9K4E9NMD+I{5dpCvrtQz8 YdMNZ}_(y6R0_-C#@m{=K)Zp{~0Y6I7ZU6uP literal 0 HcmV?d00001 diff --git a/Resources/barvid2.gif b/Resources/barvid2.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e8499a61801ccd35ce6d518b3cedd448ec6dbca GIT binary patch literal 128234 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

+1o(IJS`r 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ǔq)ENPs!dP716kt9Tn}&-e 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 literal 0 HcmV?d00001 diff --git a/Resources/chartpic1.png b/Resources/chartpic1.png new file mode 100644 index 0000000000000000000000000000000000000000..62608829fcaf999e11b318d4ebf1ea782f018f4f GIT binary patch literal 98722 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%0DIj_$lBAweW79W9C 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 AP!YTp~ZSRvMg5LDJ5kfSri#6 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 literal 0 HcmV?d00001 diff --git a/Resources/chartpic2.png b/Resources/chartpic2.png new file mode 100644 index 0000000000000000000000000000000000000000..939cb8fb598f7de4da5fe9cb5f48d87b897bf526 GIT binary patch literal 105517 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�$?HQzJC31>a?fpqU;F@VLRzls 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 literal 0 HcmV?d00001 diff --git a/Resources/chartpic7.png b/Resources/chartpic7.png new file mode 100644 index 0000000000000000000000000000000000000000..aee3f2278180f9068bebcc99dcd24fd0c13ea913 GIT binary patch literal 156899 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 literal 0 HcmV?d00001 diff --git a/Resources/linechartcard.png b/Resources/linechartcard.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c49156102e6a855fc37c3ff44a7d0967558121 GIT binary patch literal 58319 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%0D8+kc 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 literal 0 HcmV?d00001 diff --git a/Resources/linevid2.gif b/Resources/linevid2.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bc8a650da4aa15ee08b4be4bfa96910dfcb2b02 GIT binary patch literal 111415 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

j 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 literal 0 HcmV?d00001 diff --git a/Resources/piechartcard.png b/Resources/piechartcard.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc1e7519eb7f88618eb68073df687882e09216a GIT binary patch literal 83773 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

7C4bDaqX?8YgbzN`=N<6PPJuzE`>Fj#O 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 literal 0 HcmV?d00001 diff --git a/Resources/pievid2.gif b/Resources/pievid2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a30279bb10b661c902f23b393638d11b603fac2b GIT binary patch literal 363233 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

dfNoGkqD*M;p zVzov+);4-mou3#K^4JR`5#cNj@de0 zfwM^yS%@{hStK6Jk2vH5{pdZ-8$L4alZ1o^8RfVxv-*fhZ3$Ig?n=Q6-2Xg!ZLf9U zimKb9XMRqaQa-Iw$lQ$0<(?5vaj<6?0l8*7*gvTeJUiM|Ox9`OMBqV5L9r*X@f+`p zHU;~yp2$j%&<%)+AJybJ_{IB4PLta2-cR=JdhEATrvDgyQMuy|z;eue4D$={ zL@$jyFl7<4%$jl(FNgrrHd%!H!Ljt5(Ka@cs-v0yd!F((r}TICE@R-o&TP?Om+7od z+6JTV`8XM1QJe1E_Ne=;h-_iJ;vX`U!^dE-IA9$9vmNo`TY8M@0GS=Sp{zdSvsJi6 zkc(B>$~(j`ZbN~IB=FPdUI1s*yWfBmuRmfS>nIX*6;Nz=gH)yL(K(u%(D1O8-P~uY z?`g;-(d&RKQ(@dC+DROam95a^6*p-DmZ`Ao-mS$AzZUY)B}af<%JR`oHu?PX$lmj0k%Y~pGbjR{I%Nlk`v3@M zg*-dpx&{&tZ$kIsBY})i)sG@?^s@B%LlJP0^zl!Zd(tpV2+CPE=$ld)E`{q^x{)B4 z1ECN+?x(Mk9&^dOi-089BK$?kB6P09;}z2CqZgd6N?*#~nQZ{L{L`G@8uV4)Ct2z7 zRJ1*(Ke*L6BHGICX!+GsOc;k_kPxb`k!cmKLxmsCL-Er@MNN%^l`Xs%Esfrf za{EDPXBw%6d{_*}{1H*E1Q?okM3=FvedKzjX~%o`S%JboHYMHgF}she)!P~pdsc4E zq$-7CG1>bXDZ552)xLV=`*asMnqGZ$^UAfVl8c+;94zTpI z7=RzSFx5w8jYixjpY37UTtvn8;FV4Wc1M51-ROo}^D*xyDWzsGD>HO!_|vL{`^uzn zDV41y6mLq>_AEIU4zfZjDO}8W!yoqCHhgnV{xe5XjTluc47Z$v;~HsKuj<@47+mD_ z6h%T%IqDO^4o}0440eeAZ}hDi*Mqq{QDw(#YB429h+=Y9MPE_JHUiLhEAs-YpokaW zZX*1IhR`zx4f3a9`x#oifX3qDsilHKP18yT<)^|xD{Vng1vD9z$^>Zq?TcpwKbfuWExjAmi)Xcmp>K|xgvXm&BUkHSo3)s zznc6Z3ZU&1mR*(Gqz2wh2T7=q6u%_Vi^y8r&2Ukb*hIWeS+(z9dbS*%H$39^K?0Z> zmNok;b3Qg~LAuZ>!0~b~YY$UkjL;ZNS89*J&H5479SxYw&Zf>XDwIxI>MZg*c6X@A zaKaXD_~%~XdAMO;{c{Y-Oo^rNzLzE)1QZ>Zdx0%AYfYJW}k)@%lo>TLs=Sli$@5@06YCmBgXLi zGGsEW_+2~G%(^leDDu9oYLaObh2N$BcUMy5VIL|EX8h$jCRs*qjtijGSdt9)ML@P9 z>@kp%-MfIovGg=EwVx}QiYWk<{j?l(nNKGeMiZobl~HJuZZdATGL$yqr?~d=p+c)E z0;zD%DQqsQC_u;Fh!*6U6~>H5>vmV^oyNUej^^-%K|SG~U06wfIM}N)%s_0Fg z-naLX)_GN`c_la!`Bsj&mnZIy*42-8va7hW15%XObSq8J1*B_FU;M1TryFvb683s` zQk9CAcgR)6H&$J+2xX|U` z*EF0-H}u3b9Mjdo$Lf`^_S}f9by`=$HT@W@nvoIMUIWbdCv5|_7D(Sj;M~Luk424T z>pq|>&RMvcb%ZVj&Gvb(cs2YpVB8pyG~)>}O9(}7# zMo9&{j$=K2E6V6{6|kwG+UQiN^5^XXpTqCp(8sQ~GX_Otp5FiN249QnbHv(TnTIf2 zG}-)aOM=%&^Tr%$lz7BOk}=PuGf0oQb21sINj&g z2^@Ig+;UM}Ks(vS&#%z(8!C$eOL7gUV9fAHJkD3!AO36)Uq3c-9U6`v+W4*cc5>)Q zw)Ik}*?IDlxK%;G)X18R!RmhsJW8QO|G)7s=fB3KG9FBv$ZsE9Os#C5-ohjjq`$CD?*jqv=#6 zMsA2%q)yh89&%YO! z9hs)dHBpV3W9BOj1CU&nG+n9>PgZ05GMw6uVN5b~#BxSht>-Hnp5I3Bl6{i&oj=cS zOMP#~?vKwotX4m^F!JM>w9UuQd2e&C`P@jJWRqpEVmyt zi&b=HAYVong7G|jnFq`CWTE4$%kP!*Y(K4-V=s_NCM76uTqR2D$8VP3AR@(e;;^)%sM zC$sGOsJ2mw#`trgb)D@M+jbCI;7d4-&4xG3hjFdvD^!}k%R`teK@V0YrA;4)cMsfRvg}~tX1DUtX=FPl5 z1vYd7BD`iytvsn!!H#br*LFMqb z9(I?XXidLO@|=;7a%jiUWAS`f_H912%FRsN5}%_8{Obz8xqLs*bw;vsUo#0DbO^Nx zN!NFW9P}l>(zUowhYE#?oV+|Fbw5=9aOnSNhcbN560u{9*>y|8z5FCoo_OGEH?Kql zjlm)Cjy}rUI7;6OZwwzd)vX{W*Wg-PJ9|7PBOpgaNYMt-YmF~!Y^RC)4YTfzW}$k=TzI+|+OXOzV} z-QM;}SbgDf*t-7yr@-krRGLO3yWM3yemZ6J8w54@btY+ls$t9|ol%UiYgb_Xdb64A z!`M~G#rK9m(vS=09zc znIaSsFD}iS)nPBdoFo>6@2-hHI*eNpt!~T*R`gNd-w1C`DOs7zyn-yg1Y`f(@XPd8 zCE33N9ws~7+!H4=)4#R&`Ru#nlkd*&eu&MiY;1ys1fO=D-;%vDYO{qRpF%T?Zfx$q z+K(Gl8TRNtxr=!5oG~avJ8>t+E@B}}_v6168cBuf=`YU>ZQr~);oExVL9waz_9}03 zx#juY$BpJZBjK%Qx28f=g419>j`~mavyfD>thc|?+&zob_DWuy#|w<)Ca%Um{avi> zVzzZi-*c#DWyb^E^UItaOq{<`eAT*jbpA+SVqnGWzZ)0kIgPr1%dhSpuj?)`UcP^R zp@9K>L%>+kzA3Mapu`l8Bu>H1|EL_wK3r_XKbe^&{JHpO`T5ksG$EL8+8M&~|2v}F zc*zqJV9NXf#)M8`&vX#HRSUx9-SS4~;?Dby{Fe`o=*D|1lS#6eQ4k?6X*wA-F+D9a zBO41TWP(+6X;Vz{e^8-P?)P+J8r`~T+=_fNYP!3|`^Z=;JA>12zkU8l>4*@f^5Z+i zn(#G?7;nJh^9$b<=U;*#jGY@HxVfgJQkHK^4Ma}9UeZuafA;&%u13MJ!?kyGaCTA+ zVT)z&HfAURLMiT4ESfY3TT=i>5t$KWyU?Y$NS7}SzW65mE5^E?n?g<43rvf5m`9Qy zP$65RiheM0Q;e2rC{m9D%#0v%Elp5^lO4=L#$b3it^YG{ob30HN5gjP6Z<_}iE*oOG07ByW>SrYF$11&0S za$$rK#&Id-pS2l0J?9VgC8euAQL-fMr^*cNZ}K#x{k?r0*s3z8*~OWO>Ez#`Wc}1s zgZ$x&758#3)Sd7RmGvuD2w)db9)y>EO65`|FeNDhGcYlGzS##uAcT_$ZWg^)apZI) zhsC|vv#X@SObZ2K{<}UDI;Vwr2`1nB`)ZL{X85aIZJC|o8c)*N2J%5FOv3u9e(g{L z2q8w35fi^MK1S2_?Osn3;uDZ1#r;d#RlBGdkRuZuctCB1qQIX%El zMX3YW>4q}dcr;QVxgA6%g#I`PP8}-R!tNe3gn#hc@48^(DKBvTaJLjx!c*SqjIC|S zNr7bI^?DI>N$7XItcq8`#KGsvR+VDoN=9dM`Q>bc>!_4$=VqP&2@PizaFr7Xj)=5* z!_VF06_Z9>zdp*M&_M8T7ie{E56t?ofOI(h@r|YvZqOA7=E5>EjbC|9l^Q>-hV;`i zb3V_c2J@<)e&jbT9m3lvi#KdE-@OE|zy*B51h`RdKN|HKo5(v8h69g2QL26wT~D-p zoI3leAF{BX`2(>R4lFn2&$myXC3-y|QB zBoS9i1~ce)97rx9T#M5J4zu@*R5?qg_!z0mw@WDH&5i#`DXkqxWJgUr5$QElTFGa8 zZl7p-0qJ&lstl2RgwY-+bJ5A;kJ52Dsypr?x01^SmM6^ z{OHveuf(NJ4Eyasq^YL)yMU*U0xtw!+7~ns{fnhY8@ey}yioja^=R?RO*UZvr=8l} z$(ik$wD?jvQ`~TjP>GAYG4Z?U&$1lv0xr#FI($CQ2rmBpoV{QfVpso>Cdlweb(iX` znw-4OhuV}6N7ap9@4`08qey!H;>`q#$FGC3ku>DC(AP)gTac}2g{#GhH=IFPn`=}b zq@9Gq_xHA8ELC!wV%u~eeZ=kV4+R{F(ui42<|wQ$I3QObQgTllt*}(5H)@sq>~btaBskvc6vF9_;V3jfMKu4RBvm0%4BcMkYK7HW zc+RQh!Ah0CltRCN+-jl~ zlKps_3CZQ7vKW-g!Bi>;t3Jb*9_i7cXbgJorYE4r#O~Pgz7DLz@MXkgQEn&pYmk8Z zmnB8^ZSpXp7QnL+T(QtV3EL+Y{mh#K>qm3xbvldulNI=IJr3Xc?+Fk%KOnTNEF73o zoFJxvw;*UQM!T&ohy?#xeEyZRKIm@#UN9whI3>wY@qjVz)U|e^*U2>)F*pd9x|w$z zq&7TYIA(flS`pbK?(?|qlkH!Z&Ccu3>7@)iudHj$m2Da`7<}tT6$^F~mV^zN(e#n= zF-BLmcONOQULkuAW50rMCCAH)-i=#9&AA^jG3v zSK&RY$J2rlxMRVl*V*|S+HdQ(d997k0V(AtLwnPG;F_cqe7A0kKX*()m=aO1*9WJ^E*FM%=Sd zVs^~w_Rod0fUfO$)WeRVmLPx5oQUILcM&b;A{#%fk5X%IS?nab-rcG2{4U=4F&`v3 zBC{Ty($@lV~O;*I6<9GrEhNkEh2FqxTFa<^U&2l4YMVv(?^s!9c0!3(9G?XytmmV1F|T zT)c!uK)PyhJWCgW5dPW`9hp?g?PeRe7v%MZk6x0yNuu44=}03CC+;c7C0>ANh5+(( zOzhP_D`TsBkSgP(QE%Ps;)KP0{AOC)EAzs+Un#&y+sQM1ggd=g8C45;P)MIyK&UsN z9y@d)xbnq=mG_}mPo-l+7%q<&#pOM zu+>%^4WBpFD@&CJF=OiR#sIUTP-4r}CKZ;&agQWAe2XChTypW3 z$&;A)E8&g@5c}#zOqg$$`=#~!E@-rwNqd%Z zQpq2#&YU^3@mH@k_*|GQ6^z8cZlFfPS!jz)FiXcu9AX6rYck95YSawl$q zG;^sV!6+<_Jd(jopPNnaL~IDE9?mHZNXhWxnX04po>6#o2@28&*NEVt(>N@y1!#pI z?U6k)yH694-o`;~v&3MD%sH=jXDJbpprPv#En)<-G9k%#{(v+tO*9wfcmDd}8ygn0 z73EtGJ@!>6A>z46_>y{}os=oOl zTmnxV_cm^#B_w@hm1{^}dMZ5GRt(U^3we)vh-ePF&@~!>cSQ-x6A23*=qDeZr%!vE z^l!l#3XEX=&JkskCRLUNS@aEo;MF5_1nR>5(AYp-^CtU0A?O~7ApLu_;*^)1lNv)A zu!neEf&u;q5s_a4rpR>ENb8e+K26$dwo(e=Tp_uq^YmYCv`@ZwhKYS@NY^aSQ2phj zC5zPgm_SOMffM*y2ftO9Wl=9_TlaMmBb68qrd4>+P=u|`pdLe|g2a&r2)eZjSB~p3 z4jLG}cK4z984OW15jTD%DDf+e z-Ndkf9!6{g{0+KRIO3TVCg8vuy0fTX%|3myF@>X_sJwQNe9XwHRoKKCP zpb%07dq79u^aBJG^puO52>NMtH4jQm$Cgk$zqfyIsGFEw*YNf0U><~+{@v8kkDqsQ zye!M-|NYlQAT^5!v-}VaBiC27F5dbW-O$N+CKQ${6-guNtmO?d;EO@9@uomP%B6|i z1~siEibfSFLaRJ#s1j7Jh_Z)FwS&s&*nK84ToDJl^Kvq0gWHGOS|qZ*P$&9tu=82T zY^^C@`K5nr?I?)iGRIc20;jLa>~l?F*>tT%>R49cj&y`0`0y#p#WEBQ8JcL0Y*;eh7U|kxw2gO3!uVu~?K=cPkY|5v8GJy%naVB3r~w zl!PkdWWBST#HcT@jq?@dbLTuaq*82AS2`b8T1nog%@3-)mxuu+&RJkjCQ488;`$;u z-#b#L2n`Bge(dirw2|}BZhIH@u95m`|N5Xy8v!c;NlxVXlMuZDpBfE#-yKw{Lzq*V zfI%XW;^v_g4Ps$9y&P3LcJy`I_n}bYCNlisKrtJmNbcQF$$E6{RqCvZ%^i5Kozd*w z#GjAnfKgzE*}Y_WDBgaGB9;1nstTuc8Bmc%Hx!0&#KO4}b{r2BWJC5#`7GLFw%}U& z+x@uouDVDdsL1~yZ(6Jj3)C2n-7oN3`o)&5)Gb2(nwV1*k&kWDQ1kZ9K5EpAw{-lRm zuJd5B7pn94ju}t;xpKFq1dG*C>0q>-7kCa&XHyPxgk_fRJFF zki)Fc_+F)4Sgm)8?9t@+8F}2q@3Y8|?uh0uw)QJ^9llXOD4(g7!h*iR^R@+pmu|O9 z=6-K(m(9Yb+Ey&1-F~b%WGDVud#*aww(dNl{bR!^o$%)uvrle*o56eMl3PA634u!y z$wGpUZVzkk`jj2w`N_a)m-~2J+)58hK5>x&$dx6>mm^FvJE*?W|M&SxRpqyOGJ-f= z#SBuzRuG(xVD29Ha>M9D7$}7)=-WqS0P!zU>^n`=RUcof>&0-kEcjXlAozD~4EJNi z&GM6{a@f@;-~KgkN#6gvsw~k#cb8?Sm7jj?cqj86>d{1i$At746|qmS>aS<4)8+BA zmkNbqGkA}T6oWfxvq9?^>^ti-ol@Bi9^V_zpJta~>#Trq4c#zO6c*SMgv>lefWJjp z!N{@kBuEkPs>TQ~SIQ7LIJ)hVx=#hyu4k(Yo3Ym_2k_ z8ZFC?*zS}dQC5TjBeYF1gdL_3`lZ=G!G$8KdP$Y*#H)n=H1?<`xQE3`t`ePn*l73e zhQ!D3JwtsH6brD6rMwE^%#;Krh>vyvJc|9-YJ;;R?3Z|z6d;hI)U;;|R`xaNPI%$_ zfg7z<8BoHbH)T>OjZpP*SJG`Dp-eyQF?uLK2$!h3@&Z~5pV z`vUpsq0Y6hn zhA#^fN!X+)%;l^VXTA_Xaj1bSdi=WRMQt2ECTOemhAV9{*OQG^eWAUKN*_%7_UqiC?7xE>4K z;@`s2oX;g8XjNBnJbe;tGDc3&uYgpp`4Kp$o-g*05*?~E{4TxhI+V=Ae#{)DVrGzD z<5EezorKpQW6Tnx0;^RU=p+(KkJ@A{;EUl_lu)0S#J*4JQTu|UF{|`kts)Etb9=tS zzBZq?)QU^u=B$a&Tf>^x6zcO#o3J{JoMxbod;6L7$N^B%Kk6AB$ACnn)e;_sM0$o? zq`h@pZD_-T>5WmqsThCpR9~`tx$P0D3rKdLVmgI~8+hcLJIdyY&C-{;Cr+$W3j@|H z(pJ|3>Q1HMAL}H#E9C@2zSEl@JA2SdJ@4nW3F_vE@^dCF;7HF~F76m6HBu5_flc$w zNJSX3QBQB)aGxm)4rbF%Z)>S;8h-iD{O91RxUfqtUnumo2bzYp$+*i1IPCfeV_*NA z{vI+xdF&4#CYvSE5W>E-lpq{?BS^mchs)B{UbXC?F{3g8O+{TMBjDrQqB8=_f4I39 zOx6F$<9fmT(svA1HAR9#0=Ic{DVQr7jbT6#t{8gU|B)LGuh0%zglH`Fpr^yMOwWIe zlK%DwVVyp{5(_Tv&ct!a~Jj@u-b!`PyUW)AJ)a(5Bh5*>TE#8>%V}A%4;)pWA zNIg0gGnID!N%f=9*+E$nPWJo=9-Y^b#+je~;teuicmcpdw1e|b2plyn3+8{cBNcuQ zdUT5hQOW#9SM4DUN_H|BZ`YQK-LANP;~l>!a&Lf1Nx*#rV-&rjO(;3TfF-7clA6|^ zm|DsKpXs6q-d>HG1MW1O3&D$TFzz&vpIir&Y*beLwJXFE4$K#?EeBV(5#$E^!3;*%X~r3bk2qo z85!cx#QxQ&8Z6!hMmQ)O$T<6o!HvOle8jOmC)AxoHe{a@*eG#?%(-9~8;wGEB z{ZT;@kvhxdr^#u1MI7*WRJv-*l7y`sgS4lBF5enc^gR_B4?ovbR(maXOBDRqc&JvgJ; zyN)&fIL+_zfe{}V6HPVA9kVMbFcVPrw0MMEUW_JZ;+INk2ywLmR^MBXlIt1z3brE3 zWa;okR@LuV3D<95Sr%x@c$ANuBjlVk4#q<^pF3NTF-@->isC44hd6XS)-wUNs)dWb z9!9VuL2Q=>gG>IE;vw6<=GV%ytNXqIn3ts{$a~nJ+JVnQUI$95tejmUJ420omFaTu z;A~s4q(B?7x1)Kbh>1F7hxP4kDvTyyim6%|+uJ!jLwX#s+dlglYMmm(j1;|>lx=+p zJTSK5RkQn9?p6hSt8GJ0;He|79GWR^i%JQtZ3p)nDBBCYKHCrHdM$IjXI1VY#D;NA z!1Yy!xr;;_q_CTv{80aBBy%#>Pkj-q2IO`N4~|#Oj0yib-4O2rzNxdl*qV9KySiX)) zhFLQFis zM~sr8e3qY3W+tym=^2dTWr@kM1N6`kDp7AqgxR-gqXE7Pi%B2st@J38 zQ@kwMZ>0WkYmr|*aB-=K>g0p(O#2Zrfv5!T0JbAv0F6_c7ZS?ZB+b17aOO_MU$Lte z5^qrhw>lECi@Q{b%G&#S^54qi3IWeJz(!zSpkxZ$YYwqHfqxuyjsTd<4y>j%iN`TL zIVQd4Qv1Z0w^~A0Ma_WT&i#I8Ue8`!{mr5YD{b0eQ-cB$1w{mi6f0}p1%=`ikTJ7hfv0dpOn;H~+2Sv~FD1UXRy0i~5Du@XXe$Tt zfP7vWZ_Z*@1F1*`ENqw3Z0b{v5mt%YBO7h1Rh^c#r0zkljDL#&ZASBYbA&IPWYPV~ z`m3(x-euRqp|vp|bg#JluHQC~&|J^WNxv`q`3i*VI+Dlp65pOAJu;x^IJZb-#GS~> z^PNpVTe*cQ^4&^+R<0xAkg4lGzxm&2lbo{VZb z`ucu}6=)Kps?xP^$O&i`#H#92#0s?RR8Bn7U9VgKl$l_){Wf1gwk@{`KL?<1 zA20fPRkf-@S#6!^t2|nhQHkU-xYWw;Jk1sPkgu7jUfrbnGOPibuH9X>DXKhy z1@)fkTmLo2~Te$&MFIJSX5KaJv^~J z4$$5m@Wj|dL^1=$Q#}&k6e|%oURtSvt=1UVB*fS!-{$AUHI1k>a#K~gVsda-nxlUe zwc_MzVBGl70es_7If>k455OkIxvxAJXoAShGB2en(nEuyQykWvYc26xN^aY1@Y|nT zwBOsWw;?9#9se|!ytX`}_ET*N*js~=A;3?Tbhvv8m%5@Smo1aoYIHF=w8}|=4~gZt zmdAlX45x)&p>5h2P>HIYLwvinY?q5mS58oS#ZW|db%k8F+7BM9_MAFUZ4>W}g2W7(fWmZ<5s(GIAJvIrgZmvxRQD)|@`RzR}U57y*vhd^k0U__= z0i9W?o*vOW0o^<(a3g2iydp-@&yr>W^132wBk#khOFQ@()=}2F`M66B(ZH@+cP}1T z9SV~tIaK8$X(KJ~P^U|K8do~i-8b6RG3M=!jf>k|6|#%Q^7alGQR!U9yxI1v#@)_| z;>11vByGLgG=5vkSL=Lb*f#$=+f>(|Pza0LJD}#;-WeAlhx@*-vdCk(&H$T;k|j#W zR5auT4QDoNcymZ*J99EXA3k>W1r4ef4APP)YcYg;TCyXazbVPLO(ah zGqLs)XtHENH5+)L0sX{&zQa+$?a&`Dx2QrsbOiX$;*wp0$GC>l&>68*aoefYZUmk1 z(HFCsIibB!Muqg~XX6hAuYv<@7`OQzb%1quh%4rk+#&T*3crOK_!AA}-p`fJh(01| z9lVRC^R*w3+OXp$(TVB^s?PK@lx_*eGNz*{=Fz-3d*pL&Dom-#q2_52)DVh^mTiuJj9;o|^*Ax96F zG7X*#6#BEecy^!%$b6$)_o`L47uMVqU0r z>02)-(-~~+2FH!(y-1aQzZcA1GSf6L^GvAd{_moLW-y0U#9ls{0Om$a0PB|WxX}3g zTD>x;dAfi7BfZ^L=dPJL>EbwJBmoA>ImHh55eBAsEKhUS3(}VF7 zAK`ilHpf~W|7>B&+3rTNBx-6vB+ z7r((zhL^s7S&E)m`tRSgNiV@ikHDVic#!FJ{~yH`g%Ba9())^DfCFFapoJ5yiG8xG zcf!W_#FvrTsRt2G2=(zAk2QY?xUZCNo!&a(EdyWZHig{3ZF~BU-MMQ9S)QD3j$OFx za?UFHFHSoyKj?sNupMg-bkhizHs(T&M6Gy1;^h^O4TEC$G z_N3$v;hkgBMaT1mKGpQEfnRSI9`*eb_!IQht|@~$dkc5Z&EeIHQ;&~F7qJV@=D#Z% zJs%~7P7tN2KW8DyoFBK1Rcw9;#XpmHH@7RO=#|D> zwte3`sV*F-;Wh=4$4U1NPFE@Qf)sz<`Yw7&qN^(53vg0g$_ z19ZB&`Xc|+ig{sRsPl-9EGEG#RbLiSApgs>o?Xo_>&I8E%j|nHj zzR%Y6Jo&ghaNb(kL?O{$qVt$xpt`STLP_%E=v@7PaydiV*7_a@Eh|x^!h^MYop||_ zEDMH?p-^xjP^a3STDZtek2NyZ@q#9`zqFb`A{CMDsp&JbIj+rztcp`q4A<1Xa9yg+ zCNI))lgU>SBj%5^{_1g;!(8Ta~tEt3@OD?uo-hVWu&^82otK+VIsdyOT7=7 z4O3cr@2b)IKm>zhSo&bzD=LoLB)X7Na(8 zrf!iS;dX>TB$?I;uVrNNk7cZx`*--0zHw(eO%CIT|73TI_rCx3UN+5-f>_@$qbfI< zy?B6y+<-4%!p!^gbncl%+YVS^beT=i(s{(io`#hPSo|(iK_$R#Obj`p(m(7uEvrA!ODF z%{m|7Q_R0IXYq^#lX&n#I76K7XOw&9124k4AL+U!?16oBX|ZMN&1KY6E5j+=V%utk zTUK2j1qx-MI=uG<6e1Gbx2A_^@|ay+P1DB(7~pU_>^zHHdvXv3wtoiXi_XfxS4vIW zk0Kx{IYzY7JK^Zh$O*T^4Ca);+&e!-ch4@5r> z$C4NYLZI{Ro4Vv5tmrhoc2HxO>PqYxzr1y#QMs*dt0Io-!ii>^;(c?IWELx!tNC^k zz(=OWukDNBu2U@jy!2mJWMY#s!>o~A(3CI{o-r*;&3#~o(KGo*w|E)*<hk<9R}&qbZFQc?Ce@L`MAmw+71oQ@bnwOU zCEdndq9&ZfZM+ImqJVt1h36`AL$%LYv{{C`DGgP+xG4<}={{Q`qUyqC6qma7!R=}z zNAMSAQjTV?*#e0m5}CVTxOu-65=bwgY~#5};N|8-I*ZISYLEz0YM}L^#aMuegd;Bi zCczT|OuteeJRTOfWz}f9~A)hS; z_fQy}M9ObSv)|J|1piCYyTKNpi~1D2ikhOFH*iL~FLt2)U$v3h->@I3i*jIy?FfdNy>r+1R&2W8)k$IdG}9lW_@9%yi)pDn*&{*znEdn6=|e}VWkWz z%Fmli=3f=0;{BYGSBA+Ij*JfHy0*eqfOR!T)-ZlNV-CH^NC8AZ9}=@G8>cbk!g3u1!;xw`L@K#cpr zPl)vIJrSMTaOcjVH+b%FpT}(bj?sdO-HIX~nj*=BbH^TA?%;eGpJZ=*A4g*NEqDTl z!xr2g)|^YMzSLqv=aQ)+EX1jMC~JrLYlNp2qMNS8P`u_}#vvj<>;v~7w2TVSw38=F zwJ6Jgi2|P z&tyhc>7G>ikh0mzeB86r0p6_b7E4yo0=*_JiCa-xX!J&M7;3!C{MK9@aLTU8= z6PLos7*Mimx`HWKO*wuZu&2CjCGh(6hEBJPr)j!MynaFXVbU3*qwm*iV4`+~SJP}7 zhf=42>08r4C>#-DPha!#6bpsMxPxB__Bu&Nil}{OapbmyI4g|sgvKB;>@7gndb4YT zmfFSjuil&vh`q#276ZTpymfMdr@3!7rz3w|JE(quFNOJD^PV)Hnn|iJ3HK{Te(?V4 zV#Z>m)ppwQhs^E#N5GK!xhR>}-&(1+wSxp!cw!RbE-m^Kal&KZ_9?p|&0PAdrefEE z0Rv82@5cfh#&L%H`Q9(^A%s;)Ee(d}+UgUl)H-mNf6j{c9>57r zR~sU^&&uT@C#_+zVibKk%2;U|-U6~y{5moYrvxq>Y-FnzeG{6D4TE$*&tlT1FX|virpDajC=t3Xi78y{*3G|27R5CHNV72k3 z{~9eSC{@(B#xfL+<`_4046$JSKpS;>>=9f*DW*Pk`?}*%N~??Bt~RT#7ob>s!+GER zmUXN<=*0w4&f8d)tCgc^(jxoNIzt(=<-FBycefAKw}_vB(*sm`q^|}y{x*<{(wIPk)Mz@N)mPx$gAHM~SBd$Sy@7&)#=lRcl9`HAZFah@xc*#vZ z;tfoJ)BY_{NYQ4Mm{YKl+d*~B-93ciip8e`0pQPJ=ke~Y6I5km=p;4 z=@;czV}R(PUR*LEo%j6bKaXgPYlZBkH$B+lt+V?&zNJ%sdL=$UXNS$_?fAs)sM(E> zr4*s=Lh$_%fd6~p2cP$Hf{HH{eM}n>y}$s+evHy1!D3D1u5;?_{@Nj zm^F2?^^`Ke=e_T70s4Haznt2yw#~(^{Ex@KeUo-Ahdf+xYCjIRvyL(3uFnk+1O+yL z+`dkUM1a1;3}w)*uPmVaa3TGOPXcv;;&LHHBH=rnjQ-@W19xcwQ2&GVsLbOqsS;pn zC`MpV4zPVzMN-5sS%!#N2*Ly`i2~K{20q`-I>4BJG|wt&$3 zZpD1&sR#4P*oddJtd96};RvWu{Q}SYjL)Eau+R{1lm5>OrC>%U-;PjgE~*kX zAQe{O1lUU1GD)jmP+5?SAac$IgHI1}aQ%vajn*d#yKoRi>w`FeAP6r0uw(zy(96Ec z2@?SFM1Y}GU<4>Y4wJ~p&gW_fBA0eA2m9~_*G!N!h!DFF67TIq%ubNVq}~QkJkap( zTn!e5?zN<^MB>c5Dq+1eqy#`f;xGx!I&0<{AQX);2RjMljQ`3MJ@EZdFYJtJ6Rir(&uRM@PckChwdO> z4HYRaiM~&gB0&TOO|Ue|epJBBrf?|TQ3qAQ6K9eHVgGEGvT}(w@GkGI{|qWDtV|w3 zPA`?x>y)z53h(0*(0qns9VS4l9_}aCtu5X17?S{lKC;5Tu&gZ1@W=@)TWvG#QC$ee z1R`KN_Hipw(<@VRHBnJD`LQcmljuD2)P^8ZerO7;!YN#E6N{+)Ci57FODDac6k&2N zUD74jg%JVsC4sQ}s4w4iFau4qCI_=RCr&V}v;8(J)EsU*$B!VcBKP?4H$QKWV#@bE zXaWUKHaTblVN5mUaqwajJ}s_J<_Ne3auNB`Ib)JK=@BZQF{JJe0S;s+q^RMlt{Baa zJaI5Om9gYJk11K9^RA-^0U=T^iE%t*G$G7RZNj5Nu@DG<(?fHiC@7RjJ9G*>4;LH^9)w^S5;Xsm=FM=dn)hA&X}P$L7C=WO&xBTzlr?@)*D4>1fW^9xGjbW-Eg zHe2+3K13+<^ai6-1>7_X{d6claVR;IM>mx`K`rB$b2cfpRq^xV$fw)nt|MyURB`a) zBF^<1)EIw{_ttbs(KPgI^%$R_#*__6Q~yy?MbeJo&q+TsSr76(m398Yau08dxdv%c zXhA`TwewUBG!%4HyLDX274#ZLj+SWNYOfkI6eW?9CE+#ytTF#o@;WQf0`FCmUhYcO zawZ~xTgi1SOF#q9FGaQVVEeF9d9_?Q)yiQ~P;ZxfbL6QTjgP+bYq-x>*PuNELl zlyDKZ)%aEddzDL-;8JyKh=O)g!9r373~BW?b7S@p9b;`9abNzlY$wxL(hZa}gs(^- zY-6-dn?PJO_jMVx0nCoAq)2dKlflpqAvfetW7PL5l3(@8c1qw97l3Gga|@Xgc9l0z zx#hxGHs6xBOg|TQ-gaLh*PFJrc(s>kjW-m>(ythIdBv9~-N0L_l6tpRAh{A-3>Q13 zcT%SJRpK^@LQVzg(tX$)o;?Q&Qzs0 zgVS__Z;+*`*CI*wq5NSM*g-+NcY%dC@AedVT=1l#;R7lr@rk6!6N(F%FBD0eE?r zzxO*hSVy5akE@tM{r^yyiy4{g_?TyznS*(lJ1+wQDS4fEODj~Cmzj5~nLOdLd~nSw zg3<`OHvv~bkSuwIU14drghA=}^Q2k8sF{}8SxvFoR=1fv_w}3k$|`=*lY6<7i1D1u zG@0vJd?(-$;RJk0GJv|JllY~zI!~J#lD9fkQ|g|V+Kszf6mjx4k8rmt z(HF+LTg$o+3IFCp+PJM@_pLz>EN(fidzjSdnya_kE&bGZa<8umyARQFH~&lo%_pE( zI6@2CY(aHKj-j#B)SBD*u{Tw)@_K}MjIkA1dq0ntd3l?uIDn5Dj8WT*RXep&yOfJL zO$2GKPusOwT6|0UhG%Z8QL8=)Iu-%n3emv zN%fWKS*wH9uGufXrWZIoM5T*hh{1b%pZJxz*qDdAyvG}sZ+nVkd9~e}wO4xqR1LXZ z+KbEez41G@2RgsCI8-GxmQxm>p*rm*Ww6;K3nY#ZWk1eN(&2)e-n?d7t zyCH$GLH}F4!~2uPJG$c=ne7|8>-&qHd&KwKy5T#Er=TP0nMe7%4|BA(-`l)b+_Yo- zwv!vX)z4BnJF0W(yZsushgF8fdZ>B)j$v8x5}HFK{2`t^oog6d1bS1+c!$%l3#_ig zIh@0L8NAzDidQ_x9lW(2yuHs{$4i{O*}M%Z5yr>d#6=vvo0-h*JkI;Ox=+c?>xUxyo;l^)WI0dbG$Fb!imY;#!Vf!RlU|%Je)Z+P?4{uD@17$EE6ggN z3%ncKJ^k->erUg5+k2n)#hKJK6!8NBH*7 zj5(blzt{8nJ-_egs|5-UmKlY8tfUBC5g9o$K1M=LN>)-{T4rKS9u3)j;)Q~ah9cRS zB7K~spmY(w!p6#)b*YeO#Qo{+^7iJ<0s|X@A$qOEB^4oAbv83U8%l*`QCBY?Swqb& ziL@FAgNKWYrKqf^lz22W^vZ4f{<(j`&yCv`ig9>dU=M3XGT9_)n!tkp40;l!kQBp( zNhFX!k)qtaiWY&PATeQ`ymxe-(9^Rdq@IiShJDFkE`+jV*`^45Dbq>InNl*G@Mg{= z&z@zBbvdB{4#}cM_jL3b4CR+rEE#n=C>5%isa6p_BGPcH!-h&SwEy|0bS&8~6GhxEWNKA|^oTn=k zCp>I){dzgc;gm(JkPK;=W~%tA!xdw-^VZf3-yz{ZJGk@m7R#k0%6vWR(hEd*iO|>Y z8JqR<&TO4z-l+u*x(#NYfcDgqQF81d=on#!oNxggec6LuW(BRlooDSpq>~r{4%nd} zrzMiufeDiM+C}dT(E%Kmj3c3oS6IlMcOu!b1&Bk4m57Hs68|#MVM47_qL4!xg$N2A z@CXi(b4c((SYU9Nq?ELbhNB7w=CY)gTkhc`WmCRFBoe>XLPV5cqDfAGK(ztFh+M+C zBnNXnm8KeEZu0?c-VpIkj&=h2#ZKpxlUR^(B3j~{Due*RGl7ONWGETd@+YL1hC$I` z6QPC+JBfnI99Tm*iYXXeE|5V95}DfS8kHVKf;!5DS}Q#`kxIruJZ>pR2BHn>s<3LX zqS2wYB1_K#ZH%C+bseI*fOtL*TWuhRp_OH_+v>6a7mWlO=K`VeiKDgW{^a8c+0x1_ zx3d{{skq`vL>{{LlHtW^DTt7Pw(bIK2MJd?Bc-?ug#Sh@z6(=X%L%s}8}PR8u?l9Q z;q7V8nGADG=n!3Gq}ZntBP;Dh{A5>NsK05bW5+L>VH^i#^PY_%@nWW6v0 zjfTS_&|EW|8F=BrgXZx(?TtZ0O(hB#TS~AB2nCa7YpNowVrkT4g8?EdANXta z)j~=z7YUB)>{GHm`zSWqWBZxNkGDwh@7f41AX#0Hjy3VLKksYz-HRVq0=s`F=)L=*v>sX`Y3+q+T=%%KKkjW|L6IAwvPm8+n)ULpbr%wi4eH^)p#mZ zHvU175RDsP#0p4<39w>oX0Ran+HgM2nJa=K{LtP!kOAA>Zf!VGL9>itL8L&hZrB?k z4QH{h6F9D46)ar?C`SSZq!4!;09(CwGQAoi@fCwI;+06ifedWKZ#9!Z32Xtx7k-3g z|4SklgR#VkNTdxUpxO!j6GTuoAR;AD4+l9A5pUG5i*mGKfpACy5DYM2??KH*ESLdR zv}}%o?1_)USb`5cQF{bj62%&{NRmn5SO4|0*B~od5q*7dUu`JC7!jFBB`|V%Cs5HD zOZLYGVls}FTxBqFRE{tr28Wy+qX<6W$uhDgk{sZGEmwsC2R(9bLyX>B%BD(IBGV+W zl3o~#H%k)GQUtZMr8K1pO-`1;m#o<4^p3>FfHmNcVF{k>l4;IxSZaSvWFHtebr?9p z^PSRjC#MdhqF^E_Rc>5GAa#_ta{}~S=1V~czKN_RksxfE(_cUvdM`>!q@ef|QzS+6 zvvbU@Pn2{hMyArl%#6mI&Th)2Hq4 zs$w0M3QnL^=8P+-5#gpy7fQXc!WB{~I4fhuG{l4gZ;KD~(_7=}SFCp70!)SB2SiYU zoJ_K+e_gDrYLPQv_(zu?NGK~n$k@w5ji3hAj|3#!Rhrh5oMh-LW=jhu78+DqcRlPl zVP)Fak_|N%&;TzDi`Z?JE2^;FE#B(3Ov~~%xUpSl*@7k9<3f#zMnx`jUq;DHHaAc~ z001HR1O)>CD*!BS0Q&&P0Y3o%2LHg7a7Zi~kH{o3HDoHE(5Q4uty-_xtai)odcWYX zc-%}m$>_9t&2GEj@HkvG8kJBfm3+_d`~QG}f?X&U5Dyx5DtSVTi;IJil9QB`mVqfI z5CsMX1rZu0d1sfUrl+W>szoUwn+5~}1D+ZpcaW>Oy1Tr+T#zRhoU+871`i%1czSJS zkEFiQ($mydn#07!1`3}ZqR@eVBg+3(p34jLrpXV6smR-RW@|A!AM+eVYNYo`JQD2PA-_eqLi6%8O= zyw=lTnUL#Bo?MO2tG$>rWAy~~mRut(6{{t7G^sa#O(?5govKx0&9LsuA z5D#o{!U-j40RKy&vB-7|2&i$F?Yz2-;@Xwpj;BQ@^MpkL2ozA5**5f~C)05BCXC8N z%H|te7PS`fKnL}d>MLf(cyNMK1rn?9$ARd9oWKsx`h|-Rd~hz9BvY%v1cNyO^30b6 z({jmsk+DsjC6pR)tOSdqg2yx$Ek`EZ;%xF45f6bYP;)-Y-;m=fkfR>g8m)C2OlX3y z(%{-U#%2nvAQ%d}hRNnO6qJzK)^NwMpSK4ntp%t>;H~Aj5rCj8uMgb3LIE1*L3G@R z>t`j{nZ+^g1AUk9Wd-A|przT59iI5+Rg5xsR&|F?K;1ZtZu;n`pRPLUwASsS*^;OG zfaRdlCjYeNoab(sgo|@UI_iuEzjwbR{Hww2T7u=)e7ZMp#V9Ijwfgj_S5N)*)@P6X z_Sq9bTaG1s5crltL=Y77&Zj>`a$jTh`|n^60XlQ=>$}x97=CaEol}o%F7E1UoSLTI1_A4tIoTCjo+j9>;)Cl8bq&jT6|0=XgJLy$ViYzoE3|ojmBIwYDZp7dlZ&*bP z#{ZEB+n9g{Y#{fI97684$+lRn4t%5#uf$W)tXXq1C|3s%on^@3vT0)_;s({}B36P=104H+(w4IHrT;FC zDNJW7)0)!srZ&wfPIs!)p7QjkK5gkgR>}uq8uX~ioFY<-$<#(BRSY17Lepq@gmpSJ zmna|%`mlBc3k<=l7v%+5i(rAWn$-k-DCb7kDo|D)(vp*$4D zfneyb3J{tcRDgm(8T6otO)O%0A%P9(iBuuTkrU8r1-kmsve0B^5-{6PB1|=&o1KDH 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 z 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

^)# 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╞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 z zbK0IV%`q8y5`)@b!q{T81%|GYQ3l+GjnQa4@Hv|#U=#2J^l5&PR>6g6dy%GE)U1jP zsoa%0JBc=u@o;=5s%3HJ!gXW%x}&Cv=-oB2fQ^(&?L^UqOyiy)9g!(pwlU{!m&uKe zqp9kQ&Ik^Y{wWDd@&S#zc?qeGZG)Blj|!)q37Z)^#W5>;V!;;$;5-VXcQ}@xsfpR4 zxin4*u8iS`tLpBGg&B1T7JUhJyOFi>0i@~y3$pH>0F}S+Au_9m1NP2n^Y*f$;U0mV z&Zv+x-I#4-skX@m^096@hw7K|8;gp=kJ98H z+^8Z7E*PM0s}y^~@5v&_%w$?kBB0g0ce30|KxENS76I=Ek-ld843@ntXDi2he*UhKXNgbZ4@1mY(UD`u)!vw!%oYIq%PxCB8nx~nGCDl#Pkc- z{zTtW`s;TyPE#$bAI9KsT6(YYoVF!W>KG{W?$!6q8C$nG$v9!q$*exz;aT7X6cgu*;$KW0tX4 zLnoDk<%5&%!JWaAQ?0L6{2ojk&CFz}*aY`kEK1mf+{2W#%@lvtloHE~_Suw|%Z%T{ zOpwc5#KWAk&HTrzxdfJl%(J-;mxZ2(1!bCv#WO^PSozsXRfMRu&yz8%D3v#t_>P;# z@x2xN5V7WydLpOg{0e7en~lhkdv&b z*_Qu_r~%6Xm(qcf+V*r=t)@kd?>B%@>?I!ZlD#ZO$rv0Y^Hk|AI zPYq9Z9Z%S%8h4X#gMp`qO}mFf`h_F6=c$aRce)!%lV^~Y4HUOWIJZ~qi&rAIcj^nb zq^Ec8i+3TnPpPL5IoT9Zx=-U8U0r%B3b!vWGy{V%EXrPf+Y5=|ny+A$AE=!FTd4IY zw!e&g?Y(+A9!NmnlP2Di#NnAie(*!0?6}A5QpOjPY8cHxVA<}@`ay)9T*24Kq12>HOfD=;MYpg zxNgT!i&qT4rm*yblAjq?P8nDMJWPC$Vf^V4n6C!G>kKYG1`nBI6{LR(N3u`Gp{kekn!_gu^Sz+rRhxD_uoJL#+$nj*xxA8^3zFJp zlSicfIybZ*7NtwMnVuQBkG;0u?WEi8_at+eZP6qUL>N`I?Z`D(h5V< z{Wm%WU%ug|w9vO-p1{tG>^sY$zY~HL=oeGW(<8oZz{KKqP?`-O~44|n{ zr?*=TZ%*K9HgGU!f;V>smua*}a^5?4pEs{QI799z_t?Al>@DGT!yA=1DziWD1-qbL zv_L7k;3cz>jh6+7Cn*&N7GX1%IE#^|{TFIx;g?Q)_MSg3U(s!0QT%Jceo_8)OMHAr z5$k)t+fYG82nE?>$>}EZCtt(L z!7D)l=%_9h5`XczZXx{#>~~d`vpV+&9w^#g^N(&U0sIzpl4eYvveNf38U7YZ{MOv{ z)?Ms0ovlY*9#H*gse)f+4!%w8UUj8-buSt18ho{cd`V+#Z6nyN%~|z!UTsR%%~*V8 z;UBQZ-CYL!$+dc2eLmgMAf4a`?VKOtF`7b%_-!kERoMJJ4q#-TK{Ot3U31;VoqD}; z<^tBT-Jw+}xoh1&ruG-R+kqdIaAcL|_(q#=?cf9z@C2>uB$8;xg@v6g!QKN3!^Hh) zaIag;!oV#-ww%GrK{2%Lp>#P}9=%};&$5vImff&^g>8xc?h#t<3O<5SnRJTJ^ic(D zGFcKLb%HSwZcLx;F;368(4O(w9&0I*a5>3|_)l>T68CI zK8tKmt?S#|TG;%WfMCV;yo@)ba>2~G{=)gJwH%4FD8b?u-8|zT)kY|0_FQWl+fjbO z#V7t{T!MwSoMlb}2IVg+cB_@X72^5r6(tlh7K2q>r8$Q$2)X@Px3B%p>>1zO8}nlb z9-tu8r@(qUIb;OEhK&7kX@6%Xp@%xiS|iwUvA>ET3xPlIT?HtoXZuY=D=k5+vuV|5Mga3m; zBHDX0*o73TclCjM<=;;fKENlkYVJKSh$iHt-vi&-blBQqH7r*bp0$BE5+kBlCOC*K zI4u2jp!A!k3}I6&@0b>z!D8na)DV{F>lil^!%O?vo9IlCo*O3MICe)|Ug!)LoPq6h z8B+heoemPF8y1J?VginAu?RG2=b|0XE+FqRdd(!-Q2Ec{LG(X2)ln2Vf@|vz9$3Vw{E5#>BqB- z9ISl)vqD*~%Wl=M--{a^?-%K$-)N6_%`tCIPhP5m(ID74bRBi zZ66<6An=PAMstv~@&89^MT-|{TWxzyn>QKTFTa9^WXV&mcy5|xxyRMpfqG_|yKboKBF2o8&iOG?YiD=Mq1YijHIJvcf! zySTc!b8vET^WR7|1V6rlvcww_1d;? zi|Ix7znHSmjAQpVru>jEW*8B#I}Bj0{T+p`s3? z_Vx8K_0Uz*aVse;E3c@ms;*I>lPs34rwgDUk02t#!$a*s?L!$DfE*qf9UF%nMCt3p z!|3k(W|1iZjYPdX_3OQBclY-HgDKl=iWY9il3lSUI!UOq55@BQl&r9R66BsaCOCc zL{r@3P3(5D{q|QI0tmM#eJ3;FFg;Z)olIw-OJNC%M!JXiFxFhPQq31B(t%=10*3*c z8AT}9c9pFy@!O9O<6uxBNBeLx*A6)o3OVHW>UkInBdWb6I6Tob2B9bh7CTn4p1TBq zHl`Zu;~Z2Rw!uG|>sYR%`E(BPBL#=l-R#KsL~%`Hb%0)bC`V)}PvOIU2_pzY0^qA# zdJ!;8B;N1KmbSk+o=hJ<$Q=qRfgLBoh2NP0l|=o>ushrPk;qppr#8~%U)KZ={^Daa zxAQQJ-oDKgw657(TE%WVy6XTXwr-^ z7{$&HsKe@>0f#keU`N8a0N&OIkrvV++AvPB?dVa;+L#1}*(o^qF+3*~;&AQacbeaO zYEm=Mp-5$DB6o;N^MsB>4|FBDEK(f^vXlbD6m2kT{bc;va72&<}wI#yX48t2A?cw$^q;TpF` zaRfuL2@dh39xS_&8vjh=i^>n2smZEuZu&fSRx>&@iaaB$x^?f7;#zCjmEI9euit7Q zXsfIdc-fKgha4b;teimn{{V(SdA}I!)@ww8+Pa&Mz2ksHCkRQt$}g|9ILWL&Os#u_ z!dZe8fi)8jTq!zTAO;VDsItefg5H7vVHkf2EOC?)Df{N8unM3uQy@_=Z8nCE3}_u~ zp4_an8?*6PryWHrR2bpP9Ay_ZBdGGbs0sa&M-O~Ei_&V+(&fQPyR>r?S38t5%N!B2 z!6qO>ZDG(tSnOxUM`gW)+C%_)#TZ%eF!AovL*991fneMf9aRQ6I;{yfo%&$_sV+-Fxg}<>>EGnW4 zfXb?d!8nvIfmW#C1{YSjH89L_rGsD%kB7Ytdawu=Yytsy=))okv49^;g7)eLw)>TE zCC<4RKE^k^Bkat9L{y&#E4V`#>X3_I?BWZmj7fxG2E)k4 zIM)AhWo1ml(ehycm!0W}Nl5|ps6xehXpo0EMB^FdR*x^j5eaaNxz1f>>zsmM#>@tI?MBr0b)J^}cwb*&7|kp@}KQzEdJq?8~v-)Kz2 zfpe10v|}mH2~J0@lb!IS<2zx<$;de-a+?I_ufUZ}h@9YJ23R35XNb%p_Ofl%++_#P zsRUZiGoHrOBqh};QFJbJYquPzC5@NPc>W^-H5yPq&4HL<`0|Bpl;bcDD$aIZ)Rg~M zfM`5d`ps}oRE-zqB`AeiM77Cuk4Gy&{lYfVZ>}`B7&)m9jPJJqsU^n+DR9D5!uWRs| zQB06ljkc8xjzuj?wn|uBPH&N9VPOa7NvEHQ6tr$o!QHk1J++#y3XE-tSKpA@Q6AHX zShNrpE110Q;g$_3*w6^}aDwP06p1>F5%w-yy5XvVvTz7s8Vl-19Hw?TljZ+n-OTh{ zHQ+`*6exiZN+6HKen@)uz3X{b;axN4@PCb+0(hG`Lo#Y$ga>J_6|^t{!ESE|4fe-= zV2tpY}FU1b{K&Kxtz5HUiPwZxN{FzJ4_hgRf&6U=#b@r zQS_-$g%1E#iPlV3Oqm#zS|&>Q3Ml40`%cNE;AvpIYUWaKIF&+u4Ws{I0lk2-Rs@Dp zGHO_x$$t41)8p#26{U(kCPq2Ldnh$d@l1gslpq395;ANlnAsS|X~1+X1?t|#><+JP z(F)eWKi|ySoozr3FFq|#5Zu`Cr&7^k9O$w;=KhGgkS}c zemR)9XaJgn*yKGg8#h@^*_8_&yCtpPv7xsvhmhFvH(b0iK3y z3xNb&R}<0W`&s5im+ZujJNvj3Kd0-CixdcH^_Y4|`b2KGyCo6rvtStzMz@_ZeM0V;odJjQ87*$?Jk!<=W8x3d*c&B&Hq5}W4pli!F2Y}~)3|B!9unE)m zG!ce%1(sR=HCym!fG5~OBnWcvw}NuVK`FR!F1UIx2yzz$gEEMNIyi7M*l?$}MuMh- z52%9cM|vt%K?a}!5|}Dr5MjWVgFrZgMQDPl7lTHKgHsqoRJenfB!oX`g#xyPC|Evj z6@``6g|CG^eROM_!Xp*;gED4%a@c1jD1$3lfEu}RjKsK$ z$JmR)*n@^xjEtC!&&Z6=_=xXh03aZJaWV?6Sc+#Tg;cnH!J~><2#rCAj!;O1V`zlo z2x|$*jll@V z_=*k5lj^vU9vOxDh>&&&mN)2?^+=XenU(*`^>qgZZCTG=2O21HI7wj?+w zf(*%z=Qx&AxsO^nnpL=%Vrhmp^q4~_a6XBeQpuVi2}T7V6rqSCZdd@E8J1ls4pMhp zga!_j378FcKzY}DFmeL&0GEL285rpwcn2;fxgFkU0Xa8b5{ZUbIgw`IekyPQpQ)W^ zshXV`nywj=kXfGR8J^>*j;|=1>=}mGX@g}Ml-c=$2ebj}W+H%>>o zB7CV7C+caIDF8{>b>On8m95=Ml()MQ z=3219GrUdPKA}slt(&HNyS6^dvohJ*@LM|byK#?eEfxB{z#CqTt1{!;fgKtct(bF3(7zqT zzX5c<4gt1t6TknG3qy=zeB#`+rjeN z!71FrkkrB~3|=q{!$$DGQzmDThD0_i^M_vxJvB8 z63oK7(!`%(cI>u^m&9wVSnJ!5dK|}1aK~~y$VC9Y1O&+7i^yxd$chZeDh0<;kjVAw zux#AOUreuW%*fPRyz4l@lKjVo46dNb#sFM7MfVyX%oKVM0=u!rNBqS@EW}`3!;*`_ zBz((`oRI%8M8kzF%NL9UfERCR?8{Xg$0}^ZgG|gr49l>r%pI)7P|U=~yu9^E=o`v}TwX8T5YY6$r!3mw5DF&nn6|hi zu^pGJoeIm1*}Po_MXexrZ4S@<%m!d5Ws!lZ{T*0R-Bv9(d0jl;x=?uw-B1ADA-%S{ zZE(O%YKzB-SC|Te*#n@{K4#S}q+}+H-WIk72)@*kZP)*M zy$~v$!h_v7^j!)R_zK>c+s=#A=sFGGbe!LRooVg8oXWq+1 zJmVg1S2~C4lAP~ANa~u*=Hc5y4rIJTH18rU+=QnRhh5r?jsz$s%#|MEq&e);9`b}7 z?yi}t1~2TaZlo9F;-oI}VE*y~5AvHn?l7OsdCTo`JqO3Gw*U*&5}u>HP7d_lsiS_8 z&UBhg{_km|)2VF$Q2n;gzVF&r^G9B;T(0dK^V~BO+lwvhgskmfU+Mp5`{YEP#$)L5 zFu$sttUxv{*aArwNzU-lj#ylnNX}cgQqaE`=YCmlq+k!XaZUEIu8<@@$Ox>@Wb0P-UBi%Rap?_{*t} z1WsSe?P<`o`}+BQ>un@Q2Y<-(xbOqMR?$9i$ZOD#46<*|*80xxFo@QfE$|V~{FW@q z_?}%s*wREhss=cT_PPPSy_LAQEQ6Kp@FZf}f^iuy2zkj4F z0Q#v;u&%AD%FZe92JpC<&xPXrih@2!CC*cUa?v2mZ}tNmjm$F zDJBjCV)JTEMy}g#`JDZw-WpcJiNueoficC+Pf->53C?7H`uX%o}fuEB%Lyz{Qi$-v!H0r8bdI|T;_Q5ZrL z?~Vg>1d~~z_YNVuZ)f6o@aBt8v3g@lSz4BG44gk6u`J}MB@M_<9S>To=qwP06Njob z9FxMtNtq&L=DgD7pH81Yf!@65^VZNeCKW-0D2R}upilq*REw}}+Ryg(b0-KDhJc>}&s^Pb3tyZfFF{Nel#cV2;e+N)lfe6YWxJZN?PFZB2 z-fME9Qrdux9A&kW%H>s@2y(-2JT+g=hE_A_sv)^ifffkh5Ngym4@ME2jiV)@&N-%A ziDedKcj09*XBs$`wxTInT+I1zWy{rD{5)%NI{c)hAc5Aoc^-CS}eXMdUI^Xy{|K)?{{?+ryvYmXR~R!gIhn9%DWJ&0Do zZLr;dJ7$?LICKa+_n48(BMk$DN592H^zgv3ysQ7D!|~)QCq)hMNe)F7nHg&rQ?g^@ zx~t6CZ!e++bkPi~Z&C(hdPRA{}-LV{yGJ#6csZ+5;RUQI=ZB@78YKhWV19?@HR#c-4gvw@mgR;^P%?y&(J&jGK&u6UUcFH1>v0xlv1A!ofOFl8Hh?j^s&prRsBpccKkV8Mxi1Sq}{af{dU7I7Y+wE9Q zIN@-MWVTjEqnt8dE*I`q;dF^@m{n|%)K=AxbtRd}j{ErwUu{2zY*vPkIkv4)AC?giIvlBILVYpZd%T$5*fRnq#cL zRxjl6iuJW>l!tD5>yV$_I?`?a4OCi=Bi

12#Y*%%8{56Cp=@UUl5zs&Ir7N8a?O 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 z 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 ax+M%dS|4|*h<=R$e3TV5: View { - struct YAxisViewKey: ViewPreferenceKey { } - struct ChartViewKey: ViewPreferenceKey { } + @Environment(\.chartAxisConfig) private var axisConfig + @State private var preferredDataPoints: [(Double, Double)] = [] + @State private var preferredXRange: ClosedRange? + @State private var preferredXDomainMode: ChartXDomainMode = .numeric - var axisLabelsData = AxisLabelsData() - var axisLabelsStyle = AxisLabelsStyle() - - @State private var yAxisWidth: CGFloat = 25 - @State private var chartWidth: CGFloat = 0 - @State private var chartHeight: CGFloat = 0 + private let yAxisWidth: CGFloat = 42 + private let xAxisHeight: CGFloat = 24 let content: () -> Content @@ -17,82 +15,162 @@ public struct AxisLabels: View { self.content = content } + private var hasYLabels: Bool { + !axisConfig.axisYLabels.isEmpty + } + + private var hasXLabels: Bool { + !axisConfig.axisXLabels.isEmpty + } + + private var effectiveYAxisWidth: CGFloat { + hasYLabels ? yAxisWidth : 0 + } + + private var effectiveXAxisHeight: CGFloat { + hasXLabels ? xAxisHeight : 0 + } + + private var leftAxisGutter: CGFloat { + axisConfig.axisLabelsYPosition == .leading ? effectiveYAxisWidth : 0 + } + + private var rightAxisGutter: CGFloat { + axisConfig.axisLabelsYPosition == .trailing ? effectiveYAxisWidth : 0 + } + + private var visibleXValues: [Double] { + preferredDataPoints + .filter { preferredXRange?.contains($0.0) ?? true } + .map(\.0) + } + + private var xRangeForScale: ClosedRange? { + preferredXRange ?? axisConfig.axisXRange + } + + private var xDomainModeForScale: ChartXDomainMode { + preferredDataPoints.isEmpty ? axisConfig.axisXDomainMode : preferredXDomainMode + } + + private var xScale: ChartXScale { + let scaleValues = visibleXValues.isEmpty ? axisConfig.axisXLabels.map(\.value) : visibleXValues + return ChartXScale(values: scaleValues, + rangeX: xRangeForScale, + mode: xDomainModeForScale, + slotCountHint: max(scaleValues.count, axisConfig.axisXLabels.count)) + } + var yAxis: some View { - VStack(spacing: 0.0) { - ForEach(Array(axisLabelsData.axisYLabels.reversed().enumerated()), id: \.element) { index, axisYData in + VStack(spacing: 0) { + ForEach(Array(axisConfig.axisYLabels.reversed().enumerated()), id: \.offset) { index, axisYData in Text(axisYData) - .font(axisLabelsStyle.axisFont) - .foregroundColor(axisLabelsStyle.axisFontColor) - .frame(height: getYHeight(index: index, - chartHeight: chartHeight, - count: axisLabelsData.axisYLabels.count), - alignment: getYAlignment(index: index, count: axisLabelsData.axisYLabels.count)) - } - } - .padding([.leading, .trailing], 4.0) - .background(ViewGeometry()) - .onPreferenceChange(YAxisViewKey.self) { value in - yAxisWidth = value.first?.size.width ?? 0.0 - } - } + .font(axisConfig.axisFont) + .foregroundColor(axisConfig.axisFontColor) + .frame(maxWidth: .infinity, + alignment: axisConfig.axisLabelsYPosition == .leading ? .trailing : .leading) - func xAxis(chartWidth: CGFloat) -> some View { - HStack(spacing: 0.0) { - ForEach(Array(axisLabelsData.axisXLabels.enumerated()), id: \.element) { index, axisXData in - Text(axisXData) - .font(axisLabelsStyle.axisFont) - .foregroundColor(axisLabelsStyle.axisFontColor) - .frame(width: chartWidth / CGFloat(axisLabelsData.axisXLabels.count - 1)) + if index < axisConfig.axisYLabels.count - 1 { + Spacer(minLength: 0) + } } } - .frame(height: 24.0, alignment: .top) + .padding(.horizontal, 4) } - var chart: some View { - self.content() - .background(ViewGeometry()) - .onPreferenceChange(ChartViewKey.self) { value in - chartWidth = value.first?.size.width ?? 0.0 - chartHeight = value.first?.size.height ?? 0.0 + var xAxis: some View { + GeometryReader { geometry in + let safeSize = geometry.size.sanitized + let width = safeSize.width + + ZStack(alignment: .topLeading) { + ForEach(Array(axisConfig.axisXLabels.enumerated()), id: \.offset) { _, xLabel in + positionedXLabel(xLabel, width: width) + } } + } + .frame(maxWidth: .infinity, alignment: .leading) + .frame(height: xAxisHeight, alignment: .top) } public var body: some View { - VStack(spacing: 0.0) { - HStack { - if axisLabelsStyle.axisLabelsYPosition == .leading { - yAxis - } else { - Spacer(minLength: yAxisWidth) + GeometryReader { geometry in + let safeSize = geometry.size.sanitized + let axisHeight = effectiveXAxisHeight + let chartHeight = max(0, safeSize.height - axisHeight) + + VStack(spacing: 0) { + HStack(spacing: 0) { + if leftAxisGutter > 0 { + yAxis + .frame(width: leftAxisGutter, height: chartHeight, alignment: .trailing) + } + + content() + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + + if rightAxisGutter > 0 { + yAxis + .frame(width: rightAxisGutter, height: chartHeight, alignment: .leading) + } } - chart - if axisLabelsStyle.axisLabelsYPosition == .leading { - Spacer(minLength: yAxisWidth) - } else { - yAxis + .frame(height: chartHeight, alignment: .top) + + if axisHeight > 0 { + HStack(spacing: 0) { + if leftAxisGutter > 0 { + Color.clear.frame(width: leftAxisGutter, height: axisHeight) + } + + xAxis + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + + if rightAxisGutter > 0 { + Color.clear.frame(width: rightAxisGutter, height: axisHeight) + } + } + .frame(height: axisHeight, alignment: .top) } } - xAxis(chartWidth: chartWidth) + .frame(width: safeSize.width, height: safeSize.height, alignment: .topLeading) } - } - - private func getYHeight(index: Int, chartHeight: CGFloat, count: Int) -> CGFloat { - if index == 0 || index == count - 1 { - return chartHeight / (CGFloat(count - 1) * 2) + 10 + .onPreferenceChange(ChartDataPointsPreferenceKey.self) { snapshot in + preferredDataPoints = snapshot.points + } + .onPreferenceChange(ChartXRangePreferenceKey.self) { range in + preferredXRange = range + } + .onPreferenceChange(ChartXDomainModePreferenceKey.self) { mode in + preferredXDomainMode = mode } - - return chartHeight / CGFloat(count - 1) } - private func getYAlignment(index: Int, count: Int) -> Alignment { - if index == 0 { - return .top - } + @ViewBuilder + private func positionedXLabel(_ xLabel: ChartXAxisLabel, width: CGFloat) -> some View { + let normalized = xScale.normalizedX(for: xLabel.value) + let clamped = min(1.0, max(0.0, normalized)) - if index == count - 1 { - return .bottom + if clamped <= 0.001 { + Text(xLabel.title) + .lineLimit(1) + .minimumScaleFactor(0.8) + .font(axisConfig.axisFont) + .foregroundColor(axisConfig.axisFontColor) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading) + } else if clamped >= 0.999 { + Text(xLabel.title) + .lineLimit(1) + .minimumScaleFactor(0.8) + .font(axisConfig.axisFont) + .foregroundColor(axisConfig.axisFontColor) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .trailing) + } else { + Text(xLabel.title) + .lineLimit(1) + .minimumScaleFactor(0.8) + .font(axisConfig.axisFont) + .foregroundColor(axisConfig.axisFontColor) + .position(x: width * CGFloat(clamped), y: xAxisHeight / 2) } - - return .center } } diff --git a/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift b/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift deleted file mode 100644 index 7698ac4e..00000000 --- a/Sources/SwiftUICharts/Base/Axis/Extension/AxisLabels+Extension.swift +++ /dev/null @@ -1,57 +0,0 @@ -import SwiftUI - -extension AxisLabels { - public func setAxisYLabels(_ labels: [String], - position: AxisLabelsYPosition = .leading) -> AxisLabels { - self.axisLabelsData.axisYLabels = labels - self.axisLabelsStyle.axisLabelsYPosition = position - return self - } - - public func setAxisXLabels(_ labels: [String]) -> AxisLabels { - self.axisLabelsData.axisXLabels = labels - return self - } - - public func setAxisYLabels(_ labels: [(Double, String)], - range: ClosedRange, - position: AxisLabelsYPosition = .leading) -> AxisLabels { - let overreach = range.overreach + 1 - var labelArray = [String](repeating: "", count: overreach) - labels.forEach { - let index = Int($0.0) - range.lowerBound - if labelArray[safe: index] != nil { - labelArray[index] = $0.1 - } - } - - self.axisLabelsData.axisYLabels = labelArray - self.axisLabelsStyle.axisLabelsYPosition = position - - return self - } - - public func setAxisXLabels(_ labels: [(Double, String)], range: ClosedRange) -> AxisLabels { - let overreach = range.overreach + 1 - var labelArray = [String](repeating: "", count: overreach) - labels.forEach { - let index = Int($0.0) - range.lowerBound - if labelArray[safe: index] != nil { - labelArray[index] = $0.1 - } - } - - self.axisLabelsData.axisXLabels = labelArray - return self - } - - public func setColor(_ color: Color) -> AxisLabels { - self.axisLabelsStyle.axisFontColor = color - return self - } - - public func setFont(_ font: Font) -> AxisLabels { - self.axisLabelsStyle.axisFont = font - return self - } -} diff --git a/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift index 58221426..61535a81 100644 --- a/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift +++ b/Sources/SwiftUICharts/Base/Axis/Model/AxisLabelsStyle.swift @@ -1,11 +1,4 @@ import SwiftUI -public final class AxisLabelsStyle: ObservableObject { - @Published public var axisFont: Font = .callout - @Published public var axisFontColor: Color = .primary - @Published var axisLabelsYPosition: AxisLabelsYPosition = .leading - @Published var axisLabelsXPosition: AxisLabelsXPosition = .bottom - public init() { - // no-op - } -} +@available(*, deprecated, message: "Use chartAxis* modifiers and ChartAxisConfig") +public typealias AxisLabelsStyle = ChartAxisConfig diff --git a/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift b/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift index f28f35ac..00d38bef 100644 --- a/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift +++ b/Sources/SwiftUICharts/Base/Axis/Model/AxisLablesData.swift @@ -1,10 +1,4 @@ import SwiftUI -public final class AxisLabelsData: ObservableObject { - @Published public var axisYLabels: [String] = [] - @Published public var axisXLabels: [String] = [] - - public init() { - // no-op - } -} +@available(*, deprecated, message: "Use chartAxis* modifiers and ChartAxisConfig") +public typealias AxisLabelsData = ChartAxisConfig diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index e5d7eb3a..a5ec1c2d 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -1,35 +1,25 @@ import SwiftUI -/// View containing data and some kind of chart content -public struct CardView: View, ChartBase { - public var chartData = ChartData() +/// View containing data and chart content. +public struct CardView: View { let content: () -> Content private var showShadow: Bool - @EnvironmentObject var style: ChartStyle - - /// Initialize with view options and a nested `ViewBuilder` - /// - Parameters: - /// - showShadow: should card have a rounded-rectangle shadow around it - /// - content: <#content description#> public init(showShadow: Bool = true, @ViewBuilder content: @escaping () -> Content) { self.showShadow = showShadow self.content = content } - /// The content and behavior of the `CardView`. - /// - /// public var body: some View { - ZStack{ + ZStack { if showShadow { RoundedRectangle(cornerRadius: 20) .fill(Color.white) .shadow(color: Color(white: 0.9, opacity: 1), radius: 8) } - VStack (alignment: .leading) { - self.content() + VStack(alignment: .leading) { + content() } .clipShape(RoundedRectangle(cornerRadius: showShadow ? 20 : 0)) } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift index f1876dcb..39d2ebca 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartBase.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartBase.swift @@ -1,6 +1,4 @@ import SwiftUI -/// Protocol for any type of chart, to get access to underlying data -public protocol ChartBase: View { - var chartData: ChartData { get } -} +@available(*, deprecated, message: "Use View-based chart modifiers (chartData, chartXRange, chartYRange) with chart views.") +public protocol ChartBase: View {} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartData.swift b/Sources/SwiftUICharts/Base/Chart/ChartData.swift index f1eeec36..194400bb 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartData.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartData.swift @@ -1,10 +1,11 @@ import SwiftUI -/// An observable wrapper for an array of data for use in any chart -public class ChartData: ObservableObject { - @Published public var data: [(Double, Double)] = [] +/// Value-backed data model for chart rendering. +public struct ChartData { + public var data: [(Double, Double)] public var rangeY: ClosedRange? public var rangeX: ClosedRange? + public var xDomainMode: ChartXDomainMode var points: [Double] { data.filter { rangeX?.contains($0.0) ?? true }.map { $0.1 } @@ -26,14 +27,11 @@ public class ChartData: ObservableObject { } var normalisedValues: [Double] { - let absoluteValues = values.map { abs($0) } - var maxValue = absoluteValues.max() - if let rangeX = rangeX { - maxValue = Double(rangeX.overreach) - return values.map { ($0 - rangeX.lowerBound) / (maxValue ?? 1.0) } - } - - return values.map { $0 / (maxValue ?? 1.0) } + let xScale = ChartXScale(values: values, + rangeX: rangeX, + mode: xDomainMode, + slotCountHint: values.count) + return values.map { xScale.normalizedX(for: $0) } } var normalisedData: [(Double, Double)] { @@ -41,11 +39,11 @@ public class ChartData: ObservableObject { } var normalisedYRange: Double { - return rangeY == nil ? (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) : 1 + rangeY == nil ? (normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0) : 1 } var normalisedXRange: Double { - return rangeX == nil ? (normalisedValues.max() ?? 0.0) - (normalisedValues.min() ?? 0.0) : 1 + rangeX == nil ? (normalisedValues.max() ?? 0.0) - (normalisedValues.min() ?? 0.0) : 1 } var isInNegativeDomain: Bool { @@ -56,19 +54,30 @@ public class ChartData: ObservableObject { return (points.min() ?? 0.0) < 0 } - /// Initialize with data array - /// - Parameter data: Array of `Double` - public init(_ data: [Double], rangeY: ClosedRange? = nil) { - self.data = data.enumerated().map{ (index, value) in (Double(index), value) } + public init(_ data: [Double], + rangeY: ClosedRange? = nil, + rangeX: ClosedRange? = nil, + xDomainMode: ChartXDomainMode = .categorical) { + self.data = data.enumerated().map { (index, value) in (Double(index), value) } self.rangeY = rangeY + self.rangeX = rangeX + self.xDomainMode = xDomainMode } - public init(_ data: [(Double, Double)], rangeY: ClosedRange? = nil) { + public init(_ data: [(Double, Double)], + rangeY: ClosedRange? = nil, + rangeX: ClosedRange? = nil, + xDomainMode: ChartXDomainMode = .numeric) { self.data = data self.rangeY = rangeY + self.rangeX = rangeX + self.xDomainMode = xDomainMode } - public init() { + public init(xDomainMode: ChartXDomainMode = .numeric) { self.data = [] + self.rangeY = nil + self.rangeX = nil + self.xDomainMode = xDomainMode } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartValue.swift b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift index 48ff0c99..9b223aa8 100644 --- a/Sources/SwiftUICharts/Base/Chart/ChartValue.swift +++ b/Sources/SwiftUICharts/Base/Chart/ChartValue.swift @@ -1,7 +1,11 @@ import SwiftUI -/// Representation of a single data point in a chart that is being observed -public class ChartValue: ObservableObject { - @Published var currentValue: Double = 0 - @Published var interactionInProgress: Bool = false +/// Representation of a single data point in a chart that is being observed. +public final class ChartValue: ObservableObject { + @Published public var currentValue: Double = 0 + @Published public var interactionInProgress: Bool = false + + public init() { + // no-op + } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartXScale.swift b/Sources/SwiftUICharts/Base/Chart/ChartXScale.swift new file mode 100644 index 00000000..70282ce3 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartXScale.swift @@ -0,0 +1,64 @@ +import Foundation + +struct ChartXScale { + private let values: [Double] + private let rangeX: ClosedRange? + private let mode: ChartXDomainMode + private let slotCountHint: Int + + init(values: [Double], + rangeX: ClosedRange?, + mode: ChartXDomainMode, + slotCountHint: Int = 0) { + self.values = values + self.rangeX = rangeX + self.mode = mode + self.slotCountHint = slotCountHint + } + + func normalizedX(for value: Double) -> Double { + let normalized: Double + switch mode { + case .numeric: + normalized = normalizeNumeric(value) + case .categorical: + normalized = normalizeCategorical(value) + } + return min(1.0, max(0.0, normalized)) + } + + private func normalizeNumeric(_ value: Double) -> Double { + if let range = rangeX { + let overreach = range.overreach + guard overreach.isFinite, overreach > 0 else { return 0.5 } + return (value - range.lowerBound) / overreach + } + + guard let minValue = values.min(), + let maxValue = values.max() else { return 0.5 } + let span = maxValue - minValue + guard span.isFinite, span > 0 else { return 0.5 } + return (value - minValue) / span + } + + private func normalizeCategorical(_ value: Double) -> Double { + let lowerBound: Double + if let range = rangeX { + lowerBound = range.lowerBound + } else { + lowerBound = values.min() ?? 0 + } + + let slotCount: Int + if let range = rangeX { + let derived = Int(max(1, floor(range.overreach) + 1)) + slotCount = max(1, derived) + } else if slotCountHint > 0 { + slotCount = slotCountHint + } else { + slotCount = max(1, values.count) + } + + return (value - lowerBound + 0.5) / Double(slotCount) + } +} diff --git a/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift b/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift index d3c4c1f1..b6671040 100644 --- a/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift +++ b/Sources/SwiftUICharts/Base/Common/ViewPreferenceKey.swift @@ -1,8 +1,6 @@ import SwiftUI -public protocol ViewPreferenceKey: PreferenceKey { - typealias Value = [ViewSizeData] -} +public protocol ViewPreferenceKey: PreferenceKey where Value == [ViewSizeData] {} public extension ViewPreferenceKey { static var defaultValue: [ViewSizeData] { diff --git a/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift new file mode 100644 index 00000000..730a5917 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift @@ -0,0 +1,37 @@ +import SwiftUI + +public struct ChartXAxisLabel: Equatable { + public let value: Double + public let title: String + + public init(value: Double, title: String) { + self.value = value + self.title = title + } +} + +public struct ChartAxisConfig { + public var axisYLabels: [String] + public var axisXLabels: [ChartXAxisLabel] + public var axisXRange: ClosedRange? + public var axisXDomainMode: ChartXDomainMode + public var axisFont: Font + public var axisFontColor: Color + public var axisLabelsYPosition: AxisLabelsYPosition + + public init(axisYLabels: [String] = [], + axisXLabels: [ChartXAxisLabel] = [], + axisXRange: ClosedRange? = nil, + axisXDomainMode: ChartXDomainMode = .categorical, + axisFont: Font = .callout, + axisFontColor: Color = .primary, + axisLabelsYPosition: AxisLabelsYPosition = .leading) { + self.axisYLabels = axisYLabels + self.axisXLabels = axisXLabels + self.axisXRange = axisXRange + self.axisXDomainMode = axisXDomainMode + self.axisFont = axisFont + self.axisFontColor = axisFontColor + self.axisLabelsYPosition = axisLabelsYPosition + } +} diff --git a/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift new file mode 100644 index 00000000..610814ce --- /dev/null +++ b/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift @@ -0,0 +1,24 @@ +import SwiftUI + +public struct ChartGridConfig { + public var numberOfHorizontalLines: Int + public var numberOfVerticalLines: Int + public var strokeStyle: StrokeStyle + public var color: Color + public var showBaseLine: Bool + public var baseStrokeStyle: StrokeStyle + + public init(numberOfHorizontalLines: Int = 3, + numberOfVerticalLines: Int = 3, + strokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10]), + color: Color = Color(white: 0.85), + showBaseLine: Bool = true, + baseStrokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1.5, lineCap: .round, dash: [5, 0])) { + self.numberOfHorizontalLines = numberOfHorizontalLines + self.numberOfVerticalLines = numberOfVerticalLines + self.strokeStyle = strokeStyle + self.color = color + self.showBaseLine = showBaseLine + self.baseStrokeStyle = baseStrokeStyle + } +} diff --git a/Sources/SwiftUICharts/Base/Config/ChartLineConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartLineConfig.swift new file mode 100644 index 00000000..ae2bfc28 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Config/ChartLineConfig.swift @@ -0,0 +1,24 @@ +import SwiftUI + +public struct ChartLineConfig { + public var lineWidth: CGFloat + public var backgroundGradient: ColorGradient? + public var showChartMarks: Bool + public var customChartMarksColors: ColorGradient? + public var lineStyle: LineStyle + public var animationEnabled: Bool + + public init(lineWidth: CGFloat = 2.0, + backgroundGradient: ColorGradient? = nil, + showChartMarks: Bool = true, + customChartMarksColors: ColorGradient? = nil, + lineStyle: LineStyle = .curved, + animationEnabled: Bool = true) { + self.lineWidth = lineWidth + self.backgroundGradient = backgroundGradient + self.showChartMarks = showChartMarks + self.customChartMarksColors = customChartMarksColors + self.lineStyle = lineStyle + self.animationEnabled = animationEnabled + } +} diff --git a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift new file mode 100644 index 00000000..2af30b87 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift @@ -0,0 +1,89 @@ +import SwiftUI + +public enum ChartXDomainMode { + case categorical + case numeric +} + +private struct ChartDataPointsKey: EnvironmentKey { + static let defaultValue: [(Double, Double)] = [] +} + +private struct ChartXDomainModeKey: EnvironmentKey { + static let defaultValue: ChartXDomainMode = .numeric +} + +private struct ChartXRangeKey: EnvironmentKey { + static let defaultValue: ClosedRange? = nil +} + +private struct ChartYRangeKey: EnvironmentKey { + static let defaultValue: ClosedRange? = nil +} + +private struct ChartStyleKey: EnvironmentKey { + static let defaultValue = ChartStyle(backgroundColor: .white, foregroundColor: .orangeBright) +} + +private struct ChartInteractionValueKey: EnvironmentKey { + static let defaultValue: ChartValue? = nil +} + +private struct ChartGridConfigKey: EnvironmentKey { + static let defaultValue = ChartGridConfig() +} + +private struct ChartAxisConfigKey: EnvironmentKey { + static let defaultValue = ChartAxisConfig() +} + +private struct ChartLineConfigKey: EnvironmentKey { + static let defaultValue = ChartLineConfig() +} + +public extension EnvironmentValues { + var chartDataPoints: [(Double, Double)] { + get { self[ChartDataPointsKey.self] } + set { self[ChartDataPointsKey.self] = newValue } + } + + var chartXDomainMode: ChartXDomainMode { + get { self[ChartXDomainModeKey.self] } + set { self[ChartXDomainModeKey.self] = newValue } + } + + var chartXRange: ClosedRange? { + get { self[ChartXRangeKey.self] } + set { self[ChartXRangeKey.self] = newValue } + } + + var chartYRange: ClosedRange? { + get { self[ChartYRangeKey.self] } + set { self[ChartYRangeKey.self] = newValue } + } + + var chartStyle: ChartStyle { + get { self[ChartStyleKey.self] } + set { self[ChartStyleKey.self] = newValue } + } + + var chartInteractionValue: ChartValue? { + get { self[ChartInteractionValueKey.self] } + set { self[ChartInteractionValueKey.self] = newValue } + } + + var chartGridConfig: ChartGridConfig { + get { self[ChartGridConfigKey.self] } + set { self[ChartGridConfigKey.self] = newValue } + } + + var chartAxisConfig: ChartAxisConfig { + get { self[ChartAxisConfigKey.self] } + set { self[ChartAxisConfigKey.self] = newValue } + } + + var chartLineConfig: ChartLineConfig { + get { self[ChartLineConfigKey.self] } + set { self[ChartLineConfigKey.self] = newValue } + } +} diff --git a/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift new file mode 100644 index 00000000..21e0b2dc --- /dev/null +++ b/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift @@ -0,0 +1,46 @@ +import SwiftUI + +struct ChartDataPointsSnapshot: Equatable { + let points: [(Double, Double)] + + static func == (lhs: ChartDataPointsSnapshot, rhs: ChartDataPointsSnapshot) -> Bool { + guard lhs.points.count == rhs.points.count else { return false } + return zip(lhs.points, rhs.points).allSatisfy { lhsPoint, rhsPoint in + lhsPoint.0 == rhsPoint.0 && lhsPoint.1 == rhsPoint.1 + } + } +} + +struct ChartDataPointsPreferenceKey: PreferenceKey { + static var defaultValue: ChartDataPointsSnapshot = ChartDataPointsSnapshot(points: []) + + static func reduce(value: inout ChartDataPointsSnapshot, nextValue: () -> ChartDataPointsSnapshot) { + let next = nextValue() + if next.points.count >= value.points.count { + value = next + } + } +} + +struct ChartXRangePreferenceKey: PreferenceKey { + static var defaultValue: ClosedRange? = nil + + static func reduce(value: inout ClosedRange?, nextValue: () -> ClosedRange?) { + if let next = nextValue() { + value = next + } + } +} + +struct ChartXDomainModePreferenceKey: PreferenceKey { + static var defaultValue: ChartXDomainMode = .numeric + + static func reduce(value: inout ChartXDomainMode, nextValue: () -> ChartXDomainMode) { + let next = nextValue() + if value == .categorical || next == .categorical { + value = .categorical + } else { + value = .numeric + } + } +} diff --git a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift index 31c401d9..afaa7512 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGPoint+Extension.swift @@ -8,40 +8,31 @@ extension CGPoint { /// - data: array of `Double` /// - Returns: X and Y delta as a `CGPoint` static func getStep(frame: CGRect, data: [Double]) -> CGPoint { - let padding: CGFloat = 0 + guard data.count > 1 else { + return .zero + } - // stepWidth - var stepWidth: CGFloat = 0.0 - if data.count < 2 { - stepWidth = 0.0 + guard let minPoint = data.min(), let maxPoint = data.max(), minPoint != maxPoint else { + return .zero } - stepWidth = frame.size.width / CGFloat(data.count - 1) - // stepHeight - var stepHeight: CGFloat = 0.0 + let padding: CGFloat = 0 + let stepWidth = frame.size.width / CGFloat(data.count - 1) + let stepHeight: CGFloat - var min: Double? - var max: Double? - if let minPoint = data.min(), let maxPoint = data.max(), minPoint != maxPoint { - min = minPoint - max = maxPoint + if minPoint <= 0 { + stepHeight = (frame.size.height - padding) / CGFloat(maxPoint - minPoint) } else { - return .zero - } - if let min = min, let max = max, min != max { - if min <= 0 { - stepHeight = (frame.size.height - padding) / CGFloat(max - min) - } else { - stepHeight = (frame.size.height - padding) / CGFloat(max + min) - } + stepHeight = (frame.size.height - padding) / CGFloat(maxPoint + minPoint) } return CGPoint(x: stepWidth, y: stepHeight) } func denormalize(with geometry: GeometryProxy) -> CGPoint { - let width = geometry.frame(in: .local).width - let height = geometry.frame(in: .local).height + let frame = geometry.frame(in: .local).sanitized + let width = frame.width + let height = frame.height return CGPoint(x: self.x * width, y: self.y * height) } } diff --git a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift index e66ee562..d45f5742 100644 --- a/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift +++ b/Sources/SwiftUICharts/Base/Extensions/CGRect+Extension.swift @@ -8,4 +8,20 @@ extension CGRect { public var mid: CGPoint { return CGPoint(x: self.midX, y: self.midY) } + + /// Returns a rectangle with finite origin and non-negative finite size. + public var sanitized: CGRect { + CGRect(x: origin.x.isFinite ? origin.x : 0, + y: origin.y.isFinite ? origin.y : 0, + width: max(0, size.width.isFinite ? size.width : 0), + height: max(0, size.height.isFinite ? size.height : 0)) + } +} + +extension CGSize { + /// Returns a size with non-negative finite width and height. + public var sanitized: CGSize { + CGSize(width: max(0, width.isFinite ? width : 0), + height: max(0, height.isFinite ? height : 0)) + } } diff --git a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift b/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift deleted file mode 100644 index 96ec022a..00000000 --- a/Sources/SwiftUICharts/Base/Extensions/ChartBase+Extension.swift +++ /dev/null @@ -1,23 +0,0 @@ -import SwiftUI - -extension ChartBase { - public func data(_ data: [Double]) -> some ChartBase { - chartData.data = data.enumerated().map{ (index, value) in (Double(index), value) } - return self - } - - public func data(_ data: [(Double, Double)]) -> some ChartBase { - chartData.data = data - return self - } - - public func rangeY(_ range: ClosedRange) -> some ChartBase{ - chartData.rangeY = range - return self - } - - public func rangeX(_ range: ClosedRange) -> some ChartBase{ - chartData.rangeX = range - return self - } -} diff --git a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift index 8085fd0c..5120626f 100644 --- a/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift +++ b/Sources/SwiftUICharts/Base/Extensions/Path+QuadCurve.swift @@ -1,6 +1,10 @@ import SwiftUI extension Path { + private static func sanitizedRect(_ rect: CGRect) -> CGRect { + rect.sanitized + } + func trimmedPath(for percent: CGFloat) -> Path { let boundsDistance: CGFloat = 0.001 let completion: CGFloat = 1 - boundsDistance @@ -132,6 +136,7 @@ extension Path { if data.count < 2 { return path } + let rect = sanitizedRect(rect) let convertedXValues = data.map { CGFloat($0.0) * rect.width } let convertedYPoints = data.map { CGFloat($0.1) * rect.height } @@ -155,6 +160,7 @@ extension Path { if filteredData.count < 1 { return path } + let rect = sanitizedRect(rect) let convertedXValues = filteredData.map { CGFloat($0.0) * rect.width } let convertedYPoints = filteredData.map { CGFloat($0.1) * rect.height } @@ -172,21 +178,32 @@ extension Path { static func drawGridLines(numberOfHorizontalLines: Int, numberOfVerticalLines: Int, in rect: CGRect) -> Path { var path = Path() - - for index in 0.. 1 { + for index in 0.. 1 { + for index in 0.. some View { - self.environmentObject(style) - } - - public func toStandardCoordinateSystem() -> some View { + func toStandardCoordinateSystem() -> some View { self .rotationEffect(.degrees(180), anchor: .center) .rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0)) diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift index ba8bfe8d..e93ff937 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGrid.swift @@ -2,7 +2,8 @@ import SwiftUI public struct ChartGrid: View { let content: () -> Content - public var gridOptions = GridOptions() + + @Environment(\.chartGridConfig) private var gridConfig public init(@ViewBuilder content: @escaping () -> Content) { self.content = content @@ -10,15 +11,15 @@ public struct ChartGrid: View { public var body: some View { ZStack { - ChartGridShape(numberOfHorizontalLines: gridOptions.numberOfHorizontalLines, - numberOfVerticalLines: gridOptions.numberOfVerticalLines) - .stroke(gridOptions.color, style: gridOptions.strokeStyle) - if gridOptions.showBaseLine { + ChartGridShape(numberOfHorizontalLines: gridConfig.numberOfHorizontalLines, + numberOfVerticalLines: gridConfig.numberOfVerticalLines) + .stroke(gridConfig.color, style: gridConfig.strokeStyle) + if gridConfig.showBaseLine { ChartGridBaseShape() - .stroke(gridOptions.color, style: gridOptions.baseStrokeStyle) + .stroke(gridConfig.color, style: gridConfig.baseStrokeStyle) .rotationEffect(.degrees(180), anchor: .center) } - self.content() + content() } } } diff --git a/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift b/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift index 6b9bd68c..57ca9669 100644 --- a/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift +++ b/Sources/SwiftUICharts/Base/Grid/ChartGridBaseShape.swift @@ -2,6 +2,7 @@ import SwiftUI struct ChartGridBaseShape: Shape { func path(in rect: CGRect) -> Path { + let rect = rect.sanitized var path = Path() path.move(to: CGPoint(x: 0, y: 0)) path.addLine(to: CGPoint(x: rect.width, y: 0)) diff --git a/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift b/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift deleted file mode 100644 index 05e15ed8..00000000 --- a/Sources/SwiftUICharts/Base/Grid/Extension/Grid+Extension.swift +++ /dev/null @@ -1,31 +0,0 @@ -import SwiftUI - -extension ChartGrid { - public func setNumberOfHorizontalLines(_ numberOfLines: Int) -> ChartGrid { - self.gridOptions.numberOfHorizontalLines = numberOfLines - return self - } - - public func setNumberOfVerticalLines(_ numberOfLines: Int) -> ChartGrid { - self.gridOptions.numberOfVerticalLines = numberOfLines - return self - } - - public func setStoreStyle(_ strokeStyle: StrokeStyle) -> ChartGrid { - self.gridOptions.strokeStyle = strokeStyle - return self - } - - public func setColor(_ color: Color) -> ChartGrid { - self.gridOptions.color = color - return self - } - - public func showBaseLine(_ show: Bool, with style: StrokeStyle? = nil) -> ChartGrid { - self.gridOptions.showBaseLine = show - if let style = style { - self.gridOptions.baseStrokeStyle = style - } - return self - } -} diff --git a/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift b/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift index 2e107a30..f1e68d56 100644 --- a/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift +++ b/Sources/SwiftUICharts/Base/Grid/Model/GridOptions.swift @@ -1,14 +1,4 @@ import SwiftUI -public final class GridOptions: ObservableObject { - @Published public var numberOfHorizontalLines: Int = 3 - @Published public var numberOfVerticalLines: Int = 3 - @Published public var strokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10]) - @Published public var color: Color = Color(white: 0.85) - @Published public var showBaseLine: Bool = true - @Published public var baseStrokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1.5, lineCap: .round, dash: [5, 0]) - - public init() { - // no-op - } -} +@available(*, deprecated, renamed: "ChartGridConfig") +public typealias GridOptions = ChartGridConfig diff --git a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift index fb1a8909..870e38fc 100644 --- a/Sources/SwiftUICharts/Base/Label/ChartLabel.swift +++ b/Sources/SwiftUICharts/Base/Label/ChartLabel.swift @@ -1,6 +1,6 @@ import SwiftUI -/// What kind of label - this affects color, size, position of the label +/// What kind of label - this affects color, size, position of the label. public enum ChartLabelType { case title case subTitle @@ -9,16 +9,42 @@ public enum ChartLabelType { case legend } -/// A chart may contain any number of labels in pre-set positions based on their `ChartLabelType` +/// A chart may contain any number of labels in pre-set positions based on their `ChartLabelType`. public struct ChartLabel: View { - @EnvironmentObject var chartValue: ChartValue - @State var textToDisplay:String = "" - var format: String = "%.01f" + @Environment(\.chartInteractionValue) private var chartValue private var title: String + private var format: String + private let labelType: ChartLabelType + + public init(_ title: String, + type: ChartLabelType = .title, + format: String = "%.01f") { + self.title = title + self.labelType = type + self.format = format + } + + public var body: some View { + if let chartValue = chartValue { + ChartLabelObservedValue(title: title, + format: format, + labelSize: labelSize, + labelPadding: labelPadding, + labelColor: labelColor, + chartValue: chartValue) + } else { + HStack { + Text(title) + .font(.system(size: labelSize)) + .bold() + .foregroundColor(labelColor) + .padding(labelPadding) + Spacer() + } + } + } - /// Label font size - /// - Returns: the font size of the label private var labelSize: CGFloat { switch labelType { case .title: @@ -34,8 +60,6 @@ public struct ChartLabel: View { } } - /// Padding around label - /// - Returns: the edge padding to use based on position of the label private var labelPadding: EdgeInsets { switch labelType { case .title: @@ -51,55 +75,56 @@ public struct ChartLabel: View { } } - /// Which type (color, size, position) for label - private let labelType: ChartLabelType - - /// Foreground color for this label - /// - Returns: Color of label based on its `ChartLabelType` private var labelColor: Color { switch labelType { case .title: - return Color.primary + return .primary case .legend: - return Color.secondary + return .secondary case .subTitle: - return Color.primary + return .primary case .largeTitle: - return Color.primary + return .primary case .custom(_, _, let color): return color } } +} - /// Initialize - /// - Parameters: - /// - title: Any `String` - /// - type: Which `ChartLabelType` to use - public init (_ title: String, - type: ChartLabelType = .title, - format: String = "%.01f") { +private struct ChartLabelObservedValue: View { + @ObservedObject var chartValue: ChartValue + + let title: String + let format: String + let labelSize: CGFloat + let labelPadding: EdgeInsets + let labelColor: Color + + init(title: String, + format: String, + labelSize: CGFloat, + labelPadding: EdgeInsets, + labelColor: Color, + chartValue: ChartValue) { self.title = title - labelType = type self.format = format + self.labelSize = labelSize + self.labelPadding = labelPadding + self.labelColor = labelColor + self.chartValue = chartValue } - /// The content and behavior of the `ChartLabel`. - /// - /// Displays current value if chart is currently being touched along a data point, otherwise the specified text. - public var body: some View { + var body: some View { HStack { - Text(textToDisplay) + Text(chartValue.interactionInProgress + ? String(format: format, chartValue.currentValue) + : title) .font(.system(size: labelSize)) .bold() - .foregroundColor(self.labelColor) - .padding(self.labelPadding) - .onAppear { - self.textToDisplay = self.title - } - .onReceive(self.chartValue.objectWillChange) { _ in - self.textToDisplay = self.chartValue.interactionInProgress ? String(format: format, self.chartValue.currentValue) : self.title - } - if !self.chartValue.interactionInProgress { + .foregroundColor(labelColor) + .padding(labelPadding) + + if !chartValue.interactionInProgress { Spacer() } } diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift new file mode 100644 index 00000000..413078ff --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift @@ -0,0 +1,126 @@ +import SwiftUI + +private struct ChartXAxisLabelsModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let labels: [ChartXAxisLabel] + let range: ClosedRange? + let mode: ChartXDomainMode + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisXLabels = labels + updated.axisXRange = range + updated.axisXDomainMode = mode + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartYAxisLabelsModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let labels: [String] + let position: AxisLabelsYPosition + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisYLabels = labels + updated.axisLabelsYPosition = position + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartAxisFontModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let font: Font + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisFont = font + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartAxisColorModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let color: Color + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisFontColor = color + return content.environment(\.chartAxisConfig, updated) + } +} + +public extension View { + func chartXAxisLabels(_ labels: [String]) -> some View { + modifier(ChartXAxisLabelsModifier(labels: ChartAxisLabelMapper.mapXAxis(labels), + range: labels.isEmpty ? nil : 0...Double(labels.count - 1), + mode: .categorical)) + } + + func chartXAxisLabels(_ labels: [(Double, String)], range: ClosedRange) -> some View { + let mapped = ChartAxisLabelMapper.mapXAxis(labels, in: range) + return modifier(ChartXAxisLabelsModifier(labels: mapped, + range: Double(range.lowerBound)...Double(range.upperBound), + mode: .numeric)) + } + + func chartYAxisLabels(_ labels: [String], + position: AxisLabelsYPosition = .leading) -> some View { + modifier(ChartYAxisLabelsModifier(labels: labels, position: position)) + } + + func chartYAxisLabels(_ labels: [(Double, String)], + range: ClosedRange, + position: AxisLabelsYPosition = .leading) -> some View { + modifier(ChartYAxisLabelsModifier(labels: ChartAxisLabelMapper.mapYAxis(labels, in: range), position: position)) + } + + func chartAxisFont(_ font: Font) -> some View { + modifier(ChartAxisFontModifier(font: font)) + } + + func chartAxisColor(_ color: Color) -> some View { + modifier(ChartAxisColorModifier(color: color)) + } +} + +enum ChartAxisLabelMapper { + static func mapXAxis(_ labels: [String]) -> [ChartXAxisLabel] { + labels.enumerated().map { index, label in + ChartXAxisLabel(value: Double(index), title: label) + } + } + + static func mapXAxis(_ labels: [(Double, String)], in range: ClosedRange) -> [ChartXAxisLabel] { + var labelsByValue: [Double: String] = [:] + for (value, title) in labels { + labelsByValue[value] = title + } + + for value in range { + labelsByValue[Double(value)] = labelsByValue[Double(value)] ?? "" + } + + return labelsByValue + .sorted(by: { $0.key < $1.key }) + .map { ChartXAxisLabel(value: $0.key, title: $0.value) } + } + + static func mapYAxis(_ labels: [(Double, String)], in range: ClosedRange) -> [String] { + let count = max(0, range.overreach + 1) + guard count > 0 else { return [] } + + var labelArray = Array(repeating: "", count: count) + for (value, label) in labels { + let index = Int(value) - range.lowerBound + if index >= 0, index < labelArray.count { + labelArray[index] = label + } + } + return labelArray + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift new file mode 100644 index 00000000..948abc7f --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift @@ -0,0 +1,51 @@ +import SwiftUI + +private struct ChartDataValuesModifier: ViewModifier { + let points: [(Double, Double)] + let xDomainMode: ChartXDomainMode + + func body(content: Content) -> some View { + content + .environment(\.chartDataPoints, points) + .environment(\.chartXDomainMode, xDomainMode) + .preference(key: ChartDataPointsPreferenceKey.self, value: ChartDataPointsSnapshot(points: points)) + .preference(key: ChartXDomainModePreferenceKey.self, value: xDomainMode) + } +} + +private struct ChartXRangeModifier: ViewModifier { + let range: ClosedRange? + + func body(content: Content) -> some View { + content + .environment(\.chartXRange, range) + .preference(key: ChartXRangePreferenceKey.self, value: range) + } +} + +private struct ChartYRangeModifier: ViewModifier { + let range: ClosedRange? + + func body(content: Content) -> some View { + content.environment(\.chartYRange, range) + } +} + +public extension View { + func chartData(_ points: [Double]) -> some View { + let indexed = points.enumerated().map { (index, value) in (Double(index), value) } + return modifier(ChartDataValuesModifier(points: indexed, xDomainMode: .categorical)) + } + + func chartData(_ points: [(Double, Double)]) -> some View { + modifier(ChartDataValuesModifier(points: points, xDomainMode: .numeric)) + } + + func chartXRange(_ range: ClosedRange?) -> some View { + modifier(ChartXRangeModifier(range: range)) + } + + func chartYRange(_ range: ClosedRange?) -> some View { + modifier(ChartYRangeModifier(range: range)) + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartGridModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartGridModifiers.swift new file mode 100644 index 00000000..dc179321 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartGridModifiers.swift @@ -0,0 +1,59 @@ +import SwiftUI + +private struct ChartGridLinesModifier: ViewModifier { + @Environment(\.chartGridConfig) private var currentConfig + + let horizontal: Int + let vertical: Int + + func body(content: Content) -> some View { + var updated = currentConfig + updated.numberOfHorizontalLines = horizontal + updated.numberOfVerticalLines = vertical + return content.environment(\.chartGridConfig, updated) + } +} + +private struct ChartGridStrokeModifier: ViewModifier { + @Environment(\.chartGridConfig) private var currentConfig + + let style: StrokeStyle + let color: Color + + func body(content: Content) -> some View { + var updated = currentConfig + updated.strokeStyle = style + updated.color = color + return content.environment(\.chartGridConfig, updated) + } +} + +private struct ChartGridBaselineModifier: ViewModifier { + @Environment(\.chartGridConfig) private var currentConfig + + let visible: Bool + let style: StrokeStyle? + + func body(content: Content) -> some View { + var updated = currentConfig + updated.showBaseLine = visible + if let style = style { + updated.baseStrokeStyle = style + } + return content.environment(\.chartGridConfig, updated) + } +} + +public extension View { + func chartGridLines(horizontal: Int, vertical: Int) -> some View { + modifier(ChartGridLinesModifier(horizontal: horizontal, vertical: vertical)) + } + + func chartGridStroke(style: StrokeStyle, color: Color) -> some View { + modifier(ChartGridStrokeModifier(style: style, color: color)) + } + + func chartGridBaseline(_ visible: Bool, style: StrokeStyle? = nil) -> some View { + modifier(ChartGridBaselineModifier(visible: visible, style: style)) + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift new file mode 100644 index 00000000..ab9f8bcc --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift @@ -0,0 +1,15 @@ +import SwiftUI + +private struct ChartInteractionModifier: ViewModifier { + let value: ChartValue? + + func body(content: Content) -> some View { + content.environment(\.chartInteractionValue, value) + } +} + +public extension View { + func chartInteractionValue(_ value: ChartValue?) -> some View { + modifier(ChartInteractionModifier(value: value)) + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartLineModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartLineModifiers.swift new file mode 100644 index 00000000..ffd0a3e6 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartLineModifiers.swift @@ -0,0 +1,85 @@ +import SwiftUI + +private struct ChartLineWidthModifier: ViewModifier { + @Environment(\.chartLineConfig) private var currentConfig + + let width: CGFloat + + func body(content: Content) -> some View { + var updated = currentConfig + updated.lineWidth = width + return content.environment(\.chartLineConfig, updated) + } +} + +private struct ChartLineBackgroundModifier: ViewModifier { + @Environment(\.chartLineConfig) private var currentConfig + + let gradient: ColorGradient? + + func body(content: Content) -> some View { + var updated = currentConfig + updated.backgroundGradient = gradient + return content.environment(\.chartLineConfig, updated) + } +} + +private struct ChartLineMarksModifier: ViewModifier { + @Environment(\.chartLineConfig) private var currentConfig + + let visible: Bool + let color: ColorGradient? + + func body(content: Content) -> some View { + var updated = currentConfig + updated.showChartMarks = visible + updated.customChartMarksColors = color + return content.environment(\.chartLineConfig, updated) + } +} + +private struct ChartLineStyleModifier: ViewModifier { + @Environment(\.chartLineConfig) private var currentConfig + + let style: LineStyle + + func body(content: Content) -> some View { + var updated = currentConfig + updated.lineStyle = style + return content.environment(\.chartLineConfig, updated) + } +} + +private struct ChartLineAnimationModifier: ViewModifier { + @Environment(\.chartLineConfig) private var currentConfig + + let enabled: Bool + + func body(content: Content) -> some View { + var updated = currentConfig + updated.animationEnabled = enabled + return content.environment(\.chartLineConfig, updated) + } +} + +public extension View { + func chartLineWidth(_ width: CGFloat) -> some View { + modifier(ChartLineWidthModifier(width: width)) + } + + func chartLineBackground(_ gradient: ColorGradient?) -> some View { + modifier(ChartLineBackgroundModifier(gradient: gradient)) + } + + func chartLineMarks(_ visible: Bool, color: ColorGradient? = nil) -> some View { + modifier(ChartLineMarksModifier(visible: visible, color: color)) + } + + func chartLineStyle(_ style: LineStyle) -> some View { + modifier(ChartLineStyleModifier(style: style)) + } + + func chartLineAnimation(_ enabled: Bool) -> some View { + modifier(ChartLineAnimationModifier(enabled: enabled)) + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartStyleModifier.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartStyleModifier.swift new file mode 100644 index 00000000..d2d35bca --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartStyleModifier.swift @@ -0,0 +1,15 @@ +import SwiftUI + +private struct ChartStyleModifier: ViewModifier { + let style: ChartStyle + + func body(content: Content) -> some View { + content.environment(\.chartStyle, style) + } +} + +public extension View { + func chartStyle(_ style: ChartStyle) -> some View { + modifier(ChartStyleModifier(style: style)) + } +} diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index 5ecc3a44..0aea99f8 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -1,16 +1,16 @@ import SwiftUI -public class ChartStyle: ObservableObject { - public let backgroundColor: ColorGradient +public struct ChartStyle { + public let backgroundColor: ColorGradient public let foregroundColor: [ColorGradient] public init(backgroundColor: Color, foregroundColor: [ColorGradient]) { - self.backgroundColor = ColorGradient.init(backgroundColor) + self.backgroundColor = ColorGradient(backgroundColor) self.foregroundColor = foregroundColor } public init(backgroundColor: Color, foregroundColor: ColorGradient) { - self.backgroundColor = ColorGradient.init(backgroundColor) + self.backgroundColor = ColorGradient(backgroundColor) self.foregroundColor = [foregroundColor] } @@ -23,5 +23,4 @@ public class ChartStyle: ObservableObject { self.backgroundColor = backgroundColor self.foregroundColor = foregroundColor } - } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index 5727831c..c9ba42de 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -1,13 +1,14 @@ import SwiftUI -public struct BarChart: ChartBase { - public var chartData = ChartData() +public struct BarChart: View { + @Environment(\.chartDataPoints) private var points + @Environment(\.chartYRange) private var rangeY + @Environment(\.chartXRange) private var rangeX + @Environment(\.chartStyle) private var style - @EnvironmentObject var style: ChartStyle + public init() {} public var body: some View { - BarChartRow(chartData: chartData, style: style) + BarChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) } - - public init() {} } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 1115d30b..57649662 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -1,69 +1,77 @@ import SwiftUI public struct BarChartRow: View { - @EnvironmentObject var chartValue: ChartValue - @ObservedObject var chartData: ChartData + @Environment(\.chartInteractionValue) private var chartValue + + var chartData: ChartData @State private var touchLocation: CGFloat = -1.0 var style: ChartStyle - - var maxValue: Double { - guard let max = chartData.points.max() else { - return 1 - } - return max != 0 ? max : 1 - } public var body: some View { GeometryReader { geometry in - HStack(alignment: .bottom, - spacing: geometry.frame(in: .local).width / CGFloat(chartData.data.count * 3)) { - ForEach(0.. 0 else { return } + touchLocation = value.location.x / width + if let currentValue = getCurrentValue(width: width), let interactionValue = chartValue { + interactionValue.currentValue = currentValue + interactionValue.interactionInProgress = true } }) - .onEnded({ value in - self.chartValue.interactionInProgress = false - self.touchLocation = -1 + .onEnded({ _ in + chartValue?.interactionInProgress = false + touchLocation = -1 }) ) } } func getScaleSize(touchLocation: CGFloat, index: Int) -> CGSize { - if touchLocation > CGFloat(index)/CGFloat(chartData.data.count) && - touchLocation < CGFloat(index+1)/CGFloat(chartData.data.count) { + if touchLocation > CGFloat(index) / CGFloat(max(1, chartData.data.count)) && + touchLocation < CGFloat(index + 1) / CGFloat(max(1, chartData.data.count)) { return CGSize(width: 1.4, height: 1.1) } return CGSize(width: 1, height: 1) } func getCurrentValue(width: CGFloat) -> Double? { - guard self.chartData.data.count > 0 else { return nil} - let index = max(0,min(self.chartData.data.count-1,Int(floor((self.touchLocation*width)/(width/CGFloat(self.chartData.data.count)))))) - return self.chartData.points[index] - } + guard !chartData.data.isEmpty else { return nil } + guard width.isFinite, width > 0 else { return nil } + let denominator = width / CGFloat(chartData.data.count) + guard denominator > 0, denominator.isFinite else { return nil } + let index = max(0, min(chartData.data.count - 1, Int(floor((touchLocation * width) / denominator)))) + return chartData.points[index] + } } struct BarChartRow_Previews: PreviewProvider { static let chartData = ChartData([6, 2, 5, 8, 6]) static let chartStyle = ChartStyle(backgroundColor: .white, foregroundColor: .orangeBright) + static var previews: some View { BarChartRow(chartData: chartData, style: chartStyle) } diff --git a/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift b/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift deleted file mode 100644 index 03920e1e..00000000 --- a/Sources/SwiftUICharts/Charts/LineChart/Extension/LineChart+Extension.swift +++ /dev/null @@ -1,29 +0,0 @@ -import SwiftUI - -extension LineChart { - public func setLineWidth(width: CGFloat) -> LineChart { - self.chartProperties.lineWidth = width - return self - } - - public func setBackground(colorGradient: ColorGradient) -> LineChart { - self.chartProperties.backgroundGradient = colorGradient - return self - } - - public func showChartMarks(_ show: Bool, with color: ColorGradient? = nil) -> LineChart { - self.chartProperties.showChartMarks = show - self.chartProperties.customChartMarksColors = color - return self - } - - public func setLineStyle(to style: LineStyle) -> LineChart { - self.chartProperties.lineStyle = style - return self - } - - public func withAnimation(_ enabled: Bool) -> LineChart { - self.chartProperties.animationEnabled = enabled - return self - } -} diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 2e2fc214..90308d80 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -2,43 +2,37 @@ import SwiftUI /// A single line of data, a view in a `LineChart` public struct Line: View { - @ObservedObject var chartData: ChartData - @ObservedObject var chartProperties: LineChartProperties + var chartData: ChartData + var chartProperties: ChartLineConfig - var curvedLines: Bool = true var style: ChartStyle - @State private var showIndicator: Bool = false - @State private var touchLocation: CGPoint = .zero @State private var didCellAppear: Bool = false - var path: Path { - Path.quadCurvedPathWithPoints(points: chartData.normalisedPoints, - step: CGPoint(x: 1.0, y: 1.0)) - } - public init(chartData: ChartData, style: ChartStyle, - chartProperties: LineChartProperties) { + chartProperties: ChartLineConfig) { self.chartData = chartData self.style = style self.chartProperties = chartProperties } - + public var body: some View { GeometryReader { geometry in + let safeFrame = geometry.frame(in: .local).sanitized ZStack { - if self.didCellAppear, let backgroundColor = chartProperties.backgroundGradient { + if didCellAppear, let backgroundColor = chartProperties.backgroundGradient { LineBackgroundShapeView(chartData: chartData, geometry: geometry, backgroundColor: backgroundColor) } lineShapeView(geometry: geometry) } + .frame(width: safeFrame.width, height: safeFrame.height, alignment: .topLeading) .onAppear { didCellAppear = true } - .onDisappear() { + .onDisappear { didCellAppear = false } } @@ -52,7 +46,7 @@ public struct Line: View { geometry: geometry, style: style, trimTo: didCellAppear ? 1.0 : 0.0) - .animation(Animation.easeIn(duration: 0.75)) + .animation(Animation.easeIn(duration: 0.75)) } else { LineShapeView(chartData: chartData, chartProperties: chartProperties, @@ -63,49 +57,18 @@ public struct Line: View { } } -// MARK: - Private functions - -extension Line { - /// Calculate point closest to where the user touched - /// - Parameter touchLocation: location in view where touched - /// - Returns: `CGPoint` of data point on chart - private func getClosestPointOnPath(geometry: GeometryProxy, touchLocation: CGPoint) -> CGPoint { - let geometryWidth = geometry.frame(in: .local).width - let normalisedTouchLocationX = (touchLocation.x / geometryWidth) * CGFloat(chartData.normalisedPoints.count - 1) - let closest = self.path.point(to: normalisedTouchLocationX) - var denormClosest = closest.denormalize(with: geometry) - denormClosest.x = denormClosest.x / CGFloat(chartData.normalisedPoints.count - 1) - denormClosest.y = denormClosest.y / CGFloat(chartData.normalisedYRange) - return denormClosest - } - -// /// Figure out where closest touch point was -// /// - Parameter point: location of data point on graph, near touch location - private func getClosestDataPoint(geometry: GeometryProxy, touchLocation: CGPoint) { - let geometryWidth = geometry.frame(in: .local).width - let index = Int(round((touchLocation.x / geometryWidth) * CGFloat(chartData.points.count - 1))) - if (index >= 0 && index < self.chartData.data.count){ -// self.chartValue.currentValue = self.chartData.points[index] - } - } -} - struct Line_Previews: PreviewProvider { - /// Predefined style, black over white, for preview static let blackLineStyle = ChartStyle(backgroundColor: ColorGradient(.white), foregroundColor: ColorGradient(.black)) - - /// Predefined style red over white, for preview static let redLineStyle = ChartStyle(backgroundColor: .whiteBlack, foregroundColor: ColorGradient(.red)) static var previews: some View { Group { Line(chartData: ChartData([8, 23, 32, 7, 23, -4]), style: blackLineStyle, - chartProperties: LineChartProperties()) - Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), + chartProperties: ChartLineConfig()) + Line(chartData: ChartData([8, 23, 32, 7, 23, 43]), style: redLineStyle, - chartProperties: LineChartProperties()) + chartProperties: ChartLineConfig()) } } } - diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index c069ec0b..3cde9d4d 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -1,15 +1,18 @@ import SwiftUI -public struct LineChart: ChartBase { - public var chartData = ChartData() - @EnvironmentObject var style: ChartStyle - public var chartProperties = LineChartProperties() +public struct LineChart: View { + @Environment(\.chartDataPoints) private var points + @Environment(\.chartYRange) private var rangeY + @Environment(\.chartXRange) private var rangeX + @Environment(\.chartXDomainMode) private var xDomainMode + @Environment(\.chartStyle) private var style + @Environment(\.chartLineConfig) private var lineConfig + + public init() {} public var body: some View { - Line(chartData: chartData, - style: style, - chartProperties: chartProperties) + Line(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX, xDomainMode: xDomainMode), + style: style, + chartProperties: lineConfig) } - - public init() {} } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift index 308debbc..b1542e1f 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift @@ -2,7 +2,7 @@ import SwiftUI struct LineShapeView: View, Animatable { var chartData: ChartData - var chartProperties: LineChartProperties + var chartProperties: ChartLineConfig var geometry: GeometryProxy var style: ChartStyle @@ -48,30 +48,30 @@ struct LineShapeView: View, Animatable { struct LineShapeView_Previews: PreviewProvider { static let chartData = ChartData([6, 8, 6], rangeY: 6...10) static let chartDataOutOfRange = ChartData([-1, 8, 6, 12, 3], rangeY: -5...15) - - static let chartDataOutOfRange2 = ChartData([6,6,8,5], rangeY: 5...10) + static let chartDataOutOfRange2 = ChartData([6, 6, 8, 5], rangeY: 5...10) static let chartStyle = ChartStyle(backgroundColor: Color.white, foregroundColor: [ColorGradient(Color.orange, Color.red)]) + static var previews: some View { Group { GeometryReader { geometry in LineShapeView(chartData: chartData, - chartProperties: LineChartProperties(), + chartProperties: ChartLineConfig(), geometry: geometry, style: chartStyle, trimTo: 1.0) } GeometryReader { geometry in LineShapeView(chartData: chartDataOutOfRange, - chartProperties: LineChartProperties(), + chartProperties: ChartLineConfig(), geometry: geometry, style: chartStyle, trimTo: 1.0) } GeometryReader { geometry in LineShapeView(chartData: chartDataOutOfRange2, - chartProperties: LineChartProperties(), + chartProperties: ChartLineConfig(), geometry: geometry, style: chartStyle, trimTo: 1.0) @@ -79,5 +79,3 @@ struct LineShapeView_Previews: PreviewProvider { } } } - - diff --git a/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift index 24893be2..c6684624 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Model/LineChartProperties.swift @@ -1,13 +1,4 @@ import SwiftUI -public class LineChartProperties: ObservableObject { - @Published var lineWidth: CGFloat = 2.0 - @Published var backgroundGradient: ColorGradient? - @Published var showChartMarks: Bool = true - @Published var customChartMarksColors: ColorGradient? - @Published var lineStyle: LineStyle = .curved - @Published var animationEnabled: Bool = true - public init() { - // no-op - } -} +@available(*, deprecated, renamed: "ChartLineConfig") +public typealias LineChartProperties = ChartLineConfig diff --git a/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift b/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift index c3c3d4a2..1612e8f2 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Model/LineStyle.swift @@ -1,6 +1,6 @@ import Foundation -public enum LineStyle { +public enum LineStyle: Sendable { case curved case straight } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index 63e91260..ce38b60e 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -1,17 +1,16 @@ import SwiftUI /// A type of chart that displays a slice of "pie" for each data point -public struct PieChart: ChartBase { - public var chartData = ChartData() +public struct PieChart: View { + @Environment(\.chartDataPoints) private var points + @Environment(\.chartYRange) private var rangeY + @Environment(\.chartXRange) private var rangeX + @Environment(\.chartStyle) private var style - @EnvironmentObject var style: ChartStyle + public init() {} - /// The content and behavior of the `PieChart`. - /// - /// public var body: some View { - PieChartRow(chartData: chartData, style: style) + PieChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) + .aspectRatio(1, contentMode: .fit) } - - public init() {} } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift index f733bcd7..465f6992 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartCell.swift @@ -12,8 +12,11 @@ struct PieSlice: Identifiable { public struct PieChartCell: View { @State private var show: Bool = false var rect: CGRect + private var safeRect: CGRect { + rect.sanitized + } var radius: CGFloat { - return min(rect.width, rect.height)/2 + return min(safeRect.width, safeRect.height)/2 } var startDeg: Double var endDeg: Double @@ -22,12 +25,12 @@ public struct PieChartCell: View { var path: Path { var path = Path() path.addArc( - center: rect.mid, + center: safeRect.mid, radius: self.radius, startAngle: Angle(degrees: self.startDeg), endAngle: Angle(degrees: self.endDeg), clockwise: false) - path.addLine(to: rect.mid) + path.addLine(to: safeRect.mid) path.closeSubpath() return path } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift index d9c68d8b..5dd0d4e0 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartHelpers.swift @@ -1,7 +1,9 @@ import SwiftUI func isPointInCircle(point: CGPoint, circleRect: CGRect) -> Bool { + let circleRect = circleRect.sanitized let r = min(circleRect.width, circleRect.height) / 2 + guard r > 0 else { return false } let center = CGPoint(x: circleRect.midX, y: circleRect.midY) let dx = point.x - center.x let dy = point.y - center.y @@ -10,9 +12,13 @@ func isPointInCircle(point: CGPoint, circleRect: CGRect) -> Bool { } func degree(for point: CGPoint, inCircleRect circleRect: CGRect) -> Double { + let circleRect = circleRect.sanitized let center = CGPoint(x: circleRect.midX, y: circleRect.midY) let dx = point.x - center.x let dy = point.y - center.y + guard dx != 0 else { + return dy >= 0 ? 90 : 270 + } let acuteDegree = Double(atan(dy / dx)) * (180 / .pi) let isInBottomRight = dx >= 0 && dy >= 0 diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index f812a17e..74e70054 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -2,16 +2,16 @@ import SwiftUI /// A single "row" (slice) of data, a view in a `PieChart` public struct PieChartRow: View { - @ObservedObject var chartData: ChartData - @EnvironmentObject var chartValue: ChartValue + @Environment(\.chartInteractionValue) private var chartValue + var chartData: ChartData var style: ChartStyle var slices: [PieSlice] { var tempSlices: [PieSlice] = [] var lastEndDeg: Double = 0 let maxValue: Double = chartData.points.reduce(0, +) - + for slice in chartData.points { let normalized: Double = Double(slice) / (maxValue == 0 ? 1 : maxValue) let startDeg = lastEndDeg @@ -19,50 +19,51 @@ public struct PieChartRow: View { lastEndDeg = endDeg tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice)) } - + return tempSlices } @State private var currentTouchedIndex = -1 { didSet { - if oldValue != currentTouchedIndex { - chartValue.interactionInProgress = currentTouchedIndex != -1 - guard currentTouchedIndex != -1 else { return } - chartValue.currentValue = slices[currentTouchedIndex].value + guard oldValue != currentTouchedIndex, let chartValue = chartValue else { + return } + + chartValue.interactionInProgress = currentTouchedIndex != -1 + guard currentTouchedIndex != -1 else { return } + chartValue.currentValue = slices[currentTouchedIndex].value } } public var body: some View { GeometryReader { geometry in + let rect = geometry.frame(in: .local).sanitized ZStack { - ForEach(0.. touchDegree }) ?? -1 - } else { - currentTouchedIndex = -1 - } - }) - .onEnded({ value in - currentTouchedIndex = -1 - }) + .onChanged({ value in + let isTouchInPie = isPointInCircle(point: value.location, circleRect: rect) + if isTouchInPie { + let touchDegree = degree(for: value.location, inCircleRect: rect) + currentTouchedIndex = slices.firstIndex(where: { $0.startDeg < touchDegree && $0.endDeg > touchDegree }) ?? -1 + } else { + currentTouchedIndex = -1 + } + }) + .onEnded({ _ in + currentTouchedIndex = -1 + }) ) } } diff --git a/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift b/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift index dee10540..c42599c1 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/Ring.swift @@ -110,6 +110,7 @@ struct Ring: View { var body: some View { GeometryReader { geometry in + let safeFrame = geometry.size.sanitized ZStack { // Background for the ring. Use the final color with reduced opacity RingShape() @@ -120,18 +121,19 @@ struct Ring: View { .stroke(style: StrokeStyle(lineWidth: self.ringWidth, lineCap: .round)) .fill(self.ringGradient) // End of ring with drop shadow - if self.getShowShadow(frame: geometry.size) { + if self.getShowShadow(frame: safeFrame) { Circle() .fill(self.lastGradientColor) .frame(width: self.ringWidth, height: self.ringWidth, alignment: .center) - .offset(x: self.getEndCircleLocation(frame: geometry.size).0, - y: self.getEndCircleLocation(frame: geometry.size).1) + .offset(x: self.getEndCircleLocation(frame: safeFrame).0, + y: self.getEndCircleLocation(frame: safeFrame).1) .shadow(color: Ring.ShadowColor, radius: Ring.ShadowRadius, x: self.getEndCircleShadowOffset().0, y: self.getEndCircleShadowOffset().1) } } + .frame(width: safeFrame.width, height: safeFrame.height, alignment: .topLeading) } // Padding to ensure that the entire ring fits within the view size allocated .padding(self.ringWidth / 2) diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift index a46e0408..27f9f0b4 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift @@ -1,15 +1,18 @@ import SwiftUI -public struct RingsChart: ChartBase { - public var chartData = ChartData() - - @EnvironmentObject var style: ChartStyle - - // TODO - should put background opacity, ring width & spacing as chart style values - - public var body: some View { - RingsChartRow(width:10.0, spacing:5.0, chartData: chartData, style: style) - } +public struct RingsChart: View { + @Environment(\.chartDataPoints) private var points + @Environment(\.chartYRange) private var rangeY + @Environment(\.chartXRange) private var rangeX + @Environment(\.chartStyle) private var style public init() {} + + public var body: some View { + RingsChartRow(width: 10.0, + spacing: 5.0, + chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), + style: style) + .aspectRatio(1, contentMode: .fit) + } } diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift index 7e2dd82b..93fb5b52 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift @@ -1,133 +1,100 @@ -// -// RingsChartRow.swift -// ChartViewV2Demo -// -// Created by Dan Wood on 8/20/20. -// - import SwiftUI public struct RingsChartRow: View { - - var width : CGFloat - var spacing : CGFloat - - @EnvironmentObject var chartValue: ChartValue - @ObservedObject var chartData: ChartData - @State var touchRadius: CGFloat = -1.0 - - var style: ChartStyle - - public var body: some View { - GeometryReader { geometry in - - ZStack { - - // FIXME: Why is background circle offset strangely when frame isn't specified? See Preview below. Related to the .animation somehow ???? - Circle() - .fill(RadialGradient(gradient: self.style.backgroundColor.gradient, center: .center, startRadius: min(geometry.size.width, geometry.size.height)/2.0, endRadius: 1.0)) - - ForEach(0.. Bool { - let radius = min(size.width, size.height) / 2.0 - return index == self.touchedCircleIndex(maxRadius: radius) - } - - /// Find which circle has been touched - /// - Parameter maxRadius: radius of overall view circle - /// - Returns: which circle index was touched, if found. 0 = outer, 1 = next one in, etc. - func touchedCircleIndex(maxRadius: CGFloat) -> Int? { - guard self.chartData.data.count > 0 else { return nil } // no data - - // Pretend actual circle goes ½ the inter-ring spacing out, so that a touch - // is registered on either side of each ring - let radialDistanceFromEdge = (maxRadius + spacing/2) - self.touchRadius; - guard radialDistanceFromEdge >= 0 else { return nil } // touched outside of ring - - let touchIndex = Int(floor(radialDistanceFromEdge / (width + spacing))) - - if touchIndex >= self.chartData.data.count { return nil } // too far from outside, no ring - - return touchIndex - } - - /// Description - /// - Parameter maxRadius: radius of overall view circle - /// - Returns: percentage value of the touched circle, based on `touchRadius` if found - func getCurrentValue(maxRadius: CGFloat) -> Double? { - - guard let index = self.touchedCircleIndex(maxRadius: maxRadius) else { return nil } - return self.chartData.points[index] - } + var width: CGFloat + var spacing: CGFloat + + @Environment(\.chartInteractionValue) private var chartValue + var chartData: ChartData + @State var touchRadius: CGFloat = -1.0 + + var style: ChartStyle + + public var body: some View { + GeometryReader { geometry in + let safeSize = geometry.size.sanitized + ZStack { + Circle() + .fill(RadialGradient(gradient: style.backgroundColor.gradient, + center: .center, + startRadius: min(safeSize.width, safeSize.height) / 2.0, + endRadius: 1.0)) + + ForEach(0.. Bool { + let radius = min(size.width, size.height) / 2.0 + return index == touchedCircleIndex(maxRadius: radius) + } + + func touchedCircleIndex(maxRadius: CGFloat) -> Int? { + guard !chartData.data.isEmpty else { return nil } + + let radialDistanceFromEdge = (maxRadius + spacing / 2) - touchRadius + guard radialDistanceFromEdge >= 0 else { return nil } + + let touchIndex = Int(floor(radialDistanceFromEdge / (width + spacing))) + + if touchIndex >= chartData.data.count { return nil } + + return touchIndex + } + + func getCurrentValue(maxRadius: CGFloat) -> Double? { + guard let index = touchedCircleIndex(maxRadius: maxRadius) else { return nil } + return chartData.points[index] + } } - struct RingsChartRow_Previews: PreviewProvider { - static var previews: some View { - - let multiStyle = ChartStyle(backgroundColor: ColorGradient(Color.black.opacity(0.05), Color.white), - foregroundColor: - [ColorGradient(.purple, .blue), - ColorGradient(.orange, .red), - ColorGradient(.green, .yellow), - ]) - - return RingsChartRow(width:20.0, spacing:10.0, chartData: ChartData([25,50,75,100,125]), style: multiStyle) - - // and why does this not get centered when frame isn't specified? - .frame(width:300, height:400) - } + static var previews: some View { + let multiStyle = ChartStyle(backgroundColor: ColorGradient(Color.black.opacity(0.05), Color.white), + foregroundColor: [ColorGradient(.purple, .blue), + ColorGradient(.orange, .red), + ColorGradient(.green, .yellow)]) + + return RingsChartRow(width: 20.0, + spacing: 10.0, + chartData: ChartData([25, 50, 75, 100, 125]), + style: multiStyle) + .frame(width: 300, height: 400) + } } - - diff --git a/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift b/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift index 692e9c77..7a01359d 100644 --- a/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift +++ b/Tests/SwiftUIChartsTests/CGPointExtensionTests.swift @@ -21,12 +21,18 @@ class CGPointExtensionTests: XCTestCase { func testGetStepWithMultiElementArrayWithNegativeValues() { let frame = CGRect(x: 0, y: 0, width: 300, height: 300) let multiElementArray: [Double] = [-5.0, 0.0, 5.0] - XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 27.0)) + XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 30.0)) } func testGetStepWithMultiElementArrayWithPositiveValues() { let frame = CGRect(x: 0, y: 0, width: 300, height: 300) let multiElementArray: [Double] = [5.0, 10.0, 15.0] - XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 13.5)) + XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), CGPoint(x: 150.0, y: 15.0)) + } + + func testGetStepWithAllEqualValues() { + let frame = CGRect(x: 0, y: 0, width: 300, height: 300) + let multiElementArray: [Double] = [5.0, 5.0, 5.0] + XCTAssertEqual(CGPoint.getStep(frame: frame, data: multiElementArray), .zero) } } diff --git a/Tests/SwiftUIChartsTests/ChartXAlignmentTests.swift b/Tests/SwiftUIChartsTests/ChartXAlignmentTests.swift new file mode 100644 index 00000000..c67f09c5 --- /dev/null +++ b/Tests/SwiftUIChartsTests/ChartXAlignmentTests.swift @@ -0,0 +1,87 @@ +@testable import SwiftUICharts +import SwiftUI +import XCTest + +final class ChartXScaleTests: XCTestCase { + + func testCategoricalPositionsUseCenteredSlots() { + let scale = ChartXScale(values: [0, 1, 2, 3, 4, 5, 6], + rangeX: nil, + mode: .categorical, + slotCountHint: 7) + + let expected: [Double] = [1, 3, 5, 7, 9, 11, 13].map { $0 / 14.0 } + let actual = (0...6).map { scale.normalizedX(for: Double($0)) } + + for (a, e) in zip(actual, expected) { + XCTAssertEqual(a, e, accuracy: 0.0001) + } + } + + func testNumericPositionsUseEdgeMappingWithinRange() { + let scale = ChartXScale(values: [10, 20, 30], rangeX: 10...30, mode: .numeric) + + XCTAssertEqual(scale.normalizedX(for: 10), 0, accuracy: 0.0001) + XCTAssertEqual(scale.normalizedX(for: 20), 0.5, accuracy: 0.0001) + XCTAssertEqual(scale.normalizedX(for: 30), 1, accuracy: 0.0001) + } + + func testSingleCategoricalValueCentersAtHalf() { + let scale = ChartXScale(values: [0], rangeX: nil, mode: .categorical, slotCountHint: 1) + XCTAssertEqual(scale.normalizedX(for: 0), 0.5, accuracy: 0.0001) + } + + func testNormalizedXIsClamped() { + let scale = ChartXScale(values: [10, 20, 30], rangeX: 10...30, mode: .numeric) + XCTAssertEqual(scale.normalizedX(for: -100), 0, accuracy: 0.0001) + XCTAssertEqual(scale.normalizedX(for: 100), 1, accuracy: 0.0001) + } +} + +final class ChartDataXNormalizationTests: XCTestCase { + + func testArrayDataUsesCategoricalCenterMapping() { + let data = ChartData([10, 20, 30], xDomainMode: .categorical) + let expected = [1.0 / 6.0, 3.0 / 6.0, 5.0 / 6.0] + + for (a, e) in zip(data.normalisedValues, expected) { + XCTAssertEqual(a, e, accuracy: 0.0001) + } + } + + func testArrayDataWithRangeRemainsCenteredWithinVisibleSlots() { + let data = ChartData([11, 12, 13], rangeX: 1...2, xDomainMode: .categorical) + XCTAssertEqual(data.normalisedValues.count, 2) + XCTAssertEqual(data.normalisedValues[0], 0.25, accuracy: 0.0001) + XCTAssertEqual(data.normalisedValues[1], 0.75, accuracy: 0.0001) + } + + func testTupleDataUsesNumericMapping() { + let data = ChartData([(10, 1), (20, 2), (30, 3)], rangeX: 10...30, xDomainMode: .numeric) + XCTAssertEqual(data.normalisedValues[0], 0, accuracy: 0.0001) + XCTAssertEqual(data.normalisedValues[1], 0.5, accuracy: 0.0001) + XCTAssertEqual(data.normalisedValues[2], 1, accuracy: 0.0001) + } +} + +final class ChartAxisLabelMapperTests: XCTestCase { + + func testStringLabelsMapToIndexedAnchors() { + let mapped = ChartAxisLabelMapper.mapXAxis(["A", "B", "C"]) + XCTAssertEqual(mapped, [ + ChartXAxisLabel(value: 0, title: "A"), + ChartXAxisLabel(value: 1, title: "B"), + ChartXAxisLabel(value: 2, title: "C") + ]) + } + + func testTupleLabelsPreserveValuesAndFillMissingRangeEntries() { + let mapped = ChartAxisLabelMapper.mapXAxis([(1, "A"), (2.5, "B2"), (3, "C")], in: 1...3) + XCTAssertEqual(mapped, [ + ChartXAxisLabel(value: 1, title: "A"), + ChartXAxisLabel(value: 2, title: ""), + ChartXAxisLabel(value: 2.5, title: "B2"), + ChartXAxisLabel(value: 3, title: "C") + ]) + } +} diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift new file mode 100644 index 00000000..5586b9bc --- /dev/null +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -0,0 +1,108 @@ +@testable import SwiftUICharts +import SwiftUI +import XCTest + +#if canImport(AppKit) +import AppKit +#endif + +final class ComposableUsageSmokeTests: XCTestCase { + + func testBarChartRendersWithOptionalInteractionValue() { + let view = BarChart() + .chartData([12, 34, 23]) + .chartStyle(sampleStyle) + .frame(width: 240, height: 140) + + assertCanRender(view) + } + + func testPieChartRendersWithOptionalInteractionValue() { + let view = PieChart() + .chartData([34, 23, 12]) + .chartStyle(sampleStyle) + .frame(width: 240, height: 240) + + assertCanRender(view) + } + + func testRingsChartRendersWithOptionalInteractionValue() { + let view = RingsChart() + .chartData([25, 50, 75]) + .chartStyle(sampleStyle) + .frame(width: 240, height: 240) + + assertCanRender(view) + } + + func testPieAndRingsRenderInHeightOnlyHStackWithoutLayoutCrash() { + let view = HStack(spacing: 12) { + PieChart() + .chartData([34, 23, 12]) + .chartStyle(sampleStyle) + .frame(height: 180) + + RingsChart() + .chartData([25, 50, 75, 90]) + .chartStyle(sampleStyle) + .frame(height: 180) + } + + assertCanRender(view) + } + + func testChartLabelCanShareExternalChartValue() { + let sharedChartValue = ChartValue() + + let view = VStack(alignment: .leading) { + ChartLabel("Sales", type: .title) + BarChart() + .chartData([12, 34, 23]) + .chartStyle(sampleStyle) + .frame(height: 140) + } + .frame(width: 280, height: 220) + .chartInteractionValue(sharedChartValue) + + assertCanRender(view) + } + + func testMixedBarAndLineWithAxisLabelsRenders() { + let view = AxisLabels { + ChartGrid { + BarChart() + .chartData([2, 4, 1, 3, 5]) + .chartStyle(self.sampleStyle) + LineChart() + .chartLineMarks(true) + .chartData([2, 4, 1, 3, 5]) + .chartStyle(self.sampleStyle) + } + .chartGridLines(horizontal: 5, vertical: 5) + } + .chartXAxisLabels([(0, "A"), (1, "B"), (2, "C"), (3, "D"), (4, "E")], range: 0...4) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + .frame(width: 280, height: 220) + + assertCanRender(view) + } + + private var sampleStyle: ChartStyle { + ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) + } + + private func assertCanRender(_ view: Content, + file: StaticString = #filePath, + line: UInt = #line) { + #if canImport(AppKit) + let hostingView = NSHostingView(rootView: view) + hostingView.layoutSubtreeIfNeeded() + _ = hostingView.fittingSize + #else + _ = view + #endif + + XCTAssertTrue(true, file: file, line: line) + } +} diff --git a/Tests/SwiftUIChartsTests/DocumentationIntegrityTests.swift b/Tests/SwiftUIChartsTests/DocumentationIntegrityTests.swift new file mode 100644 index 00000000..c5b1156d --- /dev/null +++ b/Tests/SwiftUIChartsTests/DocumentationIntegrityTests.swift @@ -0,0 +1,49 @@ +import Foundation +import XCTest + +final class DocumentationIntegrityTests: XCTestCase { + + func testExampleFileExists() { + let examplePath = repositoryRoot.appendingPathComponent("example.md").path + XCTAssertTrue(FileManager.default.fileExists(atPath: examplePath)) + } + + func testReadmeLinksToExampleFile() throws { + let readme = try String(contentsOf: repositoryRoot.appendingPathComponent("README.md"), encoding: .utf8) + XCTAssertTrue(readme.contains("./example.md")) + } + + func testReferencedReadmeResourcesExist() throws { + let readme = try String(contentsOf: repositoryRoot.appendingPathComponent("README.md"), encoding: .utf8) + let referencedResources = extractResourcePaths(from: readme) + + XCTAssertFalse(referencedResources.isEmpty) + + for resourcePath in referencedResources { + let fullPath = repositoryRoot.appendingPathComponent(resourcePath).path + XCTAssertTrue(FileManager.default.fileExists(atPath: fullPath), "Missing resource: \(resourcePath)") + } + } + + private var repositoryRoot: URL { + URL(fileURLWithPath: #filePath) + .deletingLastPathComponent() + .deletingLastPathComponent() + .deletingLastPathComponent() + } + + private func extractResourcePaths(from content: String) -> Set { + guard let regex = try? NSRegularExpression(pattern: #"Resources/[A-Za-z0-9_.-]+"#) else { + return [] + } + + let matches = regex.matches(in: content, range: NSRange(content.startIndex..., in: content)) + + return Set(matches.compactMap { match in + guard let range = Range(match.range, in: content) else { + return nil + } + return String(content[range]) + }) + } +} diff --git a/Tests/SwiftUIChartsTests/MigrationGuideTests.swift b/Tests/SwiftUIChartsTests/MigrationGuideTests.swift new file mode 100644 index 00000000..575d6383 --- /dev/null +++ b/Tests/SwiftUIChartsTests/MigrationGuideTests.swift @@ -0,0 +1,41 @@ +import Foundation +import XCTest + +final class MigrationGuideTests: XCTestCase { + + func testMigrationGuideExists() { + let migrationPath = repositoryRoot.appendingPathComponent("MIGRATION.md").path + XCTAssertTrue(FileManager.default.fileExists(atPath: migrationPath)) + } + + func testMigrationGuideCoversRemovedPublicTypes() throws { + let migration = try String(contentsOf: repositoryRoot.appendingPathComponent("MIGRATION.md"), encoding: .utf8) + + let requiredSymbols = [ + "LineChartView", + "BarChartView", + "PieChartView", + "MultiLineChartView", + "LineView", + "GradientColor", + "GradientColors", + "Colors", + "Styles", + "ChartForm", + "MultiLineChartData", + "MagnifierRect", + "TestData" + ] + + for symbol in requiredSymbols { + XCTAssertTrue(migration.contains(symbol), "Missing migration mapping for \(symbol)") + } + } + + private var repositoryRoot: URL { + URL(fileURLWithPath: #filePath) + .deletingLastPathComponent() + .deletingLastPathComponent() + .deletingLastPathComponent() + } +} diff --git a/example.md b/example.md new file mode 100644 index 00000000..cd64b238 --- /dev/null +++ b/example.md @@ -0,0 +1,163 @@ +# SwiftUICharts + +### Example codes (modifier-based composable API) + +

+ +

+ +```swift +import SwiftUI +import SwiftUICharts + +struct DemoView: View { + var body: some View { + VStack(alignment: .leading) { + Text("Sneakers sold") + .font(.title) + Text("Last week") + .font(.subheadline) + .foregroundColor(.gray) + .padding(.bottom, 8.0) + HStack { + AxisLabels { + ChartGrid { + LineChart() + .chartLineMarks(true) + .chartYRange(10...40) + .chartData([12, 34, 23, 18, 36, 22, 26]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: ColorGradient(.blue, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 0) + } + .chartXAxisLabels([(1, "M"), (2, "T"), (3, "W"), (4, "T"), (5, "F"), (6, "S"), (7, "S")], + range: 1...7) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + + VStack(alignment: .leading, spacing: 8.0) { + Text("Highest revenue:") + .font(.callout) + Text("Tuesday") + .font(.subheadline) + .bold() + + Text("Most sales:") + .font(.callout) + Text("Friday") + .font(.subheadline) + .bold() + Spacer() + } + .frame(maxWidth: .infinity) + } + } + .padding(16.0) + .background(RoundedRectangle(cornerRadius: 20) + .fill(.white) + .shadow(radius: 8.0)) + .padding(32) + .frame(width: 450, height: 350) + } +} +``` + +

+ +

+ +```swift +import SwiftUI +import SwiftUICharts + +struct DemoView: View { + let chartValue = ChartValue() + + var body: some View { + VStack(alignment: .leading) { + Text("Sneaker brands") + .font(.title) + Text("By popularity") + .font(.subheadline) + .foregroundColor(.gray) + .padding(.bottom, 8.0) + HStack { + AxisLabels { + ChartGrid { + BarChart() + .chartData([34, 23, 12]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: [ColorGradient(.red, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow)])) + } + .chartGridLines(horizontal: 5, vertical: 0) + } + .chartYAxisLabels([(1, "0"), (2, "100"), (3, "200")], range: 1...3) + .chartAxisColor(.gray) + .chartAxisFont(.caption) + + VStack(alignment: .leading, spacing: 8.0) { + Text("Current") + .font(.callout) + ChartLabel("Sales", type: .legend, format: "%.0f") + .chartInteractionValue(chartValue) + Spacer() + } + .frame(maxWidth: .infinity) + } + } + .chartInteractionValue(chartValue) + .padding(16.0) + .background(RoundedRectangle(cornerRadius: 20) + .fill(.white) + .shadow(radius: 8.0)) + .padding(32) + .frame(width: 450, height: 350) + } +} +``` + +

+ +

+ +```swift +import SwiftUI +import SwiftUICharts + +struct DemoView: View { + var body: some View { + VStack(alignment: .leading) { + Text("Sneaker brands") + .font(.title) + Text("By popularity") + .font(.subheadline) + .foregroundColor(.gray) + .padding(.bottom, 8.0) + HStack { + PieChart() + .chartData([34, 23, 12]) + .chartStyle(ChartStyle(backgroundColor: .white, + foregroundColor: [ColorGradient(.red, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.yellow, .green)])) + + VStack(alignment: .leading, spacing: 8.0) { + Text("Legend") + .font(.callout) + Spacer() + } + .frame(maxWidth: .infinity) + } + } + .padding(16.0) + .background(RoundedRectangle(cornerRadius: 20) + .fill(.white) + .shadow(radius: 8.0)) + .padding(32) + .frame(width: 450, height: 350) + } +} +``` From ffddd1fa9472a5cd978aad359782f1029e05b7e8 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 13:15:56 +0100 Subject: [PATCH 31/40] Ignore Xcode workspace user data for showcase app --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 02c08753..1a3fb064 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /.build /Packages /*.xcodeproj +**/*.xcodeproj/project.xcworkspace/xcuserdata/ +**/*.xcworkspace/xcuserdata/ From 688ddaf472ce3473221c3b4811293e5b564fabc4 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 13:24:32 +0100 Subject: [PATCH 32/40] Improve dark mode defaults and showcase styling --- .../ShowcaseHomeView.swift | 52 +++++++++++-------- .../Base/CardView/CardView.swift | 14 ++++- .../Base/Config/ChartGridConfig.swift | 2 +- .../Environment/ChartEnvironmentKeys.swift | 2 +- .../Charts/LineChart/LineShapeView.swift | 2 +- 5 files changed, 45 insertions(+), 27 deletions(-) diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 3d725b1a..1e60ccec 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -1,9 +1,17 @@ import SwiftUI import SwiftUICharts +import UIKit struct ShowcaseHomeView: View { private let sharedBarValue = ChartValue() @ObservedObject private var liveFeed = MockLiveChartFeed() + private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } + private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } + private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } + private var axisColor: Color { .secondary } + private var ringsBackgroundGradient: ColorGradient { + ColorGradient(chartSurfaceColor, Color(UIColor.tertiarySystemBackground)) + } var body: some View { NavigationView { @@ -21,7 +29,7 @@ struct ShowcaseHomeView: View { .frame(maxWidth: .infinity, alignment: .leading) } .navigationBarTitle("SwiftUICharts Showcase", displayMode: .inline) - .background(Color(white: 0.95)) + .background(pageBackgroundColor) } } @@ -52,19 +60,19 @@ struct ShowcaseHomeView: View { .chartData([12, 34, 23, 18, 36, 22, 26]) .chartYRange(10...40) .chartXRange(0...6) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.blue, .purple))) } .chartGridLines(horizontal: 5, vertical: 6) } .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) .chartYAxisLabels([(0, "10"), (1, "20"), (2, "30"), (3, "40")], range: 0...3) - .chartAxisColor(.gray) + .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) .frame(height: 220) .padding(12) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } } @@ -92,18 +100,18 @@ struct ShowcaseHomeView: View { .chartData(liveFeed.points) .chartYRange(liveFeed.yRange) .chartXRange(0...Double(max(0, liveFeed.points.count - 1))) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.green, .blue))) } .chartGridLines(horizontal: 5, vertical: max(2, liveFeed.points.count)) } .chartXAxisLabels(liveFeed.xLabels) - .chartAxisColor(.gray) + .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) .frame(height: 220) .padding(12) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } .onAppear { liveFeed.start() @@ -126,7 +134,7 @@ struct ShowcaseHomeView: View { .chartData([3, 5, 4, 1, 0, 2, 4]) .chartYRange(0...8) .chartXRange(0...6) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.orange, .red))) LineChart() @@ -136,18 +144,18 @@ struct ShowcaseHomeView: View { .chartData([4, 1, 0, 2, 6, 3, 5]) .chartYRange(0...8) .chartXRange(0...6) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.green, .yellow))) } .chartGridLines(horizontal: 5, vertical: 6) } .chartXAxisLabels([(0, "1"), (1, "2"), (2, "3"), (3, "4"), (4, "5"), (5, "6"), (6, "7")], range: 0...6) - .chartAxisColor(.gray) + .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) .frame(height: 220) .padding(12) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } } @@ -160,24 +168,24 @@ struct ShowcaseHomeView: View { ChartGrid { BarChart() .chartData([2, 4, 1, 3, 5]) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.orange, .red))) LineChart() .chartLineMarks(true) .chartData([2, 4, 1, 3, 5]) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.blue, .purple))) } .chartGridLines(horizontal: 5, vertical: 5) } .chartXAxisLabels([(0, "A"), (1, "B"), (2, "C"), (3, "D"), (4, "E")], range: 0...4) - .chartAxisColor(.gray) + .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) .frame(height: 220) .padding(12) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } } @@ -190,7 +198,7 @@ struct ShowcaseHomeView: View { ChartGrid { BarChart() .chartData([14, 22, 18, 31, 26, 19, 24]) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: [ ColorGradient(.red, .orange), ColorGradient(.blue, .purple), @@ -200,7 +208,7 @@ struct ShowcaseHomeView: View { .chartGridLines(horizontal: 5, vertical: 0) } .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) - .chartAxisColor(.gray) + .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) .frame(height: 170) @@ -208,7 +216,7 @@ struct ShowcaseHomeView: View { .frame(maxWidth: .infinity) .frame(height: 280) .padding(6) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.blue, .purple))) .chartInteractionValue(sharedBarValue) } @@ -221,7 +229,7 @@ struct ShowcaseHomeView: View { HStack(spacing: 12) { PieChart() .chartData([34, 23, 12]) - .chartStyle(ChartStyle(backgroundColor: .white, + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: [ ColorGradient(.red, .orange), ColorGradient(.blue, .purple), @@ -230,11 +238,11 @@ struct ShowcaseHomeView: View { .frame(maxWidth: .infinity) .frame(height: 180) .padding(10) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) RingsChart() .chartData([25, 50, 75, 90]) - .chartStyle(ChartStyle(backgroundColor: ColorGradient(.white, .gray.opacity(0.12)), + .chartStyle(ChartStyle(backgroundColor: ringsBackgroundGradient, foregroundColor: [ ColorGradient(.purple, .blue), ColorGradient(.orange, .red), @@ -244,7 +252,7 @@ struct ShowcaseHomeView: View { .frame(maxWidth: .infinity) .frame(height: 180) .padding(10) - .background(RoundedRectangle(cornerRadius: 14).fill(Color.white)) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } } } diff --git a/Sources/SwiftUICharts/Base/CardView/CardView.swift b/Sources/SwiftUICharts/Base/CardView/CardView.swift index a5ec1c2d..2f9f11a3 100644 --- a/Sources/SwiftUICharts/Base/CardView/CardView.swift +++ b/Sources/SwiftUICharts/Base/CardView/CardView.swift @@ -2,6 +2,8 @@ import SwiftUI /// View containing data and chart content. public struct CardView: View { + @Environment(\.colorScheme) private var colorScheme + let content: () -> Content private var showShadow: Bool @@ -15,8 +17,8 @@ public struct CardView: View { ZStack { if showShadow { RoundedRectangle(cornerRadius: 20) - .fill(Color.white) - .shadow(color: Color(white: 0.9, opacity: 1), radius: 8) + .fill(cardBackgroundColor) + .shadow(color: shadowColor, radius: 8, x: 0, y: 2) } VStack(alignment: .leading) { content() @@ -24,4 +26,12 @@ public struct CardView: View { .clipShape(RoundedRectangle(cornerRadius: showShadow ? 20 : 0)) } } + + private var cardBackgroundColor: Color { + colorScheme == .dark ? Color.white.opacity(0.08) : Color.white + } + + private var shadowColor: Color { + colorScheme == .dark ? Color.black.opacity(0.45) : Color.black.opacity(0.12) + } } diff --git a/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift index 610814ce..e3a462ae 100644 --- a/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift +++ b/Sources/SwiftUICharts/Base/Config/ChartGridConfig.swift @@ -11,7 +11,7 @@ public struct ChartGridConfig { public init(numberOfHorizontalLines: Int = 3, numberOfVerticalLines: Int = 3, strokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1, lineCap: .round, dash: [5, 10]), - color: Color = Color(white: 0.85), + color: Color = Color.secondary.opacity(0.35), showBaseLine: Bool = true, baseStrokeStyle: StrokeStyle = StrokeStyle(lineWidth: 1.5, lineCap: .round, dash: [5, 0])) { self.numberOfHorizontalLines = numberOfHorizontalLines diff --git a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift index 2af30b87..62916aac 100644 --- a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift @@ -22,7 +22,7 @@ private struct ChartYRangeKey: EnvironmentKey { } private struct ChartStyleKey: EnvironmentKey { - static let defaultValue = ChartStyle(backgroundColor: .white, foregroundColor: .orangeBright) + static let defaultValue = ChartStyle(backgroundColor: Color.primary.opacity(0.04), foregroundColor: .orangeBright) } private struct ChartInteractionValueKey: EnvironmentKey { diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift index b1542e1f..bebf7616 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineShapeView.swift @@ -36,7 +36,7 @@ struct LineShapeView: View, Animatable { if chartProperties.showChartMarks { MarkerShape(data: chartData.normalisedData) .trim(from: 0, to: CGFloat(trimTo)) - .fill(.white, + .fill(style.backgroundColor.startColor.opacity(0.95), strokeBorder: chartMarkColor, lineWidth: chartProperties.lineWidth) .toStandardCoordinateSystem() From 7c630096838c607bd0d3c8d86c04de7fef297834 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 21:55:16 +0100 Subject: [PATCH 33/40] Add line chart drag interaction and showcase card --- .../ShowcaseHomeView.swift | 35 +++++++++++ .../SwiftUICharts/Charts/LineChart/Line.swift | 62 +++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 1e60ccec..09841c02 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -4,6 +4,7 @@ import UIKit struct ShowcaseHomeView: View { private let sharedBarValue = ChartValue() + private let lineSelectionValue = ChartValue() @ObservedObject private var liveFeed = MockLiveChartFeed() private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } @@ -18,6 +19,7 @@ struct ShowcaseHomeView: View { ScrollView { VStack(alignment: .leading, spacing: 20) { headline + lineInteractionSection dynamicDataSection lineChartSection overlayLineSection @@ -76,6 +78,39 @@ struct ShowcaseHomeView: View { } } + private var lineInteractionSection: some View { + CardView { + ChartLabel("Line Selection", type: .title) + ChartLabel("Drag to inspect points", type: .legend, format: "%.1f") + + AxisLabels { + ChartGrid { + LineChart() + .chartLineWidth(3) + .chartLineMarks(true, color: ColorGradient(.pink, .purple)) + .chartLineStyle(.curved) + .chartData([14, 18, 12, 26, 22, 30, 24]) + .chartYRange(10...35) + .chartXRange(0...6) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.pink, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 6) + } + .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 170) + } + .frame(maxWidth: .infinity) + .frame(height: 280) + .padding(6) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.pink, .purple))) + .chartInteractionValue(lineSelectionValue) + } + private var dynamicDataSection: some View { VStack(alignment: .leading, spacing: 8) { HStack { diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 90308d80..eb21c995 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -2,12 +2,15 @@ import SwiftUI /// A single line of data, a view in a `LineChart` public struct Line: View { + @Environment(\.chartInteractionValue) private var chartValue + var chartData: ChartData var chartProperties: ChartLineConfig var style: ChartStyle @State private var didCellAppear: Bool = false + @State private var touchLocation: CGFloat = -1 public init(chartData: ChartData, style: ChartStyle, @@ -27,8 +30,20 @@ public struct Line: View { backgroundColor: backgroundColor) } lineShapeView(geometry: geometry) + selectionOverlay(size: safeFrame.size) } .frame(width: safeFrame.width, height: safeFrame.height, alignment: .topLeading) + .contentShape(Rectangle()) + .gesture(DragGesture(minimumDistance: 0) + .onChanged({ value in + guard safeFrame.width > 0 else { return } + touchLocation = max(0, min(1, value.location.x / safeFrame.width)) + publishSelectionState(active: true) + }) + .onEnded({ _ in + publishSelectionState(active: false) + touchLocation = -1 + })) .onAppear { didCellAppear = true } @@ -55,6 +70,53 @@ public struct Line: View { trimTo: 1.0) } } + + @ViewBuilder + private func selectionOverlay(size: CGSize) -> some View { + if chartValue != nil, + touchLocation >= 0, + let selectedPoint = selectedChartPoint(size: size) { + ZStack { + Path { path in + path.move(to: CGPoint(x: selectedPoint.x, y: 0)) + path.addLine(to: CGPoint(x: selectedPoint.x, y: size.height)) + } + .stroke(style.foregroundColor.rotate(for: selectedPoint.index).startColor.opacity(0.28), + style: StrokeStyle(lineWidth: 1, dash: [4, 4])) + + IndicatorPoint() + .position(x: selectedPoint.x, y: selectedPoint.y) + } + .toStandardCoordinateSystem() + } + } + + private func selectedIndex() -> Int? { + guard !chartData.normalisedData.isEmpty, touchLocation >= 0 else { return nil } + + return chartData.normalisedData.enumerated().min { + abs($0.element.0 - Double(touchLocation)) < abs($1.element.0 - Double(touchLocation)) + }?.offset + } + + private func selectedChartPoint(size: CGSize) -> (index: Int, x: CGFloat, y: CGFloat)? { + guard let index = selectedIndex(), + index < chartData.normalisedData.count else { + return nil + } + + let point = chartData.normalisedData[index] + return (index, CGFloat(point.0) * size.width, CGFloat(point.1) * size.height) + } + + private func publishSelectionState(active: Bool) { + guard let interactionValue = chartValue else { return } + + interactionValue.interactionInProgress = active + if active, let index = selectedIndex(), index < chartData.points.count { + interactionValue.currentValue = chartData.points[index] + } + } } struct Line_Previews: PreviewProvider { From f1897fa48ec07601a3a334854d9f5edf6878c978 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 21:58:21 +0100 Subject: [PATCH 34/40] Add legend-driven series visibility controls --- .../ShowcaseHomeView.swift | 44 ++++++++++++++ .../Base/Config/ChartSeriesConfig.swift | 12 ++++ .../Environment/ChartEnvironmentKeys.swift | 9 +++ .../Base/Label/ChartLegend.swift | 60 +++++++++++++++++++ .../Base/Modifiers/ChartSeriesModifiers.swift | 35 +++++++++++ .../Charts/BarChart/BarChart.swift | 10 +++- .../Charts/LineChart/LineChart.swift | 14 ++++- .../Charts/PieChart/PieChart.swift | 12 +++- .../Charts/RingsChart/RingsChart.swift | 18 ++++-- .../ComposableUsageSmokeTests.swift | 26 ++++++++ 10 files changed, 229 insertions(+), 11 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Config/ChartSeriesConfig.swift create mode 100644 Sources/SwiftUICharts/Base/Label/ChartLegend.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartSeriesModifiers.swift diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 09841c02..3a0ac18b 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -6,6 +6,7 @@ struct ShowcaseHomeView: View { private let sharedBarValue = ChartValue() private let lineSelectionValue = ChartValue() @ObservedObject private var liveFeed = MockLiveChartFeed() + @State private var hiddenSeries: Set = [] private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } @@ -23,6 +24,7 @@ struct ShowcaseHomeView: View { dynamicDataSection lineChartSection overlayLineSection + legendControlSection mixedChartSection interactiveBarCard pieAndRingsSection @@ -224,6 +226,48 @@ struct ShowcaseHomeView: View { } } + private var legendControlSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Legend + Series Visibility") + .font(.headline) + + ChartLegend(items: [ + ChartLegendItem(id: "sales", title: "Sales", color: ColorGradient(.orange, .red)), + ChartLegendItem(id: "forecast", title: "Forecast", color: ColorGradient(.blue, .purple)) + ], hiddenSeries: $hiddenSeries) + .padding(.horizontal, 8) + + AxisLabels { + ChartGrid { + LineChart() + .chartSeriesID("sales") + .chartLineMarks(true) + .chartData([2, 4, 3, 5, 4, 6, 7]) + .chartYRange(0...8) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.orange, .red))) + + LineChart() + .chartSeriesID("forecast") + .chartLineMarks(true) + .chartData([1, 3, 4, 4, 5, 5, 6]) + .chartYRange(0...8) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.blue, .purple))) + } + .chartGridLines(horizontal: 5, vertical: 6) + } + .chartHiddenSeries(hiddenSeries) + .chartXAxisLabels([(0, "Mon"), (1, "Tue"), (2, "Wed"), (3, "Thu"), (4, "Fri"), (5, "Sat"), (6, "Sun")], range: 0...6) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + private var interactiveBarCard: some View { CardView { ChartLabel("Weekly Sales", type: .title) diff --git a/Sources/SwiftUICharts/Base/Config/ChartSeriesConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartSeriesConfig.swift new file mode 100644 index 00000000..8705320c --- /dev/null +++ b/Sources/SwiftUICharts/Base/Config/ChartSeriesConfig.swift @@ -0,0 +1,12 @@ +import SwiftUI + +public struct ChartSeriesConfig { + public var seriesID: String? + public var hiddenSeriesIDs: Set + + public init(seriesID: String? = nil, + hiddenSeriesIDs: Set = []) { + self.seriesID = seriesID + self.hiddenSeriesIDs = hiddenSeriesIDs + } +} diff --git a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift index 62916aac..e3024c83 100644 --- a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift @@ -41,6 +41,10 @@ private struct ChartLineConfigKey: EnvironmentKey { static let defaultValue = ChartLineConfig() } +private struct ChartSeriesConfigKey: EnvironmentKey { + static let defaultValue = ChartSeriesConfig() +} + public extension EnvironmentValues { var chartDataPoints: [(Double, Double)] { get { self[ChartDataPointsKey.self] } @@ -86,4 +90,9 @@ public extension EnvironmentValues { get { self[ChartLineConfigKey.self] } set { self[ChartLineConfigKey.self] = newValue } } + + var chartSeriesConfig: ChartSeriesConfig { + get { self[ChartSeriesConfigKey.self] } + set { self[ChartSeriesConfigKey.self] = newValue } + } } diff --git a/Sources/SwiftUICharts/Base/Label/ChartLegend.swift b/Sources/SwiftUICharts/Base/Label/ChartLegend.swift new file mode 100644 index 00000000..5946402b --- /dev/null +++ b/Sources/SwiftUICharts/Base/Label/ChartLegend.swift @@ -0,0 +1,60 @@ +import SwiftUI + +public struct ChartLegendItem: Identifiable { + public let id: String + public let title: String + public let color: ColorGradient + + public init(id: String, title: String, color: ColorGradient) { + self.id = id + self.title = title + self.color = color + } +} + +public struct ChartLegend: View { + private let items: [ChartLegendItem] + @Binding private var hiddenSeries: Set + + public init(items: [ChartLegendItem], hiddenSeries: Binding>) { + self.items = items + self._hiddenSeries = hiddenSeries + } + + public var body: some View { + VStack(alignment: .leading, spacing: 8) { + ForEach(items) { item in + Button(action: { toggle(item.id) }) { + HStack(spacing: 8) { + Circle() + .fill(item.color.linearGradient(from: .topLeading, to: .bottomTrailing)) + .frame(width: 10, height: 10) + .opacity(isHidden(item.id) ? 0.25 : 1) + + Text(item.title) + .font(.caption) + .foregroundColor(.primary) + .strikethrough(isHidden(item.id), color: .secondary) + + Spacer(minLength: 0) + } + .contentShape(Rectangle()) + } + .buttonStyle(PlainButtonStyle()) + .accessibility(label: Text(isHidden(item.id) ? "Show \(item.title)" : "Hide \(item.title)")) + } + } + } + + private func isHidden(_ id: String) -> Bool { + hiddenSeries.contains(id) + } + + private func toggle(_ id: String) { + if hiddenSeries.contains(id) { + hiddenSeries.remove(id) + } else { + hiddenSeries.insert(id) + } + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartSeriesModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartSeriesModifiers.swift new file mode 100644 index 00000000..c003d8d5 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartSeriesModifiers.swift @@ -0,0 +1,35 @@ +import SwiftUI + +private struct ChartSeriesIDModifier: ViewModifier { + @Environment(\.chartSeriesConfig) private var currentConfig + + let seriesID: String? + + func body(content: Content) -> some View { + var updated = currentConfig + updated.seriesID = seriesID + return content.environment(\.chartSeriesConfig, updated) + } +} + +private struct ChartHiddenSeriesModifier: ViewModifier { + @Environment(\.chartSeriesConfig) private var currentConfig + + let hiddenSeries: Set + + func body(content: Content) -> some View { + var updated = currentConfig + updated.hiddenSeriesIDs = hiddenSeries + return content.environment(\.chartSeriesConfig, updated) + } +} + +public extension View { + func chartSeriesID(_ id: String?) -> some View { + modifier(ChartSeriesIDModifier(seriesID: id)) + } + + func chartHiddenSeries(_ ids: Set) -> some View { + modifier(ChartHiddenSeriesModifier(hiddenSeries: ids)) + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift index c9ba42de..d5cc07c0 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChart.swift @@ -5,10 +5,18 @@ public struct BarChart: View { @Environment(\.chartYRange) private var rangeY @Environment(\.chartXRange) private var rangeX @Environment(\.chartStyle) private var style + @Environment(\.chartSeriesConfig) private var seriesConfig public init() {} public var body: some View { - BarChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) + if isSeriesVisible { + BarChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) + } + } + + private var isSeriesVisible: Bool { + guard let seriesID = seriesConfig.seriesID else { return true } + return !seriesConfig.hiddenSeriesIDs.contains(seriesID) } } diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 3cde9d4d..16169056 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -7,12 +7,20 @@ public struct LineChart: View { @Environment(\.chartXDomainMode) private var xDomainMode @Environment(\.chartStyle) private var style @Environment(\.chartLineConfig) private var lineConfig + @Environment(\.chartSeriesConfig) private var seriesConfig public init() {} public var body: some View { - Line(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX, xDomainMode: xDomainMode), - style: style, - chartProperties: lineConfig) + if isSeriesVisible { + Line(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX, xDomainMode: xDomainMode), + style: style, + chartProperties: lineConfig) + } + } + + private var isSeriesVisible: Bool { + guard let seriesID = seriesConfig.seriesID else { return true } + return !seriesConfig.hiddenSeriesIDs.contains(seriesID) } } diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift index ce38b60e..0e1fcc57 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChart.swift @@ -6,11 +6,19 @@ public struct PieChart: View { @Environment(\.chartYRange) private var rangeY @Environment(\.chartXRange) private var rangeX @Environment(\.chartStyle) private var style + @Environment(\.chartSeriesConfig) private var seriesConfig public init() {} public var body: some View { - PieChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) - .aspectRatio(1, contentMode: .fit) + if isSeriesVisible { + PieChartRow(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), style: style) + .aspectRatio(1, contentMode: .fit) + } + } + + private var isSeriesVisible: Bool { + guard let seriesID = seriesConfig.seriesID else { return true } + return !seriesConfig.hiddenSeriesIDs.contains(seriesID) } } diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift index 27f9f0b4..032a712e 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChart.swift @@ -5,14 +5,22 @@ public struct RingsChart: View { @Environment(\.chartYRange) private var rangeY @Environment(\.chartXRange) private var rangeX @Environment(\.chartStyle) private var style + @Environment(\.chartSeriesConfig) private var seriesConfig public init() {} public var body: some View { - RingsChartRow(width: 10.0, - spacing: 5.0, - chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), - style: style) - .aspectRatio(1, contentMode: .fit) + if isSeriesVisible { + RingsChartRow(width: 10.0, + spacing: 5.0, + chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX), + style: style) + .aspectRatio(1, contentMode: .fit) + } + } + + private var isSeriesVisible: Bool { + guard let seriesID = seriesConfig.seriesID else { return true } + return !seriesConfig.hiddenSeriesIDs.contains(seriesID) } } diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index 5586b9bc..72a2f61a 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -88,6 +88,32 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testLegendAndSeriesVisibilityModifiersCompile() { + let hidden: Set = ["forecast"] + let view = VStack(alignment: .leading, spacing: 8) { + ChartLegend(items: [ + ChartLegendItem(id: "sales", title: "Sales", color: ColorGradient(.orange, .red)), + ChartLegendItem(id: "forecast", title: "Forecast", color: ColorGradient(.blue, .purple)) + ], hiddenSeries: .constant(hidden)) + AxisLabels { + ChartGrid { + LineChart() + .chartSeriesID("sales") + .chartData([2, 4, 3, 5, 4]) + .chartStyle(self.sampleStyle) + LineChart() + .chartSeriesID("forecast") + .chartData([1, 2, 4, 4, 5]) + .chartStyle(self.sampleStyle) + } + } + .chartHiddenSeries(hidden) + } + .frame(width: 280, height: 260) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From e91c2b9209ccb4a23616861a52976b23c31cd99d Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:00:37 +0100 Subject: [PATCH 35/40] Add streaming data source with windowed auto-scroll --- .../ShowcaseHomeView.swift | 96 +++++-------------- .../Base/Chart/ChartStreamingDataSource.swift | 64 +++++++++++++ .../Base/Modifiers/ChartDataModifiers.swift | 4 + .../ComposableUsageSmokeTests.swift | 15 +++ 4 files changed, 108 insertions(+), 71 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartStreamingDataSource.swift diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 3a0ac18b..43be2e9e 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -5,8 +5,11 @@ import UIKit struct ShowcaseHomeView: View { private let sharedBarValue = ChartValue() private let lineSelectionValue = ChartValue() - @ObservedObject private var liveFeed = MockLiveChartFeed() + @ObservedObject private var streamingSource = ChartStreamingDataSource(initialValues: [18, 23, 20, 27, 29, 24, 28, 31], + windowSize: 8, + autoScroll: true) @State private var hiddenSeries: Set = [] + @State private var streamTimer: Timer? private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } @@ -35,6 +38,8 @@ struct ShowcaseHomeView: View { .navigationBarTitle("SwiftUICharts Showcase", displayMode: .inline) .background(pageBackgroundColor) } + .onAppear(perform: startStreamingSimulation) + .onDisappear(perform: stopStreamingSimulation) } private var headline: some View { @@ -116,14 +121,14 @@ struct ShowcaseHomeView: View { private var dynamicDataSection: some View { VStack(alignment: .leading, spacing: 8) { HStack { - Text("Live Dynamic Data Source (Mock)") + Text("Streaming Data Source") .font(.headline) Spacer(minLength: 8) - Text(String(format: "%.1f", liveFeed.latestValue)) + Text(String(format: "%.1f", streamingSource.latestValue)) .font(.subheadline.monospacedDigit()) .foregroundColor(.secondary) } - Text("Updates every few seconds with simulated network delay.") + Text("First-class streaming helper with append/window/auto-scroll.") .font(.caption) .foregroundColor(.secondary) @@ -134,15 +139,14 @@ struct ShowcaseHomeView: View { .chartLineMarks(true, color: ColorGradient(.green, .blue)) .chartLineStyle(.curved) .chartLineAnimation(true) - .chartData(liveFeed.points) - .chartYRange(liveFeed.yRange) - .chartXRange(0...Double(max(0, liveFeed.points.count - 1))) + .chartData(streamingSource) + .chartYRange(streamingSource.suggestedYRange) .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, foregroundColor: ColorGradient(.green, .blue))) } - .chartGridLines(horizontal: 5, vertical: max(2, liveFeed.points.count)) + .chartGridLines(horizontal: 5, vertical: max(2, streamingSource.values.count)) } - .chartXAxisLabels(liveFeed.xLabels) + .chartXAxisLabels(streamingSource.xLabels) .chartAxisColor(axisColor) .chartAxisFont(.caption) .frame(maxWidth: .infinity) @@ -150,12 +154,6 @@ struct ShowcaseHomeView: View { .padding(12) .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) } - .onAppear { - liveFeed.start() - } - .onDisappear { - liveFeed.stop() - } } private var overlayLineSection: some View { @@ -343,66 +341,22 @@ struct ShowcaseHomeView_Previews: PreviewProvider { } } -final class MockLiveChartFeed: ObservableObject { - @Published private(set) var points: [Double] = [18, 23, 20, 27, 29, 24, 28, 31] - @Published private(set) var latestValue: Double = 31 - - private var timer: Timer? - - var xLabels: [String] { - (1...points.count).map(String.init) - } - - var yRange: ClosedRange { - let minValue = points.min() ?? 0 - let maxValue = points.max() ?? 10 - let lower = max(0, floor(minValue / 5) * 5 - 5) - let upper = max(lower + 10, ceil(maxValue / 5) * 5 + 5) - return lower...upper - } - - func start() { - guard timer == nil else { return } - let liveTimer = Timer.scheduledTimer(withTimeInterval: 2.2, repeats: true) { [weak self] _ in - self?.simulateFetch() - } - liveTimer.tolerance = 0.4 - timer = liveTimer - } +private extension ShowcaseHomeView { + func startStreamingSimulation() { + guard streamTimer == nil else { return } - func stop() { - timer?.invalidate() - timer = nil - } - - deinit { - stop() - } - - private func simulateFetch() { - let current = points.last ?? 25 - let delay = Double.random(in: 0.15...0.7) - - DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + delay) { [weak self] in - guard let self = self else { return } + let timer = Timer.scheduledTimer(withTimeInterval: 1.8, repeats: true) { _ in + let current = streamingSource.latestValue let delta = Double.random(in: -4.5...4.5) - let nextValue = min(45, max(10, current + delta)) - - DispatchQueue.main.async { - self.push(nextValue) - } + let next = min(45, max(10, current + delta)) + streamingSource.append(next) } + timer.tolerance = 0.35 + streamTimer = timer } - private func push(_ value: Double) { - guard !points.isEmpty else { - points = [value] - latestValue = value - return - } - - points.removeFirst() - points.append(value) - latestValue = value + func stopStreamingSimulation() { + streamTimer?.invalidate() + streamTimer = nil } } diff --git a/Sources/SwiftUICharts/Base/Chart/ChartStreamingDataSource.swift b/Sources/SwiftUICharts/Base/Chart/ChartStreamingDataSource.swift new file mode 100644 index 00000000..27214150 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartStreamingDataSource.swift @@ -0,0 +1,64 @@ +import Foundation + +public final class ChartStreamingDataSource: ObservableObject { + @Published public private(set) var values: [Double] + + public var windowSize: Int + public var autoScroll: Bool + + private var startingIndex: Int + + public var latestValue: Double { + values.last ?? 0 + } + + public var xLabels: [String] { + guard !values.isEmpty else { return [] } + return (startingIndex..<(startingIndex + values.count)).map(String.init) + } + + public var suggestedYRange: ClosedRange { + let minValue = values.min() ?? 0 + let maxValue = values.max() ?? 1 + let span = max(1, maxValue - minValue) + let padding = max(1, span * 0.15) + return (minValue - padding)...(maxValue + padding) + } + + public init(initialValues: [Double] = [], + windowSize: Int = 20, + autoScroll: Bool = true, + startingIndex: Int = 1) { + self.values = initialValues + self.windowSize = max(1, windowSize) + self.autoScroll = autoScroll + self.startingIndex = max(0, startingIndex) + normalizeWindow() + } + + public func append(_ value: Double) { + values.append(value) + normalizeWindow() + } + + public func append(contentsOf newValues: [Double]) { + values.append(contentsOf: newValues) + normalizeWindow() + } + + public func reset(_ newValues: [Double], startingIndex: Int = 1) { + values = newValues + self.startingIndex = max(0, startingIndex) + normalizeWindow() + } + + private func normalizeWindow() { + guard autoScroll else { return } + + let overflow = max(0, values.count - windowSize) + if overflow > 0 { + values.removeFirst(overflow) + startingIndex += overflow + } + } +} diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift index 948abc7f..8122c2d0 100644 --- a/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift @@ -32,6 +32,10 @@ private struct ChartYRangeModifier: ViewModifier { } public extension View { + func chartData(_ stream: ChartStreamingDataSource) -> some View { + chartData(stream.values) + } + func chartData(_ points: [Double]) -> some View { let indexed = points.enumerated().map { (index, value) in (Double(index), value) } return modifier(ChartDataValuesModifier(points: indexed, xDomainMode: .categorical)) diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index 72a2f61a..b1293050 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -114,6 +114,21 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testStreamingDataSourceOverloadCompiles() { + let stream = ChartStreamingDataSource(initialValues: [12, 14, 18, 16], + windowSize: 4, + autoScroll: true) + stream.append(20) + + let view = LineChart() + .chartData(stream) + .chartYRange(stream.suggestedYRange) + .chartStyle(sampleStyle) + .frame(width: 280, height: 180) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From 0724f182dd934b81de3a4be60df7177bf20ebda0 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:05:18 +0100 Subject: [PATCH 36/40] Add auto axis ticks with collision handling and rotation --- .../ShowcaseHomeView.swift | 45 ++++ .../SwiftUICharts/Base/Axis/AxisLabels.swift | 211 +++++++++++++++--- .../Base/Config/ChartAxisConfig.swift | 20 ++ .../Environment/ChartPreferenceKeys.swift | 10 + .../Base/Modifiers/ChartAxisModifiers.swift | 63 ++++++ .../Base/Modifiers/ChartDataModifiers.swift | 4 +- .../ComposableUsageSmokeTests.swift | 22 ++ 7 files changed, 338 insertions(+), 37 deletions(-) diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 43be2e9e..7bbf6ec4 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -26,6 +26,7 @@ struct ShowcaseHomeView: View { lineInteractionSection dynamicDataSection lineChartSection + axisEngineSection overlayLineSection legendControlSection mixedChartSection @@ -85,6 +86,36 @@ struct ShowcaseHomeView: View { } } + private var axisEngineSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Auto Tick Engine (Date + Collision + Rotation)") + .font(.headline) + + AxisLabels { + ChartGrid { + LineChart() + .chartLineWidth(3) + .chartLineMarks(true) + .chartData(weekTimeSeries) + .chartYRange(10...40) + .chartXRange(weekTimeRange) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.green, .blue))) + } + .chartGridLines(horizontal: 4, vertical: 6) + } + .chartXAxisAutoTicks(6, format: .shortDate) + .chartYAxisAutoTicks(4, format: .number) + .chartXAxisLabelRotation(.degrees(-24)) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 230) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + private var lineInteractionSection: some View { CardView { ChartLabel("Line Selection", type: .title) @@ -333,6 +364,20 @@ struct ShowcaseHomeView: View { } } } + + private var weekTimeSeries: [(Double, Double)] { + let day: TimeInterval = 24 * 60 * 60 + let start = Date(timeIntervalSince1970: 1_704_067_200).timeIntervalSince1970 + let points: [Double] = [12, 16, 21, 19, 28, 24, 31] + return points.enumerated().map { index, value in + (start + (Double(index) * day), value) + } + } + + private var weekTimeRange: ClosedRange? { + guard let start = weekTimeSeries.first?.0, let end = weekTimeSeries.last?.0 else { return nil } + return start...end + } } struct ShowcaseHomeView_Previews: PreviewProvider { diff --git a/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift b/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift index aec8e49c..a90b6796 100644 --- a/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift +++ b/Sources/SwiftUICharts/Base/Axis/AxisLabels.swift @@ -2,8 +2,10 @@ import SwiftUI public struct AxisLabels: View { @Environment(\.chartAxisConfig) private var axisConfig + @State private var preferredDataPoints: [(Double, Double)] = [] @State private var preferredXRange: ClosedRange? + @State private var preferredYRange: ClosedRange? @State private var preferredXDomainMode: ChartXDomainMode = .numeric private let yAxisWidth: CGFloat = 42 @@ -15,12 +17,50 @@ public struct AxisLabels: View { self.content = content } + private var visibleXValues: [Double] { + preferredDataPoints + .filter { preferredXRange?.contains($0.0) ?? true } + .map(\.0) + } + + private var visibleYValues: [Double] { + preferredDataPoints + .filter { preferredXRange?.contains($0.0) ?? true } + .map(\.1) + } + + private var xRangeForScale: ClosedRange? { + preferredXRange ?? axisConfig.axisXRange + } + + private var xDomainModeForScale: ChartXDomainMode { + preferredDataPoints.isEmpty ? axisConfig.axisXDomainMode : preferredXDomainMode + } + + private var resolvedXAxisLabels: [ChartXAxisLabel] { + if !axisConfig.axisXLabels.isEmpty { + return axisConfig.axisXLabels + } + + guard let autoCount = axisConfig.axisXAutoTickCount else { return [] } + return autoGeneratedXAxisLabels(count: autoCount) + } + + private var resolvedYAxisLabels: [String] { + if !axisConfig.axisYLabels.isEmpty { + return axisConfig.axisYLabels + } + + guard let autoCount = axisConfig.axisYAutoTickCount else { return [] } + return autoGeneratedYAxisLabels(count: autoCount) + } + private var hasYLabels: Bool { - !axisConfig.axisYLabels.isEmpty + !resolvedYAxisLabels.isEmpty } private var hasXLabels: Bool { - !axisConfig.axisXLabels.isEmpty + !resolvedXAxisLabels.isEmpty } private var effectiveYAxisWidth: CGFloat { @@ -39,38 +79,24 @@ public struct AxisLabels: View { axisConfig.axisLabelsYPosition == .trailing ? effectiveYAxisWidth : 0 } - private var visibleXValues: [Double] { - preferredDataPoints - .filter { preferredXRange?.contains($0.0) ?? true } - .map(\.0) - } - - private var xRangeForScale: ClosedRange? { - preferredXRange ?? axisConfig.axisXRange - } - - private var xDomainModeForScale: ChartXDomainMode { - preferredDataPoints.isEmpty ? axisConfig.axisXDomainMode : preferredXDomainMode - } - private var xScale: ChartXScale { - let scaleValues = visibleXValues.isEmpty ? axisConfig.axisXLabels.map(\.value) : visibleXValues + let scaleValues = visibleXValues.isEmpty ? resolvedXAxisLabels.map(\.value) : visibleXValues return ChartXScale(values: scaleValues, rangeX: xRangeForScale, mode: xDomainModeForScale, - slotCountHint: max(scaleValues.count, axisConfig.axisXLabels.count)) + slotCountHint: max(scaleValues.count, resolvedXAxisLabels.count)) } var yAxis: some View { VStack(spacing: 0) { - ForEach(Array(axisConfig.axisYLabels.reversed().enumerated()), id: \.offset) { index, axisYData in + ForEach(Array(resolvedYAxisLabels.reversed().enumerated()), id: \.offset) { index, axisYData in Text(axisYData) .font(axisConfig.axisFont) .foregroundColor(axisConfig.axisFontColor) .frame(maxWidth: .infinity, alignment: axisConfig.axisLabelsYPosition == .leading ? .trailing : .leading) - if index < axisConfig.axisYLabels.count - 1 { + if index < resolvedYAxisLabels.count - 1 { Spacer(minLength: 0) } } @@ -82,9 +108,10 @@ public struct AxisLabels: View { GeometryReader { geometry in let safeSize = geometry.size.sanitized let width = safeSize.width + let labels = visibleXAxisLabels(width: width) ZStack(alignment: .topLeading) { - ForEach(Array(axisConfig.axisXLabels.enumerated()), id: \.offset) { _, xLabel in + ForEach(Array(labels.enumerated()), id: \.offset) { _, xLabel in positionedXLabel(xLabel, width: width) } } @@ -140,37 +167,149 @@ public struct AxisLabels: View { .onPreferenceChange(ChartXRangePreferenceKey.self) { range in preferredXRange = range } + .onPreferenceChange(ChartYRangePreferenceKey.self) { range in + preferredYRange = range + } .onPreferenceChange(ChartXDomainModePreferenceKey.self) { mode in preferredXDomainMode = mode } } + private func visibleXAxisLabels(width: CGFloat) -> [ChartXAxisLabel] { + let labels = resolvedXAxisLabels.sorted(by: { $0.value < $1.value }) + guard labels.count > 2, width > 0 else { return labels } + + let rotationFactor = abs(axisConfig.axisXLabelRotation.degrees) > 0 ? 1.4 : 1.0 + let minimumSpacing = 28.0 * rotationFactor + let minNormalizedDistance = minimumSpacing / width + var filtered: [ChartXAxisLabel] = [] + var lastPlacedX = -Double.greatestFiniteMagnitude + + for (index, label) in labels.enumerated() { + let x = xScale.normalizedX(for: label.value) + if index == 0 || index == labels.count - 1 || (x - lastPlacedX) >= minNormalizedDistance { + filtered.append(label) + lastPlacedX = x + } + } + + return filtered + } + @ViewBuilder private func positionedXLabel(_ xLabel: ChartXAxisLabel, width: CGFloat) -> some View { let normalized = xScale.normalizedX(for: xLabel.value) let clamped = min(1.0, max(0.0, normalized)) + let label = axisLabelText(xLabel.title) if clamped <= 0.001 { - Text(xLabel.title) - .lineLimit(1) - .minimumScaleFactor(0.8) - .font(axisConfig.axisFont) - .foregroundColor(axisConfig.axisFontColor) + label .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading) } else if clamped >= 0.999 { - Text(xLabel.title) - .lineLimit(1) - .minimumScaleFactor(0.8) - .font(axisConfig.axisFont) - .foregroundColor(axisConfig.axisFontColor) + label .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .trailing) } else { - Text(xLabel.title) - .lineLimit(1) - .minimumScaleFactor(0.8) - .font(axisConfig.axisFont) - .foregroundColor(axisConfig.axisFontColor) + label .position(x: width * CGFloat(clamped), y: xAxisHeight / 2) } } + + private func axisLabelText(_ title: String) -> some View { + Text(title) + .lineLimit(1) + .minimumScaleFactor(0.8) + .font(axisConfig.axisFont) + .foregroundColor(axisConfig.axisFontColor) + .rotationEffect(axisConfig.axisXLabelRotation, anchor: .top) + } + + private func autoGeneratedXAxisLabels(count: Int) -> [ChartXAxisLabel] { + guard count > 1 else { return [] } + + switch xDomainModeForScale { + case .categorical: + let values: [Double] + if let range = xRangeForScale { + let lower = Int(floor(range.lowerBound)) + let upper = Int(ceil(range.upperBound)) + values = Array(lower...upper).map(Double.init) + } else { + values = Array(Set(visibleXValues)).sorted() + } + + guard !values.isEmpty else { return [] } + return sampled(values, targetCount: count).map { + ChartXAxisLabel(value: $0, title: formatAxisTick($0, format: axisConfig.axisXTickFormat)) + } + + case .numeric: + let bounds: ClosedRange? + if let range = xRangeForScale { + bounds = range + } else if let minValue = visibleXValues.min(), let maxValue = visibleXValues.max(), minValue != maxValue { + bounds = minValue...maxValue + } else { + bounds = nil + } + + guard let range = bounds else { return [] } + let span = range.upperBound - range.lowerBound + guard span.isFinite, span > 0 else { return [] } + let step = span / Double(count - 1) + return (0.. [String] { + guard count > 1 else { return [] } + + let bounds: ClosedRange? + if let preferredYRange = preferredYRange { + bounds = preferredYRange + } else if let minValue = visibleYValues.min(), let maxValue = visibleYValues.max(), minValue != maxValue { + bounds = minValue...maxValue + } else { + bounds = nil + } + + guard let range = bounds else { return [] } + let span = range.upperBound - range.lowerBound + guard span.isFinite, span > 0 else { return [] } + let step = span / Double(count - 1) + return (0.. [Double] { + guard values.count > targetCount, targetCount > 1 else { return values } + + let stride = Double(values.count - 1) / Double(targetCount - 1) + var result: [Double] = [] + for index in 0.. String { + switch format { + case .number: + if abs(value.rounded() - value) < 0.001 { + return String(Int(value.rounded())) + } + return String(format: "%.1f", value) + case .shortDate: + let formatter = DateFormatter() + formatter.dateStyle = .short + formatter.timeStyle = .none + return formatter.string(from: Date(timeIntervalSince1970: value)) + } + } } diff --git a/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift b/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift index 730a5917..e3e9f20d 100644 --- a/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift +++ b/Sources/SwiftUICharts/Base/Config/ChartAxisConfig.swift @@ -1,5 +1,10 @@ import SwiftUI +public enum ChartAxisTickFormat { + case number + case shortDate +} + public struct ChartXAxisLabel: Equatable { public let value: Double public let title: String @@ -15,6 +20,11 @@ public struct ChartAxisConfig { public var axisXLabels: [ChartXAxisLabel] public var axisXRange: ClosedRange? public var axisXDomainMode: ChartXDomainMode + public var axisXAutoTickCount: Int? + public var axisYAutoTickCount: Int? + public var axisXTickFormat: ChartAxisTickFormat + public var axisYTickFormat: ChartAxisTickFormat + public var axisXLabelRotation: Angle public var axisFont: Font public var axisFontColor: Color public var axisLabelsYPosition: AxisLabelsYPosition @@ -23,6 +33,11 @@ public struct ChartAxisConfig { axisXLabels: [ChartXAxisLabel] = [], axisXRange: ClosedRange? = nil, axisXDomainMode: ChartXDomainMode = .categorical, + axisXAutoTickCount: Int? = nil, + axisYAutoTickCount: Int? = nil, + axisXTickFormat: ChartAxisTickFormat = .number, + axisYTickFormat: ChartAxisTickFormat = .number, + axisXLabelRotation: Angle = .degrees(0), axisFont: Font = .callout, axisFontColor: Color = .primary, axisLabelsYPosition: AxisLabelsYPosition = .leading) { @@ -30,6 +45,11 @@ public struct ChartAxisConfig { self.axisXLabels = axisXLabels self.axisXRange = axisXRange self.axisXDomainMode = axisXDomainMode + self.axisXAutoTickCount = axisXAutoTickCount + self.axisYAutoTickCount = axisYAutoTickCount + self.axisXTickFormat = axisXTickFormat + self.axisYTickFormat = axisYTickFormat + self.axisXLabelRotation = axisXLabelRotation self.axisFont = axisFont self.axisFontColor = axisFontColor self.axisLabelsYPosition = axisLabelsYPosition diff --git a/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift index 21e0b2dc..c968fab7 100644 --- a/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift +++ b/Sources/SwiftUICharts/Base/Environment/ChartPreferenceKeys.swift @@ -32,6 +32,16 @@ struct ChartXRangePreferenceKey: PreferenceKey { } } +struct ChartYRangePreferenceKey: PreferenceKey { + static var defaultValue: ClosedRange? = nil + + static func reduce(value: inout ClosedRange?, nextValue: () -> ClosedRange?) { + if let next = nextValue() { + value = next + } + } +} + struct ChartXDomainModePreferenceKey: PreferenceKey { static var defaultValue: ChartXDomainMode = .numeric diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift index 413078ff..ed9dfc48 100644 --- a/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartAxisModifiers.swift @@ -12,6 +12,7 @@ private struct ChartXAxisLabelsModifier: ViewModifier { updated.axisXLabels = labels updated.axisXRange = range updated.axisXDomainMode = mode + updated.axisXAutoTickCount = nil return content.environment(\.chartAxisConfig, updated) } } @@ -26,6 +27,51 @@ private struct ChartYAxisLabelsModifier: ViewModifier { var updated = currentConfig updated.axisYLabels = labels updated.axisLabelsYPosition = position + updated.axisYAutoTickCount = nil + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartXAxisAutoTicksModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let count: Int + let format: ChartAxisTickFormat + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisXAutoTickCount = max(2, count) + updated.axisXTickFormat = format + updated.axisXLabels = [] + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartYAxisAutoTicksModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let count: Int + let format: ChartAxisTickFormat + let position: AxisLabelsYPosition + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisYAutoTickCount = max(2, count) + updated.axisYTickFormat = format + updated.axisYLabels = [] + updated.axisLabelsYPosition = position + return content.environment(\.chartAxisConfig, updated) + } +} + +private struct ChartXAxisLabelRotationModifier: ViewModifier { + @Environment(\.chartAxisConfig) private var currentConfig + + let angle: Angle + + func body(content: Content) -> some View { + var updated = currentConfig + updated.axisXLabelRotation = angle return content.environment(\.chartAxisConfig, updated) } } @@ -86,6 +132,23 @@ public extension View { func chartAxisColor(_ color: Color) -> some View { modifier(ChartAxisColorModifier(color: color)) } + + func chartXAxisAutoTicks(_ count: Int = 5, + format: ChartAxisTickFormat = .number) -> some View { + modifier(ChartXAxisAutoTicksModifier(count: count, format: format)) + } + + func chartYAxisAutoTicks(_ count: Int = 5, + format: ChartAxisTickFormat = .number, + position: AxisLabelsYPosition = .leading) -> some View { + modifier(ChartYAxisAutoTicksModifier(count: count, + format: format, + position: position)) + } + + func chartXAxisLabelRotation(_ angle: Angle) -> some View { + modifier(ChartXAxisLabelRotationModifier(angle: angle)) + } } enum ChartAxisLabelMapper { diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift index 8122c2d0..e22958d6 100644 --- a/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartDataModifiers.swift @@ -27,7 +27,9 @@ private struct ChartYRangeModifier: ViewModifier { let range: ClosedRange? func body(content: Content) -> some View { - content.environment(\.chartYRange, range) + content + .environment(\.chartYRange, range) + .preference(key: ChartYRangePreferenceKey.self, value: range) } } diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index b1293050..5efb2beb 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -129,6 +129,28 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testAutoTickAndRotationModifiersCompile() { + let timestamps: [(Double, Double)] = [ + (1_704_067_200, 10), (1_704_153_600, 14), (1_704_240_000, 18), (1_704_326_400, 20) + ] + + let view = AxisLabels { + ChartGrid { + LineChart() + .chartData(timestamps) + .chartYRange(8...24) + .chartXRange(1_704_067_200...1_704_326_400) + .chartStyle(self.sampleStyle) + } + } + .chartXAxisAutoTicks(4, format: .shortDate) + .chartYAxisAutoTicks(4, format: .number) + .chartXAxisLabelRotation(.degrees(-22)) + .frame(width: 300, height: 220) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From 28f4a50ba9b7fafae3f19c7866306685d3e7d15a Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:08:09 +0100 Subject: [PATCH 37/40] Improve accessibility metadata and add high-contrast presets --- .../ShowcaseHomeView.swift | 36 +++++++++++++++++++ .../SwiftUICharts/Base/Style/ChartStyle.swift | 17 +++++++++ .../Charts/BarChart/BarChartRow.swift | 9 +++++ .../SwiftUICharts/Charts/LineChart/Line.swift | 27 ++++++++++++++ .../Charts/PieChart/PieChartRow.swift | 10 ++++++ .../Charts/RingsChart/RingsChartRow.swift | 9 +++++ .../ComposableUsageSmokeTests.swift | 14 ++++++++ 7 files changed, 122 insertions(+) diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 7bbf6ec4..2c6a6e39 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -10,6 +10,7 @@ struct ShowcaseHomeView: View { autoScroll: true) @State private var hiddenSeries: Set = [] @State private var streamTimer: Timer? + @State private var highContrastEnabled = false private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } @@ -26,6 +27,7 @@ struct ShowcaseHomeView: View { lineInteractionSection dynamicDataSection lineChartSection + accessibilitySection axisEngineSection overlayLineSection legendControlSection @@ -116,6 +118,40 @@ struct ShowcaseHomeView: View { } } + private var accessibilitySection: some View { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text("Accessibility + High Contrast") + .font(.headline) + Spacer(minLength: 8) + Toggle("High Contrast", isOn: $highContrastEnabled) + .labelsHidden() + } + + Text("VoiceOver labels are available for bars, points, slices, and rings.") + .font(.caption) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + BarChart() + .chartData([8, 14, 11, 17, 15, 19, 16]) + .chartStyle(highContrastEnabled ? .highContrast : ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.orange, .red))) + } + .chartGridLines(horizontal: 4, vertical: 0) + } + .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) + .chartYAxisAutoTicks(4, format: .number) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 210) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + private var lineInteractionSection: some View { CardView { ChartLabel("Line Selection", type: .title) diff --git a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift index 0aea99f8..451ad18e 100644 --- a/Sources/SwiftUICharts/Base/Style/ChartStyle.swift +++ b/Sources/SwiftUICharts/Base/Style/ChartStyle.swift @@ -24,3 +24,20 @@ public struct ChartStyle { self.foregroundColor = foregroundColor } } + +public extension ChartStyle { + static var highContrast: ChartStyle { + ChartStyle(backgroundColor: Color.primary.opacity(0.12), + foregroundColor: [ + ColorGradient(.yellow, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow), + ColorGradient(.pink, .purple) + ]) + } + + static var highContrastMono: ChartStyle { + ChartStyle(backgroundColor: Color.primary.opacity(0.15), + foregroundColor: ColorGradient(.white, .primary)) + } +} diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index 57649662..ac312100 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -27,6 +27,8 @@ public struct BarChartRow: View { .scaleEffect(getScaleSize(touchLocation: touchLocation, index: index), anchor: .bottom) .animation(Animation.easeIn(duration: 0.2)) .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottom) + .accessibilityElement(children: .ignore) + .accessibility(label: Text("Bar \(index + 1), value \(formatted(chartData.points[index]))")) } } .frame(width: safeWidth, @@ -66,6 +68,13 @@ public struct BarChartRow: View { let index = max(0, min(chartData.data.count - 1, Int(floor((touchLocation * width) / denominator)))) return chartData.points[index] } + + private func formatted(_ value: Double) -> String { + if abs(value.rounded() - value) < 0.001 { + return String(Int(value.rounded())) + } + return String(format: "%.2f", value) + } } struct BarChartRow_Previews: PreviewProvider { diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index eb21c995..847d8b6b 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -31,6 +31,7 @@ public struct Line: View { } lineShapeView(geometry: geometry) selectionOverlay(size: safeFrame.size) + accessibilityOverlay(size: safeFrame.size) } .frame(width: safeFrame.width, height: safeFrame.height, alignment: .topLeading) .contentShape(Rectangle()) @@ -91,6 +92,25 @@ public struct Line: View { } } + @ViewBuilder + private func accessibilityOverlay(size: CGSize) -> some View { + if !chartData.normalisedData.isEmpty { + ZStack { + ForEach(Array(chartData.normalisedData.enumerated()), id: \.offset) { index, point in + Circle() + .fill(Color.clear) + .frame(width: 30, height: 30) + .position(x: CGFloat(point.0) * size.width, + y: CGFloat(point.1) * size.height) + .accessibilityElement(children: .ignore) + .accessibility(label: Text("Point \(index + 1), value \(formatted(chartData.points[index]))")) + } + } + .toStandardCoordinateSystem() + .allowsHitTesting(false) + } + } + private func selectedIndex() -> Int? { guard !chartData.normalisedData.isEmpty, touchLocation >= 0 else { return nil } @@ -117,6 +137,13 @@ public struct Line: View { interactionValue.currentValue = chartData.points[index] } } + + private func formatted(_ value: Double) -> String { + if abs(value.rounded() - value) < 0.001 { + return String(Int(value.rounded())) + } + return String(format: "%.2f", value) + } } struct Line_Previews: PreviewProvider { diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index 74e70054..eac8a466 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -38,6 +38,7 @@ public struct PieChartRow: View { public var body: some View { GeometryReader { geometry in let rect = geometry.frame(in: .local).sanitized + let total = max(0.0001, chartData.points.reduce(0, +)) ZStack { ForEach(Array(slices.indices), id: \.self) { index in PieChartCell(rect: rect, @@ -48,6 +49,8 @@ public struct PieChartRow: View { accentColor: style.foregroundColor.rotate(for: index)) .scaleEffect(currentTouchedIndex == index ? 1.1 : 1) .animation(Animation.spring()) + .accessibilityElement(children: .ignore) + .accessibility(label: Text("Slice \(index + 1), value \(formatted(slices[index].value)), \(formatted((slices[index].value / total) * 100)) percent")) } } .frame(width: rect.width, height: rect.height, alignment: .topLeading) @@ -67,4 +70,11 @@ public struct PieChartRow: View { ) } } + + private func formatted(_ value: Double) -> String { + if abs(value.rounded() - value) < 0.001 { + return String(Int(value.rounded())) + } + return String(format: "%.1f", value) + } } diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift index 93fb5b52..317a43a7 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift @@ -36,6 +36,8 @@ public struct RingsChartRow: View { .zIndex(scaleUp ? 1 : 0) .padding(padding) .animation(Animation.easeIn(duration: 0.5)) + .accessibilityElement(children: .ignore) + .accessibility(label: Text("Ring \(index + 1), value \(formatted(chartData.points[index])) percent")) } } .frame(width: safeSize.width, height: safeSize.height, alignment: .topLeading) @@ -82,6 +84,13 @@ public struct RingsChartRow: View { guard let index = touchedCircleIndex(maxRadius: maxRadius) else { return nil } return chartData.points[index] } + + private func formatted(_ value: Double) -> String { + if abs(value.rounded() - value) < 0.001 { + return String(Int(value.rounded())) + } + return String(format: "%.1f", value) + } } struct RingsChartRow_Previews: PreviewProvider { diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index 5efb2beb..582ce371 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -151,6 +151,20 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testHighContrastStylePresetCompiles() { + let view = AxisLabels { + ChartGrid { + BarChart() + .chartData([8, 14, 11, 17]) + .chartStyle(.highContrast) + } + } + .chartXAxisLabels(["Q1", "Q2", "Q3", "Q4"]) + .frame(width: 280, height: 220) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From 609a3927b8b9d438f59cac1164ecc631e264e245 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:13:02 +0100 Subject: [PATCH 38/40] feat: add chart performance mode with line downsampling --- .../ShowcaseHomeView.swift | 50 +++++++++++++++++ .../Base/Chart/ChartDownsampler.swift | 20 +++++++ .../Base/Config/ChartPerformanceConfig.swift | 15 +++++ .../Environment/ChartEnvironmentKeys.swift | 9 +++ .../Modifiers/ChartPerformanceModifier.swift | 15 +++++ .../Charts/LineChart/LineChart.swift | 55 ++++++++++++++++++- .../ComposableUsageSmokeTests.swift | 15 +++++ 7 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartDownsampler.swift create mode 100644 Sources/SwiftUICharts/Base/Config/ChartPerformanceConfig.swift create mode 100644 Sources/SwiftUICharts/Base/Modifiers/ChartPerformanceModifier.swift diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index 2c6a6e39..d0bd9728 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -11,6 +11,8 @@ struct ShowcaseHomeView: View { @State private var hiddenSeries: Set = [] @State private var streamTimer: Timer? @State private var highContrastEnabled = false + @State private var performanceModeEnabled = true + private let denseSeries: [(Double, Double)] = ShowcaseHomeView.makeDenseSeries() private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } @@ -29,6 +31,7 @@ struct ShowcaseHomeView: View { lineChartSection accessibilitySection axisEngineSection + performanceSection overlayLineSection legendControlSection mixedChartSection @@ -118,6 +121,45 @@ struct ShowcaseHomeView: View { } } + private var performanceSection: some View { + VStack(alignment: .leading, spacing: 8) { + HStack { + Text("Large Dataset Performance Mode") + .font(.headline) + Spacer(minLength: 8) + Toggle("Performance", isOn: $performanceModeEnabled) + .labelsHidden() + } + + Text("2000 points rendered with optional downsampling + simplified line style.") + .font(.caption) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + LineChart() + .chartData(denseSeries) + .chartYRange(-2...2) + .chartXRange(0...Double(max(0, denseSeries.count - 1))) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.purple, .blue))) + .chartPerformance(performanceModeEnabled + ? .automatic(threshold: 600, maxPoints: 180, simplifyLineStyle: true) + : .none) + } + .chartGridLines(horizontal: 4, vertical: 6) + } + .chartXAxisAutoTicks(6, format: .number) + .chartYAxisAutoTicks(5, format: .number) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + private var accessibilitySection: some View { VStack(alignment: .leading, spacing: 8) { HStack { @@ -414,6 +456,14 @@ struct ShowcaseHomeView: View { guard let start = weekTimeSeries.first?.0, let end = weekTimeSeries.last?.0 else { return nil } return start...end } + + private static func makeDenseSeries() -> [(Double, Double)] { + (0..<2_000).map { index in + let x = Double(index) + let y = sin(x / 45.0) + (cos(x / 12.0) * 0.25) + return (x, y) + } + } } struct ShowcaseHomeView_Previews: PreviewProvider { diff --git a/Sources/SwiftUICharts/Base/Chart/ChartDownsampler.swift b/Sources/SwiftUICharts/Base/Chart/ChartDownsampler.swift new file mode 100644 index 00000000..ce7443af --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartDownsampler.swift @@ -0,0 +1,20 @@ +import Foundation + +enum ChartDownsampler { + static func reduced(_ data: [(Double, Double)], maxPoints: Int) -> [(Double, Double)] { + let limit = max(2, maxPoints) + guard data.count > limit else { return data } + + let stride = Double(data.count - 1) / Double(limit - 1) + var reduced: [(Double, Double)] = [] + reduced.reserveCapacity(limit) + + for index in 0.. some View { + content.environment(\.chartPerformanceConfig, ChartPerformanceConfig(mode: mode)) + } +} + +public extension View { + func chartPerformance(_ mode: ChartPerformanceMode) -> some View { + modifier(ChartPerformanceModifier(mode: mode)) + } +} diff --git a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift index 16169056..1d933ed3 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/LineChart.swift @@ -8,14 +8,18 @@ public struct LineChart: View { @Environment(\.chartStyle) private var style @Environment(\.chartLineConfig) private var lineConfig @Environment(\.chartSeriesConfig) private var seriesConfig + @Environment(\.chartPerformanceConfig) private var performanceConfig public init() {} public var body: some View { if isSeriesVisible { - Line(chartData: ChartData(points, rangeY: rangeY, rangeX: rangeX, xDomainMode: xDomainMode), + Line(chartData: ChartData(performanceAdjustedPoints, + rangeY: rangeY, + rangeX: rangeX, + xDomainMode: xDomainMode), style: style, - chartProperties: lineConfig) + chartProperties: performanceAdjustedLineConfig) } } @@ -23,4 +27,51 @@ public struct LineChart: View { guard let seriesID = seriesConfig.seriesID else { return true } return !seriesConfig.hiddenSeriesIDs.contains(seriesID) } + + private var performanceAdjustedPoints: [(Double, Double)] { + let downsampled: [(Double, Double)] + + switch performanceConfig.mode { + case .none: + downsampled = points + case .automatic(let threshold, let maxPoints, _): + if points.count > max(2, threshold) { + downsampled = ChartDownsampler.reduced(points, maxPoints: maxPoints) + } else { + downsampled = points + } + case .downsample(let maxPoints, _): + downsampled = ChartDownsampler.reduced(points, maxPoints: maxPoints) + } + + if xDomainMode == .categorical { + return downsampled.enumerated().map { index, value in + (Double(index), value.1) + } + } + + return downsampled + } + + private var performanceAdjustedLineConfig: ChartLineConfig { + var updated = lineConfig + + let shouldSimplify: Bool + switch performanceConfig.mode { + case .none: + shouldSimplify = false + case .automatic(let threshold, _, let simplify): + shouldSimplify = simplify && points.count > max(2, threshold) + case .downsample(_, let simplify): + shouldSimplify = simplify + } + + if shouldSimplify { + updated.lineStyle = .straight + updated.showChartMarks = false + updated.animationEnabled = false + } + + return updated + } } diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index 582ce371..12d60871 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -165,6 +165,21 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testPerformanceModeModifierCompiles() { + let data = (0..<1200).map { index -> (Double, Double) in + let x = Double(index) + return (x, sin(x / 30.0)) + } + + let view = LineChart() + .chartData(data) + .chartPerformance(.automatic(threshold: 500, maxPoints: 120, simplifyLineStyle: true)) + .chartStyle(sampleStyle) + .frame(width: 300, height: 180) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From ca55ba0b399b45ce58d05eafead4667360b42030 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:17:54 +0100 Subject: [PATCH 39/40] feat: add callback-based chart selection events --- .../ShowcaseHomeView.swift | 45 +++++++++++++++++++ .../Base/Chart/ChartSelectionDispatcher.swift | 18 ++++++++ .../Base/Chart/ChartSelectionEvent.swift | 17 +++++++ .../Environment/ChartEnvironmentKeys.swift | 9 ++++ .../Modifiers/ChartInteractionModifier.swift | 12 +++++ .../Charts/BarChart/BarChartRow.swift | 26 ++++++++--- .../SwiftUICharts/Charts/LineChart/Line.swift | 26 +++++++++-- .../Charts/PieChart/PieChartRow.swift | 19 ++++++-- .../Charts/RingsChart/RingsChartRow.swift | 26 ++++++++--- .../ChartSelectionDispatcherTests.swift | 45 +++++++++++++++++++ .../ComposableUsageSmokeTests.swift | 19 ++++++++ 11 files changed, 242 insertions(+), 20 deletions(-) create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartSelectionDispatcher.swift create mode 100644 Sources/SwiftUICharts/Base/Chart/ChartSelectionEvent.swift create mode 100644 Tests/SwiftUIChartsTests/ChartSelectionDispatcherTests.swift diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift index d0bd9728..f8af1bf0 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseHomeView.swift @@ -12,6 +12,7 @@ struct ShowcaseHomeView: View { @State private var streamTimer: Timer? @State private var highContrastEnabled = false @State private var performanceModeEnabled = true + @State private var callbackSelectionText = "Drag bars to receive callback events" private let denseSeries: [(Double, Double)] = ShowcaseHomeView.makeDenseSeries() private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } @@ -32,6 +33,7 @@ struct ShowcaseHomeView: View { accessibilitySection axisEngineSection performanceSection + selectionCallbackSection overlayLineSection legendControlSection mixedChartSection @@ -194,6 +196,49 @@ struct ShowcaseHomeView: View { } } + private var selectionCallbackSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Selection Callback (No ChartValue)") + .font(.headline) + + Text(callbackSelectionText) + .font(.caption.monospacedDigit()) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + BarChart() + .chartData([11, 17, 15, 20, 16, 14, 19]) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: [ + ColorGradient(.red, .orange), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow) + ])) + } + .chartGridLines(horizontal: 4, vertical: 0) + } + .chartXAxisLabels([(0, "M"), (1, "T"), (2, "W"), (3, "T"), (4, "F"), (5, "S"), (6, "S")], range: 0...6) + .chartYAxisAutoTicks(4, format: .number) + .chartAxisColor(axisColor) + .chartAxisFont(.caption) + .chartSelectionHandler { event in + guard event.isActive, + let value = event.value, + let index = event.index else { + callbackSelectionText = "No active selection" + return + } + + callbackSelectionText = "Selected index \(index + 1): \(String(format: "%.1f", value))" + } + .frame(maxWidth: .infinity) + .frame(height: 220) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + private var lineInteractionSection: some View { CardView { ChartLabel("Line Selection", type: .title) diff --git a/Sources/SwiftUICharts/Base/Chart/ChartSelectionDispatcher.swift b/Sources/SwiftUICharts/Base/Chart/ChartSelectionDispatcher.swift new file mode 100644 index 00000000..3134e167 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartSelectionDispatcher.swift @@ -0,0 +1,18 @@ +import Foundation + +enum ChartSelectionDispatcher { + static func publish(chartValue: ChartValue?, + handler: ChartSelectionHandler?, + value: Double?, + index: Int?, + isActive: Bool) { + chartValue?.interactionInProgress = isActive + if isActive, let value = value { + chartValue?.currentValue = value + } + + handler?(ChartSelectionEvent(value: value, + index: index, + isActive: isActive)) + } +} diff --git a/Sources/SwiftUICharts/Base/Chart/ChartSelectionEvent.swift b/Sources/SwiftUICharts/Base/Chart/ChartSelectionEvent.swift new file mode 100644 index 00000000..359f3f45 --- /dev/null +++ b/Sources/SwiftUICharts/Base/Chart/ChartSelectionEvent.swift @@ -0,0 +1,17 @@ +import Foundation + +public struct ChartSelectionEvent { + public let value: Double? + public let index: Int? + public let isActive: Bool + + public init(value: Double?, + index: Int?, + isActive: Bool) { + self.value = value + self.index = index + self.isActive = isActive + } +} + +public typealias ChartSelectionHandler = (ChartSelectionEvent) -> Void diff --git a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift index 4e26d876..2199ba6e 100644 --- a/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift +++ b/Sources/SwiftUICharts/Base/Environment/ChartEnvironmentKeys.swift @@ -29,6 +29,10 @@ private struct ChartInteractionValueKey: EnvironmentKey { static let defaultValue: ChartValue? = nil } +private struct ChartSelectionHandlerKey: EnvironmentKey { + static let defaultValue: ChartSelectionHandler? = nil +} + private struct ChartGridConfigKey: EnvironmentKey { static let defaultValue = ChartGridConfig() } @@ -80,6 +84,11 @@ public extension EnvironmentValues { set { self[ChartInteractionValueKey.self] = newValue } } + var chartSelectionHandler: ChartSelectionHandler? { + get { self[ChartSelectionHandlerKey.self] } + set { self[ChartSelectionHandlerKey.self] = newValue } + } + var chartGridConfig: ChartGridConfig { get { self[ChartGridConfigKey.self] } set { self[ChartGridConfigKey.self] = newValue } diff --git a/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift b/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift index ab9f8bcc..8db88a1e 100644 --- a/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift +++ b/Sources/SwiftUICharts/Base/Modifiers/ChartInteractionModifier.swift @@ -8,8 +8,20 @@ private struct ChartInteractionModifier: ViewModifier { } } +private struct ChartSelectionHandlerModifier: ViewModifier { + let handler: ChartSelectionHandler? + + func body(content: Content) -> some View { + content.environment(\.chartSelectionHandler, handler) + } +} + public extension View { func chartInteractionValue(_ value: ChartValue?) -> some View { modifier(ChartInteractionModifier(value: value)) } + + func chartSelectionHandler(_ handler: @escaping ChartSelectionHandler) -> some View { + modifier(ChartSelectionHandlerModifier(handler: handler)) + } } diff --git a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift index ac312100..a68d9118 100644 --- a/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift +++ b/Sources/SwiftUICharts/Charts/BarChart/BarChartRow.swift @@ -2,6 +2,7 @@ import SwiftUI public struct BarChartRow: View { @Environment(\.chartInteractionValue) private var chartValue + @Environment(\.chartSelectionHandler) private var selectionHandler var chartData: ChartData @State private var touchLocation: CGFloat = -1.0 @@ -39,13 +40,26 @@ public struct BarChartRow: View { let width = safeWidth guard width > 0 else { return } touchLocation = value.location.x / width - if let currentValue = getCurrentValue(width: width), let interactionValue = chartValue { - interactionValue.currentValue = currentValue - interactionValue.interactionInProgress = true + if let selected = getCurrentSelection(width: width) { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: selected.value, + index: selected.index, + isActive: true) + } else { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) } }) .onEnded({ _ in - chartValue?.interactionInProgress = false + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) touchLocation = -1 }) ) @@ -60,13 +74,13 @@ public struct BarChartRow: View { return CGSize(width: 1, height: 1) } - func getCurrentValue(width: CGFloat) -> Double? { + func getCurrentSelection(width: CGFloat) -> (index: Int, value: Double)? { guard !chartData.data.isEmpty else { return nil } guard width.isFinite, width > 0 else { return nil } let denominator = width / CGFloat(chartData.data.count) guard denominator > 0, denominator.isFinite else { return nil } let index = max(0, min(chartData.data.count - 1, Int(floor((touchLocation * width) / denominator)))) - return chartData.points[index] + return (index, chartData.points[index]) } private func formatted(_ value: Double) -> String { diff --git a/Sources/SwiftUICharts/Charts/LineChart/Line.swift b/Sources/SwiftUICharts/Charts/LineChart/Line.swift index 847d8b6b..50e769c2 100644 --- a/Sources/SwiftUICharts/Charts/LineChart/Line.swift +++ b/Sources/SwiftUICharts/Charts/LineChart/Line.swift @@ -3,6 +3,7 @@ import SwiftUI /// A single line of data, a view in a `LineChart` public struct Line: View { @Environment(\.chartInteractionValue) private var chartValue + @Environment(\.chartSelectionHandler) private var selectionHandler var chartData: ChartData var chartProperties: ChartLineConfig @@ -130,12 +131,29 @@ public struct Line: View { } private func publishSelectionState(active: Bool) { - guard let interactionValue = chartValue else { return } + guard active else { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) + return + } - interactionValue.interactionInProgress = active - if active, let index = selectedIndex(), index < chartData.points.count { - interactionValue.currentValue = chartData.points[index] + guard let index = selectedIndex(), index < chartData.points.count else { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) + return } + + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: chartData.points[index], + index: index, + isActive: true) } private func formatted(_ value: Double) -> String { diff --git a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift index eac8a466..516c2309 100644 --- a/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/Charts/PieChart/PieChartRow.swift @@ -3,6 +3,7 @@ import SwiftUI /// A single "row" (slice) of data, a view in a `PieChart` public struct PieChartRow: View { @Environment(\.chartInteractionValue) private var chartValue + @Environment(\.chartSelectionHandler) private var selectionHandler var chartData: ChartData var style: ChartStyle @@ -25,13 +26,23 @@ public struct PieChartRow: View { @State private var currentTouchedIndex = -1 { didSet { - guard oldValue != currentTouchedIndex, let chartValue = chartValue else { + guard oldValue != currentTouchedIndex else { return } - chartValue.interactionInProgress = currentTouchedIndex != -1 - guard currentTouchedIndex != -1 else { return } - chartValue.currentValue = slices[currentTouchedIndex].value + if currentTouchedIndex == -1 { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) + } else { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: slices[currentTouchedIndex].value, + index: currentTouchedIndex, + isActive: true) + } } } diff --git a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift index 317a43a7..8ea9bd81 100644 --- a/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift +++ b/Sources/SwiftUICharts/Charts/RingsChart/RingsChartRow.swift @@ -5,6 +5,7 @@ public struct RingsChartRow: View { var spacing: CGFloat @Environment(\.chartInteractionValue) private var chartValue + @Environment(\.chartSelectionHandler) private var selectionHandler var chartData: ChartData @State var touchRadius: CGFloat = -1.0 @@ -49,13 +50,26 @@ public struct RingsChartRow: View { let deltaY = value.location.y - frame.midY touchRadius = sqrt(deltaX * deltaX + deltaY * deltaY) - if let currentValue = getCurrentValue(maxRadius: radius), let interactionValue = chartValue { - interactionValue.currentValue = currentValue - interactionValue.interactionInProgress = true + if let selected = getCurrentSelection(maxRadius: radius) { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: selected.value, + index: selected.index, + isActive: true) + } else { + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) } }) .onEnded({ _ in - chartValue?.interactionInProgress = false + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: selectionHandler, + value: nil, + index: nil, + isActive: false) touchRadius = -1 }) ) @@ -80,9 +94,9 @@ public struct RingsChartRow: View { return touchIndex } - func getCurrentValue(maxRadius: CGFloat) -> Double? { + func getCurrentSelection(maxRadius: CGFloat) -> (index: Int, value: Double)? { guard let index = touchedCircleIndex(maxRadius: maxRadius) else { return nil } - return chartData.points[index] + return (index, chartData.points[index]) } private func formatted(_ value: Double) -> String { diff --git a/Tests/SwiftUIChartsTests/ChartSelectionDispatcherTests.swift b/Tests/SwiftUIChartsTests/ChartSelectionDispatcherTests.swift new file mode 100644 index 00000000..6928b510 --- /dev/null +++ b/Tests/SwiftUIChartsTests/ChartSelectionDispatcherTests.swift @@ -0,0 +1,45 @@ +@testable import SwiftUICharts +import XCTest + +final class ChartSelectionDispatcherTests: XCTestCase { + + func testPublishUpdatesChartValueAndEmitsCallback() { + let chartValue = ChartValue() + var received: ChartSelectionEvent? + + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: { event in + received = event + }, + value: 42, + index: 3, + isActive: true) + + XCTAssertTrue(chartValue.interactionInProgress) + XCTAssertEqual(chartValue.currentValue, 42) + XCTAssertEqual(received?.value, 42) + XCTAssertEqual(received?.index, 3) + XCTAssertEqual(received?.isActive, true) + } + + func testPublishInactiveClearsInteractionState() { + let chartValue = ChartValue() + chartValue.currentValue = 10 + chartValue.interactionInProgress = true + var received: ChartSelectionEvent? + + ChartSelectionDispatcher.publish(chartValue: chartValue, + handler: { event in + received = event + }, + value: nil, + index: nil, + isActive: false) + + XCTAssertFalse(chartValue.interactionInProgress) + XCTAssertEqual(chartValue.currentValue, 10) + XCTAssertNil(received?.value) + XCTAssertNil(received?.index) + XCTAssertEqual(received?.isActive, false) + } +} diff --git a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift index 12d60871..482d69fa 100644 --- a/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift +++ b/Tests/SwiftUIChartsTests/ComposableUsageSmokeTests.swift @@ -180,6 +180,25 @@ final class ComposableUsageSmokeTests: XCTestCase { assertCanRender(view) } + func testSelectionHandlerModifierCompiles() { + let view = AxisLabels { + ChartGrid { + BarChart() + .chartData([8, 11, 13, 9, 12]) + .chartStyle(self.sampleStyle) + } + } + .chartXAxisLabels(["M", "T", "W", "T", "F"]) + .chartSelectionHandler { event in + _ = event.value + _ = event.index + _ = event.isActive + } + .frame(width: 300, height: 220) + + assertCanRender(view) + } + private var sampleStyle: ChartStyle { ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red)) } From 55d3a6c83b2980e5d908ea0b47940166d4229289 Mon Sep 17 00:00:00 2001 From: Andras Samu Date: Sun, 1 Mar 2026 22:20:22 +0100 Subject: [PATCH 40/40] feat: add tab-based showcase app with dynamic data lab --- .../project.pbxproj | 8 ++ .../SceneDelegate.swift | 2 +- .../ShowcaseDynamicLabView.swift | 125 ++++++++++++++++++ .../ShowcaseTabContainerView.swift | 27 ++++ 4 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseDynamicLabView.swift create mode 100644 Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseTabContainerView.swift diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj index 5208dbfc..06a1eba3 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcase.xcodeproj/project.pbxproj @@ -8,9 +8,11 @@ /* Begin PBXBuildFile section */ 0A17A65BC7246EF894FB4C46 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FEFD8F7975122CADED38BF /* AppDelegate.swift */; }; + 1D4CE1A2A00E43B69F8E917B /* ShowcaseDynamicLabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D307985C5742659FBD2048 /* ShowcaseDynamicLabView.swift */; }; 282BC43F66ABF75981A2CA5E /* ShowcaseHomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472650295568456DC645EC4F /* ShowcaseHomeView.swift */; }; 5C46F84CBBE811CF1BACDC53 /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = C3965A0A2A9FEBF45BC880B8 /* SwiftUICharts */; }; 78F8536EADC5FE60A9B6D6B6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */; }; + 8BC2B530A7D14FACB535629E /* ShowcaseTabContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 812FA90A31E14920A08CC991 /* ShowcaseTabContainerView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -18,6 +20,8 @@ 09A022B6E881286CD3B96CB5 /* SwiftUIChartsShowcase.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = SwiftUIChartsShowcase.app; sourceTree = BUILT_PRODUCTS_DIR; }; 472650295568456DC645EC4F /* ShowcaseHomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowcaseHomeView.swift; sourceTree = ""; }; 4EC45D31E6FCC4FF27B4F3B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 812FA90A31E14920A08CC991 /* ShowcaseTabContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowcaseTabContainerView.swift; sourceTree = ""; }; + 89D307985C5742659FBD2048 /* ShowcaseDynamicLabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowcaseDynamicLabView.swift; sourceTree = ""; }; CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; F8FEFD8F7975122CADED38BF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -66,6 +70,8 @@ 4EC45D31E6FCC4FF27B4F3B7 /* Info.plist */, CA4C0A162EAAD03257FCC320 /* SceneDelegate.swift */, 472650295568456DC645EC4F /* ShowcaseHomeView.swift */, + 812FA90A31E14920A08CC991 /* ShowcaseTabContainerView.swift */, + 89D307985C5742659FBD2048 /* ShowcaseDynamicLabView.swift */, ); path = SwiftUIChartsShowcaseApp; sourceTree = ""; @@ -131,6 +137,8 @@ 0A17A65BC7246EF894FB4C46 /* AppDelegate.swift in Sources */, 78F8536EADC5FE60A9B6D6B6 /* SceneDelegate.swift in Sources */, 282BC43F66ABF75981A2CA5E /* ShowcaseHomeView.swift in Sources */, + 8BC2B530A7D14FACB535629E /* ShowcaseTabContainerView.swift in Sources */, + 1D4CE1A2A00E43B69F8E917B /* ShowcaseDynamicLabView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift index 69c32129..14966b1a 100644 --- a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/SceneDelegate.swift @@ -12,7 +12,7 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate { } let window = UIWindow(windowScene: windowScene) - window.rootViewController = UIHostingController(rootView: ShowcaseHomeView()) + window.rootViewController = UIHostingController(rootView: ShowcaseTabContainerView()) self.window = window window.makeKeyAndVisible() } diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseDynamicLabView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseDynamicLabView.swift new file mode 100644 index 00000000..8139c0c8 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseDynamicLabView.swift @@ -0,0 +1,125 @@ +import SwiftUI +import SwiftUICharts +import UIKit + +struct ShowcaseDynamicLabView: View { + @ObservedObject private var stream = ChartStreamingDataSource(initialValues: [28, 31, 30, 35, 33, 36, 34, 37], + windowSize: 8, + autoScroll: true) + @State private var timer: Timer? + @State private var callbackText = "Touch bars to receive callback events." + + private var pageBackgroundColor: Color { Color(UIColor.systemGroupedBackground) } + private var cardBackgroundColor: Color { Color(UIColor.secondarySystemGroupedBackground) } + private var chartSurfaceColor: Color { Color(UIColor.secondarySystemBackground) } + + var body: some View { + NavigationView { + ScrollView { + VStack(alignment: .leading, spacing: 16) { + liveStreamSection + callbackSection + } + .padding(16) + .frame(maxWidth: .infinity, alignment: .leading) + } + .navigationBarTitle("Dynamic Data Lab", displayMode: .inline) + .background(pageBackgroundColor) + } + .onAppear(perform: startFeed) + .onDisappear(perform: stopFeed) + } + + private var liveStreamSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Streaming Feed (Mock Dynamic)") + .font(.headline) + Text("A timer appends points continuously to emulate live network updates.") + .font(.caption) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + LineChart() + .chartData(stream) + .chartYRange(stream.suggestedYRange) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: ColorGradient(.green, .blue))) + .chartLineMarks(true, color: ColorGradient(.green, .blue)) + } + .chartGridLines(horizontal: 5, vertical: max(2, stream.values.count)) + } + .chartXAxisLabels(stream.xLabels) + .chartYAxisAutoTicks(5, format: .number) + .chartAxisFont(.caption) + .chartAxisColor(.secondary) + .frame(height: 240) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + + private var callbackSection: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Selection Callback Output") + .font(.headline) + Text(callbackText) + .font(.caption.monospacedDigit()) + .foregroundColor(.secondary) + + AxisLabels { + ChartGrid { + BarChart() + .chartData(stream.values) + .chartStyle(ChartStyle(backgroundColor: chartSurfaceColor, + foregroundColor: [ + ColorGradient(.orange, .red), + ColorGradient(.blue, .purple), + ColorGradient(.green, .yellow) + ])) + } + .chartGridLines(horizontal: 4, vertical: 0) + } + .chartXAxisLabels(stream.xLabels) + .chartYAxisAutoTicks(4, format: .number) + .chartAxisFont(.caption) + .chartAxisColor(.secondary) + .chartSelectionHandler { event in + guard event.isActive, + let value = event.value, + let index = event.index else { + callbackText = "No active selection" + return + } + + callbackText = "Slot \(index + 1): \(String(format: "%.2f", value))" + } + .frame(height: 230) + .padding(12) + .background(RoundedRectangle(cornerRadius: 14).fill(cardBackgroundColor)) + } + } + + private func startFeed() { + guard timer == nil else { return } + + let next = Timer.scheduledTimer(withTimeInterval: 1.5, repeats: true) { _ in + let drift = Double.random(in: -2.0...2.0) + let value = min(45, max(20, stream.latestValue + drift)) + stream.append(value) + } + next.tolerance = 0.25 + timer = next + } + + private func stopFeed() { + timer?.invalidate() + timer = nil + } +} + +struct ShowcaseDynamicLabView_Previews: PreviewProvider { + static var previews: some View { + ShowcaseDynamicLabView() + } +} diff --git a/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseTabContainerView.swift b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseTabContainerView.swift new file mode 100644 index 00000000..8ea87965 --- /dev/null +++ b/Examples/SwiftUIChartsShowcase/SwiftUIChartsShowcaseApp/ShowcaseTabContainerView.swift @@ -0,0 +1,27 @@ +import SwiftUI + +struct ShowcaseTabContainerView: View { + var body: some View { + TabView { + ShowcaseHomeView() + .tabItem { + Image(systemName: "chart.xyaxis.line") + Text("Showcase") + } + .tag(0) + + ShowcaseDynamicLabView() + .tabItem { + Image(systemName: "waveform.path.ecg") + Text("Dynamic") + } + .tag(1) + } + } +} + +struct ShowcaseTabContainerView_Previews: PreviewProvider { + static var previews: some View { + ShowcaseTabContainerView() + } +}

vJd(>Su1)R>&pd}qy*(dltm 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 RbU5HoPD)9#T-?b2{{h!ee#!s< literal 0 HcmV?d00001 diff --git a/Resources/chartpic3.png b/Resources/chartpic3.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd0d5e7961ebd21dff13c5bce54d423e0d7c650 GIT binary patch literal 111879 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%0DlD$ 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