FastRiseAlarmEditor.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // LoopFollow
  2. // FastRiseAlarmEditor.swift
  3. // Created by Jonas Björkert on 2025-05-15.
  4. import SwiftUI
  5. struct FastRiseAlarmEditor: View {
  6. @Binding var alarm: Alarm
  7. var body: some View {
  8. Form {
  9. InfoBanner(
  10. text: "Alerts when glucose readings rise rapidly. For example, "
  11. + "three straight readings each climbing by at least the amount "
  12. + "you set. Optionally limit alerts to only fire above a certain BG.",
  13. alarmType: alarm.type
  14. )
  15. AlarmGeneralSection(alarm: $alarm)
  16. AlarmBGSection(
  17. header: "Rate of Rise",
  18. footer: "How much the BG must rise to count as a “fast” rise.",
  19. title: "Rise per reading",
  20. range: 3 ... 20,
  21. value: Binding(
  22. get: { alarm.delta ?? 3 },
  23. set: { alarm.delta = $0 }
  24. )
  25. )
  26. AlarmStepperSection(
  27. header: "Consecutive Rises",
  28. footer: "Number of rises—each meeting the rate above—"
  29. + "required before an alert fires.",
  30. title: "Rises in a row",
  31. range: 1 ... 3,
  32. step: 1,
  33. value: Binding(
  34. get: { Double(alarm.monitoringWindow ?? 2) },
  35. set: { alarm.monitoringWindow = Int($0) }
  36. )
  37. )
  38. AlarmBGLimitSection(
  39. header: "BG Limit",
  40. footer: "When enabled, this alert only fires if the glucose is "
  41. + "above the limit you set.",
  42. toggleText: "Use BG Limit",
  43. pickerTitle: "Rising above",
  44. range: 40 ... 300,
  45. value: $alarm.aboveBG
  46. )
  47. AlarmActiveSection(alarm: $alarm)
  48. AlarmAudioSection(alarm: $alarm)
  49. AlarmSnoozeSection(alarm: $alarm, range: 5 ... 60, step: 5)
  50. }
  51. .navigationTitle(alarm.type.rawValue)
  52. }
  53. }