closed #16
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user