Files
studystructure/StudyStructure/CourseCatalogView.swift

60 lines
1.6 KiB
Swift

//
// CourseCatalogView.swift
// CourseCatalogView
//
// Created by Felix Förtsch on 01.08.21.
//
import SwiftUI
struct CourseCatalogView: View {
var courses: [Course] {
let url = Bundle.main.url(forResource: "courses", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
var courses = try? decoder.decode([Course].self, from: data)
courses?.sort(by: { $0.name < $1.name })
return courses!
}
@State var searchText = ""
var searchResults: [Course] {
if searchText.isEmpty {
return courses
} else {
return courses.filter { $0.name.contains(searchText) }
}
}
var body: some View {
NavigationView {
List {
ForEach(searchResults, id: \.self) { item in
NavigationLink(destination: CourseDetailsView(item)) {
VStack(alignment: .leading) {
Text(item.name)
Text(item.type)
.font(.subheadline)
.foregroundColor(Color.gray)
}
}
}
}
.searchable(text: $searchText)
.navigationBarTitle("Courses")
}
}
}
struct CourseCatalogView_Previews: PreviewProvider {
static var previews: some View {
Group {
CourseCatalogView().preferredColorScheme(.dark)
}
}
}