Bladeren bron

Merge branch 'trio/settings-refactor' of https://github.com/dnzxy/Open-iAPS into small-fixes

polscm32 aka Marvout 1 jaar geleden
bovenliggende
commit
3da020316d
30 gewijzigde bestanden met toevoegingen van 505 en 303 verwijderingen
  1. 22 9
      BolusStored+CoreDataProperties.swift
  2. 27 14
      CarbEntryStored+CoreDataProperties.swift
  3. 29 15
      Forecast+CoreDataProperties.swift
  4. 21 8
      ForecastValue+CoreDataProperties.swift
  5. 0 8
      FreeAPS.xcodeproj/project.pbxproj
  6. 14 2
      FreeAPS/Sources/Modules/DataTable/View/DataTableRootView.swift
  7. 20 15
      FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift
  8. 16 20
      FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift
  9. 3 9
      FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/NightscoutImportResultView.swift
  10. 1 1
      FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/ReviewInsulinActionView.swift
  11. 0 2
      FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift
  12. 1 3
      FreeAPS/Sources/Modules/Settings/View/Subviews/ServicesView.swift
  13. 4 1
      FreeAPS/Sources/Modules/Settings/View/TidepoolStartView.swift
  14. 13 1
      FreeAPS/Sources/Modules/Stat/View/StatRootView.swift
  15. 3 0
      FreeAPS/Sources/Router/Screen.swift
  16. 24 11
      GlucoseStored+CoreDataProperties.swift
  17. 0 4
      ImportError+CoreDataClass.swift
  18. 0 13
      ImportError+CoreDataProperties.swift
  19. 23 10
      LoopStatRecord+CoreDataProperties.swift
  20. 22 9
      MealPresetStored+CoreDataProperties.swift
  21. 1 5
      Model/TrioCoreDataPersistentContainer.xcdatamodeld/TrioCoreDataPersistentContainer.xcdatamodel/contents
  22. 24 11
      OpenAPS_Battery+CoreDataProperties.swift
  23. 57 43
      OrefDetermination+CoreDataProperties.swift
  24. 25 12
      OverrideRunStored+CoreDataProperties.swift
  25. 40 27
      OverrideStored+CoreDataProperties.swift
  26. 25 12
      PumpEventStored+CoreDataProperties.swift
  27. 19 6
      StatsData+CoreDataProperties.swift
  28. 22 9
      TempBasalStored+CoreDataProperties.swift
  29. 24 11
      TempTargets+CoreDataProperties.swift
  30. 25 12
      TempTargetsSlider+CoreDataProperties.swift

+ 22 - 9
BolusStored+CoreDataProperties.swift

@@ -1,15 +1,28 @@
-import CoreData
+//
+//  BolusStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension BolusStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<BolusStored> {
-        NSFetchRequest<BolusStored>(entityName: "BolusStored")
+extension BolusStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<BolusStored> {
+        return NSFetchRequest<BolusStored>(entityName: "BolusStored")
     }
     }
 
 
-    @NSManaged var amount: NSDecimalNumber?
-    @NSManaged var isExternal: Bool
-    @NSManaged var isSMB: Bool
-    @NSManaged var pumpEvent: PumpEventStored?
+    @NSManaged public var amount: NSDecimalNumber?
+    @NSManaged public var isExternal: Bool
+    @NSManaged public var isSMB: Bool
+    @NSManaged public var pumpEvent: PumpEventStored?
+
 }
 }
 
 
-extension BolusStored: Identifiable {}
+extension BolusStored : Identifiable {
+
+}

+ 27 - 14
CarbEntryStored+CoreDataProperties.swift

@@ -1,20 +1,33 @@
-import CoreData
+//
+//  CarbEntryStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension CarbEntryStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<CarbEntryStored> {
-        NSFetchRequest<CarbEntryStored>(entityName: "CarbEntryStored")
+extension CarbEntryStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<CarbEntryStored> {
+        return NSFetchRequest<CarbEntryStored>(entityName: "CarbEntryStored")
     }
     }
 
 
-    @NSManaged var carbs: Double
-    @NSManaged var date: Date?
-    @NSManaged var fat: Double
-    @NSManaged var fpuID: UUID?
-    @NSManaged var id: UUID?
-    @NSManaged var isFPU: Bool
-    @NSManaged var isUploadedToNS: Bool
-    @NSManaged var note: String?
-    @NSManaged var protein: Double
+    @NSManaged public var carbs: Double
+    @NSManaged public var date: Date?
+    @NSManaged public var fat: Double
+    @NSManaged public var fpuID: UUID?
+    @NSManaged public var id: UUID?
+    @NSManaged public var isFPU: Bool
+    @NSManaged public var isUploadedToNS: Bool
+    @NSManaged public var note: String?
+    @NSManaged public var protein: Double
+
 }
 }
 
 
-extension CarbEntryStored: Identifiable {}
+extension CarbEntryStored : Identifiable {
+
+}

+ 29 - 15
Forecast+CoreDataProperties.swift

@@ -1,32 +1,46 @@
-import CoreData
+//
+//  Forecast+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
+
+extension Forecast {
 
 
-public extension Forecast {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<Forecast> {
-        NSFetchRequest<Forecast>(entityName: "Forecast")
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<Forecast> {
+        return NSFetchRequest<Forecast>(entityName: "Forecast")
     }
     }
 
 
-    @NSManaged var date: Date?
-    @NSManaged var id: UUID?
-    @NSManaged var type: String?
-    @NSManaged var forecastValues: Set<ForecastValue>?
-    @NSManaged var orefDetermination: OrefDetermination?
+    @NSManaged public var date: Date?
+    @NSManaged public var id: UUID?
+    @NSManaged public var type: String?
+    @NSManaged public var forecastValues: NSSet?
+    @NSManaged public var orefDetermination: OrefDetermination?
+
 }
 }
 
 
 // MARK: Generated accessors for forecastValues
 // MARK: Generated accessors for forecastValues
+extension Forecast {
 
 
-public extension Forecast {
     @objc(addForecastValuesObject:)
     @objc(addForecastValuesObject:)
-    @NSManaged func addToForecastValues(_ value: ForecastValue)
+    @NSManaged public func addToForecastValues(_ value: ForecastValue)
 
 
     @objc(removeForecastValuesObject:)
     @objc(removeForecastValuesObject:)
-    @NSManaged func removeFromForecastValues(_ value: ForecastValue)
+    @NSManaged public func removeFromForecastValues(_ value: ForecastValue)
 
 
     @objc(addForecastValues:)
     @objc(addForecastValues:)
-    @NSManaged func addToForecastValues(_ values: NSSet)
+    @NSManaged public func addToForecastValues(_ values: NSSet)
 
 
     @objc(removeForecastValues:)
     @objc(removeForecastValues:)
-    @NSManaged func removeFromForecastValues(_ values: NSSet)
+    @NSManaged public func removeFromForecastValues(_ values: NSSet)
+
 }
 }
 
 
