async function renderAudit() {
const content = document.getElementById('pageContent');
content.innerHTML = `
`;
try {
const audit = await api.getAudit(200);
let entries = audit.entries || [];
const filter = document.getElementById('auditFilter')?.value || 'all';
const search = (document.getElementById('auditSearch')?.value || '').toLowerCase();
if (filter !== 'all') entries = entries.filter(e => e.action === filter);
if (search) entries = entries.filter(e => JSON.stringify(e).toLowerCase().includes(search));
const container = document.getElementById('auditEntries');
if (entries.length === 0) {
container.innerHTML = '';
return;
}
container.innerHTML = `
| Time | Action | Details | ID |
${entries.reverse().map(e => `
| ${formatDate(e.timestamp)} |
${e.action} |
${e.skill || e.file || e.job || e.plugin || e.job_id || '-'} |
${e.id || '-'} |
`).join('')}
${entries.length} entries
`;
} catch (err) {
document.getElementById('auditEntries').innerHTML = `âš
${escapeHtml(err.message)}
`;
}
}