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

show Insulin Percentage on TempTarget in HomeView

Robert 1 год назад
Родитель
Сommit
f1e216e0ad

+ 11 - 0
FreeAPS/Sources/Modules/Home/HomeStateModel+Setup/TempTargetSetup.swift

@@ -100,4 +100,15 @@ extension Home.StateModel {
             debugPrint("\(DebuggingIdentifiers.failed) \(#file) \(#function) Failed to cancel Profile")
         }
     }
+
+    func computeAdjustedPercentage(halfBasalTargetValue: Decimal, tempTargetValue: Decimal) -> Int {
+        let normalTarget: Decimal = 100
+        let deviationFromNormal = halfBasalTargetValue - normalTarget
+
+        let adjustmentFactor = deviationFromNormal + (tempTargetValue - normalTarget)
+        let adjustmentRatio: Decimal = (deviationFromNormal * adjustmentFactor <= 0) ? maxValue : deviationFromNormal /
+            adjustmentFactor
+
+        return Int(Double(min(adjustmentRatio, maxValue) * 100).rounded())
+    }
 }

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

@@ -37,6 +37,10 @@ extension Home {
         var pumpName = ""
         var pumpExpiresAtDate: Date?
         var tempTarget: TempTarget?
+        var highTTraisesSens: Bool = false
+        var lowTTlowersSens: Bool = false
+        var exerciseMode: Bool = false
+        var settingHalfBasalTarget: Decimal = 160
         var setupPump = false
         var errorMessage: String?
         var errorDate: Date?
@@ -352,6 +356,10 @@ extension Home {
             cgmAvailable = fetchGlucoseManager.cgmGlucoseSourceType != CGMType.none
             showCarbsRequiredBadge = settingsManager.settings.showCarbsRequiredBadge
             forecastDisplayType = settingsManager.settings.forecastDisplayType
+            highTTraisesSens = settingsManager.preferences.highTemptargetRaisesSensitivity
+            lowTTlowersSens = settingsManager.preferences.lowTemptargetLowersSensitivity
+            exerciseMode = settingsManager.preferences.exerciseMode
+            settingHalfBasalTarget = settingsManager.preferences.halfBasalExerciseTarget
         }
 
         func addPump(_ type: PumpConfig.PumpType) {

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

@@ -244,8 +244,6 @@ extension Home {
             guard let latestTempTarget = latestTempTarget.first else {
                 return nil
             }
-
-            let name = latestTempTarget.name
             let duration = latestTempTarget.duration
             let addedMinutes = Int(truncating: duration ?? 0)
             let date = latestTempTarget.date ?? Date()
@@ -254,11 +252,21 @@ extension Home {
                 0
             )
             var durationString = ""
+            var percentageString = ""
             var target = (latestTempTarget.target ?? 100) as Decimal
+            var halfBasalTarget: Decimal = 160
+            if latestTempTarget.halfBasalTarget != nil {
+                halfBasalTarget = latestTempTarget.halfBasalTarget as! Decimal
+            } else { halfBasalTarget = state.settingHalfBasalTarget }
+            var showPercentage = false
+            if target > 100, state.exerciseMode || state.highTTraisesSens { showPercentage = true }
+            if target < 100, state.lowTTlowersSens { showPercentage = true }
+            if showPercentage {
+                percentageString =
+                    " \(state.computeAdjustedPercentage(halfBasalTargetValue: halfBasalTarget, tempTargetValue: target))%" }
             target = state.units == .mmolL ? target.asMmolL : target
-            var targetString = target == 0 ? "" : (fetchedTargetFormatter.string(from: target as NSNumber) ?? "") + " " +
-                state.units
-                .rawValue
+            let targetString = target == 0 ? "" : (fetchedTargetFormatter.string(from: target as NSNumber) ?? "") + " " +
+                state.units.rawValue + percentageString
 
             if newDuration >= 1 {
                 durationString =