async function renderAudit() { const content = document.getElementById('pageContent'); content.innerHTML = `
`; await refreshAudit(); } let _allAuditEntries = []; async function refreshAudit() { const container = document.getElementById('auditTable'); container.innerHTML = '
'; try { const r = await api.getAudit(200); _allAuditEntries = r.entries || []; applyAuditFilter(); } catch (err) { container.innerHTML = `
âš 
${escapeHtml(err.message)}
`; } } function applyAuditFilter() { const q = (document.getElementById('auditFilter').value || '').toLowerCase(); const action = document.getElementById('auditActionFilter').value; let filtered = _allAuditEntries; if (q) filtered = filtered.filter(e => JSON.stringify(e).toLowerCase().includes(q)); if (action) filtered = filtered.filter(e => e.action === action); const container = document.getElementById('auditTable'); if (filtered.length === 0) { container.innerHTML = '
📭
No audit entries found
'; return; } container.innerHTML = `
${filtered.slice(0, 100).map(e => ` `).join('')}
TimeActionDetailsID
${formatDate(e.timestamp)} ${e.action} ${e.skill ? `${escapeHtml(e.skill)}` : ''}${e.file ? `File: ${escapeHtml(e.file)}` : ''}${e.job ? `Job: ${escapeHtml(e.job)}` : ''}${e.plugin ? `Plugin: ${escapeHtml(e.plugin)}` : ''} ${e.id || ''}
${filtered.length > 100 ? 'Showing 100 of ' : ''}${filtered.length} entries
`; } function clearAuditFilters() { document.getElementById('auditFilter').value = ''; document.getElementById('auditActionFilter').value = ''; applyAuditFilter(); }