Browse Source

disabling adjustSens toggle resets the slider

Robert 1 year ago
parent
commit
849b01e20b

+ 15 - 2
FreeAPS/Sources/Modules/OverrideConfig/OverrideStateModel.swift

@@ -56,6 +56,11 @@ extension OverrideConfig {
         @Published var halfBasalTarget: Decimal = 160
         @Published var halfBasalTarget: Decimal = 160
         @Published var setHBT: Decimal = 160
         @Published var setHBT: Decimal = 160
         @Published var didSaveSettings: Bool = false
         @Published var didSaveSettings: Bool = false
+        @Published var adjustSens: Bool = false {
+            didSet {
+                handleAdjustSensToggle()
+            }
+        }
 
 
         let coredataContext = CoreDataStack.shared.newTaskContext()
         let coredataContext = CoreDataStack.shared.newTaskContext()
         let viewContext = CoreDataStack.shared.persistentContainer.viewContext
         let viewContext = CoreDataStack.shared.persistentContainer.viewContext
@@ -733,6 +738,13 @@ extension OverrideConfig.StateModel {
         halfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
         halfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
     }
     }
 
 
+    func handleAdjustSensToggle() {
+        if !adjustSens {
+            halfBasalTarget = setHBT
+            percentage = Double(computePercentage(using: setHBT) * 100)
+        }
+    }
+
     func computeHalfBasalTarget() -> Double {
     func computeHalfBasalTarget() -> Double {
         let ratio = Decimal(percentage / 100)
         let ratio = Decimal(percentage / 100)
         let normalTarget: Decimal = 100
         let normalTarget: Decimal = 100
@@ -771,8 +783,9 @@ extension OverrideConfig.StateModel {
         return maxSens
         return maxSens
     }
     }
 
 
-    func computePercentage() -> Decimal {
-        let c = (halfBasalTarget - 100)
+    func computePercentage(using initialHBT: Decimal? = nil) -> Decimal {
+        let hbt = initialHBT ?? halfBasalTarget
+        let c = (hbt - 100)
         let target = tempTargetTarget
         let target = tempTargetTarget
         var ratio: Decimal = 1
         var ratio: Decimal = 1
         if c * (c + target - 100) <= 0 {
         if c * (c + target - 100) <= 0 {

+ 7 - 9
FreeAPS/Sources/Modules/OverrideConfig/View/AddTempTargetForm.swift

@@ -10,11 +10,10 @@ struct AddTempTargetForm: View {
     @State private var showPresetAlert = false
     @State private var showPresetAlert = false
     @State private var alertString = ""
     @State private var alertString = ""
     @State private var isUsingSlider = false
     @State private var isUsingSlider = false
-    @State private var adjustSens = false
+
     @State private var didPressSave =
     @State private var didPressSave =
         false // only used for fixing the Disclaimer showing up after pressing save (after the state was resetted), maybe refactor this...
         false // only used for fixing the Disclaimer showing up after pressing save (after the state was resetted), maybe refactor this...
-
-    @State private var shouldDisplayHint: Bool = false
+    @State private var shouldDisplayHint = false
     @State var hintDetent = PresentationDetent.large
     @State var hintDetent = PresentationDetent.large
     @State var selectedVerboseHint: String?
     @State var selectedVerboseHint: String?
     @State var hintLabel: String?
     @State var hintLabel: String?
@@ -146,7 +145,7 @@ struct AddTempTargetForm: View {
                             Spacer()
                             Spacer()
                             Button(
                             Button(
                                 action: {
                                 action: {
-                                    hintLabel = "Ajust Sensitivity for high Temp Target "
+                                    hintLabel = "Adjust Sensitivity for high Temp Target "
                                     selectedVerboseHint =
                                     selectedVerboseHint =
                                         "You have enabled High TempTarget Raises Sensitivity in your Target Behaviour setting. Therefore current high Temp Target of \(state.tempTargetTarget) would raise your sensitivity, therefore reduce Insulin dosing to \(round(state.percentage)) % of regular amount. This can be adjusted to another desired Insulin percentage!"
                                         "You have enabled High TempTarget Raises Sensitivity in your Target Behaviour setting. Therefore current high Temp Target of \(state.tempTargetTarget) would raise your sensitivity, therefore reduce Insulin dosing to \(round(state.percentage)) % of regular amount. This can be adjusted to another desired Insulin percentage!"
                                     shouldDisplayHint.toggle()
                                     shouldDisplayHint.toggle()
@@ -158,7 +157,7 @@ struct AddTempTargetForm: View {
                                 }
                                 }
                             ).buttonStyle(BorderlessButtonStyle())
                             ).buttonStyle(BorderlessButtonStyle())
                         }.padding(.top)
                         }.padding(.top)
-                        Toggle("Adjust sensitivity change for Temp Target?", isOn: $adjustSens).padding(.top)
+                        Toggle("Adjust sensitivity change for Temp Target?", isOn: $state.adjustSens).padding(.top)
 
 
                     }.padding(.bottom)
                     }.padding(.bottom)
                 }.listRowBackground(Color.chart)
                 }.listRowBackground(Color.chart)
@@ -175,7 +174,7 @@ struct AddTempTargetForm: View {
                             Spacer()
                             Spacer()
                             Button(
                             Button(
                                 action: {
                                 action: {
-                                    hintLabel = "Ajust Sensitivity for low Temp Target "
+                                    hintLabel = "Adjust Sensitivity for low Temp Target "
                                     selectedVerboseHint =
                                     selectedVerboseHint =
                                         "You have enabled Low TempTarget Lowers Sensitivity and autosens Max >1 in your Target Behaviour setting. Therefore current low Temp Target of \(state.tempTargetTarget) would lower your sensitivity, therefore increase Insulin dosing to \(round(state.percentage)) % of regular amount. This can be adjusted to another desired Insulin percentage!"
                                         "You have enabled Low TempTarget Lowers Sensitivity and autosens Max >1 in your Target Behaviour setting. Therefore current low Temp Target of \(state.tempTargetTarget) would lower your sensitivity, therefore increase Insulin dosing to \(round(state.percentage)) % of regular amount. This can be adjusted to another desired Insulin percentage!"
                                     shouldDisplayHint.toggle()
                                     shouldDisplayHint.toggle()
@@ -187,14 +186,13 @@ struct AddTempTargetForm: View {
                                 }
                                 }
                             ).buttonStyle(BorderlessButtonStyle())
                             ).buttonStyle(BorderlessButtonStyle())
                         }.padding(.top)
                         }.padding(.top)
-                        Toggle("Adjust sensitivity change for Temp Target?", isOn: $adjustSens).padding(.top)
+                        Toggle("Adjust sensitivity change for Temp Target?", isOn: $state.adjustSens).padding(.top)
 
 
                     }.padding(.bottom)
                     }.padding(.bottom)
                 }.listRowBackground(Color.chart)
                 }.listRowBackground(Color.chart)
             }
             }
-            // TODO: if adjustSens goes to false the state.halfBasalTarget needs to revert to HBT in settings
 
 
-            if adjustSens && state.tempTargetTarget != 100 {
+            if state.adjustSens && state.tempTargetTarget != 100 {
                 Section {
                 Section {
                     VStack {
                     VStack {
                         // Display the percentage in large text
                         // Display the percentage in large text