TempTrack-iOS/TempTrack/Views/TemperatureHistoryChart.swift

59 lines
1.9 KiB
Swift
Raw Normal View History

import SwiftUI
import Charts
struct TemperatureHistoryChart: View {
let points: [TemperatureMeasurement]
let upperTempLimit = 40.0
let lowerTempLimit = -20.0
let pastDateLimit = -3600
let futureDateLimit = 0
var body: some View {
Chart {
ForEach(points) { point in
if let s = point.sensor0.optionalValue {
LineMark(
x: .value("Date", point.secondsAgo),
y: .value("Temperature", s))
.foregroundStyle(Color.red)
}
if let s = point.sensor1.optionalValue {
LineMark(
x: .value("Date", point.secondsAgo),
y: .value("Temperature", s))
.foregroundStyle(by: .value("Type", "Sensor 1"))
}
}
}
.chartXScale(domain: pastDateLimit...futureDateLimit)
.chartYScale(domain: lowerTempLimit...upperTempLimit)
.chartXAxis(.hidden)
.chartLegend(.hidden)
.chartYAxis {
AxisMarks(position: .trailing, values: .automatic) { value in
AxisValueLabel(multiLabelAlignment: .trailing) {
if let intValue = value.as(Int.self) {
Text("\(intValue) km")
.font(.system(size: 10))
.foregroundColor(.white)
}
}
}
//AxisMarks(position: .trailing, stroke: StrokeStyle(lineWidth: 0))
}
.padding()
}
}
struct TemperatureHistoryChart_Previews: PreviewProvider {
static var previews: some View {
TemperatureHistoryChart(
points: TemperatureMeasurement.mockData)
.previewLayout(.fixed(width: 350, height: 150))
.background(.gray)
}
}