Refine Jitsi report edit-mode controls
This commit is contained in:
@@ -483,8 +483,7 @@ Both modes use the same filtered data set — switching views does not reset fil
|
||||
|
||||
| Filter | Default | Logic |
|
||||
| --- | --- | --- |
|
||||
| **Real meetings only** | off | Show only sessions where `real_participant_count >= 2` OR `duration > 5 min`. Applied **after** staff exclusion (see below). |
|
||||
| **Min. Participants** | 0 | Minimum `real_participant_count` to display a session. |
|
||||
| **Min. Participants** | 2 | Minimum `real_participant_count` to display a session. Used as the only size filter. |
|
||||
| **Room Name** | edit mode only | Case-insensitive substring match against `room_name`. Hidden unless AE global edit mode is on. |
|
||||
| **From / To** | last 60 days / today | Date range applied to `start_time`. "To" date includes the full end of day. |
|
||||
|
||||
|
||||
@@ -200,15 +200,13 @@ let meetings_enriched = $derived<MeetingReportEnriched[]>(
|
||||
let group_by_room = $state(true);
|
||||
|
||||
// --- Filter state ---
|
||||
let filter_real_only = $state(false);
|
||||
let filter_min_participants = $state(0);
|
||||
let filter_min_participants = $state(2);
|
||||
let filter_room_name = $state('');
|
||||
let filter_date_from = $state(default_filter_date_from);
|
||||
let filter_date_to = $state(default_filter_date_to);
|
||||
|
||||
let filters_are_modified = $derived(
|
||||
filter_real_only ||
|
||||
filter_min_participants !== 0 ||
|
||||
filter_min_participants !== 2 ||
|
||||
(filter_room_name !== '' && $ae_loc.edit_mode) ||
|
||||
show_excluded_uuids ||
|
||||
show_all_meetings ||
|
||||
@@ -217,8 +215,7 @@ let filters_are_modified = $derived(
|
||||
);
|
||||
|
||||
function reset_filters() {
|
||||
filter_real_only = false;
|
||||
filter_min_participants = 0;
|
||||
filter_min_participants = 2;
|
||||
filter_room_name = '';
|
||||
show_excluded_uuids = false;
|
||||
show_all_meetings = false;
|
||||
@@ -258,10 +255,6 @@ let meetings_filtered = $derived.by(() => {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (filter_real_only) {
|
||||
const dur_secs = parse_duration_seconds(m.final_duration);
|
||||
if (m.real_participant_count < 2 && dur_secs <= 300) return false;
|
||||
}
|
||||
if (m.real_participant_count < filter_min_participants) return false;
|
||||
if ($ae_loc.edit_mode && filter_room_name) {
|
||||
if (
|
||||
@@ -478,8 +471,8 @@ function export_json() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Jitsi URL Builder — trusted_access only -->
|
||||
{#if $ae_loc.trusted_access}
|
||||
<!-- Jitsi URL Builder — edit mode only -->
|
||||
{#if $ae_loc.edit_mode && $ae_loc.trusted_access}
|
||||
<div
|
||||
class="bg-surface-100-900 border-surface-200-800 overflow-hidden rounded-xl border">
|
||||
<button
|
||||
@@ -507,16 +500,6 @@ function export_json() {
|
||||
<!-- Filter bar -->
|
||||
<div
|
||||
class="bg-surface-100-900 border-surface-200-800 flex flex-row flex-wrap items-end gap-3 rounded-xl border p-3">
|
||||
<!-- Real meetings only toggle -->
|
||||
<label class="flex cursor-pointer items-center gap-2 self-end pb-1.5">
|
||||
<input
|
||||
type="checkbox"
|
||||
bind:checked={filter_real_only}
|
||||
class="checkbox checkbox-sm" />
|
||||
<span class="text-sm font-medium whitespace-nowrap"
|
||||
>Real meetings only</span>
|
||||
</label>
|
||||
<div class="bg-surface-200-800 hidden h-8 w-px self-end sm:block"></div>
|
||||
{#if $ae_loc.edit_mode}
|
||||
<label class="flex cursor-pointer items-center gap-2 self-end pb-1.5">
|
||||
<input
|
||||
@@ -600,7 +583,7 @@ function export_json() {
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if exclude_uuids.length > 0 || known_meetings.length > 0}
|
||||
{#if $ae_loc.edit_mode && (exclude_uuids.length > 0 || known_meetings.length > 0)}
|
||||
<div class="bg-surface-100-900 border-surface-200-800 rounded-xl border p-3">
|
||||
<div class="mb-2 text-xs tracking-wide uppercase opacity-50">
|
||||
Active Exclusions
|
||||
|
||||
Reference in New Issue
Block a user