fix: pres_mgmt session search now includes presenter and presentation names

Previously, searching by presenter name in pres_mgmt returned no results
because event_presenter_li_qry_str / event_presentation_li_qry_str were
never requested or stored.

Changes:
- ae_types.ts: add event_presentation_li_qry_str + event_presenter_li_qry_str
  to ae_EventSession interface
- db_events.ts: same two fields added to Session Dexie interface
- ae_events__event_session.ts:
  * add ft_presentation_search_qry_str param
  * auto-upgrade view to 'alt' when either ft_presenter or ft_presentation
    search is used (backend requires v_event_session_w_file_count for these)
  * add both fields to properties_to_save so they persist to Dexie cache
- +page.svelte (pres_mgmt):
  * pass ft_presenter_search_qry_str + ft_presentation_search_qry_str in API call
  * local IDB fast path now checks both new fields
  * client-side filter guard also checks both new fields
This commit is contained in:
Scott Idem
2026-05-15 12:39:37 -04:00
parent f297c7c018
commit ad6b390fd9
4 changed files with 44 additions and 5 deletions

View File

@@ -250,12 +250,20 @@ async function handle_search_refresh(params: any) {
const qry_string = (
session.default_qry_str ?? ''
).toLowerCase();
const presenter_qry = (
session.event_presenter_li_qry_str ?? ''
).toLowerCase();
const presentation_qry = (
session.event_presentation_li_qry_str ?? ''
).toLowerCase();
const match =
name.includes(qry_str) ||
code.includes(qry_str) ||
description.includes(qry_str) ||
qry_string.includes(qry_str);
qry_string.includes(qry_str) ||
presenter_qry.includes(qry_str) ||
presentation_qry.includes(qry_str);
if (!match) return false;
}
@@ -298,6 +306,8 @@ async function handle_search_refresh(params: any) {
event_id: event_id,
fulltext_search_qry_str: qry_str || null,
like_search_qry_str: qry_str || null,
ft_presenter_search_qry_str: qry_str || null,
ft_presentation_search_qry_str: qry_str || null,
location_name: location_name || null,
enabled: pres_mgmt_loc.current.qry_enabled ?? 'enabled',
hidden: pres_mgmt_loc.current.qry_hidden ?? 'not_hidden',
@@ -326,11 +336,19 @@ async function handle_search_refresh(params: any) {
const qry_string = (
session.default_qry_str ?? ''
).toLowerCase();
const presenter_qry = (
session.event_presenter_li_qry_str ?? ''
).toLowerCase();
const presentation_qry = (
session.event_presentation_li_qry_str ?? ''
).toLowerCase();
const match =
name.includes(qry_str) ||
code.includes(qry_str) ||
description.includes(qry_str) ||
qry_string.includes(qry_str);
qry_string.includes(qry_str) ||
presenter_qry.includes(qry_str) ||
presentation_qry.includes(qry_str);
if (!match) return false;
}
return true;