@@ -13,6 +13,27 @@ class ChartManager: ObservableObject {
1313 let persistenceController = PersistenceController . shared
1414 let bleManager = BLEManager . shared
1515
16+ private let predicateString = " deviceId == %@ AND timestamp >= %@ "
17+ private let calendar = Calendar . current
18+
19+ var weekPredicate : NSPredicate {
20+ let deviceId = bleManager. pairedDeviceID ?? " "
21+ // Get the days of the current week, not just -7 days from now
22+ let startOfWeek = calendar. date ( from: calendar. dateComponents ( [ . yearForWeekOfYear, . weekOfYear] , from: Date ( ) ) ) !
23+
24+ return NSPredicate ( format: predicateString, deviceId, startOfWeek as NSDate )
25+ }
26+ var dayPredicate : NSPredicate {
27+ let deviceId = bleManager. pairedDeviceID ?? " "
28+ let startOfDay = calendar. startOfDay ( for: Date ( ) )
29+
30+ return NSPredicate ( format: predicateString, deviceId, startOfDay as NSDate )
31+ }
32+ var allTimePredicate : NSPredicate {
33+ let deviceId = bleManager. pairedDeviceID ?? " "
34+ return NSPredicate ( format: " deviceId == %@ " , deviceId)
35+ }
36+
1637 @AppStorage ( " heartRateChartDataSelection " ) var heartRateChartDataSelection = 0
1738 @AppStorage ( " stepChartDataSelection " ) var stepChartDataSelection = 0
1839
@@ -80,11 +101,13 @@ class ChartManager: ObservableObject {
80101 }
81102 }
82103
83- func stepPoints( ) -> [ StepCounts ] {
84- guard let deviceId = bleManager. pairedDeviceID else { return [ ] }
85-
104+ func stepsToday( ) -> StepCounts ? {
105+ return stepPoints ( ) . first
106+ }
107+
108+ func stepPoints( predicate: NSPredicate ? = nil ) -> [ StepCounts ] {
86109 let fetchRequest : NSFetchRequest < StepCounts > = StepCounts . fetchRequest ( )
87- fetchRequest. predicate = NSPredicate ( format : " deviceId == %@ " , deviceId )
110+ fetchRequest. predicate = predicate ?? dayPredicate
88111
89112 do {
90113 return try persistenceController. container. viewContext. fetch ( fetchRequest)
0 commit comments