Compare commits

..

1 Commits

Author SHA1 Message Date
Samu Andras 2600ffb97b feat: add new axis interface 2022-10-09 22:19:55 +02:00
6 changed files with 13 additions and 23 deletions
@@ -201,7 +201,7 @@ extension 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))
path.move(to: .zero)
var point1 = CGPoint(x: convertedXValues[0], y: convertedYPoints[0])
path.addLine(to: point1)
for pointIndex in 1..<data.count {
@@ -6,14 +6,13 @@ extension LineChart {
return self
}
public func setBackground(colorGradient: ColorGradient) -> LineChart {
self.chartProperties.backgroundGradient = colorGradient
public func showBackground(_ show: Bool) -> LineChart {
self.chartProperties.showBackground = show
return self
}
public func showChartMarks(_ show: Bool, with color: ColorGradient? = nil) -> LineChart {
public func showChartMarks(_ show: Bool) -> LineChart {
self.chartProperties.showChartMarks = show
self.chartProperties.customChartMarksColors = color
return self
}
@@ -28,10 +28,10 @@ public struct Line: View {
public var body: some View {
GeometryReader { geometry in
ZStack {
if self.didCellAppear, let backgroundColor = chartProperties.backgroundGradient {
if self.didCellAppear && self.chartProperties.showBackground {
LineBackgroundShapeView(chartData: chartData,
geometry: geometry,
backgroundColor: backgroundColor)
style: style)
}
LineShapeView(chartData: chartData,
chartProperties: chartProperties,
@@ -3,12 +3,12 @@ import SwiftUI
struct LineBackgroundShapeView: View {
var chartData: ChartData
var geometry: GeometryProxy
var backgroundColor: ColorGradient
var style: ChartStyle
var body: some View {
LineBackgroundShape(data: chartData.normalisedData)
.fill(LinearGradient(gradient: Gradient(colors: [backgroundColor.startColor,
backgroundColor.endColor]),
.fill(LinearGradient(gradient: Gradient(colors: [style.backgroundColor.startColor,
style.foregroundColor.first?.startColor ?? .white]),
startPoint: .bottom,
endPoint: .top))
.rotationEffect(.degrees(180), anchor: .center)
@@ -13,16 +13,6 @@ 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 {
ZStack {
LineShape(data: chartData.normalisedData, lineStyle: chartProperties.lineStyle)
@@ -38,7 +28,9 @@ struct LineShapeView: View, Animatable {
MarkerShape(data: chartData.normalisedData)
.trim(from: 0, to: CGFloat(trimTo))
.fill(.white,
strokeBorder: chartMarkColor,
strokeBorder: LinearGradient(gradient: style.foregroundColor.first?.gradient ?? ColorGradient.orangeBright.gradient,
startPoint: .leading,
endPoint: .trailing),
lineWidth: chartProperties.lineWidth)
.rotationEffect(.degrees(180), anchor: .center)
.rotation3DEffect(.degrees(180), axis: (x: 0, y: 1, z: 0))
@@ -2,9 +2,8 @@ import SwiftUI
public class LineChartProperties: ObservableObject {
@Published var lineWidth: CGFloat = 2.0
@Published var backgroundGradient: ColorGradient?
@Published var showBackground: Bool = false
@Published var showChartMarks: Bool = true
@Published var customChartMarksColors: ColorGradient?
@Published var lineStyle: LineStyle = .curved
public init() {