HomeRootView.swift 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import SwiftUI
  2. extension Home {
  3. struct RootView: BaseView {
  4. @EnvironmentObject var viewModel: ViewModel<Provider>
  5. @State var showHours = 1
  6. var chart: some View {
  7. GeometryReader { geo in
  8. ScrollView(.horizontal, showsIndicators: false) {
  9. PointChartView(
  10. minValue: 20,
  11. maxValue: 300,
  12. maxWidth: geo.size.width,
  13. showHours: $showHours,
  14. glucoseData: $viewModel.glucose
  15. ) { value in
  16. GlucosePointView(value: value)
  17. }
  18. }
  19. }
  20. }
  21. var body: some View {
  22. viewModel.setFilteredGlucoseHours(hours: 24)
  23. return GeometryReader { geo in
  24. VStack {
  25. Group {
  26. Text("Header")
  27. }
  28. ScrollView(.vertical, showsIndicators: false) {
  29. // chart.frame(height: 300)
  30. GlucoseChartView(glucose: $viewModel.glucose, suggestion: $viewModel.suggestion).frame(height: 150)
  31. if let reason = viewModel.suggestion?.reason {
  32. Text(reason).font(.caption).padding()
  33. }
  34. Button(action: viewModel.runLoop) {
  35. Text("Run loop now").buttonBackground().padding()
  36. }.foregroundColor(.white)
  37. }
  38. ZStack {
  39. Rectangle().fill(Color.gray.opacity(0.2)).frame(height: 50 + geo.safeAreaInsets.bottom)
  40. HStack {
  41. Button { viewModel.showModal(for: .addCarbs) }
  42. label: {
  43. Image(systemName: "circlebadge.2.fill")
  44. }.foregroundColor(.green)
  45. Spacer()
  46. Button { viewModel.showModal(for: .addTempTarget) }
  47. label: {
  48. Image(systemName: "target")
  49. }.foregroundColor(.green)
  50. Spacer()
  51. Button { viewModel.showModal(for: .bolus) }
  52. label: {
  53. Image(systemName: "drop.fill")
  54. }.foregroundColor(.orange)
  55. Spacer()
  56. if viewModel.allowManualTemp {
  57. Button { viewModel.showModal(for: .manualTempBasal) }
  58. label: {
  59. Image(systemName: "circle.bottomhalf.fill")
  60. }.foregroundColor(.blue)
  61. Spacer()
  62. }
  63. Button { viewModel.showModal(for: .settings) }
  64. label: {
  65. Image(systemName: "gearshape")
  66. }.foregroundColor(.gray)
  67. }
  68. .padding(.horizontal, 24)
  69. .padding(.bottom, geo.safeAreaInsets.bottom)
  70. }
  71. }
  72. .edgesIgnoringSafeArea(.bottom)
  73. }
  74. .navigationTitle("Home")
  75. .navigationBarHidden(true)
  76. }
  77. }
  78. }