71 lines
2.5 KiB
Swift
71 lines
2.5 KiB
Swift
//
|
||
// FavGroupsView.swift
|
||
// Schedule ICTIS
|
||
//
|
||
// Created by Egor Mironov on 05.03.2025.
|
||
//
|
||
|
||
import SwiftUI
|
||
|
||
struct FavVPKView: View {
|
||
@ObservedObject var vm: ScheduleViewModel
|
||
@ObservedObject var networkMonitor: NetworkMonitor
|
||
@FetchRequest(fetchRequest: FavouriteVpkModel.all()) private var favVpk // Список ВПК сохраненных в CoreData
|
||
var provider = ClassProvider.shared
|
||
var body: some View {
|
||
VStack (spacing: 0) {
|
||
List {
|
||
ForEach(favVpk, id: \.self) {favVpk in
|
||
HStack {
|
||
Text(favVpk.name)
|
||
.font(.custom("Montserrat-Medium", fixedSize: 17))
|
||
Spacer()
|
||
}
|
||
.background(Color.white)
|
||
.cornerRadius(10)
|
||
.swipeActions(edge: .trailing) {
|
||
Button(role: .destructive) {
|
||
vm.removeFromSchedule(group: favVpk.name)
|
||
do {
|
||
try JsonClassModel.deleteClasses(withName: favVpk.name, in: provider.viewContext)
|
||
try provider.delete(favVpk, in: provider.viewContext)
|
||
} catch {
|
||
print(error)
|
||
}
|
||
} label: {
|
||
Label("Удалить", systemImage: "trash")
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
Spacer()
|
||
|
||
HStack {
|
||
Spacer()
|
||
if favVpk.count < 5 {
|
||
NavigationLink(destination: SelectingVPKView(vm: vm, networkMonitor: networkMonitor)) {
|
||
HStack {
|
||
Image(systemName: "plus")
|
||
.foregroundColor(.white)
|
||
.font(.system(size: 22))
|
||
.padding(EdgeInsets(top: 12, leading: 12, bottom: 12, trailing: 12))
|
||
}
|
||
.background(Color("blueColor"))
|
||
.cornerRadius(10)
|
||
.padding(.trailing, 20)
|
||
}
|
||
}
|
||
}
|
||
.padding(.bottom, 90)
|
||
}
|
||
.background(Color("background"))
|
||
}
|
||
}
|
||
|
||
#Preview {
|
||
@Previewable @StateObject var vm = ScheduleViewModel()
|
||
@Previewable @StateObject var vm2 = NetworkMonitor()
|
||
FavVPKView(vm: vm, networkMonitor: vm2)
|
||
}
|