Tighten Jitsi report table padding

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Scott Idem
2026-05-06 15:05:05 -04:00
parent c289268550
commit 8b7597906f
2 changed files with 37 additions and 18 deletions

View File

@@ -561,6 +561,8 @@ Collapsible panel, visible to `trusted_access` users only. Generates properly-fo
Trusted Access users now get a footer link on the Video Conferences page that jumps back to the Jitsi Reports page. It preserves the current iframe context so the staff workflow stays inside the Novi embed. Trusted Access users now get a footer link on the Video Conferences page that jumps back to the Jitsi Reports page. It preserves the current iframe context so the staff workflow stays inside the Novi embed.
**Future idea:** make that link include a `room=` query param for the current meeting so Jitsi Reports can auto-filter to that meeting instance, and have Reset clear that param again.
### Export ### Export
CSV and JSON export buttons in the page header export the **currently filtered + exclusion-applied** data set. CSV and JSON export buttons in the page header export the **currently filtered + exclusion-applied** data set.

View File

@@ -787,22 +787,28 @@ function export_json() {
<tr <tr
class="bg-surface-100-900 border-surface-200-800 border-b"> class="bg-surface-100-900 border-surface-200-800 border-b">
<th <th
class="px-3 py-2 text-left font-medium whitespace-nowrap opacity-60" class="text-left font-medium whitespace-nowrap opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
>Date</th> >Date</th>
<th <th
class="px-3 py-2 text-left font-medium whitespace-nowrap opacity-60" class="text-left font-medium whitespace-nowrap opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
>Start</th> >Start</th>
<th <th
class="px-3 py-2 text-left font-medium whitespace-nowrap opacity-60" class="text-left font-medium whitespace-nowrap opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
>End</th> >End</th>
<th <th
class="px-3 py-2 text-left font-medium whitespace-nowrap opacity-60" class="text-left font-medium whitespace-nowrap opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
>Duration</th> >Duration</th>
<th <th
class="px-3 py-2 text-center font-medium whitespace-nowrap opacity-60" class="text-center font-medium whitespace-nowrap opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
title="Participant count (after staff exclusion)">#</th> title="Participant count (after staff exclusion)">#</th>
<th <th
class="px-3 py-2 text-left font-medium opacity-60" class="text-left font-medium opacity-60"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
>Participants</th> >Participants</th>
</tr> </tr>
</thead> </thead>
@@ -814,13 +820,15 @@ function export_json() {
<tr <tr
class="border-surface-200-800 bg-surface-50-900 text-surface-950 hover:bg-surface-100-900 dark:bg-surface-900 dark:text-surface-50 border-b transition-colors duration-200"> class="border-surface-200-800 bg-surface-50-900 text-surface-950 hover:bg-surface-100-900 dark:bg-surface-900 dark:text-surface-50 border-b transition-colors duration-200">
<td <td
class="px-3 py-2 whitespace-nowrap"> class="whitespace-nowrap"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;">
{new Date( {new Date(
m.start_time m.start_time
).toLocaleDateString()} ).toLocaleDateString()}
</td> </td>
<td <td
class="px-3 py-2 whitespace-nowrap"> class="whitespace-nowrap"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;">
{new Date( {new Date(
m.start_time m.start_time
).toLocaleTimeString( ).toLocaleTimeString(
@@ -832,19 +840,24 @@ function export_json() {
)} )}
</td> </td>
<td <td
class="px-3 py-2 whitespace-nowrap"> class="whitespace-nowrap"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;">
{compute_end_time(m.start_time, m.final_duration)} {compute_end_time(m.start_time, m.final_duration)}
</td> </td>
<td <td
class="px-3 py-2 font-mono whitespace-nowrap"> class="font-mono whitespace-nowrap"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;">
{m.final_duration} {m.final_duration}
</td> </td>
<td <td
class="px-3 py-2 text-center" class="text-center"
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;"
title={all_names || 'No participants'}> title={all_names || 'No participants'}>
{m.real_participant_count} {m.real_participant_count}
</td> </td>
<td class="px-3 py-2" title={all_names || 'No participants'}> <td
title={all_names || 'No participants'}
style="padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem;">
{#if m.real_participant_count === 0} {#if m.real_participant_count === 0}
<span class="opacity-40"></span> <span class="opacity-40"></span>
{:else} {:else}
@@ -1076,20 +1089,24 @@ function export_json() {
<tr <tr
class="border-surface-200-800 border-b"> class="border-surface-200-800 border-b">
<th <th
class="py-1 text-left font-medium opacity-60" class="text-left font-medium opacity-60"
style="padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem;"
>Name</th> >Name</th>
<th <th
class="py-1 text-left font-medium opacity-60" class="text-left font-medium opacity-60"
style="padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem;"
>Role</th> >Role</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each meeting.real_participants as participant (participant.displayName)} {#each meeting.real_participants as participant (participant.displayName)}
<tr <tr
class="border-surface-200-800 bg-surface-50-900 text-surface-950 hover:bg-surface-100-900 dark:bg-surface-900 dark:text-surface-50 border-b transition-colors duration-200"> class="border-surface-200-800 bg-surface-50-900 text-surface-950 hover:bg-surface-100-900 dark:bg-surface-900 dark:text-surface-50 border-b transition-colors duration-200">
<td class="py-1" <td
style="padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem;"
>{participant.displayName}</td> >{participant.displayName}</td>
<td class="py-1" <td
style="padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem;"
>{ae_util.to_title_case( >{ae_util.to_title_case(
participant.role participant.role
)}</td> )}</td>