ソースを参照

Merge branch 'override-update' into tt+or

Mike Plante 1 年間 前
コミット
f1745ceacd

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

@@ -10,9 +10,7 @@ extension Home {
 
         @State var state = StateModel()
         @State var isStatusPopupPresented = false
-        @State var showCancelAlert = false
-        @State var showCancelConfirmDialog = false
-        @State var isConfirmStopOverrideShown = false
+        @State var isConfirmStopOverridePresented = false
         @State var isConfirmStopTempTargetShown = false
         @State var isMenuPresented = false
         @State var showTreatments = false
@@ -580,7 +578,7 @@ extension Home {
                 .font(.system(size: 24))
                 .confirmationDialog(
                     "Stop the Override \"\(latestOverride.first?.name ?? "")\"?",
-                    isPresented: $isConfirmStopOverrideShown,
+                    isPresented: $isConfirmStopOverridePresented,
                     titleVisibility: .visible
                 ) {
                     Button("Stop", role: .destructive) {
@@ -594,7 +592,7 @@ extension Home {
                 .padding(.trailing, 8)
                 .onTapGesture {
                     if !latestOverride.isEmpty {
-                        isConfirmStopOverrideShown = true
+                        isConfirmStopOverridePresented = true
                     }
                 }
         }

+ 5 - 0
FreeAPS/Sources/Modules/OverrideConfig/OverrideStateModel.swift

@@ -1079,6 +1079,11 @@ func formatHrMin(_ durationInMinutes: Int) -> String {
     }
 }
 
+func convertToMinutes(_ hours: Int, _ minutes: Int) -> Decimal {
+    let totalMinutes = (hours * 60) + minutes
+    return Decimal(max(0, totalMinutes))
+}
+
 struct RadioButton: View {
     var isSelected: Bool
     var label: String

+ 2 - 18
FreeAPS/Sources/Modules/OverrideConfig/View/AddOverrideForm.swift

@@ -3,11 +3,7 @@ import SwiftUI
 
 struct AddOverrideForm: View {
     @Environment(\.presentationMode) var presentationMode
-    @Environment(\.colorScheme) var colorScheme
-    @Environment(\.dismiss) var dismiss
-
     @Bindable var state: OverrideConfig.StateModel
-
     @State private var selectedIsfCrOption: IsfAndOrCrOptions = .isfAndCr
     @State private var selectedDisableSmbOption: DisableSmbOptions = .dontDisable
     @State private var percentageStep: Int = 5
@@ -38,13 +34,6 @@ struct AddOverrideForm: View {
             )
     }
 
-    private var formatter: NumberFormatter {
-        let formatter = NumberFormatter()
-        formatter.numberStyle = .decimal
-        formatter.maximumFractionDigits = 0
-        return formatter
-    }
-
     var body: some View {
         NavigationView {
             List {
@@ -136,7 +125,7 @@ struct AddOverrideForm: View {
                             .pickerStyle(WheelPickerStyle())
                             .frame(maxWidth: .infinity)
                             .onChange(of: durationHours) {
-                                state.overrideDuration = Decimal(totalDurationInMinutes())
+                                state.overrideDuration = convertToMinutes(durationHours, durationMinutes)
                             }
 
                             Picker("Minutes", selection: $durationMinutes) {
@@ -147,7 +136,7 @@ struct AddOverrideForm: View {
                             .pickerStyle(WheelPickerStyle())
                             .frame(maxWidth: .infinity)
                             .onChange(of: durationMinutes) {
-                                state.overrideDuration = Decimal(totalDurationInMinutes())
+                                state.overrideDuration = convertToMinutes(durationHours, durationMinutes)
                             }
                         }
                         .listRowSeparator(.hidden, edges: .top)
@@ -509,11 +498,6 @@ struct AddOverrideForm: View {
         return !toggle
     }
 
-    private func totalDurationInMinutes() -> Int {
-        let durationTotal = (durationHours * 60) + durationMinutes
-        return max(0, durationTotal)
-    }
-
     private func isOverrideInvalid() -> (Bool, String?) {
         let noDurationSpecified = !state.indefinite && state.overrideDuration == 0
         let targetZeroWithOverride = state.shouldOverrideTarget && state.target == 0

+ 0 - 7
FreeAPS/Sources/Modules/OverrideConfig/View/EditOverrideForm.swift

@@ -80,13 +80,6 @@ struct EditOverrideForm: View {
             )
     }
 
-    private var formatter: NumberFormatter {
-        let formatter = NumberFormatter()
-        formatter.numberStyle = .decimal
-        formatter.maximumFractionDigits = 0
-        return formatter
-    }
-
     private var percentageSelection: Binding<Double> {
         Binding<Double>(
             get: {

+ 7 - 5
FreeAPS/Sources/Modules/OverrideConfig/View/OverrideRootView.swift

@@ -19,7 +19,7 @@ extension OverrideConfig {
         @State private var selectedTempTarget: TempTargetStored?
 
         // temp targets
-        @State private var isConfirmDeleteShown = false
+        @State private var isConfirmDeletePresented = false
         @State private var isPromptPresented = false
         @State private var isRemoveAlertPresented = false
         @State private var removeAlert: Alert?
@@ -249,7 +249,7 @@ extension OverrideConfig {
                         .swipeActions(edge: .trailing, allowsFullSwipe: true) {
                             Button(role: .none) {
                                 selectedOverride = preset
-                                isConfirmDeleteShown = true
+                                isConfirmDeletePresented = true
                             } label: {
                                 Label("Delete", systemImage: "trash")
                                     .tint(.red)
@@ -267,7 +267,7 @@ extension OverrideConfig {
                 .onMove(perform: state.reorderOverride)
                 .confirmationDialog(
                     "Delete the Override Preset \"\(selectedOverride?.name ?? "")\"?",
-                    isPresented: $isConfirmDeleteShown,
+                    isPresented: $isConfirmDeletePresented,
                     titleVisibility: .visible
                 ) {
                     if let itemToDelete = selectedOverride {
@@ -554,7 +554,6 @@ extension OverrideConfig {
         }
 
         @ViewBuilder private func overridesView(for preset: OverrideStored) -> some View {
-            let target = (state.units == .mgdL ? preset.target : preset.target?.decimalValue.asMmolL as NSDecimalNumber?) ?? 0
             let duration = (preset.duration ?? 0) as Decimal
             let name = preset.name ?? ""
             let percentage = preset.percentage
@@ -564,7 +563,10 @@ extension OverrideConfig {
                 ? " \(formatTimeRange(start: preset.start?.stringValue, end: preset.end?.stringValue))"
                 : ""
             let smbString = (preset.smbIsOff || preset.smbIsScheduledOff) ? "SMBs Off\(scheduledSMBstring)" : ""
-            let targetString = target != 0 ? "\(target.description) \(state.units.rawValue)" : ""
+            let targetValue = (preset.target == 0 || preset.target == nil) ? "" :
+                (state.units == .mgdL ? preset.target?.description ?? "" : preset.target?.decimalValue.formattedAsMmolL)
+
+            let targetString = (targetValue?.isEmpty ?? true) ? "" : "\(targetValue!) \(state.units.rawValue)"
             let maxMinutesSMB = (preset.smbMinutes as Decimal?) != nil ? (preset.smbMinutes ?? 0) as Decimal : 0
             let maxMinutesUAM = (preset.uamMinutes as Decimal?) != nil ? (preset.uamMinutes ?? 0) as Decimal : 0
             let maxSmbMinsString = (

+ 1 - 1
Model/TrioCoreDataPersistentContainer.xcdatamodeld/TrioCoreDataPersistentContainer.xcdatamodel/contents

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23231" systemVersion="24A335" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23231" systemVersion="24A348" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
     <entity name="BolusStored" representedClassName="BolusStored" syncable="YES">
         <attribute name="amount" optional="YES" attributeType="Decimal" defaultValueString="0"/>
         <attribute name="isExternal" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>