Сделано тображение пар для дня
This commit is contained in:
parent
4fdec23e52
commit
ac28d21f9e
@ -19,17 +19,58 @@ struct ScheduleView: View {
|
||||
VStack {
|
||||
SearchBarView(text: $searchText)
|
||||
HeaderView()
|
||||
ScrollView(.vertical) {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack {
|
||||
ForEach(vm.weekSchedule, id: \.week) { day in
|
||||
HStack {
|
||||
Text(convertTimeString(day.table[1][1])[0])
|
||||
Text(convertTimeString(day.table[1][1])[9])
|
||||
ForEach(vm.weekSchedule, id: \.week) { element in
|
||||
let selectedDayIndex = vm.selectedIndex
|
||||
if selectedDayIndex < 8 {
|
||||
let schedule = element.table[selectedDayIndex]
|
||||
ForEach(schedule.indices.dropFirst(), id: \.self) { index in
|
||||
let lesson = schedule[index]
|
||||
let firstThreeCharacters = lesson.prefix(3)
|
||||
let checkEnglish = lesson.prefix(6)
|
||||
if !lesson.isEmpty && index != 0 {
|
||||
GeometryReader { geometry in
|
||||
HStack (spacing: 8) {
|
||||
VStack (alignment: .center) {
|
||||
Text(convertTimeString(element.table[1][index])[0])
|
||||
.font(.system(size: 15, weight: .light))
|
||||
Text(convertTimeString(element.table[1][index])[1])
|
||||
.font(.system(size: 15, weight: .light))
|
||||
}
|
||||
.padding(.top, 4)
|
||||
.padding(.bottom, 4)
|
||||
.padding(.leading, 8)
|
||||
Rectangle()
|
||||
.frame(maxHeight: geometry.size.height - 10)
|
||||
.frame(width: 3)
|
||||
.cornerRadius(20)
|
||||
.padding(.top, 4)
|
||||
.padding(.bottom, 4)
|
||||
.foregroundColor(checkEnglish == "пр.Ино" || firstThreeCharacters == "лек" ? Color.blue : Color.green)
|
||||
Text(lesson)
|
||||
.font(.system(size: 16, weight: .medium))
|
||||
.padding(.trailing, 8)
|
||||
.frame(maxWidth: 280, alignment: .leading) // Выравнивание текста по левому краю
|
||||
.padding(.top, 4)
|
||||
.padding(.bottom, 4)
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
}
|
||||
.background(Color.white)
|
||||
.cornerRadius(20)
|
||||
.padding(.horizontal, 10)
|
||||
.frame(maxWidth: 420, maxHeight: 130)
|
||||
}
|
||||
.frame(height: 70)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Text("Сегодня нет пар")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
.background(.secondary.opacity(0.1))
|
||||
.onAppear(perform: {
|
||||
@ -46,6 +87,7 @@ struct ScheduleView: View {
|
||||
weekSlider.append(lastDate.createNextWeek())
|
||||
}
|
||||
}
|
||||
vm.updateSelectedDayIndex(currentDate)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ final class ViewModel: ObservableObject {
|
||||
//MARK: Properties
|
||||
@Published var weekSchedule: [Table] = []
|
||||
@Published var selectedDay: Date = Date()
|
||||
@Published var selectedIndex: Int = 0
|
||||
@Published var selectedIndex: Int = 1
|
||||
|
||||
init() {
|
||||
fetchWeekSchedule()
|
||||
@ -33,22 +33,28 @@ final class ViewModel: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
func getSelectedDaySchedule(for date: Date) -> [String]? {
|
||||
guard let week = weekSchedule.first else { return nil }
|
||||
let dayIndex = week.table.firstIndex { $0[0].contains(date.format("dd MMMM")) }
|
||||
return dayIndex.flatMap { week.table[$0] }
|
||||
}
|
||||
|
||||
func updateSelectedDayIndex(_ date: Date) {
|
||||
switch date.format("E") {
|
||||
case "Пн":
|
||||
selectedIndex = 1
|
||||
case "Вт":
|
||||
selectedIndex = 2
|
||||
case "Ср":
|
||||
case "Вт":
|
||||
selectedIndex = 3
|
||||
case "Чт":
|
||||
case "Ср":
|
||||
selectedIndex = 4
|
||||
case "Пт":
|
||||
case "Чт":
|
||||
selectedIndex = 5
|
||||
case "Сб":
|
||||
case "Пт":
|
||||
selectedIndex = 6
|
||||
default:
|
||||
case "Сб":
|
||||
selectedIndex = 7
|
||||
default:
|
||||
selectedIndex = 8
|
||||
}
|
||||
print(selectedIndex)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user