import { state } from '../../core/state'; import { ASSET_SCHEMA } from '../../core/schema'; import { createIcons, X } from 'lucide'; 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(); }); createIcons({ icons: { X } }); } export function openDashboardDetail(title: string, list: any[]) { 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_SCHEMA.MANAGER_MAIN.key] || asset.user_current || '-'; let name = asset[ASSET_SCHEMA.MODEL_NAME.key] || asset[ASSET_SCHEMA.ASSET_NAME.key] || '-'; const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${asset.category || asset[ASSET_SCHEMA.ASSET_TYPE.key]}${name}${asset[ASSET_SCHEMA.LOCATION.key]||'-'}${manager}${asset[ASSET_SCHEMA.PURCHASE_DATE.key]||'-'}${asset[ASSET_SCHEMA.PURCHASE_AMOUNT.key]||'-'}`; tbody.appendChild(tr); }); } modal.classList.remove('hidden'); } export function openSwDashboardDetail(title: string, list: any[]) { 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.asset_type || sw.type}${sw[ASSET_SCHEMA.PURCHASE_CORP.key]}${sw[ASSET_SCHEMA.PRODUCT_NAME.key]}${sw[ASSET_SCHEMA.ASSET_COUNT.key]}${sw[ASSET_SCHEMA.PURCHASE_AMOUNT.key]}`; tbody.appendChild(tr); }); modal.classList.remove('hidden'); } export function openSwUsageDetail(title: string, list: any[]) { 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.sw_id === sw.id).length; const qty = Number(sw[ASSET_SCHEMA.ASSET_COUNT.key] || 0); const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${sw[ASSET_SCHEMA.PURCHASE_CORP.key]}${sw[ASSET_SCHEMA.PRODUCT_NAME.key]}${qty}${assigned}${qty - assigned}`; tbody.appendChild(tr); }); modal.classList.remove('hidden'); } export function openCloudDashboardDetail(title: string, list: any[]) { 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((sw, idx) => { const priceStr = sw[ASSET_SCHEMA.PURCHASE_AMOUNT.key] ? Number(String(sw[ASSET_SCHEMA.PURCHASE_AMOUNT.key]).replace(/[^0-9]/g, '')).toLocaleString() : '0'; const tr = document.createElement('tr'); tr.innerHTML = `${idx+1}${sw[ASSET_SCHEMA.DEV_OBJ.key]||'-'}${sw[ASSET_SCHEMA.PURCHASE_CORP.key]||'-'}${sw[ASSET_SCHEMA.PRODUCT_NAME.key]||'-'}${sw.pay_day ? sw.pay_day + '일' : '-'}₩ ${priceStr}`; tbody.appendChild(tr); }); } modal.classList.remove('hidden'); }