Explorar o código

fix all 0.1mmol/L steps

Robert hai 1 ano
pai
achega
2747688c98

+ 16 - 11
FreeAPS/Sources/Modules/OverrideConfig/View/AddTempTargetForm.swift

@@ -2,11 +2,16 @@ import Foundation
 import SwiftUI
 
 struct AddTempTargetForm: View {
+    init(state: OverrideConfig.StateModel) {
+        _state = StateObject(wrappedValue: state)
+        _targetStep = State(initialValue: state.units == .mgdL ? 5.0 : 9.0)
+    }
+
     @StateObject var state: OverrideConfig.StateModel
     @Environment(\.presentationMode) var presentationMode
     @Environment(\.colorScheme) var colorScheme
     @Environment(\.dismiss) var dismiss
-    @State private var targetStep: Int = 5
+    @State private var targetStep: Double
     @State private var displayPickerTarget: Bool = false
     @State private var showAlert = false
     @State private var showPresetAlert = false
@@ -122,15 +127,15 @@ struct AddTempTargetForm: View {
                     if displayPickerTarget {
                         HStack {
                             // Radio buttons and text on the left side
-                            let factor = state.units == .mgdL ? 1 : 2
+                            let steps = state.units == .mgdL ? [1.0, 5.0] : [1.8, 9.0]
                             VStack(alignment: .leading) {
                                 // Radio buttons for step iteration
-                                ForEach([1, 5], id: \.self) { step in
+                                ForEach(steps, id: \.self) { step in
                                     RadioButton(
-                                        isSelected: targetStep == step * factor,
+                                        isSelected: targetStep == step,
                                         label: "\(formattedGlucose(glucose: Decimal(step)))"
                                     ) {
-                                        targetStep = step * factor
+                                        targetStep = step
                                         roundTargetToStep()
                                     }
                                     .padding(.top, 10)
@@ -152,7 +157,7 @@ struct AddTempTargetForm: View {
                                     id: \.self
                                 ) { glucose in
                                     Text(formattedGlucose(glucose: Decimal(glucose)))
-                                        .tag(glucose)
+                                        .tag(Int(glucose))
                                 }
                             }
                             .pickerStyle(WheelPickerStyle())
@@ -402,18 +407,18 @@ struct AddTempTargetForm: View {
     private func roundTargetToStep() {
         // Check if tempTargetTarget is not divisible by the selected step
         if let tempTarget = state.tempTargetTarget as? Double,
-           tempTarget.truncatingRemainder(dividingBy: Double(targetStep)) != 0
+           tempTarget.truncatingRemainder(dividingBy: targetStep) != 0
         {
             let roundedValue: Double
 
             if state.tempTargetTarget > 100 {
                 // Round down to the nearest valid step away from 100
-                let stepCount = (Double(state.tempTargetTarget) - 100) / Double(targetStep)
-                roundedValue = 100 + floor(stepCount) * Double(targetStep)
+                let stepCount = (Double(state.tempTargetTarget) - 100) / targetStep
+                roundedValue = 100 + floor(stepCount) * targetStep
             } else {
                 // Round up to the nearest valid step away from 100
-                let stepCount = (100 - Double(state.tempTargetTarget)) / Double(targetStep)
-                roundedValue = 100 - floor(stepCount) * Double(targetStep)
+                let stepCount = (100 - Double(state.tempTargetTarget)) / targetStep
+                roundedValue = 100 - floor(stepCount) * targetStep
             }
 
             // Ensure the value stays higher than 79