71 lines
2.2 KiB
Swift
71 lines
2.2 KiB
Swift
//
|
||
// WeekViewForMonth.swift
|
||
// Schedule ICTIS
|
||
//
|
||
// Created by G412 on 20.12.2024.
|
||
//
|
||
|
||
import SwiftUI
|
||
|
||
struct WeekViewForMonth: View {
|
||
let week: [Date.WeekDay]
|
||
@ObservedObject var vm: ScheduleViewModel
|
||
|
||
var body: some View {
|
||
HStack(spacing: 23) {
|
||
ForEach(week) { day in
|
||
VStack {
|
||
Text(day.date.format("dd"))
|
||
.font(.system(size: 15, weight: .bold))
|
||
.foregroundStyle(getForegroundColor(day: day))
|
||
}
|
||
.frame(width: 30, height: 30, alignment: .center)
|
||
.background(getBackgroundColor(day: day))
|
||
.overlay(overlay(day: day))
|
||
.cornerRadius(15)
|
||
.onTapGesture {
|
||
handleTap(day: day)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private func getForegroundColor(day: Date.WeekDay) -> Color {
|
||
if isDateInCurrentMonth(day.date) {
|
||
return isSameDate(day.date, vm.selectedDay) ? .white : .black
|
||
} else {
|
||
return isSameDate(day.date, vm.selectedDay) ? .white : Color("greyForDaysInMonthTabView")
|
||
}
|
||
}
|
||
|
||
private func getBackgroundColor(day: Date.WeekDay) -> Color {
|
||
return isSameDate(day.date, vm.selectedDay) ? Color("blueColor") : Color("background")
|
||
}
|
||
|
||
private func overlay(day: Date.WeekDay) -> some View {
|
||
Group {
|
||
if day.date.isToday && !isSameDate(day.date, vm.selectedDay) {
|
||
RoundedRectangle(cornerRadius: 100)
|
||
.stroke(Color("blueColor"), lineWidth: 2)
|
||
}
|
||
}
|
||
}
|
||
|
||
private func handleTap(day: Date.WeekDay) {
|
||
if isSameWeek(day.date, vm.selectedDay) {
|
||
print("На одной неделе")
|
||
}
|
||
else {
|
||
var difBetweenWeeks = weeksBetween(startDate: vm.selectedDay, endDate: day.date)
|
||
if day.date < vm.selectedDay {
|
||
difBetweenWeeks = difBetweenWeeks * -1
|
||
}
|
||
print(difBetweenWeeks)
|
||
vm.week += difBetweenWeeks
|
||
vm.fetchWeekSchedule(isOtherWeek: true)
|
||
}
|
||
vm.selectedDay = day.date
|
||
vm.updateSelectedDayIndex()
|
||
}
|
||
}
|