Files
TK-FB-Project/fastapi-bridge/static/js/group-leader-dashboard.js

103 lines
3.5 KiB
JavaScript

// /js/group-leader-dashboard.js
// 그룹장 전용 대시보드 기능
console.log('📊 그룹장 대시보드 스크립트 로딩');
// 팀 현황 새로고침
async function refreshTeamStatus() {
console.log('🔄 팀 현황 새로고침 시작');
try {
// 로딩 상태 표시
const teamList = document.getElementById('team-list');
if (teamList) {
teamList.innerHTML = '<div style="text-align: center; padding: 20px;">⏳ 로딩 중...</div>';
}
// 실제로는 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 = '<div style="text-align: center; padding: 20px; color: #f44336;">❌ 로딩 실패</div>';
}
}
}
// 팀 현황 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 => `
<div class="team-member ${member.status}">
<span class="member-name">${member.name}</span>
<span class="member-status">${member.statusText}</span>
</div>
`).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;