Jitsi Meeting Reports
{#if $ae_loc.edit_mode}
{/if}
{#if $ae_loc.edit_mode && $ae_loc.trusted_access}
{#if show_url_builder}
{/if}
{/if}
{#if $ae_loc.edit_mode && (exclude_uuids.length > 0 || known_meetings.length > 0)}
Active Exclusions
Excluded Novi UUIDs ({exclude_uuids.length})
{#each exclude_uuids as uuid (uuid)}
{uuid}
{/each}
Known Meeting Names ({known_meetings.length})
{#each known_meetings as meeting_name (meeting_name)}
{meeting_name}
{/each}
{/if}
{#if meetings_loading}
{#each [1, 2, 3, 4] as _, i (i)}
{/each}
{:else if meetings_error}
Error Loading Reports
An error occurred while fetching the meeting reports:
{meetings_error}
{:else}
{#if meetings_all.length > 0}
{summary.count}
Meetings Shown
{summary.total_participants}
Total Participants
{summary.avg_duration}
Avg Duration
{summary.total_duration}
Total Duration
{/if}
{#if group_by_room}
{#if meetings_grouped.size > 0}
{#each meetings_grouped as [room_name, sessions] (room_name)}
{@const stats = room_stats(sessions)}
{#if is_room_open(room_name)}
| Date |
Start |
End |
Duration |
# |
Participants |
{#each sessions as m (m.meeting_id)}
{@const mods = m.real_participants.filter((p) => p.role === 'moderator')}
{@const others = m.real_participants.filter((p) => p.role !== 'moderator')}
{@const all_names = m.real_participants.map((p) => `${p.displayName} (${p.role})`).join('\n')}
{@const participant_copy_text = build_participant_copy_text(m.real_participants)}
|
{new Date(
m.start_time
).toLocaleDateString()}
|
{new Date(
m.start_time
).toLocaleTimeString(
[],
{
hour: '2-digit',
minute: '2-digit'
}
)}
|
{compute_end_time(m.start_time, m.final_duration)}
|
{m.final_duration}
|
{m.real_participant_count}
|
{#if m.real_participant_count === 0}
—
{:else}
{#if mods.length > 0}
Mod:
{mods.map((p) => p.displayName).join(', ')}
{/if}
{#if others.length > 0}
{others.map((p) => p.displayName).join(', ')}
{/if}
{/if}
|
{/each}
{/if}
{/each}
{:else}
{#if meetings_all.length > 0}
No meetings match the current filters
Try adjusting the filters or clearing the date
range.
{:else}
No Meeting Reports Found
There are no Jitsi activity logs to display.
{/if}
{/if}
{:else}
{#if meetings_filtered.length > 0}
{#each meetings_filtered as meeting (meeting.meeting_id)}
toggle_accordion(meeting.meeting_id)}>
{meeting.room_name}
{new Date(meeting.start_time).toLocaleString()}
{#if meeting.final_duration && meeting.final_duration !== '00:00:00'}
→{compute_end_time(meeting.start_time, meeting.final_duration)}
{/if}
{meeting.final_duration}
{meeting.real_participant_count}
{meeting.final_duration}
{meeting.real_participant_count}
{meeting.real_participant_count === 1
? 'participant'
: 'participants'}
{#if open_accordions[meeting.meeting_id]}
Event Timeline
{#if meeting.events && meeting.events.length > 0}
{#each meeting.events as event, i (i)}
-
[{new Date(
event.timestamp
).toLocaleTimeString()}]
{ae_util.to_title_case(
event.action.replace(
'jitsi_meeting_',
''
)
)}
{#if event.details?.full_name}
— {event
.details
.full_name}
{/if}
{/each}
{:else}
No discrete events recorded.
{/if}
Final Participants ({meeting.real_participant_count})
{#if meeting.real_participants && meeting.real_participants.length > 0}
| Name |
Role |
{#each meeting.real_participants as participant (participant.displayName)}
| {participant.displayName} |
{ae_util.to_title_case(
participant.role
)} |
{/each}
{:else}
No participant data available.
{/if}
{/if}
{/each}
{:else}
{#if meetings_all.length > 0}
No meetings match the current filters
Try lowering the minimum participants or clearing
the date range.
{:else}
No Meeting Reports Found
There are no Jitsi activity logs to display.
{/if}
{/if}
{/if}
{/if}