Procházet zdrojové kódy

Add a toggle to disable SMBs to the override settings. (#45)

Jon B Mårtensson před 3 roky
rodič
revize
f20b63fc7e

+ 1 - 0
Core_Data.xcdatamodeld/Core_Data.xcdatamodel/contents

@@ -52,6 +52,7 @@
         <attribute name="enabled" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
         <attribute name="indefinite" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
         <attribute name="percentage" optional="YES" attributeType="Double" defaultValueString="100" usesScalarValueType="YES"/>
+        <attribute name="smbIsOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
         <attribute name="target" optional="YES" attributeType="Decimal" defaultValueString="100"/>
     </entity>
     <entity name="Presets" representedClassName="Presets" syncable="YES" codeGenerationType="class">

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
FreeAPS/Resources/javascript/bundle/determine-basal.js


+ 1 - 1
FreeAPS/Sources/APS/APSManager.swift

@@ -749,7 +749,7 @@ final class BaseAPSManager: APSManager, Injectable {
 
                 let units = self.settingsManager.settings.units
                 let preferences = settingsManager.preferences
-                
+
                 var carbs = [Carbohydrates]()
                 var carbTotal: Decimal = 0
                 let requestCarbs = Carbohydrates.fetchRequest() as NSFetchRequest<Carbohydrates>

+ 8 - 2
FreeAPS/Sources/APS/OpenAPS/OpenAPS.swift

@@ -169,6 +169,7 @@ final class OpenAPS {
             var useOverride = overrideArray.first?.enabled ?? false
             var overridePercentage = Decimal(overrideArray.first?.percentage ?? 100)
             var unlimited = overrideArray.first?.indefinite ?? true
+            var disableSMBs = overrideArray.first?.smbIsOff ?? false
 
             let currentTDD = (uniqueEvents.last?.tdd ?? 0) as Decimal
 
@@ -213,6 +214,7 @@ final class OpenAPS {
                     saveToCoreData.indefinite = true
                     saveToCoreData.percentage = Double(overridePercentage)
                     saveToCoreData.target = overrideTarget as NSDecimalNumber
+                    saveToCoreData.smbIsOff = disableSMBs
                     try? self.coredataContext.save()
                 } else {
                     newDuration = Decimal(Date().distance(to: date.addingTimeInterval(addedMinutes.minutes.timeInterval)).minutes)
@@ -223,6 +225,7 @@ final class OpenAPS {
                     saveToCoreData.indefinite = false
                     saveToCoreData.percentage = Double(overridePercentage)
                     saveToCoreData.target = overrideTarget as NSDecimalNumber
+                    saveToCoreData.smbIsOff = disableSMBs
                     try? self.coredataContext.save()
                 }
             }
@@ -238,6 +241,7 @@ final class OpenAPS {
                 overridePercentage = 100
                 duration = 0
                 overrideTarget = 0
+                disableSMBs = false
             }
 
             if temptargetActive /* || isPercentageEnabled */ {
@@ -275,7 +279,8 @@ final class OpenAPS {
                     duration: duration,
                     unlimited: unlimited,
                     hbt: hbt_,
-                    overrideTarget: overrideTarget
+                    overrideTarget: overrideTarget,
+                    smbIsOff: disableSMBs
                 )
                 storage.save(averages, as: OpenAPS.Monitor.oref2_variables)
                 print("Test time for oref2_variables: \(-now.timeIntervalSinceNow) seconds")
@@ -294,7 +299,8 @@ final class OpenAPS {
                     duration: duration,
                     unlimited: unlimited,
                     hbt: hbt_,
-                    overrideTarget: overrideTarget
+                    overrideTarget: overrideTarget,
+                    smbIsOff: disableSMBs
                 )
                 storage.save(averages, as: OpenAPS.Monitor.oref2_variables)
                 return self.loadFileFromStorage(name: Monitor.oref2_variables)

+ 1 - 1
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -204,7 +204,7 @@ extension FreeAPSSettings: Decodable {
         if let rulerMarks = try? container.decode(Bool.self, forKey: .rulerMarks) {
             settings.rulerMarks = rulerMarks
         }
-        
+
         if let overrideHbA1cUnit = try? container.decode(Bool.self, forKey: .overrideHbA1cUnit) {
             settings.overrideHbA1cUnit = overrideHbA1cUnit
         }

+ 5 - 1
FreeAPS/Sources/Models/Oref2_variables.swift

@@ -13,6 +13,7 @@ struct Oref2_variables: JSON, Equatable {
     var unlimited: Bool
     var hbt: Decimal
     var overrideTarget: Decimal
+    var smbIsOff: Bool
 
     init(
         average_total_data: Decimal,
@@ -26,7 +27,8 @@ struct Oref2_variables: JSON, Equatable {
         duration: Decimal,
         unlimited: Bool,
         hbt: Decimal,
-        overrideTarget: Decimal
+        overrideTarget: Decimal,
+        smbIsOff: Bool
     ) {
         self.average_total_data = average_total_data
         self.weightedAverage = weightedAverage
@@ -40,6 +42,7 @@ struct Oref2_variables: JSON, Equatable {
         self.unlimited = unlimited
         self.hbt = hbt
         self.overrideTarget = overrideTarget
+        self.smbIsOff = smbIsOff
     }
 }
 
@@ -57,5 +60,6 @@ extension Oref2_variables {
         case unlimited
         case hbt
         case overrideTarget
+        case smbIsOff
     }
 }

+ 0 - 1
FreeAPS/Sources/Modules/AddCarbs/View/AddCarbsRootView.swift

@@ -194,7 +194,6 @@ extension AddCarbs {
 
                         state.removePresetFromNewMeal()
                         if state.carbs == 0, state.fat == 0, state.protein == 0 { state.summation = [] }
-
                     }
                     label: { Text("[ -1 ]") }
                         .disabled(

+ 15 - 5
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -237,19 +237,29 @@ extension Home {
             percentString = percentString == "100 %" ? "" : percentString
             var durationString = indefinite ?
                 "" : ((tirFormatter.string(from: (fetchedPercent.first?.duration ?? 0) as NSNumber) ?? "") + " min")
+            let smbToggleString = (fetchedPercent.first?.smbIsOff ?? false) ? " \u{20e0}" : ""
 
             var comma1 = ", "
             var comma2 = comma1
-            if targetString == "" { comma1 = "" }
+            var comma3 = comma1
+            if targetString == "" { comma2 = "" }
             if percentString == "" { comma1 = "" }
-            if indefinite { comma2 = "" }
+            if indefinite, smbToggleString == "" { comma2 = "" }
             if percentString == "", targetString == "" {
                 comma1 = ""
                 comma2 = ""
+            }
+            if percentString == "", targetString == "", smbToggleString == "" {
                 durationString = ""
+                comma3 = ""
             }
-
-            return percentString + comma1 + targetString + comma2 + durationString
+            if durationString == "" {
+                comma3 = ""
+            }
+            if smbToggleString == "" {
+                comma3 = ""
+            }
+            return percentString + comma1 + targetString + comma2 + durationString + comma3 + smbToggleString
         }
 
         var infoPanel: some View {
@@ -272,7 +282,7 @@ extension Home {
                 }
 
                 Spacer()
-                
+
                 if let overrideString = overrideString {
                     Text(overrideString)
                         .font(.system(size: 12))

+ 4 - 0
FreeAPS/Sources/Modules/OverrideProfilesConfig/OverrideProfilesStateModel.swift

@@ -9,6 +9,7 @@ extension OverrideProfilesConfig {
         @Published var duration: Decimal = 0
         @Published var target: Decimal = 0
         @Published var override_target: Bool = false
+        @Published var smbIsOff: Bool = false
 
         var units: GlucoseUnits = .mmolL
 
@@ -25,6 +26,7 @@ extension OverrideProfilesConfig {
                 saveOverride.indefinite = self._indefinite
                 saveOverride.percentage = self.percentage
                 saveOverride.enabled = self.isEnabled
+                saveOverride.smbIsOff = self.smbIsOff
                 saveOverride.date = Date()
                 if override_target {
                     if units == .mmolL {
@@ -48,6 +50,7 @@ extension OverrideProfilesConfig {
                 percentage = overrideArray.first?.percentage ?? 100
                 _indefinite = overrideArray.first?.indefinite ?? true
                 duration = (overrideArray.first?.duration ?? 0) as Decimal
+                smbIsOff = overrideArray.first?.smbIsOff ?? false
                 let overrideTarget = (overrideArray.first?.target ?? 0) as Decimal
 
                 var newDuration = Double(duration)
@@ -73,6 +76,7 @@ extension OverrideProfilesConfig {
                     duration = 0
                     target = 0
                     override_target = false
+                    smbIsOff = false
                 }
             }
         }

+ 12 - 4
FreeAPS/Sources/Modules/OverrideProfilesConfig/View/OverrideProfilesRootView.swift

@@ -98,11 +98,15 @@ extension OverrideProfilesConfig {
                                 Text(state.units.rawValue).foregroundColor(.secondary)
                             }
                         }
+                        HStack {
+                            Toggle(isOn: $state.smbIsOff) {
+                                Text("Disable SMBs")
+                            }
+                        }
 
                         Button("Save") {
                             showAlert.toggle()
-
-                            alertSring = "Selected Override:\n\n\(state.percentage.formatted(.number)) %, " +
+                            alertSring = "\(state.percentage.formatted(.number)) %, " +
                                 (
                                     state.duration > 0 || !state
                                         ._indefinite ?
@@ -118,6 +122,7 @@ extension OverrideProfilesConfig {
                                     (state.target == 0 || !state.override_target) ? "" :
                                         (" Target: " + state.target.formatted() + " " + state.units.rawValue + ".")
                                 )
+                                + (state.smbIsOff ? " SMBs are disabled." : "")
                                 +
                                 "\n\n"
                                 +
@@ -125,7 +130,7 @@ extension OverrideProfilesConfig {
                         }
                         .disabled(
                             !state
-                                .isEnabled || (state.percentage == 100 && !state.override_target) ||
+                                .isEnabled || (state.percentage == 100 && !state.override_target && !state.smbIsOff) ||
                                 (!state._indefinite && state.duration == 0 || (state.override_target && state.target == 0))
                         )
                         .accentColor(.orange)
@@ -134,7 +139,7 @@ extension OverrideProfilesConfig {
                         .frame(maxWidth: .infinity, alignment: .center)
                         .controlSize(.mini)
                         .alert(
-                            alertSring,
+                            "Save Override",
                             isPresented: $showAlert,
                             actions: {
                                 Button("Cancel", role: .cancel) {}
@@ -147,6 +152,9 @@ extension OverrideProfilesConfig {
                                     state.saveSettings()
                                     dismiss()
                                 }
+                            },
+                            message: {
+                                Text(alertSring)
                             }
                         )
                     }