Parcourir la source

Simplify Temp Targets

(cherry picked from commit cf97965a9a1e0a925aac4a412120ac28b63a5e15)
Jon Mårtensson il y a 3 ans
Parent
commit
b667d9801c

+ 2 - 2
FreeAPS/Sources/Models/Preferences.swift

@@ -8,8 +8,8 @@ struct Preferences: JSON {
     var autosensMin: Decimal = 0.7
     var autosensMin: Decimal = 0.7
     var smbDeliveryRatio: Decimal = 0.5
     var smbDeliveryRatio: Decimal = 0.5
     var rewindResetsAutosens: Bool = true
     var rewindResetsAutosens: Bool = true
-    var highTemptargetRaisesSensitivity: Bool = false
-    var lowTemptargetLowersSensitivity: Bool = false
+    var highTemptargetRaisesSensitivity: Bool = true
+    var lowTemptargetLowersSensitivity: Bool = true
     var sensitivityRaisesTarget: Bool = true
     var sensitivityRaisesTarget: Bool = true
     var resistanceLowersTarget: Bool = false
     var resistanceLowersTarget: Bool = false
     var advTargetAdjustments: Bool = false
     var advTargetAdjustments: Bool = false

+ 10 - 18
FreeAPS/Sources/Modules/AddTempTarget/AddTempTargetStateModel.swift

@@ -11,24 +11,23 @@ extension AddTempTarget {
         @Published var date = Date()
         @Published var date = Date()
         @Published var newPresetName = ""
         @Published var newPresetName = ""
         @Published var presets: [TempTarget] = []
         @Published var presets: [TempTarget] = []
+        @Published var percentage = 100.0
+        @Published var maxValue: Decimal = 1.2
+        @Published var halfBasal: Decimal = 160
 
 
         private(set) var units: GlucoseUnits = .mmolL
         private(set) var units: GlucoseUnits = .mmolL
 
 
         override func subscribe() {
         override func subscribe() {
             units = settingsManager.settings.units
             units = settingsManager.settings.units
             presets = storage.presets()
             presets = storage.presets()
+            maxValue = settingsManager.preferences.autosensMax
+            halfBasal = settingsManager.preferences.halfBasalExerciseTarget
         }
         }
 
 
         func enact() {
         func enact() {
-            var lowTarget = low
-            var highTarget = high
-
-            highTarget = max(highTarget, lowTarget)
-
-            if units == .mmolL {
-                lowTarget = lowTarget.asMgdL
-                highTarget = highTarget.asMgdL
-            }
+            let diff = Double(halfBasal - 100)
+            let lowTarget = Decimal(diff + 40 * (percentage / 100)) / (Decimal(percentage) / 100)
+            let highTarget = lowTarget
 
 
             let entry = TempTarget(
             let entry = TempTarget(
                 name: TempTarget.custom,
                 name: TempTarget.custom,
@@ -50,15 +49,8 @@ extension AddTempTarget {
         }
         }
 
 
         func save() {
         func save() {
-            var lowTarget = low
-            var highTarget = high
-
-            highTarget = max(highTarget, lowTarget)
-
-            if units == .mmolL {
-                lowTarget = lowTarget.asMgdL
-                highTarget = highTarget.asMgdL
-            }
+            let lowTarget = Decimal(60 + 40 * (percentage / 100)) / (Decimal(percentage) / 100)
+            let highTarget = lowTarget
 
 
             let entry = TempTarget(
             let entry = TempTarget(
                 name: newPresetName.isEmpty ? TempTarget.custom : newPresetName,
                 name: newPresetName.isEmpty ? TempTarget.custom : newPresetName,

+ 33 - 12
FreeAPS/Sources/Modules/AddTempTarget/View/AddTempTargetRootView.swift

@@ -8,6 +8,7 @@ extension AddTempTarget {
         @State private var isPromtPresented = false
         @State private var isPromtPresented = false
         @State private var isRemoveAlertPresented = false
         @State private var isRemoveAlertPresented = false
         @State private var removeAlert: Alert?
         @State private var removeAlert: Alert?
+        @State private var isEditing = false
 
 
         private var formatter: NumberFormatter {
         private var formatter: NumberFormatter {
             let formatter = NumberFormatter()
             let formatter = NumberFormatter()
@@ -26,19 +27,39 @@ extension AddTempTarget {
                     }
                     }
                 }
                 }
 
 
-                Section(header: Text("Custom")) {
-                    HStack {
-                        Text("Bottom target")
-                        Spacer()
-                        DecimalTextField("0", value: $state.low, formatter: formatter, cleanInput: true)
-                        Text(state.units.rawValue).foregroundColor(.secondary)
-                    }
-                    HStack {
-                        Text("Top target")
-                        Spacer()
-                        DecimalTextField("0", value: $state.high, formatter: formatter, cleanInput: true)
-                        Text(state.units.rawValue).foregroundColor(.secondary)
+                Section(
+                    header: Text("Basal Insulin and Sensitivity ratio"),
+                    footer: Text(
+                        "A lower 'Half Basal Target' setting will lower the basal and raise the ISF earlier (at a lower target glucose)"
+                    )
+                ) {
+                    VStack {
+                        Slider(
+                            value: $state.percentage,
+                            in: 15 ...
+                                Double(state.maxValue * 100),
+                            step: 1,
+                            onEditingChanged: { editing in
+                                isEditing = editing
+                            }
+                        )
+                        Text("\(state.percentage.formatted(.number)) %")
+                            .foregroundColor(isEditing ? .orange : .blue)
+                            .font(.largeTitle)
+                        Divider()
+                        Text(
+                            "Target" +
+                                (
+                                    state
+                                        .units == .mmolL ?
+                                        ": \((Decimal(Double(state.halfBasal - 100) + 40 * (state.percentage / 100)) / (Decimal(state.percentage) / 100)).asMmolL.formatted(.number)) mmol/L" :
+                                        ": \((Decimal(Double(state.halfBasal - 100) + 40 * (state.percentage / 100)) / (Decimal(state.percentage) / 100)).formatted(.number)) mg/dl"
+                                )
+                        ).foregroundColor(.secondary).italic()
                     }
                     }
+                }
+
+                Section {
                     HStack {
                     HStack {
                         Text("Duration")
                         Text("Duration")
                         Spacer()
                         Spacer()

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 52
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift