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.
**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
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
class="bg-surface-100-900 border-surface-200-800 border-b">
<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>
<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>
<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>
<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>
<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>
<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>
</tr>
</thead>
@@ -814,13 +820,15 @@ function export_json() {
<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">
<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(
m.start_time
).toLocaleDateString()}
</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(
m.start_time
).toLocaleTimeString(
@@ -832,19 +840,24 @@ function export_json() {
)}
</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)}
</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}
</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'}>
{m.real_participant_count}
</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}
<span class="opacity-40"></span>
{:else}
@@ -1076,20 +1089,24 @@ function export_json() {
<tr
class="border-surface-200-800 border-b">
<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>
<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>
</tr>
</thead>
<tbody>
{#each meeting.real_participants as participant (participant.displayName)}
<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">
<td class="py-1"
<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">
<td
style="padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem;"
>{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(
participant.role
)}</td>