|
|
@@ -3,6 +3,7 @@ import SwiftUI
|
|
|
|
|
|
struct GlucoseChartView: UIViewRepresentable {
|
|
|
@Binding var glucose: [BloodGlucose]
|
|
|
+ @Binding var suggestion: Suggestion?
|
|
|
|
|
|
func makeUIView(context _: Context) -> OCKCartesianGraphView {
|
|
|
let view = OCKCartesianGraphView(type: .scatter)
|
|
|
@@ -20,10 +21,79 @@ struct GlucoseChartView: UIViewRepresentable {
|
|
|
}
|
|
|
var data = OCKDataSeries(
|
|
|
dataPoints: dataPoints,
|
|
|
- title: "Glucose",
|
|
|
+ title: "BG",
|
|
|
color: .green
|
|
|
)
|
|
|
data.size = 1
|
|
|
- view.dataSeries = [data]
|
|
|
+
|
|
|
+ var series = [data]
|
|
|
+
|
|
|
+ let lastDate = glucose.last?.dateString ?? Date()
|
|
|
+
|
|
|
+ if let iob = suggestion?.predictions?.iob {
|
|
|
+ let dataPoints = iob.enumerated().map {
|
|
|
+ CGPoint(
|
|
|
+ x: CGFloat(lastDate.addingTimeInterval(Double($0 * 300)).timeIntervalSince1970),
|
|
|
+ y: CGFloat($1)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ var data = OCKDataSeries(
|
|
|
+ dataPoints: dataPoints,
|
|
|
+ title: "IOB",
|
|
|
+ color: .blue
|
|
|
+ )
|
|
|
+ data.size = 1
|
|
|
+ series.append(data)
|
|
|
+ }
|
|
|
+
|
|
|
+ if let zt = suggestion?.predictions?.zt {
|
|
|
+ let dataPoints = zt.enumerated().map {
|
|
|
+ CGPoint(
|
|
|
+ x: CGFloat(lastDate.addingTimeInterval(Double($0 * 300)).timeIntervalSince1970),
|
|
|
+ y: CGFloat($1)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ var data = OCKDataSeries(
|
|
|
+ dataPoints: dataPoints,
|
|
|
+ title: "ZT",
|
|
|
+ color: .cyan
|
|
|
+ )
|
|
|
+ data.size = 1
|
|
|
+ series.append(data)
|
|
|
+ }
|
|
|
+
|
|
|
+ if let cob = suggestion?.predictions?.cob {
|
|
|
+ let dataPoints = cob.enumerated().map {
|
|
|
+ CGPoint(
|
|
|
+ x: CGFloat(lastDate.addingTimeInterval(Double($0 * 300)).timeIntervalSince1970),
|
|
|
+ y: CGFloat($1)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ var data = OCKDataSeries(
|
|
|
+ dataPoints: dataPoints,
|
|
|
+ title: "COB",
|
|
|
+ color: .orange
|
|
|
+ )
|
|
|
+ data.size = 1
|
|
|
+ series.append(data)
|
|
|
+ }
|
|
|
+
|
|
|
+ if let uam = suggestion?.predictions?.uam {
|
|
|
+ let dataPoints = uam.enumerated().map {
|
|
|
+ CGPoint(
|
|
|
+ x: CGFloat(lastDate.addingTimeInterval(Double($0 * 300)).timeIntervalSince1970),
|
|
|
+ y: CGFloat($1)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ var data = OCKDataSeries(
|
|
|
+ dataPoints: dataPoints,
|
|
|
+ title: "UAM",
|
|
|
+ color: .yellow
|
|
|
+ )
|
|
|
+ data.size = 1
|
|
|
+ series.append(data)
|
|
|
+ }
|
|
|
+
|
|
|
+ view.dataSeries = series
|
|
|
}
|
|
|
}
|