-extension Forecast: Identifiable {}
+extension Forecast : Identifiable {
+
+}

+ 21 - 8
ForecastValue+CoreDataProperties.swift

@@ -1,14 +1,27 @@
-import CoreData
+//
+//  ForecastValue+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension ForecastValue {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<ForecastValue> {
-        NSFetchRequest<ForecastValue>(entityName: "ForecastValue")
+extension ForecastValue {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<ForecastValue> {
+        return NSFetchRequest<ForecastValue>(entityName: "ForecastValue")
     }
     }
 
 
-    @NSManaged var index: Int32
-    @NSManaged var value: Int32
-    @NSManaged var forecast: Forecast?
+    @NSManaged public var index: Int32
+    @NSManaged public var value: Int32
+    @NSManaged public var forecast: Forecast?
+
 }
 }
 
 
-extension ForecastValue: Identifiable {}
+extension ForecastValue : Identifiable {
+
+}

+ 0 - 8
FreeAPS.xcodeproj/project.pbxproj

@@ -464,8 +464,6 @@
 		DD57C4CD2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */; };
 		DD57C4CD2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */; };
 		DD57C4CE2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */; };
 		DD57C4CE2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */; };
 		DD57C4CF2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */; };
 		DD57C4CF2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */; };
-		DD57C4D02C4C7103001A5B28 /* ImportError+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AE2C4C7103001A5B28 /* ImportError+CoreDataClass.swift */; };
-		DD57C4D12C4C7103001A5B28 /* ImportError+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4AF2C4C7103001A5B28 /* ImportError+CoreDataProperties.swift */; };
 		DD57C4D22C4C7103001A5B28 /* StatsData+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */; };
 		DD57C4D22C4C7103001A5B28 /* StatsData+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */; };
 		DD57C4D32C4C7103001A5B28 /* StatsData+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */; };
 		DD57C4D32C4C7103001A5B28 /* StatsData+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */; };
 		DD68889D2C386E17006E3C44 /* NightscoutExercise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD68889C2C386E17006E3C44 /* NightscoutExercise.swift */; };
 		DD68889D2C386E17006E3C44 /* NightscoutExercise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD68889C2C386E17006E3C44 /* NightscoutExercise.swift */; };
@@ -1121,8 +1119,6 @@
 		DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideStored+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideStored+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideRunStored+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideRunStored+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideRunStored+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OverrideRunStored+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
-		DD57C4AE2C4C7103001A5B28 /* ImportError+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ImportError+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; };
-		DD57C4AF2C4C7103001A5B28 /* ImportError+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ImportError+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatsData+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatsData+CoreDataClass.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatsData+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatsData+CoreDataProperties.swift"; sourceTree = SOURCE_ROOT; };
 		DD68889C2C386E17006E3C44 /* NightscoutExercise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutExercise.swift; sourceTree = "<group>"; };
 		DD68889C2C386E17006E3C44 /* NightscoutExercise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutExercise.swift; sourceTree = "<group>"; };
@@ -2685,8 +2681,6 @@
 				DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */,
 				DD57C4AB2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift */,
 				DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */,
 				DD57C4AC2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift */,
 				DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */,
 				DD57C4AD2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift */,
-				DD57C4AE2C4C7103001A5B28 /* ImportError+CoreDataClass.swift */,
-				DD57C4AF2C4C7103001A5B28 /* ImportError+CoreDataProperties.swift */,
 				DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */,
 				DD57C4B02C4C7103001A5B28 /* StatsData+CoreDataClass.swift */,
 				DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */,
 				DD57C4B12C4C7103001A5B28 /* StatsData+CoreDataProperties.swift */,
 			);
 			);
@@ -3317,9 +3311,7 @@
 				DD57C4CD2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift in Sources */,
 				DD57C4CD2C4C7103001A5B28 /* OverrideStored+CoreDataProperties.swift in Sources */,
 				DD57C4CE2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift in Sources */,
 				DD57C4CE2C4C7103001A5B28 /* OverrideRunStored+CoreDataClass.swift in Sources */,
 				DD57C4CF2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift in Sources */,
 				DD57C4CF2C4C7103001A5B28 /* OverrideRunStored+CoreDataProperties.swift in Sources */,
-				DD57C4D02C4C7103001A5B28 /* ImportError+CoreDataClass.swift in Sources */,
 				DD17454E2C55CA4D00211FAC /* UnitsLimitsSettingsDataFlow.swift in Sources */,
 				DD17454E2C55CA4D00211FAC /* UnitsLimitsSettingsDataFlow.swift in Sources */,
-				DD57C4D12C4C7103001A5B28 /* ImportError+CoreDataProperties.swift in Sources */,
 				DD57C4D22C4C7103001A5B28 /* StatsData+CoreDataClass.swift in Sources */,
 				DD57C4D22C4C7103001A5B28 /* StatsData+CoreDataClass.swift in Sources */,
 				DD57C4D32C4C7103001A5B28 /* StatsData+CoreDataProperties.swift in Sources */,
 				DD57C4D32C4C7103001A5B28 /* StatsData+CoreDataProperties.swift in Sources */,
 				DDF847E62C5D66490049BB3B /* AddMealPresetView.swift in Sources */,
 				DDF847E62C5D66490049BB3B /* AddMealPresetView.swift in Sources */,

+ 14 - 2
FreeAPS/Sources/Modules/DataTable/View/DataTableRootView.swift

