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');
}