import { HardwareAsset, SoftwareAsset } from '../../core/excelHandler'; import { state } from '../../core/state'; const DASHBOARD_DETAIL_MODAL_HTML = ` `; export function initDashboardDetailModal() { if (!document.getElementById('dashboard-detail-modal')) { document.body.insertAdjacentHTML('beforeend', DASHBOARD_DETAIL_MODAL_HTML); } const modal = document.getElementById('dashboard-detail-modal')!; const closeBtn = document.getElementById('btn-close-dashboard-detail-modal')!; const cancelBtn = document.getElementById('btn-cancel-dashboard-detail-modal')!; const closeModal = () => modal.classList.add('hidden'); closeBtn.addEventListener('click', closeModal); cancelBtn.addEventListener('click', closeModal); modal.addEventListener('click', (e) => { if (e.target === modal) closeModal(); }); } export function openDashboardDetail(title: string, list: HardwareAsset[]) { const modal = document.getElementById('dashboard-detail-modal'); if (!modal) return; const titleEl = document.getElementById('dashboard-detail-modal-title'); const tbody = document.getElementById('dashboard-detail-tbody'); if (!titleEl || !tbody) return; const thead = tbody.closest('table')?.querySelector('thead'); if (!thead) return; titleEl.textContent = title; thead.innerHTML = `No유형자산코드명칭/모델위치담당/사용자구매일금액`; tbody.innerHTML = ''; if (list.length === 0) { tbody.innerHTML = `해당 조건의 자산이 없습니다.`; } else { list.forEach((asset, idx) => { let manager = asset.관리자 || asset.사용자 || asset.담당자_정 || '-'; let name = asset.명칭 || asset.모델명 || '-'; const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${asset.type}${asset.자산코드}${name}${asset.위치||'-'}${manager}${asset.구매일||'-'}${asset.금액||'-'}`; tbody.appendChild(tr); }); } modal.classList.remove('hidden'); } export function openSwDashboardDetail(title: string, list: SoftwareAsset[]) { const modal = document.getElementById('dashboard-detail-modal'); if (!modal) return; const titleEl = document.getElementById('dashboard-detail-modal-title'); const tbody = document.getElementById('dashboard-detail-tbody'); if (!titleEl || !tbody) return; const thead = tbody.closest('table')?.querySelector('thead'); if (!thead) return; titleEl.textContent = title; thead.innerHTML = `No유형법인제품명수량금액`; tbody.innerHTML = ''; list.forEach((sw, idx) => { const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${sw.type}${sw.법인}${sw.제품명}${sw.수량}${sw.금액}`; tbody.appendChild(tr); }); modal.classList.remove('hidden'); } export function openSwUsageDetail(title: string, list: SoftwareAsset[]) { const modal = document.getElementById('dashboard-detail-modal'); if (!modal) return; const titleEl = document.getElementById('dashboard-detail-modal-title'); const tbody = document.getElementById('dashboard-detail-tbody'); if (!titleEl || !tbody) return; const thead = tbody.closest('table')?.querySelector('thead'); if (!thead) return; titleEl.textContent = title; thead.innerHTML = `No법인제품명수량사용중사용가능`; tbody.innerHTML = ''; list.forEach((sw, idx) => { const assigned = state.masterData.swUsers.filter(u => u.swId === sw.id).length; const qty = typeof sw.수량 === 'number' ? sw.수량 : parseInt(sw.수량||'0', 10); const avail = qty - assigned; const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${sw.법인}${sw.제품명}${qty}${assigned}${avail}`; tbody.appendChild(tr); }); modal.classList.remove('hidden'); }