فهرست منبع

Merge pull request #7 from ivalkou/master

Release/0.1.13 (#27)
Jon B Mårtensson 5 سال پیش
والد
کامیت
c25b5402da

+ 1 - 1
FreeAPS/Resources/Config.xcconfig

@@ -1 +1 @@
-BUILD_VERSION = 0.1.12
+BUILD_VERSION = 0.1.13

+ 2 - 1
FreeAPS/Sources/APS/Storage/PumpHistoryStorage.swift

@@ -45,7 +45,8 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
                         carbInput: nil
                     )]
                 case .tempBasal:
-                    guard let dose = event.dose else { return [] }
+                    // get only start of TBR
+                    guard let dose = event.dose, dose.deliveredUnits == nil else { return [] }
                     let rate = Decimal(string: dose.unitsPerHour.description)
                     let minutes = Int((dose.endDate - dose.startDate).timeInterval / 60)
                     return [

+ 1 - 0
FreeAPS/Sources/Logger/IssueReporter/SimpleLogReporter.swift

@@ -36,6 +36,7 @@ final class SimpleLogReporter: IssueReporter {
             if let attributes = try? fileManager.attributesOfItem(atPath: SimpleLogReporter.logFile),
                let creationDate = attributes[.creationDate] as? Date, creationDate < startOfDay
             {
+                try? fileManager.removeItem(atPath: SimpleLogReporter.logFilePrev)
                 try? fileManager.moveItem(atPath: SimpleLogReporter.logFile, toPath: SimpleLogReporter.logFilePrev)
                 createFile(at: startOfDay)
             }

+ 13 - 3
FreeAPS/Sources/Modules/Home/View/Chart/MainChartView.swift

@@ -57,6 +57,7 @@ struct MainChartView: View {
     @State private var carbsPath = Path()
     @State private var glucoseYGange: GlucoseYRange = (0, 0, 0, 0)
     @State private var offset: CGFloat = 0
+    @State private var cachedMaxBasalRate: Decimal?
 
     private let calculationQueue = DispatchQueue(label: "MainChartView.calculationQueue")
 
@@ -455,6 +456,7 @@ extension MainChartView {
 
     private func calculateBasalPoints(fullSize: CGSize) {
         calculationQueue.async {
+            self.cachedMaxBasalRate = nil
             let dayAgoTime = Date().addingTimeInterval(-1.days.timeInterval).timeIntervalSince1970
             let firstTempTime = (tempBasals.first?.timestamp ?? Date()).timeIntervalSince1970
             var lastTimeEnd = firstTempTime
@@ -468,7 +470,7 @@ extension MainChartView {
                 guard chunk.count == 2, chunk[0].type == .tempBasal, chunk[1].type == .tempBasalDuration else { return [] }
                 let timeBegin = chunk[0].timestamp.timeIntervalSince1970
                 let timeEnd = timeBegin + (chunk[1].durationMin ?? 0).minutes.timeInterval
-                let rateCost = Config.basalHeight / CGFloat(maxBasal)
+                let rateCost = Config.basalHeight / CGFloat(maxBasalRate())
                 let x0 = timeToXCoordinate(timeBegin, fullSize: fullSize)
                 let y0 = Config.basalHeight - CGFloat(chunk[0].rate ?? 0) * rateCost
                 let regularPoints = findRegularBasalPoints(timeBegin: lastTimeEnd, timeEnd: timeBegin, fullSize: fullSize)
@@ -516,6 +518,14 @@ extension MainChartView {
         }
     }
 
+    private func maxBasalRate() -> Decimal {
+        if let cached = cachedMaxBasalRate {
+            return cached
+        }
+        cachedMaxBasalRate = tempBasals.compactMap(\.rate).max() ?? maxBasal
+        return cachedMaxBasalRate!
+    }
+
     private func calculateTempTargetsRects(fullSize: CGSize) {
         calculationQueue.async {
             var rects = tempTargets.map { tempTarget -> CGRect in
@@ -587,7 +597,7 @@ extension MainChartView {
                     return nil
                 }
 
-                let rateCost = Config.basalHeight / CGFloat(maxBasal)
+                let rateCost = Config.basalHeight / CGFloat(maxBasalRate())
                 if window[0].time < timeBegin, window[1].time >= timeBegin {
                     let x = timeToXCoordinate(timeBegin, fullSize: fullSize)
                     let y = Config.basalHeight - CGFloat(window[0].rate) * rateCost
@@ -612,7 +622,7 @@ extension MainChartView {
             return CGPoint(x: timeToXCoordinate(Date().timeIntervalSince1970, fullSize: fullSize), y: Config.basalHeight)
         }
         let endBasalTime = lastBasal[0].timestamp.timeIntervalSince1970 + (lastBasal[1].durationMin?.minutes.timeInterval ?? 0)
-        let rateCost = Config.basalHeight / CGFloat(maxBasal)
+        let rateCost = Config.basalHeight / CGFloat(maxBasalRate())
         let x = timeToXCoordinate(endBasalTime, fullSize: fullSize)
         let y = Config.basalHeight - CGFloat(lastBasal[0].rate ?? 0) * rateCost
         return CGPoint(x: x, y: y)