// /js/group-leader-dashboard.js // 그룹장 전용 대시보드 기능 console.log('📊 그룹장 대시보드 스크립트 로딩'); // 팀 현황 새로고침 async function refreshTeamStatus() { console.log('🔄 팀 현황 새로고침 시작'); try { // 로딩 상태 표시 const teamList = document.getElementById('team-list'); if (teamList) { teamList.innerHTML = '
⏳ 로딩 중...
'; } // 실제로는 API 호출 // const response = await fetch('/api/team-status', { headers: getAuthHeaders() }); // const data = await response.json(); // 임시 데이터로 업데이트 (실제 API 연동 시 교체) setTimeout(() => { updateTeamStatusUI(); }, 1000); } catch (error) { console.error('❌ 팀 현황 로딩 실패:', error); const teamList = document.getElementById('team-list'); if (teamList) { teamList.innerHTML = '
❌ 로딩 실패
'; } } } // 팀 현황 UI 업데이트 (임시 데이터) function updateTeamStatusUI() { const teamData = [ { name: '김작업', status: 'present', statusText: '출근' }, { name: '이현장', status: 'present', statusText: '출근' }, { name: '박휴가', status: 'absent', statusText: '휴가' }, { name: '최작업', status: 'present', statusText: '출근' }, { name: '정현장', status: 'present', statusText: '출근' } ]; const teamList = document.getElementById('team-list'); if (teamList) { teamList.innerHTML = teamData.map(member => `
${member.name} ${member.statusText}
`).join(''); } // 통계 업데이트 const presentCount = teamData.filter(m => m.status === 'present').length; const absentCount = teamData.filter(m => m.status === 'absent').length; const totalEl = document.getElementById('team-total'); const presentEl = document.getElementById('team-present'); const absentEl = document.getElementById('team-absent'); if (totalEl) totalEl.textContent = teamData.length; if (presentEl) presentEl.textContent = presentCount; if (absentEl) absentEl.textContent = absentCount; console.log('✅ 팀 현황 업데이트 완료'); } // 환영 메시지 개인화 function personalizeWelcome() { const user = JSON.parse(localStorage.getItem('user') || '{}'); const welcomeMsg = document.getElementById('welcome-message'); if (user && user.name && welcomeMsg) { welcomeMsg.textContent = `${user.name}님의 실시간 팀 현황 및 작업 모니터링`; console.log('✅ 환영 메시지 개인화 완료'); } } // 페이지 초기화 document.addEventListener('DOMContentLoaded', function() { console.log('🚀 그룹장 대시보드 초기화 시작'); // 사용자 정보 확인 const user = JSON.parse(localStorage.getItem('user') || '{}'); console.log('👤 현재 사용자:', user); // 권한 확인 if (user.access_level !== 'group_leader') { console.warn('⚠️ 그룹장 권한 없음:', user.access_level); // 필요시 다른 페이지로 리다이렉트 } // 초기화 작업 personalizeWelcome(); updateTeamStatusUI(); console.log('✅ 그룹장 대시보드 초기화 완료'); }); // 전역 함수로 내보내기 (HTML에서 사용) window.refreshTeamStatus = refreshTeamStatus;