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 = `
| Application | Category | Events | First Seen | Last Seen |
${summary.map(s => `
| ${esc(s.appName)} |
${esc(s.category)} |
${s.eventCount} |
${formatTime(s.firstSeen)} |
${formatTime(s.lastSeen)} |
`).join('')}
`;
} 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 = `
| Source | App | Window Title | URL | Time |
${events.map(e => `
| ${esc(e.source)} |
${esc(e.appName)} |
${esc(e.windowTitle)} |
${e.url ? esc(e.url) : '-'} |
${formatTime(e.timestamp)} |
`).join('')}
`;
} 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;
}