Explorar el Código

Fix picker duplicates for therapy settings; show correct mmol/L values for AT + dynISF

Deniz Cengiz hace 1 año
padre
commit
1f02dee466

+ 8 - 7
FreeAPS/Sources/Modules/ISFEditor/ISFEditorStateModel.swift

@@ -18,7 +18,13 @@ extension ISFEditor {
         let timeValues = stride(from: 0.0, to: 1.days.timeInterval, by: 30.minutes.timeInterval).map { $0 }
 
         var rateValues: [Decimal] {
-            stride(from: 9, to: 540.01, by: 1.0).map { Decimal($0) }
+            var values = stride(from: 9, to: 540.01, by: 1.0).map { Decimal($0) }
+
+            if units == .mmolL {
+                values = values.filter { Int(truncating: $0 as NSNumber) % 2 == 0 }
+            }
+
+            return values
         }
 
         var canAdd: Bool {
@@ -48,12 +54,7 @@ extension ISFEditor {
             autotune = provider.autotune
 
             if let newISF = provider.autosense.newisf {
-                switch units {
-                case .mgdL:
-                    autosensISF = newISF
-                case .mmolL:
-                    autosensISF = newISF * GlucoseUnits.exchangeRate
-                }
+                autosensISF = newISF
             }
 
             autosensRatio = provider.autosense.ratio

+ 22 - 9
FreeAPS/Sources/Modules/ISFEditor/View/ISFEditorRootView.swift

@@ -80,15 +80,28 @@ extension ISFEditor {
                         HStack {
                             Text("Calculated Sensitivity")
                             Spacer()
-                            Text(
-                                rateFormatter
-                                    .string(from: (
-                                        (
-                                            !state.settingsManager.preferences
-                                                .useNewFormula ? newISF as NSDecimalNumber : dynamicISF
-                                        ) ?? 0
-                                    ) as NSNumber) ?? "0"
-                            )
+                            if state.units == .mgdL {
+                                Text(
+                                    rateFormatter
+                                        .string(from: (
+                                            (
+                                                !state.settingsManager.preferences
+                                                    .useNewFormula ? newISF as NSDecimalNumber : dynamicISF
+                                            ) ?? 0
+                                        ) as NSNumber) ?? "0"
+                                )
+                            } else {
+                                Text(
+                                    rateFormatter
+                                        .string(from: (
+                                            (
+                                                !state.settingsManager.preferences
+                                                    .useNewFormula ? newISF.asMmolL as NSDecimalNumber as Decimal : dynamicISF?
+                                                    .decimalValue.asMmolL
+                                            ) ?? 0
+                                        ) as NSNumber) ?? "0"
+                                )
+                            }
                             Text(state.units.rawValue + "/U").foregroundColor(.secondary)
                         }
                     }.listRowBackground(Color.chart)

+ 7 - 1
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorStateModel.swift

@@ -9,7 +9,13 @@ extension TargetsEditor {
         let timeValues = stride(from: 0.0, to: 1.days.timeInterval, by: 30.minutes.timeInterval).map { $0 }
 
         var rateValues: [Decimal] {
-            stride(from: 72, to: 180.01, by: 1.0).map { $0 }
+            var values = stride(from: 72.0, to: 180.01, by: 1.0).map { Decimal($0) }
+
+            if units == .mmolL {
+                values = values.filter { Int(truncating: $0 as NSNumber) % 2 == 0 }
+            }
+
+            return values
         }
 
         var canAdd: Bool {