DHBW-Service-App/DHBW-Service/Views/Tabs/LecturePlanList.swift
Patrick Müller fdbd88ce01 Adding preview content, improvements to RaPla stuff
- Now updating locally stored events instead of deleting them and creating completely new events
- Added text color in the list view to distinguish exams from lectures
2021-01-31 19:49:52 +01:00

78 lines
2.6 KiB
Swift

//
// LecturePlanList.swift
// DHBW-Service
//
// Created by Patrick Müller on 30.01.21.
//
import SwiftUI
import CoreData
struct LecturePlanList: View {
@State private var events: [NSManagedObject] = []
@State private var sortingAscending = true
var body: some View {
VStack {
Button(action: {
// This is obviously bullshit, but it could be used to sort afer summary or smth like that
self.sortingAscending = !self.sortingAscending
let sectionSortDescriptor = NSSortDescriptor(key: "startDate", ascending: sortingAscending)
let sortDescriptors = [sectionSortDescriptor]
self.events = UtilityFunctions.getCoreDataObject(entity: "RaPlaEvent", sortDescriptors: sortDescriptors)
}){
Text("Switch order")
}
List {
ForEach(events, id: \.self) { event in
HStack {
Text(formatDate(date: event.value(forKeyPath: "startDate") as! Date))
.foregroundColor(getEventForegroundColor(for: event))
Text(event.value(forKeyPath: "summary") as! String)
.foregroundColor(getEventForegroundColor(for: event))
}
}
}
}.onAppear{
let sectionSortDescriptor = NSSortDescriptor(key: "startDate", ascending: true)
let sortDescriptors = [sectionSortDescriptor]
self.events = UtilityFunctions.getCoreDataObject(entity: "RaPlaEvent", sortDescriptors: sortDescriptors)
}
}
}
struct LecturePlanList_Previews: PreviewProvider {
static var previews: some View {
LecturePlanList()
.preferredColorScheme(.dark)
.environmentObject(getFirstOpening())
.environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
static func getFirstOpening() -> LocalSettings {
let settings = LocalSettings();
settings.isFirstOpening = false;
return settings
}
}
extension LecturePlanList {
private func formatDate(date: Date) -> String {
let formatter = DateFormatter()
formatter.dateStyle = .short
return formatter.string(from: date)
}
private func getEventForegroundColor(for event: NSManagedObject) -> Color {
var textColor: Color = .primary
if(event.value(forKeyPath: "category") as! String == "Prüfung") {
textColor = Color.red
} else {
textColor = Color.primary
}
return textColor
}
}