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 tr = document.createElement('tr');
tr.innerHTML = `${idx+1} | ${sw.법인} | ${sw.제품명} | ${sw.수량} | ${assigned} | ${Number(sw.수량) - assigned} | `;
tbody.appendChild(tr);
});
modal.classList.remove('hidden');
}
export function openCloudDashboardDetail(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 = '';
if (list.length === 0) {
tbody.innerHTML = `| 해당 내역이 없습니다. |
`;
} else {
list.forEach((sw, idx) => {
const priceStr = sw.당월청구액 ? Number(sw.당월청구액.replace(/[^0-9]/g, '')).toLocaleString() : '0';
const tr = document.createElement('tr');
tr.innerHTML = `${idx+1} | ${sw.플랫폼명||'-'} | ${sw.법인||'-'} | ${sw.제품명||'-'} | ${sw.결제일 ? sw.결제일 + '일' : '-'} | ₩ ${priceStr} | `;
tbody.appendChild(tr);
});
}
modal.classList.remove('hidden');
}