@@ -143,12 +143,24 @@ extension DataTable {
                 .navigationTitle("History")
                 .navigationTitle("History")
                 .navigationBarTitleDisplayMode(.large)
                 .navigationBarTitleDisplayMode(.large)
                 .toolbar {
                 .toolbar {
-                    ToolbarItem(placement: .topBarTrailing) {
+                    ToolbarItem(placement: .topBarLeading, content: {
+                        Button(
+                            action: { state.showModal(for: .statistics) },
+                            label: {
+                                HStack {
+                                    Text("Statistics")
+                                }
+                            }
+                        )
+                    })
+                }
+                .toolbar {
+                    ToolbarItem(placement: .topBarTrailing, content: {
                         addButton({
                         addButton({
                             showManualGlucose = true
                             showManualGlucose = true
                             state.manualGlucose = 0
                             state.manualGlucose = 0
                         })
                         })
-                    }
+                    })
                 }
                 }
                 .sheet(isPresented: $showManualGlucose) {
                 .sheet(isPresented: $showManualGlucose) {
                     addGlucoseView()
                     addGlucoseView()

+ 20 - 15
FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift

@@ -140,7 +140,7 @@ extension NightscoutConfig {
                     throw NSError(
                     throw NSError(
                         domain: "ImportError",
                         domain: "ImportError",
                         code: 1,
                         code: 1,
-                        userInfo: [NSLocalizedDescriptionKey: "Can't find the default Nightscout Profile."]
+                        userInfo: [NSLocalizedDescriptionKey: "Cannot find the default Nightscout Profile."]
                     )
                     )
                 }
                 }
 
 
@@ -159,7 +159,6 @@ extension NightscoutConfig {
 
 
                 if carbratios.contains(where: { $0.ratio <= 0 }) {
                 if carbratios.contains(where: { $0.ratio <= 0 }) {
                     importStatus = .failed
                     importStatus = .failed
-
                     throw NSError(
                     throw NSError(
                         domain: "ImportError",
                         domain: "ImportError",
                         code: 2,
                         code: 2,
@@ -181,22 +180,20 @@ extension NightscoutConfig {
 
 
                 if pumpName != "Omnipod DASH", basals.contains(where: { $0.rate <= 0 }) {
                 if pumpName != "Omnipod DASH", basals.contains(where: { $0.rate <= 0 }) {
                     importStatus = .failed
                     importStatus = .failed
-
                     throw NSError(
                     throw NSError(
                         domain: "ImportError",
                         domain: "ImportError",
                         code: 3,
                         code: 3,
-                        userInfo: [NSLocalizedDescriptionKey: "Invalid Nightscout Basal Settings. Import aborted."]
+                        userInfo: [NSLocalizedDescriptionKey: "Invalid Nightscout basal rates found. Import aborted."]
                     )
                     )
                 }
                 }
 
 
                 if pumpName == "Omnipod DASH", basals.reduce(0, { $0 + $1.rate }) <= 0 {
                 if pumpName == "Omnipod DASH", basals.reduce(0, { $0 + $1.rate }) <= 0 {
                     importStatus = .failed
                     importStatus = .failed
-
                     throw NSError(
                     throw NSError(
                         domain: "ImportError",
                         domain: "ImportError",
                         code: 4,
                         code: 4,
                         userInfo: [
                         userInfo: [
-                            NSLocalizedDescriptionKey: "Total Basal insulin amount is 0 or lower in Nightscout Profile settings. Import aborted."
+                            NSLocalizedDescriptionKey: "Invalid Nightscout basal rates found. Basal rate total cannot be 0 U/hr. Import aborted."
                         ]
                         ]
                     )
                     )
                 }
                 }
@@ -213,11 +210,10 @@ extension NightscoutConfig {
 
 
                 if sensitivities.contains(where: { $0.sensitivity <= 0 }) {
                 if sensitivities.contains(where: { $0.sensitivity <= 0 }) {
                     importStatus = .failed
                     importStatus = .failed
-
                     throw NSError(
                     throw NSError(
                         domain: "ImportError",
                         domain: "ImportError",
                         code: 5,
                         code: 5,
-                        userInfo: [NSLocalizedDescriptionKey: "Invalid Nightscout Sensitivities Settings. Import aborted."]
+                        userInfo: [NSLocalizedDescriptionKey: "Invalid Nightscout insulin sensitivity profile. Import aborted."]
                     )
                     )
                 }
                 }
 
 
@@ -227,8 +223,6 @@ extension NightscoutConfig {
                     sensitivities: sensitivities
                     sensitivities: sensitivities
                 )
                 )
 
 
-                debug(.nightscout, "FETCHED SENSITIVITIES: \(sensitivitiesProfile)")
-
                 // Targets
                 // Targets
                 let targets = fetchedProfile.target_low.map { target in
                 let targets = fetchedProfile.target_low.map { target in
                     BGTargetEntry(
                     BGTargetEntry(
@@ -241,8 +235,6 @@ extension NightscoutConfig {
 
 
                 let targetsProfile = BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: targets)
                 let targetsProfile = BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: targets)
 
 
-                debug(.nightscout, "FETCHED TARGETS: \(targetsProfile)")
-
                 // Save to storage and pump
                 // Save to storage and pump
                 if let pump = apsManager.pumpManager {
                 if let pump = apsManager.pumpManager {
                     let syncValues = basals.map {
                     let syncValues = basals.map {
@@ -261,11 +253,21 @@ extension NightscoutConfig {
                             )
                             )
                         case .failure:
                         case .failure:
                             self.importErrors.append(
                             self.importErrors.append(
-                                "Settings were imported but the Basals couldn't be saved to pump (communication error)."
+                                "Settings were imported but the basal rates could not be saved to pump (communication error)."
                             )
                             )
                             self.importStatus = .failed
                             self.importStatus = .failed
                         }
                         }
                     }
                     }
+
+                    if importErrors.isNotEmpty, importStatus == .failed {
+                        throw NSError(
+                            domain: "ImportError",
+                            code: 6,
+                            userInfo: [
+                                NSLocalizedDescriptionKey: "Settings were imported but the basal rates could not be saved to pump (communication error)."
+                            ]
+                        )
+                    }
                 } else {
                 } else {
                     storage.save(basals, as: OpenAPS.Settings.basalProfile)
                     storage.save(basals, as: OpenAPS.Settings.basalProfile)
                     finalizeImport(
                     finalizeImport(
@@ -276,8 +278,10 @@ extension NightscoutConfig {
                     )
                     )
                 }
                 }
             } catch {
             } catch {
-                importErrors.append(error.localizedDescription)
-                debug(.service, "Settings import failed with error: \(error.localizedDescription)")
+                DispatchQueue.main.async {
+                    self.importErrors.append(error.localizedDescription)
+                    debug(.service, "Settings import failed with error: \(error.localizedDescription)")
+                }
             }
             }
         }
         }
 
 
@@ -375,5 +379,6 @@ extension NightscoutConfig.StateModel {
         case running
         case running
         case finished
         case finished
         case failed
         case failed
+        case noPumpConnected
     }
     }
 }
 }

+ 16 - 20
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift

@@ -35,20 +35,6 @@ extension NightscoutConfig {
                 )
                 )
         }
         }
 
 
