GlucoseTargetsView.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import Charts
  2. import Foundation
  3. import SwiftUI
  4. struct GlucoseTargetsView: ChartContent {
  5. let targetProfiles: [TargetProfile]
  6. var body: some ChartContent {
  7. drawGlucoseTargets(for: targetProfiles)
  8. }
  9. /**
  10. Draws glucose target ranges on the chart
  11. - Returns: A ChartContent containing line marks representing target glucose ranges
  12. */
  13. private func drawGlucoseTargets(for targetProfiles: [TargetProfile]) -> some ChartContent {
  14. // Draw target lines for each profile
  15. ForEach(targetProfiles, id: \.self) { profile in
  16. LineMark(
  17. x: .value("Time", Date(timeIntervalSinceReferenceDate: profile.startTime)),
  18. y: .value("Target", profile.value)
  19. )
  20. .lineStyle(.init(lineWidth: 1))
  21. .foregroundStyle(Color.green.gradient)
  22. LineMark(
  23. x: .value("Time", Date(timeIntervalSinceReferenceDate: profile.endTime)),
  24. y: .value("Target", profile.value)
  25. )
  26. .lineStyle(.init(lineWidth: 1))
  27. .foregroundStyle(Color.green.gradient)
  28. }
  29. }
  30. }