import * as api from '../api.js'; const el = () => document.getElementById('page-context'); export async function initContext() { el().innerHTML = `

Context

App Summary (8 hours)
Recent Events
`; document.getElementById('ctx-minutes').addEventListener('change', loadEvents); await Promise.all([loadSummary(), loadEvents()]); } async function loadSummary() { try { const summary = await api.context.summary(); const container = document.getElementById('ctx-summary'); if (!summary || !summary.length) { container.innerHTML = `
No activity recorded
`; return; } container.innerHTML = ` ${summary.map(s => ` `).join('')}
ApplicationCategoryEventsFirst SeenLast Seen
${esc(s.appName)} ${esc(s.category)} ${s.eventCount} ${formatTime(s.firstSeen)} ${formatTime(s.lastSeen)}
`; } catch (e) { document.getElementById('ctx-summary').innerHTML = `
Failed to load summary
`; } } async function loadEvents() { const minutes = parseInt(document.getElementById('ctx-minutes').value); try { const events = await api.context.recent(minutes); const container = document.getElementById('ctx-events'); if (!events || !events.length) { container.innerHTML = `
No recent events
`; return; } container.innerHTML = ` ${events.map(e => ` `).join('')}
SourceAppWindow TitleURLTime
${esc(e.source)} ${esc(e.appName)} ${esc(e.windowTitle)} ${e.url ? esc(e.url) : '-'} ${formatTime(e.timestamp)}
`; } catch (e) { document.getElementById('ctx-events').innerHTML = `
Failed to load events
`; } } function formatTime(iso) { const d = new Date(iso); return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }); } function esc(str) { if (!str) return ''; const d = document.createElement('div'); d.textContent = str; return d.innerHTML; }