-        @FetchRequest(
-            entity: ImportError.entity(),
-            sortDescriptors: [NSSortDescriptor(key: "date", ascending: false)], predicate: NSPredicate(
-                format: "date > %@", Date().addingTimeInterval(-1.minutes.timeInterval) as NSDate
-            )
-        ) var fetchedErrors: FetchedResults<ImportError>
-
-        private var portFormater: NumberFormatter {
-            let formatter = NumberFormatter()
-            formatter.allowsFloats = false
-            formatter.usesGroupingSeparator = false
-            return formatter
-        }
-
         var body: some View {
         var body: some View {
             ZStack {
             ZStack {
                 Form {
                 Form {
@@ -67,16 +53,26 @@ extension NightscoutConfig {
                                 importAlert = Alert(
                                 importAlert = Alert(
                                     title: Text("Import Therapy Settings?"),
                                     title: Text("Import Therapy Settings?"),
                                     message: Text(
                                     message: Text(
-                                        NSLocalizedString(
-                                            "This will replace some or all of your current therapy settings. Are you sure you want to import profile settings from Nightscout?",
-                                            comment: "Nightscout Settings Import Alert"
-                                        )
+                                        "Are you sure you want to import profile settings from Nightscout?\n\nThis will overwrite the following Trio therapy settings: Basal Rates, Insulin Sensitivities, Carb Ratios, Target Glucose, and Duration of Insulin Action."
                                     ),
                                     ),
                                     primaryButton: .default(
                                     primaryButton: .default(
                                         Text("Yes, Import!"),
                                         Text("Yes, Import!"),
                                         action: {
                                         action: {
                                             Task {
                                             Task {
                                                 await state.importSettings()
                                                 await state.importSettings()
+                                                // Check the import status and errors after the import process finishes
+                                                if state.importStatus == .failed, state.importErrors.isNotEmpty,
+                                                   let errorMessage = state.importErrors.first
+                                                {
+                                                    DispatchQueue.main.async {
+                                                        importAlert = Alert(
+                                                            title: Text("Import Failed"),
+                                                            message: Text(errorMessage.description),
+                                                            dismissButton: .default(Text("OK"))
+                                                        )
+                                                        isImportAlertPresented = true
+                                                    }
+                                                }
                                             }
                                             }
                                         }
                                         }
                                     ),
                                     ),
@@ -102,7 +98,7 @@ extension NightscoutConfig {
                                     action: {
                                     action: {
                                         hintLabel = "Import Settings from Nightscout"
                                         hintLabel = "Import Settings from Nightscout"
                                         selectedVerboseHint =
                                         selectedVerboseHint =
-                                            "Importing settings from Nightscout will overwrite the following Trio therapy settings: \n • DIA (Pump settings) \n • Basal Profile \n • Insulin Sensitivities \n • Carb Ratios \n • Target Glucose"
+                                            "This will overwrite the following Trio therapy settings: \n • Basal Rates \n • Insulin Sensitivities \n • Carb Ratios \n • Target Glucose \n • Duration of Insulin Action"
                                         shouldDisplayHint.toggle()
                                         shouldDisplayHint.toggle()
                                     },
                                     },
                                     label: {
                                     label: {
@@ -176,7 +172,7 @@ extension NightscoutConfig {
             .navigationBarTitle("Nightscout")
             .navigationBarTitle("Nightscout")
             .navigationBarTitleDisplayMode(.automatic)
             .navigationBarTitleDisplayMode(.automatic)
             .alert(isPresented: $isImportAlertPresented) {
             .alert(isPresented: $isImportAlertPresented) {
-                importAlert!
+                importAlert ?? Alert(title: Text("Unknown Error"))
             }
             }
             .scrollContentBackground(.hidden).background(color)
             .scrollContentBackground(.hidden).background(color)
             .onAppear(perform: configureView)
             .onAppear(perform: configureView)

+ 3 - 9
FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/NightscoutImportResultView.swift

@@ -50,8 +50,9 @@ struct NightscoutImportResultView: BaseView {
                     header: Text("Imported Nightscout Data"),
                     header: Text("Imported Nightscout Data"),
                     content: {
                     content: {
                         Text(
                         Text(
-                            "Trio has successfully imported your default Nightscout profile and applied it as therapy settings. This has replaced your previous therapy settings."
-                        )
+                            "Trio has successfully imported your default Nightscout profile and stored it as therapy settings. "
+                        ) +
+                            Text("This has replaced your previous therapy settings.").bold().foregroundColor(.accentColor)
                         Text("Please review the following settings:").bold()
                         Text("Please review the following settings:").bold()
                     }
                     }
                 ).listRowBackground(Color.chart)
                 ).listRowBackground(Color.chart)
@@ -131,13 +132,6 @@ struct NightscoutImportResultView: BaseView {
                     }
                     }
                 }.listRowBackground(allViewsVisited ? Color(.systemBlue) : Color(.systemGray4))
                 }.listRowBackground(allViewsVisited ? Color(.systemBlue) : Color(.systemGray4))
             }
             }
-//            .toolbar(content: {
-//                ToolbarItem(placement: .topBarLeading) {
-//                    Button(action: { state.isImportResultReviewPresented = false }, label: {
-//                        Text("Cancel")
-//                    })
-//                }
-//            })
             .navigationTitle("Review Import")
             .navigationTitle("Review Import")
             .navigationBarTitleDisplayMode(.large)
             .navigationBarTitleDisplayMode(.large)
             .scrollContentBackground(.hidden).background(color)
             .scrollContentBackground(.hidden).background(color)

+ 1 - 1
FreeAPS/Sources/Modules/NightscoutConfig/View/ProfileImport/ReviewInsulinActionView.swift

@@ -65,7 +65,7 @@ struct ReviewInsulinActionView: BaseView {
         }
         }
         .scrollContentBackground(.hidden).background(color)
         .scrollContentBackground(.hidden).background(color)
         .onAppear(perform: configureView)
         .onAppear(perform: configureView)
-        .navigationTitle("DIA")
+        .navigationTitle("Duration of Insulin Action")
         .navigationBarTitleDisplayMode(.automatic)
         .navigationBarTitleDisplayMode(.automatic)
         .onDisappear {
         .onDisappear {
             state.saveReviewedInsulinAction()
             state.saveReviewedInsulinAction()

+ 0 - 2
FreeAPS/Sources/Modules/Settings/View/SettingsRootView.swift

@@ -80,8 +80,6 @@ extension Settings {
                                         }
                                         }
                                     }
                                     }
                                 }
                                 }
-
-                                Text("Statistics").navigationLink(to: .statistics, from: self)
                             }
                             }
                         }
                         }
                     ).listRowBackground(Color.chart)
                     ).listRowBackground(Color.chart)

