/* ═══ CYPHER-HR Reports Module ═══ */ const Reports = { async adminView() { try { const employees = await App.api('/api/employees'); return `
Loading...
'; try { if (type === 'detailed') { const params = new URLSearchParams(); const empEl = document.getElementById('reportEmployee'); if (empEl && empEl.value) params.set('user_id', empEl.value); const start = parseDateInput('reportStart'); const end = parseDateInput('reportEnd'); const status = document.getElementById('reportStatus')?.value; if (start) params.set('start_date', start); if (end) params.set('end_date', end); if (status) params.set('status', status); const data = await App.api(`/api/reports/detailed?${params}`); this.lastData = data; container.innerHTML = `No records found
' : `| Employee | Type | Start | End | Reason | Status | Department |
|---|---|---|---|---|---|---|
| ${r.first_name} ${r.last_name} | ${r.leave_type} | ${App.formatDate(r.start_date)} | ${App.formatDate(r.end_date)} | ${r.reason || '—'} | ${App.statusBadge(r.status)} | ${r.department || '—'} |
No records found
' : Object.entries(grouped).map(([name, monthData]) => `| Month | Approved | Rejected | Pending | Total |
|---|---|---|---|---|
| ${m} | ${a} | ${r2} | ${p} | ${a+r2+p} |