From cdb7708128737e5b36f10dea317646ff709cf32b Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Sun, 25 May 2025 07:00:11 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Fix]=20empty=20=EA=B3=A0=EB=A0=A4=20proces?= =?UTF-8?q?sWeeklyAttendance=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/admin/AdminStudentAttendance.jsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/admin/AdminStudentAttendance.jsx b/frontend/src/pages/admin/AdminStudentAttendance.jsx index f21971d..74a7500 100644 --- a/frontend/src/pages/admin/AdminStudentAttendance.jsx +++ b/frontend/src/pages/admin/AdminStudentAttendance.jsx @@ -66,12 +66,19 @@ const AdminStudentAttendance = () => { // 날짜 기반 주차-회차 구조로 변환 const processWeeklyAttendance = (rawData) => { const startDate = new Date("2025-06-24"); + const offsetDays = [0, 2, 4]; + const getWeekFromDate = (dateStr) => { const d = new Date(dateStr); const diffDays = Math.floor((d - startDate) / (1000 * 60 * 60 * 24)); return Math.floor(diffDays / 7) + 1; }; + const getDateForClass = (week, classIdx) => { + const base = new Date(startDate); + base.setDate(base.getDate() + (week - 1) * 7 + offsetDays[classIdx]); + return base.toISOString().split("T")[0]; // 'YYYY-MM-DD' 형식 + }; // 주차별 출석 정보 묶기 const weekMap = new Map(); @@ -87,9 +94,11 @@ const processWeeklyAttendance = (rawData) => { return Array.from({ length: 5 }, (_, i) => { const week = i + 1; const entries = (weekMap.get(week) || []).sort((a, b) => a.order - b.order); - + const classes = [0, 1, 2].map((classIdx) => { const slice = entries.slice(classIdx * 3, classIdx * 3 + 3); + const fallbackDate = getDateForClass(week, classIdx); + const trueCount = slice.filter((e) => e.status === "SUCCESS").length; let status; @@ -108,8 +117,9 @@ const processWeeklyAttendance = (rawData) => { } return { - status, - date: entries[classIdx]?.date || null, + order, + status: entry?.status ?? "EMPTY", + date: entry?.date ?? fallbackDate, }; }); From 7ae6767ac04592a7425ce27bbbb392fa4a507e1d Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Sun, 25 May 2025 07:01:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Fix]=20empty=20=EA=B3=A0=EB=A0=A4=20proces?= =?UTF-8?q?sWeeklyAttendance=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/admin/AdminStudentAttendance.jsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/admin/AdminStudentAttendance.jsx b/frontend/src/pages/admin/AdminStudentAttendance.jsx index 74a7500..06d72df 100644 --- a/frontend/src/pages/admin/AdminStudentAttendance.jsx +++ b/frontend/src/pages/admin/AdminStudentAttendance.jsx @@ -142,13 +142,21 @@ const processWeeklyAttendance = (rawData) => { onSelectDate={(date) => setSelectedDate(date)} /> - {/* 선택된 날짜의 상세 수정 카드 */} + {/* 선택된 날짜의 상세 수정 카드 {selectedDate && ( setSelectedDate(null)} /> + )}*/} + {selectedDate && ( + setSelectedDate(null)} + /> )} );