"use client"; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { isAdminLoggedIn } from '../../lib/auth'; import LoginPage from '../login/page'; import Logout from '../../public/svg/logout'; const imgArrowDisabled = "http://localhost:3845/assets/6edcb2defc36a2bf4a05a3abe53b8da3d42b2cb4.svg"; const imgArrowDefault = "http://localhost:3845/assets/ad0cb4418492f1b020bb38a2ff038a331294ce87.svg"; const imgArrowNext = "http://localhost:3845/assets/6328cf96ee1169c1425c2ce55e7a2dcca0374508.svg"; type PaginationMove = "Previous" | "Next"; type PaginationStatus = "Default" | "Disabled"; function PaginationBtnMove({ status = "Default", move = "Previous" }: { status?: PaginationStatus; move?: PaginationMove }) { const isDisabled = status === "Disabled"; const isNext = move === "Next"; if (isDisabled && isNext) { return (
); } if (isDisabled && !isNext) { return (
); } if (isNext) { return (
); } return (
); } interface Lecture { id: number; courseName: string; lectureName: string; attachedFile: string; questionCount: number; registrar: string; createdAt: string; } export default function AdminLecture2Page() { const router = useRouter(); const [isLoading, setIsLoading] = useState(true); const [isAuthenticated, setIsAuthenticated] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [lectures, setLectures] = useState([ { id: 39, courseName: '방사선 적용', lectureName: '방사선 기본 원리', attachedFile: '파일1.pdf', questionCount: 10, registrar: '이철수', createdAt: '2026-01-15' }, { id: 38, courseName: '방사선 적용', lectureName: '방사선 안전 관리', attachedFile: '파일2.pdf', questionCount: 15, registrar: '이철수', createdAt: '2026-01-14' }, { id: 37, courseName: '방사선 원리', lectureName: '방사선 측정 기법', attachedFile: '파일3.pdf', questionCount: 12, registrar: '김등록', createdAt: '2026-01-13' }, { id: 36, courseName: '방사선 적용', lectureName: '방사선 장비 사용법', attachedFile: '파일4.pdf', questionCount: 8, registrar: '이철수', createdAt: '2026-01-12' }, { id: 35, courseName: '방사선 원리', lectureName: '방사선 물리학 기초', attachedFile: '파일5.pdf', questionCount: 20, registrar: '김등록', createdAt: '2026-01-11' }, { id: 34, courseName: '방사선 적용', lectureName: '방사선 보호 장비', attachedFile: '파일6.pdf', questionCount: 14, registrar: '이철수', createdAt: '2026-01-10' }, { id: 33, courseName: '방사선 적용', lectureName: '방사선 응용 실습', attachedFile: '파일7.pdf', questionCount: 16, registrar: '이철수', createdAt: '2026-01-09' }, { id: 32, courseName: '방사선 원리', lectureName: '방사선 화학 반응', attachedFile: '파일8.pdf', questionCount: 11, registrar: '김등록', createdAt: '2026-01-08' }, { id: 31, courseName: '방사선 적용', lectureName: '방사선 의료 응용', attachedFile: '파일9.pdf', questionCount: 18, registrar: '이철수', createdAt: '2026-01-07' }, { id: 30, courseName: '방사선 적용', lectureName: '방사선 산업 응용', attachedFile: '파일10.pdf', questionCount: 13, registrar: '이철수', createdAt: '2026-01-06' }, { id: 29, courseName: '방사선 원리', lectureName: '방사선 생물학', attachedFile: '파일11.pdf', questionCount: 17, registrar: '김등록', createdAt: '2026-01-05' }, { id: 28, courseName: '방사선 적용', lectureName: '방사선 환경 모니터링', attachedFile: '파일12.pdf', questionCount: 9, registrar: '이철수', createdAt: '2026-01-04' }, { id: 27, courseName: '방사선 적용', lectureName: '방사선 검사 기법', attachedFile: '파일13.pdf', questionCount: 19, registrar: '이철수', createdAt: '2026-01-03' }, { id: 26, courseName: '방사선 원리', lectureName: '방사선 에너지 전달', attachedFile: '파일14.pdf', questionCount: 21, registrar: '김등록', createdAt: '2026-01-02' }, { id: 25, courseName: '방사선 적용', lectureName: '방사선 처리 기술', attachedFile: '파일15.pdf', questionCount: 7, registrar: '이철수', createdAt: '2026-01-01' }, { id: 24, courseName: '방사선 적용', lectureName: '방사선 품질 관리', attachedFile: '파일16.pdf', questionCount: 22, registrar: '이철수', createdAt: '2025-12-31' }, { id: 23, courseName: '방사선 원리', lectureName: '방사선 방어 이론', attachedFile: '파일17.pdf', questionCount: 6, registrar: '김등록', createdAt: '2025-12-30' }, { id: 22, courseName: '방사선 적용', lectureName: '방사선 계측법', attachedFile: '파일18.pdf', questionCount: 24, registrar: '이철수', createdAt: '2025-12-29' }, { id: 21, courseName: '방사선 적용', lectureName: '방사선 안전 규정', attachedFile: '파일19.pdf', questionCount: 5, registrar: '이철수', createdAt: '2025-12-28' }, { id: 20, courseName: '방사선 원리', lectureName: '방사선 핵물리학', attachedFile: '파일20.pdf', questionCount: 25, registrar: '김등록', createdAt: '2025-12-27' }, ]); // 관리자 인증 확인 useEffect(() => { const checkAuth = () => { if (typeof window !== 'undefined') { const isAdmin = isAdminLoggedIn(); setIsAuthenticated(isAdmin); setIsLoading(false); if (!isAdmin) { // 인증되지 않은 경우 로그인 페이지로 리다이렉트 router.push('/login'); } } }; checkAuth(); }, [router]); if (isLoading) { return null; // 로딩 중 } if (!isAuthenticated) { return ; } const itemsPerPage = 13; const totalPages = Math.ceil(lectures.length / itemsPerPage); const pageNumbers = Array.from({ length: totalPages }, (_, i) => i + 1); const startIndex = (currentPage - 1) * itemsPerPage; const endIndex = startIndex + itemsPerPage; const currentLectures = lectures.slice(startIndex, endIndex); return (
{/* 사이드바 */}
{/* 로고 */} {/* 메뉴 */}
{/* 로그아웃 */}
{/* 메인 콘텐츠 */}
{/* 헤더 */}

강좌 관리

{/* 강좌 등록 버튼 */} {/* 테이블 */}
{/* 테이블 헤더 */}

교육 과정명

강좌명

첨부 파일

학습 평가 문제 수

등록자

등록일

{/* 테이블 바디 */} {lectures.length === 0 ? (

교육 과정을 추가해 주세요.

) : (
{currentLectures.map((lecture) => (

{lecture.courseName}

{lecture.lectureName}

{lecture.attachedFile}

{lecture.questionCount}

{lecture.registrar}

{lecture.createdAt}

))}
)}
{/* 페이지네이션 */} {lectures.length > 0 && (
{pageNumbers.map((pageNum) => ( ))}
)}
); }