Tighten Jitsi report table padding
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user