Refine Jitsi participant copy
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -533,7 +533,7 @@ Shown above the meeting list when data is loaded. Stats reflect the **filtered +
|
||||
- **Total Duration** — sum of all session durations (HH:MM:SS)
|
||||
|
||||
In grouped view, each room header also shows its own subtotals (meeting count, unique participants by Novi UUID when available).
|
||||
Each meeting instance now includes a **Copy names** button so staff can grab the full participant list for pasting into follow-up reports.
|
||||
Each meeting instance keeps the full participant list visible; the **Copy names** button is edit-mode only so staff can grab the list for follow-up reports without exposing extra controls to normal viewers.
|
||||
|
||||
### Caching / Load Behavior
|
||||
|
||||
|
||||
@@ -811,7 +811,6 @@ function export_json() {
|
||||
{@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)}
|
||||
<tr
|
||||
class="border-surface-200-800 hover:bg-surface-100-900 border-b transition-colors duration-200">
|
||||
<td
|
||||
@@ -861,22 +860,24 @@ function export_json() {
|
||||
{others.map((p) => p.displayName).join(', ')}
|
||||
</div>
|
||||
{/if}
|
||||
<button
|
||||
type="button"
|
||||
onclick={() =>
|
||||
copy_participants(
|
||||
m.meeting_id,
|
||||
m.real_participants
|
||||
)}
|
||||
class="inline-flex items-center gap-1 rounded border border-surface-200-800 bg-surface-100-900 px-2 py-1 text-xs font-medium transition-colors hover:bg-surface-200-800"
|
||||
title="Copy participants to clipboard">
|
||||
<span
|
||||
class="fas fa-copy"
|
||||
aria-hidden="true"></span>
|
||||
{copied_participants_meeting_id === m.meeting_id
|
||||
? 'Copied'
|
||||
: 'Copy names'}
|
||||
</button>
|
||||
{#if $ae_loc.edit_mode}
|
||||
<button
|
||||
type="button"
|
||||
onclick={() =>
|
||||
copy_participants(
|
||||
m.meeting_id,
|
||||
m.real_participants
|
||||
)}
|
||||
class="inline-flex items-center gap-1 rounded border border-surface-200-800 bg-surface-100-900 px-2 py-1 text-xs font-medium transition-colors hover:bg-surface-200-800"
|
||||
title="Copy participants to clipboard">
|
||||
<span
|
||||
class="fas fa-copy"
|
||||
aria-hidden="true"></span>
|
||||
{copied_participants_meeting_id === m.meeting_id
|
||||
? 'Copied'
|
||||
: 'Copy names'}
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</td>
|
||||
@@ -1050,22 +1051,24 @@ function export_json() {
|
||||
class="text-xs tracking-wide uppercase opacity-40">
|
||||
Final Participants ({meeting.real_participant_count})
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
onclick={() =>
|
||||
copy_participants(
|
||||
meeting.meeting_id,
|
||||
meeting.real_participants
|
||||
)}
|
||||
class="inline-flex items-center gap-1 rounded border border-surface-200-800 bg-surface-100-900 px-2 py-1 text-xs font-medium transition-colors hover:bg-surface-200-800"
|
||||
title="Copy participants to clipboard">
|
||||
<span
|
||||
class="fas fa-copy"
|
||||
aria-hidden="true"></span>
|
||||
{copied_participants_meeting_id === meeting.meeting_id
|
||||
? 'Copied'
|
||||
: 'Copy names'}
|
||||
</button>
|
||||
{#if $ae_loc.edit_mode}
|
||||
<button
|
||||
type="button"
|
||||
onclick={() =>
|
||||
copy_participants(
|
||||
meeting.meeting_id,
|
||||
meeting.real_participants
|
||||
)}
|
||||
class="inline-flex items-center gap-1 rounded border border-surface-200-800 bg-surface-100-900 px-2 py-1 text-xs font-medium transition-colors hover:bg-surface-200-800"
|
||||
title="Copy participants to clipboard">
|
||||
<span
|
||||
class="fas fa-copy"
|
||||
aria-hidden="true"></span>
|
||||
{copied_participants_meeting_id === meeting.meeting_id
|
||||
? 'Copied'
|
||||
: 'Copy names'}
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
{#if meeting.real_participants && meeting.real_participants.length > 0}
|
||||
<table class="w-full text-sm">
|
||||
|
||||
Reference in New Issue
Block a user