// YYYYMMDD → YYYY.MM.DD
function formatDate(d) {
return d ? `${d.slice(0, 4)}.${d.slice(4, 6)}.${d.slice(6, 8)}` : '-';
}
// 태그별 색상 매핑
const TAG_COLORS = {
'실적': 'bg-blue-100 text-blue-700',
'유증': 'bg-red-100 text-red-700',
'무증': 'bg-orange-100 text-orange-700',
'수주': 'bg-green-100 text-green-700',
'소송': 'bg-red-100 text-red-700',
'M&A': 'bg-purple-100 text-purple-700',
'지분': 'bg-indigo-100 text-indigo-700',
'자사주':'bg-teal-100 text-teal-700',
'경영': 'bg-gray-100 text-gray-600',
'CB/BW': 'bg-yellow-100 text-yellow-700',
'공시': 'bg-gray-100 text-gray-500',
};
function tagBadge(tag) {
const cls = TAG_COLORS[tag] || TAG_COLORS['공시'];
return `${tag}`;
}
async function loadDisclosures() {
try {
const resp = await fetch(`/api/disclosure?code=${STOCK_CODE}`);
if (!resp.ok) throw new Error();
const list = await resp.json();
document.getElementById('disclosureLoading').classList.add('hidden');
if (!list || list.length === 0) {
document.getElementById('disclosureEmpty').classList.remove('hidden');
return;
}
const ul = document.getElementById('disclosureList');
list.forEach(item => {
const li = document.createElement('li');
li.className = 'py-3';
li.innerHTML = `
${tagBadge(item.tag)}
${item.reportNm}
${formatDate(item.rceptDt)}
`;
ul.appendChild(li);
});
ul.classList.remove('hidden');
} catch {
document.getElementById('disclosureLoading').classList.add('hidden');
document.getElementById('disclosureError').classList.remove('hidden');
}
}
document.addEventListener('DOMContentLoaded', () => {
if (typeof STOCK_CODE !== 'undefined') loadDisclosures();
});