// /js/daily-report-viewer.js import { fetchReportData } from './report-viewer-api.js'; import { renderReport, processReportData, showLoading, showError } from './report-viewer-ui.js'; import { exportToExcel, printReport } from './report-viewer-export.js'; import { getUser } from './auth.js'; // 전역 상태: 현재 화면에 표시된 데이터 let currentProcessedData = null; /** * 날짜를 기준으로 보고서를 검색하고 화면에 렌더링합니다. */ async function searchReports() { const dateInput = document.getElementById('reportDate'); const selectedDate = dateInput.value; if (!selectedDate) { showError('날짜를 선택해주세요.'); return; } showLoading(true); currentProcessedData = null; // 새 검색이 시작되면 이전 데이터 초기화 try { const rawData = await fetchReportData(selectedDate); currentProcessedData = processReportData(rawData, selectedDate); renderReport(currentProcessedData); } catch (error) { showError(error.message); renderReport(null); // 에러 발생 시 데이터 없는 화면 표시 } finally { showLoading(false); } } /** * 페이지의 모든 이벤트 리스너를 설정합니다. */ function setupEventListeners() { document.getElementById('searchBtn')?.addEventListener('click', searchReports); document.getElementById('todayBtn')?.addEventListener('click', () => { const today = new Date().toISOString().split('T')[0]; document.getElementById('reportDate').value = today; searchReports(); }); document.getElementById('reportDate')?.addEventListener('keypress', (e) => { if (e.key === 'Enter') searchReports(); }); document.getElementById('exportExcelBtn')?.addEventListener('click', () => { exportToExcel(currentProcessedData); }); document.getElementById('printBtn')?.addEventListener('click', printReport); } /** * 페이지가 처음 로드될 때 실행되는 초기화 함수 */ function initializePage() { // auth.js를 사용하여 인증 상태 확인 const user = getUser(); if (!user) { showError('로그인이 필요합니다. 2초 후 로그인 페이지로 이동합니다.'); setTimeout(() => window.location.href = '/index.html', 2000); return; } setupEventListeners(); // 페이지 로드 시 오늘 날짜로 자동 검색 const dateInput = document.getElementById('reportDate'); dateInput.value = new Date().toISOString().split('T')[0]; searchReports(); } // DOM이 로드되면 페이지 초기화를 시작합니다. document.addEventListener('DOMContentLoaded', initializePage);