This commit is contained in:
Trey t
2022-01-15 12:15:26 -06:00
parent b7bb06ddad
commit ef4cc2f159
2 changed files with 16 additions and 12 deletions

View File

@@ -74,12 +74,22 @@ struct PersistenceController {
return last ?? nil return last ?? nil
} }
public func getData(startDate: Date, endDate: Date) -> [MoodEntry] { public func getData(startDate: Date, endDate: Date, includedDays: [Int]) -> [MoodEntry] {
let predicate = NSPredicate(format: "%K >= %@ && %K <= %@", 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", "forDate",
startDate as NSDate, startDate as NSDate,
"forDate", "forDate",
endDate as NSDate) endDate as NSDate,
includedDays16)
let fetchRequest = NSFetchRequest<MoodEntry>(entityName: "MoodEntry") let fetchRequest = NSFetchRequest<MoodEntry>(entityName: "MoodEntry")
fetchRequest.predicate = predicate fetchRequest.predicate = predicate

View File

@@ -59,7 +59,7 @@ struct FilterView: View {
] ]
private func filterEntries(startDate: Date, endDate: Date) { 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() self.dataHolder.data.removeAll()
let filledOutData = buildGridData(withData: filteredEntries) let filledOutData = buildGridData(withData: filteredEntries)
self.dataHolder.data = filledOutData self.dataHolder.data = filledOutData
@@ -124,13 +124,7 @@ struct FilterView: View {
if let item = monthEntries.filter({ entry in if let item = monthEntries.filter({ entry in
let components = calendar.dateComponents([.day, .weekday], from: entry.forDate!) let components = calendar.dateComponents([.day, .weekday], from: entry.forDate!)
let date = components.day let date = components.day
let weekday = components.weekday! return day == date
if selectedDays.isEmpty {
return day == date
} else {
return day == date && selectedDays.contains(weekday)
}
}).first { }).first {
let view = DayChartView(color: item.mood.color, let view = DayChartView(color: item.mood.color,
weekDay: Int(item.weekDay), weekDay: Int(item.weekDay),
@@ -181,7 +175,7 @@ struct FilterView: View {
gridView gridView
.onAppear(perform: { .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! entryStartDate = monthEntries.first!.forDate!
entryEndDate = monthEntries.last!.forDate! entryEndDate = monthEntries.last!.forDate!
self.dataHolder.data = buildGridData(withData: monthEntries) self.dataHolder.data = buildGridData(withData: monthEntries)