const Timeline = {
CATEGORY_COLORS: {
political: "var(--color-saffron)",
financial: "var(--color-india-green)",
regulatory: "#DC3545",
legal: "#6F42C1",
corporate: "var(--color-ashoka-blue)",
media: "var(--text-muted)",
},
CATEGORY_ICONS: {
political: "🏛",
financial: "💰",
regulatory: "📋",
legal: "⚖",
corporate: "🏢",
media: "📰",
},
render: (containerId, timelineData, convergenceData) => {
const el = document.getElementById(containerId);
if (!el) return;
const events = timelineData?.events || [];
const byYear = timelineData?.by_year || {};
const convergences = convergenceData?.convergences || [];
if (!events.length) {
el.innerHTML = `
No timeline events found for this entity.
`;
return;
}
const years = Object.keys(byYear).sort();
el.innerHTML = `
${Object.entries(Timeline.CATEGORY_COLORS).map(([cat, color]) => `
${Timeline.CATEGORY_ICONS[cat]||''} ${cat}
`).join("")}
${convergences.filter(c=>c.severity==="HIGH").length ? `
⚠ ${convergences.filter(c=>c.severity==="HIGH").length} high-proximity
temporal convergences detected
` : ""}
${years.map(year => `
${(byYear[year]||[]).map(event => `
${Timeline.CATEGORY_ICONS[event.category]||''}
${sanitize(event.title || "")}
${sanitize(event.detail || '')}
${sanitize(event.date || "")}
${sanitize(event.source || "")}
`).join("")}
`).join("")}
`;
},
};
window.Timeline = Timeline;