85 lines
2.6 KiB
Swift
85 lines
2.6 KiB
Swift
import SwiftUI
|
|
|
|
struct MainViewBig: View {
|
|
var body: some View {
|
|
NavigationView {
|
|
SidebarView()
|
|
Text("Master")
|
|
Text("Detail")
|
|
}
|
|
}
|
|
}
|
|
|
|
struct SidebarView: View {
|
|
@State var selection: String?
|
|
@State private var showAddPlateNumberView = false
|
|
|
|
@FetchRequest(entity: CDVehicle.entity(), sortDescriptors: []) var vehicles: FetchedResults<CDVehicle>
|
|
|
|
var body: some View {
|
|
List(selection: $selection) {
|
|
Section("History") {
|
|
NavigationLink(destination: VehiclesListView(vehicles: vehicles)) {
|
|
Label("All", systemImage: "car.2")
|
|
.badge(vehicles.count)
|
|
}
|
|
NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.unrecognized))) {
|
|
Label("Unreconized", systemImage: "eye.slash")
|
|
.badge(vehicles.filter(\.unrecognized).count)
|
|
}
|
|
NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.outdated))) {
|
|
Label("Outdated", systemImage: "wind")
|
|
.badge(vehicles.filter(\.outdated).count)
|
|
}
|
|
}
|
|
.collapsible(false)
|
|
|
|
Section("Other") {
|
|
Label("Recordings", systemImage: "waveform.path")
|
|
Label("Search", systemImage: "magnifyingglass")
|
|
}
|
|
.collapsible(false)
|
|
}
|
|
.frame(minWidth: 180)
|
|
.sheet(isPresented: $showAddPlateNumberView, onDismiss: {
|
|
print("Dismiss")
|
|
}, content: {
|
|
CheckNumberPopup()
|
|
})
|
|
.toolbar {
|
|
ToolbarItem {
|
|
Spacer()
|
|
}
|
|
ToolbarItem {
|
|
Button {
|
|
self.showAddPlateNumberView = true
|
|
} label: {
|
|
Image(systemName: "plus")
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct VehiclesListView<VehicleCollection>: View where VehicleCollection: RandomAccessCollection, VehicleCollection.Element == CDVehicle {
|
|
|
|
var vehicles: VehicleCollection
|
|
@State var selection: CDVehicle?
|
|
|
|
var body: some View {
|
|
List(selection: $selection) {
|
|
ForEach(vehicles, id: \.self) { vehicle in
|
|
let number = PlateNumber(vehicle.number ?? "")
|
|
PlateNumberView(number: number, unrecognized: vehicle.unrecognized, outdated: vehicle.outdated)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct MainViewBig_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
MainViewBig()
|
|
}
|
|
}
|