diff --git a/Shared/Persistence.swift b/Shared/Persistence.swift index e834d1f..275866d 100644 --- a/Shared/Persistence.swift +++ b/Shared/Persistence.swift @@ -74,12 +74,22 @@ struct PersistenceController { return last ?? nil } - public func getData(startDate: Date, endDate: Date) -> [MoodEntry] { - let predicate = NSPredicate(format: "%K >= %@ && %K <= %@", + public func getData(startDate: Date, endDate: Date, includedDays: [Int]) -> [MoodEntry] { + var includedDays16 = [Int16]() + + if includedDays.isEmpty { + includedDays16 = [Int16(1), Int16(2), Int16(3), Int16(4), Int16(5), Int16(6), Int16(7)] + } else { + includedDays16 = includedDays.map({ + Int16($0) + }) + } + let predicate = NSPredicate(format: "%K >= %@ && %K <= %@ && weekDay IN %@", "forDate", startDate as NSDate, "forDate", - endDate as NSDate) + endDate as NSDate, + includedDays16) let fetchRequest = NSFetchRequest(entityName: "MoodEntry") fetchRequest.predicate = predicate diff --git a/Shared/views/FilterView.swift b/Shared/views/FilterView.swift index 537000d..c4f44e2 100644 --- a/Shared/views/FilterView.swift +++ b/Shared/views/FilterView.swift @@ -59,7 +59,7 @@ struct FilterView: View { ] private func filterEntries(startDate: Date, endDate: Date) { - let filteredEntries = PersistenceController.shared.getData(startDate: startDate, endDate: endDate) + let filteredEntries = PersistenceController.shared.getData(startDate: startDate, endDate: endDate, includedDays: selectedDays) self.dataHolder.data.removeAll() let filledOutData = buildGridData(withData: filteredEntries) self.dataHolder.data = filledOutData @@ -124,13 +124,7 @@ struct FilterView: View { if let item = monthEntries.filter({ entry in let components = calendar.dateComponents([.day, .weekday], from: entry.forDate!) let date = components.day - let weekday = components.weekday! - - if selectedDays.isEmpty { - return day == date - } else { - return day == date && selectedDays.contains(weekday) - } + return day == date }).first { let view = DayChartView(color: item.mood.color, weekDay: Int(item.weekDay), @@ -181,7 +175,7 @@ struct FilterView: View { gridView .onAppear(perform: { - let monthEntries = PersistenceController.shared.getData(startDate: Date(timeIntervalSince1970: 0), endDate: Date()) + let monthEntries = PersistenceController.shared.getData(startDate: Date(timeIntervalSince1970: 0), endDate: Date(), includedDays: selectedDays) entryStartDate = monthEntries.first!.forDate! entryEndDate = monthEntries.last!.forDate! self.dataHolder.data = buildGridData(withData: monthEntries)