+ 1 - 3
FreeAPS/Sources/Modules/Settings/View/Subviews/ServicesView.swift

@@ -38,9 +38,7 @@ struct ServicesView: BaseView {
                 header: Text("Connected Services"),
                 header: Text("Connected Services"),
                 content: {
                 content: {
                     Text("Nightscout").navigationLink(to: .nighscoutConfig, from: self)
                     Text("Nightscout").navigationLink(to: .nighscoutConfig, from: self)
-                    NavigationLink(destination: TidepoolStartView(state: state)) {
-                        Text("Tidepool")
-                    }
+                    Text("Tidepool").navigationLink(to: .tidepoolConfig, from: self)
                     if HKHealthStore.isHealthDataAvailable() {
                     if HKHealthStore.isHealthDataAvailable() {
                         Text("Apple Health").navigationLink(to: .healthkit, from: self)
                         Text("Apple Health").navigationLink(to: .healthkit, from: self)
                     }
                     }

+ 4 - 1
FreeAPS/Sources/Modules/Settings/View/TidepoolStartView.swift

@@ -1,7 +1,9 @@
 
 
 import SwiftUI
 import SwiftUI
+import Swinject
 
 
-struct TidepoolStartView: View {
+struct TidepoolStartView: BaseView {
+    let resolver: Resolver
     @ObservedObject var state: Settings.StateModel
     @ObservedObject var state: Settings.StateModel
 
 
     @State private var shouldDisplayHint: Bool = false
     @State private var shouldDisplayHint: Bool = false
@@ -94,5 +96,6 @@ struct TidepoolStartView: View {
         .scrollContentBackground(.hidden).background(color)
         .scrollContentBackground(.hidden).background(color)
         .navigationTitle("Tidepool")
         .navigationTitle("Tidepool")
         .navigationBarTitleDisplayMode(.automatic)
         .navigationBarTitleDisplayMode(.automatic)
+        .onAppear(perform: configureView)
     }
     }
 }
 }

+ 13 - 1
FreeAPS/Sources/Modules/Stat/View/StatRootView.swift

@@ -148,7 +148,19 @@ extension Stat {
             }.background(color)
             }.background(color)
                 .onAppear(perform: configureView)
                 .onAppear(perform: configureView)
                 .navigationBarTitle("Statistics")
                 .navigationBarTitle("Statistics")
-                .navigationBarTitleDisplayMode(.large)
+                .navigationBarTitleDisplayMode(.automatic)
+                .toolbar {
+                    ToolbarItem(placement: .topBarLeading, content: {
+                        Button(
+                            action: { state.hideModal() },
+                            label: {
+                                HStack {
+                                    Text("Close")
+                                }
+                            }
+                        )
+                    })
+                }
         }
         }
     }
     }
 }
 }

+ 3 - 0
FreeAPS/Sources/Router/Screen.swift

@@ -8,6 +8,7 @@ enum Screen: Identifiable, Hashable {
     case configEditor(file: String)
     case configEditor(file: String)
     case nighscoutConfig
     case nighscoutConfig
     case nighscoutConfigDirect
     case nighscoutConfigDirect
+    case tidepoolConfig
     case pumpConfig
     case pumpConfig
     case pumpConfigDirect
     case pumpConfigDirect
     case basalProfileEditor
     case basalProfileEditor
@@ -65,6 +66,8 @@ extension Screen {
             NightscoutConfig.RootView(resolver: resolver, displayClose: false)
             NightscoutConfig.RootView(resolver: resolver, displayClose: false)
         case .nighscoutConfigDirect:
         case .nighscoutConfigDirect:
             NightscoutConfig.RootView(resolver: resolver, displayClose: true)
             NightscoutConfig.RootView(resolver: resolver, displayClose: true)
+        case .tidepoolConfig:
+            TidepoolStartView(resolver: resolver, state: Settings.StateModel())
         case .pumpConfig:
         case .pumpConfig:
             PumpConfig.RootView(resolver: resolver, displayClose: false)
             PumpConfig.RootView(resolver: resolver, displayClose: false)
         case .pumpConfigDirect:
         case .pumpConfigDirect:

+ 24 - 11
GlucoseStored+CoreDataProperties.swift

@@ -1,17 +1,30 @@
-import CoreData
+//
+//  GlucoseStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension GlucoseStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<GlucoseStored> {
-        NSFetchRequest<GlucoseStored>(entityName: "GlucoseStored")
+extension GlucoseStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<GlucoseStored> {
+        return NSFetchRequest<GlucoseStored>(entityName: "GlucoseStored")
     }
     }
 
 
-    @NSManaged var date: Date?
-    @NSManaged var direction: String?
-    @NSManaged var glucose: Int16
-    @NSManaged var id: UUID?
-    @NSManaged var isManual: Bool
-    @NSManaged var isUploadedToNS: Bool
+    @NSManaged public var date: Date?
+    @NSManaged public var direction: String?
+    @NSManaged public var glucose: Int16
+    @NSManaged public var id: UUID?
+    @NSManaged public var isManual: Bool
+    @NSManaged public var isUploadedToNS: Bool
+
 }
 }
 
 
-extension GlucoseStored: Identifiable {}
+extension GlucoseStored : Identifiable {
+
+}

+ 0 - 4
ImportError+CoreDataClass.swift

@@ -1,4 +0,0 @@
-import CoreData
-import Foundation
-
-@objc(ImportError) public class ImportError: NSManagedObject {}

+ 0 - 13
ImportError+CoreDataProperties.swift

@@ -1,13 +0,0 @@
-import CoreData
-import Foundation
-
-public extension ImportError {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<ImportError> {
-        NSFetchRequest<ImportError>(entityName: "ImportError")
-    }
-
-    @NSManaged var date: Date?
-    @NSManaged var error: String?
-}
-
-extension ImportError: Identifiable {}

+ 23 - 10
LoopStatRecord+CoreDataProperties.swift

@@ -1,16 +1,29 @@
-import CoreData
+//
+//  LoopStatRecord+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension LoopStatRecord {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<LoopStatRecord> {
-        NSFetchRequest<LoopStatRecord>(entityName: "LoopStatRecord")
+extension LoopStatRecord {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<LoopStatRecord> {
+        return NSFetchRequest<LoopStatRecord>(entityName: "LoopStatRecord")
     }
     }
 
 
