浏览代码

Add IOB and COB to calendar events (#220)

* Add IOB and COB to calendar event
Deniz Cengiz 2 年之前
父节点
当前提交
62c766881c

+ 1 - 0
FreeAPS/Sources/Modules/DataTable/View/DataTableRootView.swift

@@ -115,6 +115,7 @@ extension DataTable {
                     .moveDisabled(true)
                 Text(item.type.name)
                 Text(item.amountText).foregroundColor(.secondary)
+
                 if let duration = item.durationText {
                     Text(duration).foregroundColor(.secondary)
                 }

+ 20 - 1
FreeAPS/Sources/Services/Calendar/CalendarManager.swift

@@ -16,6 +16,7 @@ final class BaseCalendarManager: CalendarManager, Injectable {
     @Injected() private var settingsManager: SettingsManager!
     @Injected() private var broadcaster: Broadcaster!
     @Injected() private var glucoseStorage: GlucoseStorage!
+    @Injected() private var storage: FileStorage!
 
     init(resolver: Resolver) {
         injectServices(resolver)
@@ -74,7 +75,11 @@ final class BaseCalendarManager: CalendarManager, Injectable {
                     .string(from: Double(settingsManager.settings.units == .mmolL ? $0.asMmolL : Decimal($0)) as NSNumber)!
             } ?? "--"
 
-        let title = glucoseText + " " + directionText + " " + deltaText
+        let fetchedSuggestion = storage.retrieve(OpenAPS.Enact.enacted, as: Suggestion.self)
+        let iobText = iobFormatter.string(from: (fetchedSuggestion?.iob ?? 0) as NSNumber) ?? ""
+        let cobText = cobFormatter.string(from: (fetchedSuggestion?.cob ?? 0) as NSNumber) ?? ""
+
+        let title = glucoseText + " " + directionText + " " + deltaText + ", IOB: " + iobText + " COB: " + cobText
 
         event.title = title
         event.notes = "iAPS"
@@ -133,6 +138,20 @@ final class BaseCalendarManager: CalendarManager, Injectable {
         return formatter
     }
 
+    private var iobFormatter: NumberFormatter {
+        let formatter = NumberFormatter()
+        formatter.numberStyle = .decimal
+        formatter.maximumFractionDigits = 1
+        return formatter
+    }
+
+    private var cobFormatter: NumberFormatter {
+        let formatter = NumberFormatter()
+        formatter.numberStyle = .decimal
+        formatter.maximumFractionDigits = 0
+        return formatter
+    }
+
     func setupGlucose() {
         let glucose = glucoseStorage.recent()
         let recentGlucose = glucose.last

+ 1 - 0
FreeAPS/Sources/Services/UserNotifiactions/UserNotificationsManager.swift

@@ -232,6 +232,7 @@ final class BaseUserNotificationsManager: NSObject, UserNotificationsManager, In
             }
         }
     }
+
     private func glucoseText(glucoseValue: Int, delta: Int?, direction: BloodGlucose.Direction?) -> String {
         let units = settingsManager.settings.units
         let glucoseText = glucoseFormatter