' +
'' +
(competitorBadges ? '
' + competitorBadges + '
' : '') +
'
' + titleContent + '
' +
'
' + displaySummary + '
' +
(keyPointsHtml ? '
' : '') +
notesHtml +
'' +
'
';
}
function renderCards() {
const grid = document.getElementById('cards-grid');
const filtered = getFilteredEntries().sort((a, b) => b.date.localeCompare(a.date));
grid.innerHTML = filtered.map(renderCard).join('');
}
function renderTimeline() {
const container = document.getElementById('timeline');
const filtered = getFilteredEntries().sort((a, b) => b.date.localeCompare(a.date));
const grouped = {};
filtered.forEach(e => { (grouped[e.date] = grouped[e.date] || []).push(e); });
container.innerHTML = Object.entries(grouped).map(([date, items]) =>
'\ud83d\udcc5 \u672c\u5468\u6982\u89c8 (' + weekAgo.toISOString().slice(0,10) + ' ~ ' + now.toISOString().slice(0,10) + ')
' +
'
\u672c\u5468\u5171\u65b0\u589e ' + weekArr.length + ' \u6761\u8d44\u8baf\uff0c\u5176\u4e2d\u9ad8\u5f71\u54cd\u529b\u4e8b\u4ef6 ' + highImpact.length + ' \u6761\u3002
';
if (highImpact.length) {
html += '
\u26a0\ufe0f \u9ad8\u5f71\u54cd\u529b\u4e8b\u4ef6
' +
highImpact.map(e => '- ' + getTitle(e) + '
' + getSummary(e) + ' ').join('') + '
';
}
html += '
';
Object.entries(byCategory).forEach(([catId, items]) => {
const cat = getCategoryInfo(catId);
html += '