diff --git a/src/lib/views/SummaryPanel.svelte b/src/lib/views/SummaryPanel.svelte index ed87151..b8eb7de 100644 --- a/src/lib/views/SummaryPanel.svelte +++ b/src/lib/views/SummaryPanel.svelte @@ -94,6 +94,35 @@ await meetings.attachEvent(m.id, eventId); } + // ---- Search/date filter for the event picker (a real mailbox import can + // be thousands of events) — defaults to the recording's own date since + // that's almost always the event being linked. ---- + let eventLinkSearch = $state(""); + let eventLinkDateFilter = $state(""); + $effect(() => { + const m = meetings.selected; + eventLinkDateFilter = m ? eventLocalYmd(m.started_at) : ""; + eventLinkSearch = ""; + }); + + function eventLocalYmd(unixSecs: number | null): string { + if (!unixSecs) return ""; + const d = new Date(unixSecs * 1000); + return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; + } + + let filteredLinkEvents = $derived( + calendar.events.filter((ev) => { + if (eventLinkDateFilter && eventLocalYmd(ev.starts_at) !== eventLinkDateFilter) return false; + if ( + eventLinkSearch && + !(ev.subject ?? "").toLowerCase().includes(eventLinkSearch.toLowerCase()) + ) + return false; + return true; + }), + ); + // ---- Attendee-aware speaker naming (T6.5, FR-SPK-4) ---- const NEW_NAME = "__new__"; let addingNameFor = $state(null); @@ -275,11 +304,15 @@ {#if !meetings.selected}

Select a meeting to link it to a calendar event.

{:else} +
+ + +