-    @NSManaged var duration: Double
-    @NSManaged var end: Date?
-    @NSManaged var interval: Double
-    @NSManaged var loopStatus: String?
-    @NSManaged var start: Date?
+    @NSManaged public var duration: Double
+    @NSManaged public var end: Date?
+    @NSManaged public var interval: Double
+    @NSManaged public var loopStatus: String?
+    @NSManaged public var start: Date?
+
 }
 }
 
 
-extension LoopStatRecord: Identifiable {}
+extension LoopStatRecord : Identifiable {
+
+}

+ 22 - 9
MealPresetStored+CoreDataProperties.swift

@@ -1,15 +1,28 @@
-import CoreData
+//
+//  MealPresetStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension MealPresetStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<MealPresetStored> {
-        NSFetchRequest<MealPresetStored>(entityName: "MealPresetStored")
+extension MealPresetStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<MealPresetStored> {
+        return NSFetchRequest<MealPresetStored>(entityName: "MealPresetStored")
     }
     }
 
 
-    @NSManaged var carbs: NSDecimalNumber?
-    @NSManaged var dish: String?
-    @NSManaged var fat: NSDecimalNumber?
-    @NSManaged var protein: NSDecimalNumber?
+    @NSManaged public var carbs: NSDecimalNumber?
+    @NSManaged public var dish: String?
+    @NSManaged public var fat: NSDecimalNumber?
+    @NSManaged public var protein: NSDecimalNumber?
+
 }
 }
 
 
-extension MealPresetStored: Identifiable {}
+extension MealPresetStored : Identifiable {
+
+}

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

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22757" systemVersion="23F79" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22757" systemVersion="23G93" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
     <entity name="BolusStored" representedClassName="BolusStored" syncable="YES">
     <entity name="BolusStored" representedClassName="BolusStored" syncable="YES">
         <attribute name="amount" optional="YES" attributeType="Decimal" defaultValueString="0"/>
         <attribute name="amount" optional="YES" attributeType="Decimal" defaultValueString="0"/>
         <attribute name="isExternal" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
         <attribute name="isExternal" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
@@ -55,10 +55,6 @@
             <fetchIndexElement property="isUploadedToNS" type="Binary" order="ascending"/>
             <fetchIndexElement property="isUploadedToNS" type="Binary" order="ascending"/>
         </fetchIndex>
         </fetchIndex>
     </entity>
     </entity>
-    <entity name="ImportError" representedClassName="ImportError" syncable="YES">
-        <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
-        <attribute name="error" optional="YES" attributeType="String"/>
-    </entity>
     <entity name="LoopStatRecord" representedClassName="LoopStatRecord" syncable="YES">
     <entity name="LoopStatRecord" representedClassName="LoopStatRecord" syncable="YES">
         <attribute name="duration" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES"/>
         <attribute name="duration" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES"/>
         <attribute name="end" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
         <attribute name="end" optional="YES" attributeType="Date" usesScalarValueType="NO"/>

+ 24 - 11
OpenAPS_Battery+CoreDataProperties.swift

@@ -1,17 +1,30 @@
-import CoreData
+//
+//  OpenAPS_Battery+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension OpenAPS_Battery {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<OpenAPS_Battery> {
-        NSFetchRequest<OpenAPS_Battery>(entityName: "OpenAPS_Battery")
+extension OpenAPS_Battery {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<OpenAPS_Battery> {
+        return NSFetchRequest<OpenAPS_Battery>(entityName: "OpenAPS_Battery")
     }
     }
 
 
-    @NSManaged var date: Date?
-    @NSManaged var display: Bool
-    @NSManaged var id: UUID?
-    @NSManaged var percent: Int16
-    @NSManaged var status: String?
-    @NSManaged var voltage: NSDecimalNumber?
+    @NSManaged public var date: Date?
+    @NSManaged public var display: Bool
+    @NSManaged public var id: UUID?
+    @NSManaged public var percent: Int16
+    @NSManaged public var status: String?
+    @NSManaged public var voltage: NSDecimalNumber?
+
 }
 }
 
 
-extension OpenAPS_Battery: Identifiable {}
+extension OpenAPS_Battery : Identifiable {
+
+}

+ 57 - 43
OrefDetermination+CoreDataProperties.swift

