forked from AcaMate/AcaMate_iOS
158 lines
6.0 KiB
Swift
158 lines
6.0 KiB
Swift
//
|
|
// ManagementBoxView.swift
|
|
// AcaMate
|
|
//
|
|
// Created by TAnine on 2/10/25.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct ManagementBoxView: View {
|
|
@StateObject var btnVM = ButtonViewModel()
|
|
@State private var leftBtnID = UUID()
|
|
@State private var rightBtnID = UUID()
|
|
@State var managementList: [SummaryManagement]
|
|
@State private var countNum: Int = 0
|
|
|
|
var body: some View {
|
|
DashBoardView(image: Image(.Icon.edu), title: "학습 관리") {
|
|
if managementList.isEmpty {
|
|
EmptyBoxView(title: "학습하고 있는 강의가 없습니다.")
|
|
} else {
|
|
HStack {
|
|
SimpleBtnView(vm: btnVM, id: leftBtnID)
|
|
Spacer(minLength: 1)
|
|
SimpleBtnView(vm: btnVM, id: rightBtnID)
|
|
}
|
|
.padding([.bottom],12)
|
|
|
|
MangCellView(summaryMang: $managementList[countNum])
|
|
}
|
|
|
|
} moreAction: {
|
|
// MARK: TO-DO
|
|
// 학습관리 전체 페이지 이동 로직 추가
|
|
printLog("학습 관리의 더보기")
|
|
}
|
|
.onAppear {
|
|
btnVM.setImage(for: leftBtnID, newImage: Image(.Icon.left))
|
|
btnVM.setSize(for: leftBtnID, newWidth: 24, newHeight: 24)
|
|
btnVM.setAction(for: leftBtnID) { countNum -= 1 }
|
|
btnVM.setIsUsable(for: leftBtnID, newValue: false)
|
|
|
|
btnVM.setImage(for: rightBtnID, newImage: Image(.Icon.right))
|
|
btnVM.setSize(for: rightBtnID, newWidth: 24, newHeight: 24)
|
|
btnVM.setAction(for: rightBtnID) { countNum += 1 }
|
|
if managementList.count == 0 {
|
|
btnVM.setIsUsable(for: rightBtnID, newValue: false)
|
|
}
|
|
|
|
}
|
|
.onChange(of: countNum) { oldValue, newValue in
|
|
if countNum == 0 {
|
|
btnVM.setIsUsable(for: leftBtnID, newValue: false)
|
|
|
|
} else if 0 < countNum && countNum < managementList.count-1 {
|
|
btnVM.setIsUsable(for: leftBtnID, newValue: true)
|
|
btnVM.setIsUsable(for: rightBtnID, newValue: true)
|
|
}
|
|
else {
|
|
btnVM.setIsUsable(for: rightBtnID, newValue: false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct MangCellView: View {
|
|
@StateObject var btnVM = ButtonViewModel()
|
|
@Binding var summaryMang: SummaryManagement
|
|
@State var ratioBtn = UUID()
|
|
@State var flagBtn = UUID()
|
|
var body: some View {
|
|
VStack(spacing: 0) {
|
|
VStack(spacing: 8) {
|
|
HStack(spacing: 12) {
|
|
Image(.Icon.management)
|
|
.resizable()
|
|
.frame(width: 24, height: 24, alignment: .center)
|
|
Text("\(summaryMang.title)")
|
|
.font(.nps(size: 20))
|
|
.foregroundStyle(Color(.Text.title))
|
|
Spacer(minLength: 1)
|
|
}
|
|
HStack(spacing: 0) {
|
|
Spacer(minLength: 1)
|
|
Text("\(summaryMang.teacher) 선생님")
|
|
.font(.nps(size: 12))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
}
|
|
|
|
|
|
}
|
|
// 상단 내용은 여까지
|
|
HStack(spacing: 6) {
|
|
HStack(spacing: 10) {
|
|
CircleBtnView(vm: btnVM, id: ratioBtn)
|
|
VStack(spacing: 10) {
|
|
HStack(spacing: 4) {
|
|
Text("학습")
|
|
.font(.nps(size: 16))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
Text("진도")
|
|
.font(.nps(font: .bold, size: 16))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
Spacer(minLength: 1)
|
|
}
|
|
HStack(spacing: 4) {
|
|
Spacer(minLength: 1)
|
|
Text("\(summaryMang.ratio)")
|
|
.font(.nps(font: .bold, size: 24))
|
|
.foregroundStyle(summaryMang.ratio > 70 ? Color(.Other.blue):Color(.Other.red))
|
|
Text("%")
|
|
.font(.nps(font: .bold, size: 20))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
|
|
}
|
|
}
|
|
VStack(spacing: 10) {
|
|
HStack(spacing: 4) {
|
|
Text("숙제")
|
|
.font(.nps(font: .bold, size: 16))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
Text("개수")
|
|
.font(.nps(size: 16))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
|
|
Spacer(minLength: 1)
|
|
}
|
|
HStack(spacing: 4) {
|
|
Spacer(minLength: 1)
|
|
Text("\(summaryMang.homework)")
|
|
.font(.nps(font: .bold, size: 24))
|
|
.foregroundStyle(Color(.Second.normal))
|
|
Text("개")
|
|
.font(.nps(font: .bold, size: 20))
|
|
.foregroundStyle(Color(.Text.detail))
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
.padding(12)
|
|
.background {
|
|
RoundedRectangle(cornerRadius: 4)
|
|
.stroke(Color(.Second.normal), lineWidth: 2)
|
|
.fill(Color(.Second.light))
|
|
}
|
|
.onTapGesture {
|
|
// MARK: TO-DO
|
|
// 해당 과목의 학습관리 페이지 이동 로직 추가
|
|
printLog(summaryMang)
|
|
}
|
|
|
|
}
|
|
}
|