GlucoseRangeView.swift 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import HealthKit
  2. import LoopKitUI
  3. import SwiftUI
  4. struct GlucoseRangeView: UIViewControllerRepresentable {
  5. func makeUIViewController(context _: UIViewControllerRepresentableContext<GlucoseRangeView>) -> UIViewController {
  6. let unit = HKUnit.millimolesPerLiter
  7. return GlucoseRangeScheduleTableViewController(allowedValues: unit.allowedCorrectionRangeValues(), unit: unit)
  8. }
  9. func updateUIViewController(
  10. _: UIViewController,
  11. context _: UIViewControllerRepresentableContext<GlucoseRangeView>
  12. ) {}
  13. }
  14. extension HKUnit {
  15. static let milligramsPerDeciliter: HKUnit = {
  16. HKUnit.gramUnit(with: .milli).unitDivided(by: .literUnit(with: .deci))
  17. }()
  18. static let millimolesPerLiter: HKUnit = {
  19. HKUnit.moleUnit(with: .milli, molarMass: HKUnitMolarMassBloodGlucose).unitDivided(by: .liter())
  20. }()
  21. func allowedCorrectionRangeValues() -> [Double] {
  22. switch self {
  23. case HKUnit.milligramsPerDeciliter:
  24. return (60 ... 180).map { Double($0) }
  25. case HKUnit.millimolesPerLiter:
  26. return (33 ... 100).map { Double($0) / 10.0 }
  27. default:
  28. return []
  29. }
  30. }
  31. }