@@ -1,60 +1,74 @@
-import CoreData
+//
+//  OrefDetermination+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
+
+extension OrefDetermination {
 
 
-public extension OrefDetermination {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<OrefDetermination> {
-        NSFetchRequest<OrefDetermination>(entityName: "OrefDetermination")
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<OrefDetermination> {
+        return NSFetchRequest<OrefDetermination>(entityName: "OrefDetermination")
     }
     }
 
 
-    @NSManaged var bolus: NSDecimalNumber?
-    @NSManaged var carbRatio: NSDecimalNumber?
-    @NSManaged var carbsRequired: Int16
-    @NSManaged var cob: Int16
-    @NSManaged var currentTarget: NSDecimalNumber?
-    @NSManaged var deliverAt: Date?
-    @NSManaged var duration: NSDecimalNumber?
-    @NSManaged var enacted: Bool
-    @NSManaged var eventualBG: NSDecimalNumber?
-    @NSManaged var expectedDelta: NSDecimalNumber?
-    @NSManaged var glucose: NSDecimalNumber?
-    @NSManaged var id: UUID?
-    @NSManaged var insulinForManualBolus: NSDecimalNumber?
-    @NSManaged var insulinReq: NSDecimalNumber?
-    @NSManaged var insulinSensitivity: NSDecimalNumber?
-    @NSManaged var iob: NSDecimalNumber?
-    @NSManaged var isUploadedToNS: Bool
-    @NSManaged var manualBolusErrorString: NSDecimalNumber?
-    @NSManaged var minDelta: NSDecimalNumber?
-    @NSManaged var rate: NSDecimalNumber?
-    @NSManaged var reason: String?
-    @NSManaged var received: Bool
-    @NSManaged var reservoir: NSDecimalNumber?
-    @NSManaged var scheduledBasal: NSDecimalNumber?
-    @NSManaged var sensitivityRatio: NSDecimalNumber?
-    @NSManaged var smbToDeliver: NSDecimalNumber?
-    @NSManaged var temp: String?
-    @NSManaged var tempBasal: NSDecimalNumber?
-    @NSManaged var threshold: NSDecimalNumber?
-    @NSManaged var timestamp: Date?
-    @NSManaged var timestampEnacted: Date?
-    @NSManaged var totalDailyDose: NSDecimalNumber?
-    @NSManaged var forecasts: NSSet?
+    @NSManaged public var bolus: NSDecimalNumber?
+    @NSManaged public var carbRatio: NSDecimalNumber?
+    @NSManaged public var carbsRequired: Int16
+    @NSManaged public var cob: Int16
+    @NSManaged public var currentTarget: NSDecimalNumber?
+    @NSManaged public var deliverAt: Date?
+    @NSManaged public var duration: NSDecimalNumber?
+    @NSManaged public var enacted: Bool
+    @NSManaged public var eventualBG: NSDecimalNumber?
+    @NSManaged public var expectedDelta: NSDecimalNumber?
+    @NSManaged public var glucose: NSDecimalNumber?
+    @NSManaged public var id: UUID?
+    @NSManaged public var insulinForManualBolus: NSDecimalNumber?
+    @NSManaged public var insulinReq: NSDecimalNumber?
+    @NSManaged public var insulinSensitivity: NSDecimalNumber?
+    @NSManaged public var iob: NSDecimalNumber?
+    @NSManaged public var isUploadedToNS: Bool
+    @NSManaged public var manualBolusErrorString: NSDecimalNumber?
+    @NSManaged public var minDelta: NSDecimalNumber?
+    @NSManaged public var rate: NSDecimalNumber?
+    @NSManaged public var reason: String?
+    @NSManaged public var received: Bool
+    @NSManaged public var reservoir: NSDecimalNumber?
+    @NSManaged public var scheduledBasal: NSDecimalNumber?
+    @NSManaged public var sensitivityRatio: NSDecimalNumber?
+    @NSManaged public var smbToDeliver: NSDecimalNumber?
+    @NSManaged public var temp: String?
+    @NSManaged public var tempBasal: NSDecimalNumber?
+    @NSManaged public var threshold: NSDecimalNumber?
+    @NSManaged public var timestamp: Date?
+    @NSManaged public var timestampEnacted: Date?
+    @NSManaged public var totalDailyDose: NSDecimalNumber?
+    @NSManaged public var forecasts: NSSet?
+
 }
 }
 
 
 // MARK: Generated accessors for forecasts
 // MARK: Generated accessors for forecasts
+extension OrefDetermination {
 
 
-public extension OrefDetermination {
     @objc(addForecastsObject:)
     @objc(addForecastsObject:)
-    @NSManaged func addToForecasts(_ value: Forecast)
+    @NSManaged public func addToForecasts(_ value: Forecast)
 
 
     @objc(removeForecastsObject:)
     @objc(removeForecastsObject:)
-    @NSManaged func removeFromForecasts(_ value: Forecast)
+    @NSManaged public func removeFromForecasts(_ value: Forecast)
 
 
     @objc(addForecasts:)
     @objc(addForecasts:)
-    @NSManaged func addToForecasts(_ values: NSSet)
+    @NSManaged public func addToForecasts(_ values: NSSet)
 
 
     @objc(removeForecasts:)
     @objc(removeForecasts:)
-    @NSManaged func removeFromForecasts(_ values: NSSet)
+    @NSManaged public func removeFromForecasts(_ values: NSSet)
+
 }
 }
 
 
-extension OrefDetermination: Identifiable {}
+extension OrefDetermination : Identifiable {
+
+}

+ 25 - 12
OverrideRunStored+CoreDataProperties.swift

@@ -1,18 +1,31 @@
-import CoreData
+//
+//  OverrideRunStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension OverrideRunStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<OverrideRunStored> {
-        NSFetchRequest<OverrideRunStored>(entityName: "OverrideRunStored")
+extension OverrideRunStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<OverrideRunStored> {
+        return NSFetchRequest<OverrideRunStored>(entityName: "OverrideRunStored")
     }
     }
 
 
-    @NSManaged var endDate: Date?
-    @NSManaged var id: UUID?
-    @NSManaged var isUploadedToNS: Bool
-    @NSManaged var name: String?
-    @NSManaged var startDate: Date?
-    @NSManaged var target: NSDecimalNumber?
-    @NSManaged var override: OverrideStored?
+    @NSManaged public var endDate: Date?
+    @NSManaged public var id: UUID?
+    @NSManaged public var isUploadedToNS: Bool
+    @NSManaged public var name: String?
+    @NSManaged public var startDate: Date?
+    @NSManaged public var target: NSDecimalNumber?
+    @NSManaged public var override: OverrideStored?
+
 }
 }
 
 
-extension OverrideRunStored: Identifiable {}
+extension OverrideRunStored : Identifiable {
+
+}

+ 40 - 27
OverrideStored+CoreDataProperties.swift

@@ -1,33 +1,46 @@
-import CoreData
+//
+//  OverrideStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension OverrideStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<OverrideStored> {
-        NSFetchRequest<OverrideStored>(entityName: "OverrideStored")
+extension OverrideStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<OverrideStored> {
+        return NSFetchRequest<OverrideStored>(entityName: "OverrideStored")
     }
     }
 
 
-    @NSManaged var advancedSettings: Bool
-    @NSManaged var cr: Bool
-    @NSManaged var date: Date?
-    @NSManaged var duration: NSDecimalNumber?
-    @NSManaged var enabled: Bool
-    @NSManaged var end: NSDecimalNumber?
-    @NSManaged var id: String?
-    @NSManaged var indefinite: Bool
-    @NSManaged var isf: Bool
-    @NSManaged var isfAndCr: Bool
-    @NSManaged var isPreset: Bool
-    @NSManaged var isUploadedToNS: Bool
-    @NSManaged var name: String?
-    @NSManaged var orderPosition: Int16
-    @NSManaged var percentage: Double
-    @NSManaged var smbIsAlwaysOff: Bool
-    @NSManaged var smbIsOff: Bool
-    @NSManaged var smbMinutes: NSDecimalNumber?
-    @NSManaged var start: NSDecimalNumber?
-    @NSManaged var target: NSDecimalNumber?
-    @NSManaged var uamMinutes: NSDecimalNumber?
-    @NSManaged var overrideRun: OverrideRunStored?
+    @NSManaged public var advancedSettings: Bool
+    @NSManaged public var cr: Bool
+    @NSManaged public var date: Date?
+    @NSManaged public var duration: NSDecimalNumber?
+    @NSManaged public var enabled: Bool
+    @NSManaged public var end: NSDecimalNumber?
+    @NSManaged public var id: String?
+    @NSManaged public var indefinite: Bool
+    @NSManaged public var isf: Bool
+    @NSManaged public var isfAndCr: Bool
+    @NSManaged public var isPreset: Bool
+    @NSManaged public var isUploadedToNS: Bool
+    @NSManaged public var name: String?
+    @NSManaged public var orderPosition: Int16
+    @NSManaged public var percentage: Double
+    @NSManaged public var smbIsAlwaysOff: Bool
+    @NSManaged public var smbIsOff: Bool
+    @NSManaged public var smbMinutes: NSDecimalNumber?
+    @NSManaged public var start: NSDecimalNumber?
+    @NSManaged public var target: NSDecimalNumber?
+    @NSManaged public var uamMinutes: NSDecimalNumber?
+    @NSManaged public var overrideRun: OverrideRunStored?
+
 }
 }
 
 
