import React, { useState } from 'react'; const InactiveProjectsPage = ({ onNavigate, user, projects, inactiveProjects, onActivateProject, onDeleteProject }) => { const [selectedProjects, setSelectedProjects] = useState(new Set()); // 비활성 프로젝트 목록 필터링 const inactiveProjectList = projects.filter(project => inactiveProjects.has(project.job_no) ); // 프로젝트 선택/해제 const handleProjectSelect = (projectNo) => { setSelectedProjects(prev => { const newSet = new Set(prev); if (newSet.has(projectNo)) { newSet.delete(projectNo); } else { newSet.add(projectNo); } return newSet; }); }; // 전체 선택/해제 const handleSelectAll = () => { if (selectedProjects.size === inactiveProjectList.length) { setSelectedProjects(new Set()); } else { setSelectedProjects(new Set(inactiveProjectList.map(p => p.job_no))); } }; // 선택된 프로젝트들 활성화 const handleBulkActivate = () => { if (selectedProjects.size === 0) { alert('활성화할 프로젝트를 선택해주세요.'); return; } if (window.confirm(`선택된 ${selectedProjects.size}개 프로젝트를 활성화하시겠습니까?`)) { selectedProjects.forEach(projectNo => { const project = projects.find(p => p.job_no === projectNo); if (project) { onActivateProject(project); } }); setSelectedProjects(new Set()); } }; // 선택된 프로젝트들 삭제 const handleBulkDelete = () => { if (selectedProjects.size === 0) { alert('삭제할 프로젝트를 선택해주세요.'); return; } if (window.confirm(`선택된 ${selectedProjects.size}개 프로젝트를 완전히 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.`)) { selectedProjects.forEach(projectNo => { onDeleteProject(projectNo); }); setSelectedProjects(new Set()); } }; return (
{/* 헤더 */}

Inactive Projects Management

Manage deactivated projects - activate or permanently delete

{/* 통계 정보 */}
{inactiveProjectList.length}
Inactive Projects
{selectedProjects.size}
Selected
{/* 일괄 작업 버튼들 */} {inactiveProjectList.length > 0 && (
)}
{/* 비활성 프로젝트 목록 */}

Inactive Projects List

{inactiveProjectList.length === 0 ? (
📂
No Inactive Projects
All projects are currently active
) : (
{inactiveProjectList.map((project) => (
{ e.target.style.borderColor = '#cbd5e1'; e.target.style.boxShadow = '0 4px 12px rgba(0,0,0,0.1)'; }} onMouseLeave={(e) => { e.target.style.borderColor = '#e2e8f0'; e.target.style.boxShadow = '0 2px 8px rgba(0,0,0,0.05)'; }} >
handleProjectSelect(project.job_no)} style={{ width: '18px', height: '18px', cursor: 'pointer' }} />
{project.job_name || project.job_no}
Code: {project.job_no} | Client: {project.client_name || 'N/A'}
))}
)}
); }; export default InactiveProjectsPage;