${initial}
@@ -636,7 +506,7 @@ async function renderModalDataFromSummary(workers, summary) {
${deleteBtn}
-
@@ -789,7 +659,7 @@ function filterWorkersList() {
function closeDailyWorkModal() {
elements.dailyWorkModal.style.display = 'none';
document.body.style.overflow = '';
- currentModalDate = null;
+ CalendarState.currentModalDate = null;
}
// 로딩 표시
@@ -848,16 +718,16 @@ async function deleteWorkerDayWork(workerId, date, workerName) {
showToast('작업을 삭제하는 중...', 'info');
// 날짜+작업자별 전체 삭제 API 호출
- const result = await window.apiCall(`/daily-work-reports/date/${date}/worker/${workerId}`, 'DELETE');
+ const result = await CalendarAPI.deleteWorkerDayWork(workerId, date);
console.log('✅ 작업 삭제 성공:', result);
showToast(`${workerName}의 ${date} 작업이 삭제되었습니다.`, 'success');
// 모달 데이터 새로고침
- await openDailyWorkModal(currentModalDate);
+ await openDailyWorkModal(CalendarState.currentModalDate);
// 캘린더도 새로고침
- await loadCalendarData();
+ await renderCalendar();
} catch (error) {
console.error('❌ 작업 삭제 실패:', error);
@@ -869,7 +739,7 @@ async function deleteWorkerDayWork(workerId, date, workerName) {
async function openWorkerModal(workerId, date) {
try {
// 작업자 정보 찾기
- const worker = allWorkers.find(w => w.worker_id === workerId);
+ const worker = CalendarState.allWorkers.find(w => w.worker_id === workerId);
if (!worker) {
showToast('작업자 정보를 찾을 수 없습니다.', 'error');
return;
@@ -1083,8 +953,8 @@ async function saveWorkEntry() {
await renderCalendar();
// 현재 열린 모달이 있다면 새로고침
- if (currentModalDate) {
- await openDailyWorkModal(currentModalDate);
+ if (CalendarState.currentModalDate) {
+ await openDailyWorkModal(CalendarState.currentModalDate);
}
} else {
const action = editingWorkId ? '수정' : '저장';
@@ -1106,7 +976,7 @@ function closeDailyWorkModal() {
}
// 전역 변수로 작업자 목록 저장
-let allWorkers = [];
+// let allWorkers = []; // Now in CalendarState
// 시간 업데이트 함수
function updateCurrentTime() {
@@ -1299,13 +1169,13 @@ async function loadExistingWorks(workerId, date) {
}
}
- existingWorks = workerWorks;
+ CalendarState.existingWorks = workerWorks;
renderExistingWorks();
updateTabCounter();
} catch (error) {
console.error('기존 작업 로드 오류:', error);
- existingWorks = [];
+ CalendarState.existingWorks = [];
renderExistingWorks();
updateTabCounter();
}
@@ -1313,7 +1183,7 @@ async function loadExistingWorks(workerId, date) {
// 기존 작업 목록 렌더링
function renderExistingWorks() {
- console.log('🎨 작업 목록 렌더링 시작:', existingWorks);
+ console.log('🎨 작업 목록 렌더링 시작:', CalendarState.existingWorks);
const existingWorkList = document.getElementById('existingWorkList');
const noExistingWork = document.getElementById('noExistingWork');
@@ -1326,15 +1196,15 @@ function renderExistingWorks() {
}
// 총 작업 시간 계산
- const totalHours = existingWorks.reduce((sum, work) => sum + parseFloat(work.work_hours || 0), 0);
+ const totalHours = CalendarState.existingWorks.reduce((sum, work) => sum + parseFloat(work.work_hours || 0), 0);
- console.log(`📊 작업 통계: ${existingWorks.length}건, 총 ${totalHours}시간`);
+ console.log(`📊 작업 통계: ${CalendarState.existingWorks.length}건, 총 ${totalHours}시간`);
// 요약 정보 업데이트
- if (totalWorkCount) totalWorkCount.textContent = existingWorks.length;
+ if (totalWorkCount) totalWorkCount.textContent = CalendarState.existingWorks.length;
if (totalWorkHours) totalWorkHours.textContent = totalHours.toFixed(1);
- if (existingWorks.length === 0) {
+ if (CalendarState.existingWorks.length === 0) {
existingWorkList.style.display = 'none';
if (noExistingWork) noExistingWork.style.display = 'block';
console.log('ℹ️ 작업이 없어서 빈 상태 표시');
@@ -1345,7 +1215,7 @@ function renderExistingWorks() {
if (noExistingWork) noExistingWork.style.display = 'none';
// 각 작업 데이터 상세 로그
- existingWorks.forEach((work, index) => {
+ CalendarState.existingWorks.forEach((work, index) => {
console.log(`📋 작업 ${index + 1}:`, {
id: work.id,
project_name: work.project_name,
@@ -1357,7 +1227,7 @@ function renderExistingWorks() {
});
// 작업 목록 HTML 생성
- const worksHtml = existingWorks.map((work, index) => {
+ const worksHtml = CalendarState.existingWorks.map((work, index) => {
const workItemHtml = `