-extension OverrideStored: Identifiable {}
+extension OverrideStored : Identifiable {
+
+}

+ 25 - 12
PumpEventStored+CoreDataProperties.swift

@@ -1,18 +1,31 @@
-import CoreData
+//
+//  PumpEventStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension PumpEventStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<PumpEventStored> {
-        NSFetchRequest<PumpEventStored>(entityName: "PumpEventStored")
+extension PumpEventStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<PumpEventStored> {
+        return NSFetchRequest<PumpEventStored>(entityName: "PumpEventStored")
     }
     }
 
 
-    @NSManaged var id: String?
-    @NSManaged var isUploadedToNS: Bool
-    @NSManaged var note: String?
-    @NSManaged var timestamp: Date?
-    @NSManaged var type: String?
-    @NSManaged var bolus: BolusStored?
-    @NSManaged var tempBasal: TempBasalStored?
+    @NSManaged public var id: String?
+    @NSManaged public var isUploadedToNS: Bool
+    @NSManaged public var note: String?
+    @NSManaged public var timestamp: Date?
+    @NSManaged public var type: String?
+    @NSManaged public var bolus: BolusStored?
+    @NSManaged public var tempBasal: TempBasalStored?
+
 }
 }
 
 
-extension PumpEventStored: Identifiable {}
+extension PumpEventStored : Identifiable {
+
+}

+ 19 - 6
StatsData+CoreDataProperties.swift

@@ -1,12 +1,25 @@
-import CoreData
+//
+//  StatsData+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension StatsData {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<StatsData> {
-        NSFetchRequest<StatsData>(entityName: "StatsData")
+extension StatsData {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<StatsData> {
+        return NSFetchRequest<StatsData>(entityName: "StatsData")
     }
     }
 
 
-    @NSManaged var lastrun: Date?
+    @NSManaged public var lastrun: Date?
+
 }
 }
 
 
-extension StatsData: Identifiable {}
+extension StatsData : Identifiable {
+
+}

+ 22 - 9
TempBasalStored+CoreDataProperties.swift

@@ -1,15 +1,28 @@
-import CoreData
+//
+//  TempBasalStored+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension TempBasalStored {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<TempBasalStored> {
-        NSFetchRequest<TempBasalStored>(entityName: "TempBasalStored")
+extension TempBasalStored {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<TempBasalStored> {
+        return NSFetchRequest<TempBasalStored>(entityName: "TempBasalStored")
     }
     }
 
 
-    @NSManaged var duration: Int16
-    @NSManaged var rate: NSDecimalNumber?
-    @NSManaged var tempType: String?
-    @NSManaged var pumpEvent: PumpEventStored?
+    @NSManaged public var duration: Int16
+    @NSManaged public var rate: NSDecimalNumber?
+    @NSManaged public var tempType: String?
+    @NSManaged public var pumpEvent: PumpEventStored?
+
 }
 }
 
 
-extension TempBasalStored: Identifiable {}
+extension TempBasalStored : Identifiable {
+
+}

+ 24 - 11
TempTargets+CoreDataProperties.swift

@@ -1,17 +1,30 @@
-import CoreData
+//
+//  TempTargets+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension TempTargets {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<TempTargets> {
-        NSFetchRequest<TempTargets>(entityName: "TempTargets")
+extension TempTargets {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<TempTargets> {
+        return NSFetchRequest<TempTargets>(entityName: "TempTargets")
     }
     }
 
 
-    @NSManaged var active: Bool
-    @NSManaged var date: Date?
-    @NSManaged var duration: NSDecimalNumber?
-    @NSManaged var hbt: Double
-    @NSManaged var id: String?
-    @NSManaged var startDate: Date?
+    @NSManaged public var active: Bool
+    @NSManaged public var date: Date?
+    @NSManaged public var duration: NSDecimalNumber?
+    @NSManaged public var hbt: Double
+    @NSManaged public var id: String?
+    @NSManaged public var startDate: Date?
+
 }
 }
 
 
-extension TempTargets: Identifiable {}
+extension TempTargets : Identifiable {
+
+}

+ 25 - 12
TempTargetsSlider+CoreDataProperties.swift

@@ -1,18 +1,31 @@
-import CoreData
+//
+//  TempTargetsSlider+CoreDataProperties.swift
+//  FreeAPS
+//
+//  Created by Cengiz Deniz on 08.09.24.
+//
+//
+
 import Foundation
 import Foundation
+import CoreData
+
 
 
-public extension TempTargetsSlider {
-    @nonobjc class func fetchRequest() -> NSFetchRequest<TempTargetsSlider> {
-        NSFetchRequest<TempTargetsSlider>(entityName: "TempTargetsSlider")
+extension TempTargetsSlider {
+
+    @nonobjc public class func fetchRequest() -> NSFetchRequest<TempTargetsSlider> {
+        return NSFetchRequest<TempTargetsSlider>(entityName: "TempTargetsSlider")
     }
     }
 
 
-    @NSManaged var date: Date?
-    @NSManaged var defaultHBT: Double
-    @NSManaged var duration: NSDecimalNumber?
-    @NSManaged var enabled: Bool
-    @NSManaged var hbt: Double
-    @NSManaged var id: String?
-    @NSManaged var isPreset: Bool
+    @NSManaged public var date: Date?
+    @NSManaged public var defaultHBT: Double
+    @NSManaged public var duration: NSDecimalNumber?
+    @NSManaged public var enabled: Bool
+    @NSManaged public var hbt: Double
+    @NSManaged public var id: String?
+    @NSManaged public var isPreset: Bool
+
 }
 }
 
 
-extension TempTargetsSlider: Identifiable {}
+extension TempTargetsSlider : Identifiable {
+
+}