Loading…
{{ pendingCount }} pending registration{{ pendingCount > 1 ? 's' : '' }} awaiting approval
Review →
📢 Announcements
No announcements.
Total Events
{{ events.length }}
Active Now
{{ activeEvents.length }}
My Total Hours
{{ totalHours }}
Events Attended
{{ uniqueEventsCount }}
0?'pending-users':'users')">
Members ({{ pendingCount }} pending)
{{ users.length }}
Active Events
No active events right now.
{{ ev.name }}
{{ ev.currently_present }} checked in
Upcoming
{{ ev.name }}
{{ ev.event_type_name }}
Upcoming
No events.
No check-ins found.
Select an event above to view its report.
{{ eventReport.parentName || eventReport.event.name }}
Multi-Day Event Summary
Sessions
{{ eventReport.children.length }}
Total Attendees
{{ Object.keys(eventReport.memberTotals).length }}
Total Hours
{{ minsToHours(eventReport.grandTotalMins) }}
| Member | Sessions | Total Hours |
|---|---|---|
| {{ name }} | {{ mt.sessions }} | {{ minsToHours(mt.minutes) }} |
Date
{{ eventReport.children[eventReport.activeChildIdx].event.event_date||'—' }}
Attendees
{{ eventReport.children[eventReport.activeChildIdx].attendees.length }}
Total Hours
{{ minsToHours(eventReport.children[eventReport.activeChildIdx].total_minutes) }}
| Member | Role | Check In | Check Out | Hours |
|---|---|---|---|---|
| {{ a.name }} | {{ a.roles||'—' }} | {{ fmtDatetime(a.first_in) }} | Still present{{ fmtDatetime(a.last_out) }} | {{ minsToHours(a.total_minutes) }} (running) |
Date
{{ eventReport.event.event_date }}
Attendees
{{ eventReport.attendees.length }}
Total Hours
{{ minsToHours(eventReport.total_minutes) }}
Still Present
{{ eventReport.attendees.filter(a=>a.still_present>0).length }}
| Member | Roles | Check In | Check Out | Hours |
|---|---|---|---|---|
| {{ a.name }} | {{ a.roles||'—' }} | {{ fmtDatetime(a.first_in) }} | Still present{{ fmtDatetime(a.last_out) }} | {{ minsToHours(a.total_minutes) }} (running) |
1
Import Events
Paste or upload a CSV. Columns:
Name, Date (YYYY-MM-DD), Start Time (HH:MM), End Time (HH:MM), Location, Event Type{{ eventImportParsed.length }} events ready
| Name | Date | Time | Location | Type |
|---|---|---|---|---|
| {{ e.name }} | {{ e.event_date }} | {{ e.start_time }}–{{ e.end_time }} | {{ e.location||'—' }} | {{ e.event_type||'—' }} |
Results: {{ eventImportResults.filter(r=>r.status==='imported').length }} imported, {{ eventImportResults.filter(r=>r.status==='skipped').length }} skipped, {{ eventImportResults.filter(r=>r.status==='error').length }} errors
{{ r.status==='imported'?'✓':r.status==='skipped'?'—':'✗' }}
{{ r.name }} {{ r.event_date }}
ID: {{ r.id }}
{{ r.error }}
2
Import Check-ins
Columns:
Member Email (or First Last), Role, Check-in Time (YYYY-MM-DD HH:MM), Check-out Time{{ checkinImportParsed.length }} check-ins ready
| Event | Member | Role | Check-in | Check-out |
|---|---|---|---|---|
| {{ c.event_name }} | {{ c.member }} | {{ c.role||'—' }} | {{ c.checked_in_at }} | {{ c.checked_out_at||'—' }} |
Results: {{ checkinImportResults.filter(r=>r.status==='imported').length }} imported, {{ checkinImportResults.filter(r=>r.status==='error').length }} errors
{{ r.status==='imported'?'✓':'✗' }}
{{ r.member }} @ {{ r.event_name }}
{{ r.error }}
{{ approvedUsers.length }} member{{ approvedUsers.length===1?'':'s' }}
No members match.
No pending members.
No credentials assigned yet.
Forms module coming soon.
Documents module coming soon.
No events available.
{{ ev.name }}
{{ ev.description }}
{{ ev.currently_present }} attending
No attendance history yet.
Events attended
{{ uniqueEventsCount }}
Hours logged
{{ totalHours }}
Active now
{{ myOpenCheckins.length }}
{{ ci.event_name }}
{{ ci.parent_event_name }}
{{ fmtDatetime(ci.checked_in_at) }}
· Out {{ fmtDatetime(ci.checked_out_at) }} · {{ duration(ci.checked_in_at,ci.checked_out_at) }}
Active
No data yet.
No data yet.
Select a member to view their attendance history.
Events attended
{{ new Set(memberHistoryCheckins.map(c=>c.event_id)).size }}
Total hours
{{ minsToHours(memberHistoryCheckins.filter(c=>c.checked_out_at).reduce((s,c)=>s+Math.round((new Date(c.checked_out_at)-new Date(c.checked_in_at))/60000),0)) }}
{{ ci.event_name }}
{{ ci.parent_event_name }}
{{ fmtDatetime(ci.checked_in_at) }}
· Out {{ fmtDatetime(ci.checked_out_at) }} · {{ duration(ci.checked_in_at,ci.checked_out_at) }}
Active
{{ ci.user_roles }}
No attendance records for this member.
{{ initials(auth.name) }}
{{ auth.name }}
{{ auth.email }}
Account
Contact & Details
Radio