Просмотр исходного кода

Merge branch 'test' into superBolus

polscm32 2 лет назад
Родитель
Сommit
9a53c86c15

+ 1 - 1
FreeAPS.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -30,7 +30,7 @@
       },
       {
         "package": "SwiftCharts",
-        "repositoryURL": "https://github.com/ivanschuetz/SwiftCharts",
+        "repositoryURL": "https://github.com/ivanschuetz/SwiftCharts.git",
         "state": {
           "branch": "master",
           "revision": "c354c1945bb35a1f01b665b22474f6db28cba4a2",

+ 2 - 3
FreeAPS/Sources/Modules/Bolus/View/AlternativeBolusCalcRootView.swift

@@ -57,7 +57,6 @@ extension Bolus {
 
         var body: some View {
             Form {
-                
                 Section {
                     if state.waitForSuggestion {
                         Text("Please wait")
@@ -65,7 +64,6 @@ extension Bolus {
                         predictionChart
                     }
                 } header: { Text("Predictions") }
-                
 
                 Section {}
                 if fetch {
@@ -220,7 +218,8 @@ extension Bolus {
         var predictionChart: some View {
             ZStack {
                 PredictionView(
-                    predictions: $state.predictions, units: $state.units, eventualBG: $state.evBG, target: $state.target, displayPredictions: $state.displayPredictions
+                    predictions: $state.predictions, units: $state.units, eventualBG: $state.evBG, target: $state.target,
+                    displayPredictions: $state.displayPredictions
                 )
             }
         }

+ 30 - 0
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -61,6 +61,21 @@ extension Home {
         @Published var displayYgridLines: Bool = false
         @Published var thresholdLines: Bool = false
 
+        enum Scale: Int, CaseIterable, Identifiable {
+            case one = 1
+            case three = 3
+            case six = 6
+            case twelve = 12
+            case twentyfour = 24
+            var id: Self { self }
+        }
+
+        @Published var scale: Scale = .six {
+            didSet {
+                screenHours = calculateScreenHours(scale: scale)
+            }
+        }
+
         let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
 
         override func subscribe() {
@@ -195,6 +210,21 @@ extension Home {
                 .store(in: &lifetime)
         }
 
+        func calculateScreenHours(scale: Scale) -> Int {
+            switch scale {
+            case .one:
+                return 1
+            case .three:
+                return 3
+            case .six:
+                return 6
+            case .twelve:
+                return 12
+            case .twentyfour:
+                return 24
+            }
+        }
+
         func addCarbs() {
             showModal(for: .addCarbs(editMode: false, override: false))
         }

+ 45 - 0
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -37,6 +37,19 @@ extension Home {
             sortDescriptors: [NSSortDescriptor(key: "date", ascending: false)]
         ) var enactedSliderTT: FetchedResults<TempTargetsSlider>
 
+        // MARK: FOR PICKER TO SCALE X AXIS GRAPH
+
+//        enum Scale: Int, CaseIterable, Identifiable {
+//            case one = 1
+//            case three = 3
+//            case six = 6
+//            case twelve = 12
+//            case twentyfour = 24
+//            var id: Self { self }
+//        }
+
+//        @State private var scale: Scale = .six
+
         private var numberFormatter: NumberFormatter {
             let formatter = NumberFormatter()
             formatter.numberStyle = .decimal
@@ -411,6 +424,37 @@ extension Home {
             .modal(for: .dataTable, from: self)
         }
 
+        // MARK: PICKER IN SEGEMENTED STYLE TO CHOOSE THE X AXIS SCALE OF THE GRAPH
+
+        @ViewBuilder private func pickerPanel(_: GeometryProxy) -> some View {
+            HStack {
+                Picker("Scale", selection: $state.scale) {
+                    ForEach(Home.StateModel.Scale.allCases) { scale in
+                        Text("\(scale.rawValue)h").tag(Optional(scale))
+                    }
+                }
+                .pickerStyle(.segmented)
+                .background(.cyan.opacity(0.2))
+            }
+            .padding(.horizontal, 4)
+            .padding(.vertical, 2)
+        }
+
+//        private func calculateScreenHours(scale: Scale) -> Int {
+//            switch scale {
+//            case .one:
+//                return 1
+//            case .three:
+//                return 3
+//            case .six:
+//                return 6
+//            case .twelve:
+//                return 12
+//            case .twentyfour:
+//                return 24
+//            }
+//        }
+
         @ViewBuilder private func profiles(_: GeometryProxy) -> some View {
             let colour: Color = colorScheme == .dark ? .black : .white
             // Rectangle().fill(colour).frame(maxHeight: 1)
@@ -575,6 +619,7 @@ extension Home {
                     infoPanel
                     mainChart
                     legendPanel
+                    pickerPanel(geo)
                     profiles(geo)
                     bottomPanel(geo)
                 }