Сделано тображение пар для дня
This commit is contained in:
parent
4fdec23e52
commit
ac28d21f9e
@ -19,17 +19,58 @@ struct ScheduleView: View {
|
|||||||
VStack {
|
VStack {
|
||||||
SearchBarView(text: $searchText)
|
SearchBarView(text: $searchText)
|
||||||
HeaderView()
|
HeaderView()
|
||||||
ScrollView(.vertical) {
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
VStack {
|
VStack {
|
||||||
ForEach(vm.weekSchedule, id: \.week) { day in
|
ForEach(vm.weekSchedule, id: \.week) { element in
|
||||||
HStack {
|
let selectedDayIndex = vm.selectedIndex
|
||||||
Text(convertTimeString(day.table[1][1])[0])
|
if selectedDayIndex < 8 {
|
||||||
Text(convertTimeString(day.table[1][1])[9])
|
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))
|
.background(.secondary.opacity(0.1))
|
||||||
.onAppear(perform: {
|
.onAppear(perform: {
|
||||||
@ -46,6 +87,7 @@ struct ScheduleView: View {
|
|||||||
weekSlider.append(lastDate.createNextWeek())
|
weekSlider.append(lastDate.createNextWeek())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
vm.updateSelectedDayIndex(currentDate)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,14 +12,14 @@ final class ViewModel: ObservableObject {
|
|||||||
//MARK: Properties
|
//MARK: Properties
|
||||||
@Published var weekSchedule: [Table] = []
|
@Published var weekSchedule: [Table] = []
|
||||||
@Published var selectedDay: Date = Date()
|
@Published var selectedDay: Date = Date()
|
||||||
@Published var selectedIndex: Int = 0
|
@Published var selectedIndex: Int = 1
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
fetchWeekSchedule()
|
fetchWeekSchedule()
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: Methods
|
//MARK: Methods
|
||||||
func fetchWeekSchedule(){
|
func fetchWeekSchedule() {
|
||||||
Task {
|
Task {
|
||||||
do {
|
do {
|
||||||
let schedule = try await NetworkManager.shared.getSchedule()
|
let schedule = try await NetworkManager.shared.getSchedule()
|
||||||
@ -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) {
|
func updateSelectedDayIndex(_ date: Date) {
|
||||||
switch date.format("E") {
|
switch date.format("E") {
|
||||||
case "Пн":
|
case "Пн":
|
||||||
selectedIndex = 1
|
|
||||||
case "Вт":
|
|
||||||
selectedIndex = 2
|
selectedIndex = 2
|
||||||
case "Ср":
|
case "Вт":
|
||||||
selectedIndex = 3
|
selectedIndex = 3
|
||||||
case "Чт":
|
case "Ср":
|
||||||
selectedIndex = 4
|
selectedIndex = 4
|
||||||
case "Пт":
|
case "Чт":
|
||||||
selectedIndex = 5
|
selectedIndex = 5
|
||||||
case "Сб":
|
case "Пт":
|
||||||
selectedIndex = 6
|
selectedIndex = 6
|
||||||
default:
|
case "Сб":
|
||||||
selectedIndex = 7
|
selectedIndex = 7
|
||||||
|
default:
|
||||||
|
selectedIndex = 8
|
||||||
}
|
}
|
||||||
print(selectedIndex)
|
print(selectedIndex)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user