Commit Graph

34 Commits

Author SHA1 Message Date
Scott Idem
ad6b390fd9 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
2026-05-15 12:39:37 -04:00
Scott Idem
c9e2284758 Badges: per-badge locked font sizes via cfg_json
Allows coordinators to pre-tune font sizes for attendees with long names
and have those sizes apply automatically on every kiosk, not just one machine.

- ae_types.ts: add cfg_json to ae_EventBadge interface
- db_events.ts: add cfg_json to Badge Dexie interface
- ae_events__event_badge.ts: add cfg_json to properties_to_save so it is
  persisted to IndexedDB on load and returned by the API
- print/+page.svelte: on first load per badge, read cfg_json.font_sizes and
  initialize font_size_name/title/affiliations/location state from saved values
  (guarded by _font_sizes_loaded_for to avoid clobbering user adjustments on
  background liveQuery refreshes)
- ae_comp__badge_print_controls.svelte: add lock_font_sizes() and
  reset_font_sizes_to_auto() functions; add Lock Sizes / Auto reset UI in the
  Staff adjustments section (trusted-only); button shows warning style when
  sizes are unsaved vs success when locked; status indicator shows what is
  currently locked

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 21:47:34 -04:00
Scott Idem
34bf823987 chore(badges): save in-progress changes — background_image_path, cfg_json support, template form TS fix, view boolean fixes 2026-04-07 13:57:02 -04:00
Scott Idem
fface58751 fix: add default_qry_str to db_events Event interface, remove incorrect global augment
The field exists on the DB object but was missing from the TypeScript interface,
causing a false error in recovery_meetings search. Added it to db_events.ts where
it belongs. Removed the incorrect global DOM Event augment from the temp augments
file (was patching the wrong interface).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 16:04:49 -04:00
Scott Idem
a8f3c29b9f Last round of prettier: npx prettier --write src/ 2026-03-24 13:27:40 -04:00
Scott Idem
6662e82f40 feat: leads re-enable flow — detect removed leads on scan + Remove/Restore buttons
- QR scanner (single + multi): detect previously-removed leads via IDB enable flag;
  route to 'reenable' state instead of duplicate error; offer Re-activate button
- API fallback: if create fails and no IDB record, search API for disabled tracking
  record by event_exhibit_id + event_badge_id (adds qry_badge_id param to
  search__exhibit_tracking)
- Lead detail page: Replace raw enable checkbox with Remove Lead (two-click confirm,
  navigates back after) and Restore Lead card (shown when enable is falsy)
- Fix flash of disabled records in leads list: filter !enable in both filtered_lead_li
  derived and local IDB fast-path in handle_search_refresh
- eslint.config.js: disable svelte/no-navigation-without-resolve (no base path configured)
- Also includes _random field annotation cleanup (db_events, ae_types), iframe layout
  fixes, badge view tweaks, test updates, and doc updates from prior session

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 18:18:10 -04:00
Scott Idem
6ca2314472 Badges: fix print page svelte-check error — extract print CSS to static file
Svelte 5 does not support <style> or conditional {#if} blocks wrapping
<style> tags inside <svelte:head>. The parser treats them as raw-text
elements and reports '<script> was left open' at EOF.

Fix:
- Print media CSS moved to static/ae-print-badge.css (plain static file,
  no framework magic needed — all selectors target global elements).
- svelte:head now uses a simple <link> to that file.
- $effect injects the @page size dynamically per template layout field,
  avoiding the Svelte 5 parser limitation for conditional style injection.
- Badge_template interface in db_events.ts: added cfg_json / data_json
  (standard Aether object fields that were missing from the type).
2026-03-16 13:50:28 -04:00
Scott Idem
32e9550ca2 feat(badges): layout CSS system — data-layout attribute, @page injection, style_href
Two compiled layout CSS files in src/lib/ae_events/badges/css/:
  - badge_layout_epson_4x5_fanfold.css — 4"×5" per side, Epson ColorWorks C3500
    fanfold duplex; preferred for general conference use (ISHLT, demos)
  - badge_layout_zebra_zc10l_pvc.css — 3.5"×5.5" PVC card, Zebra ZC10L,
    single-sided (pair with duplex=0 on template)

Rules scoped under [data-layout="..."] on the wrapper — beats Tailwind utility
class specificity without !important. Vite hot-reloads these in dev.

Badge component: add data-layout attribute from template.layout field; import
both layout CSS files (falls back to Tailwind 4"×6" defaults if layout unset).

Print page svelte:head: inject @page paper-size rule per layout code
(@page cannot use attribute selectors so it must be dynamic). Also wire
style_href as a <link> for per-event external client branding CSS.

db_events.ts Badge_template interface: add style_href and duplex fields.
MODULE doc: update layout codes table with badge_4x5_fanfold entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 16:53:32 -05:00
Scott Idem
88bc18cf15 fix(core): resolve 68 compiler errors and stabilize Svelte 5 reactivity
- Fixed 'Captured initial value' warnings in 65+ components by implementing
  proper sync effects with 'untrack' and derived states.
- Hardened Event Settings JSON editors using a temporary string-buffer pattern
  to safely decouple object-based data from CodeMirror's string requirements.
- Resolved strict TypeScript mismatches across core routes (Accounts, Sites, etc.)
  and improved property indexing safety in views.
- Patched Flowbite-Svelte Drawer transitions for Svelte 5 compatibility using
  prop spreading.
- Added comprehensive safety comments to high-risk reactivity blocks.
- Synchronized 'ae_types.ts' with V3 backend models.
2026-02-08 16:05:35 -05:00
Scott Idem
d53a2789ae refactor: improve event file loader stability and ID integrity
- Implemented a safety net in '_refresh_file_li_background' to inject missing 'for_id' and 'for_type' from query context.
- Fixed a bug in '_process_generic_props' where 'null' random IDs could overwrite clean IDs.
- Enabled initial debugging logs for event file processing.
2026-02-06 17:25:42 -05:00
Scott Idem
db34da66dc Standardize Event DB/Types and fix critical UI type mismatches across Badges, Journals, and Locations modules 2026-02-04 17:57:42 -05:00
Scott Idem
bc30724628 feat(events): reorganize badge admin tools and enhance dependency tracking
- Migrated 'Add New Badge' and 'Upload Badge List' to centralized Event Settings hub.
- Secured Admin Tools visibility with Administrator access and Edit Mode requirements.
- Restored and modernized Badge Template management route with Svelte 5 runes.
- Patched 'Archive' and 'Session' database interfaces to resolve compiler errors.
- Added project-wide dependency comments to key interfaces (Archive, Badge, Session) to prevent cascading change regressions.
- Fixed duplicate import errors in the Settings page.
2026-02-04 14:04:44 -05:00
Scott Idem
8680ad89c1 refactor(badges): complete field normalization and search mapping
- Finalized the rename of 'default_qry_string' to 'default_qry_str' across the Badge library, Dexie schema, and API documentation.
- Synchronized all reactive filtering in '+page.svelte' with the standardized field names to restore full search functionality.
- Verified that text search, affiliations, and types now correctly map to whitelisted backend fields.
2026-01-27 18:04:08 -05:00
Scott Idem
5219bd0c9c refactor(badges): fix text search and standardize field mapping
- Renamed 'default_qry_string' to 'default_qry_str' across the Badge interface, Dexie schema, and API logic to resolve 400 'Unauthorized search field' errors.
- Synchronized local Fast Path filtering with the correct database field names.
- Hardened the reactive search pattern in '+page.svelte' to ensure end-to-sync consistency between local and background results.
2026-01-27 17:53:05 -05:00
Scott Idem
ac14721bd0 fix(idaa): audit and harden IDAA module components and types
- Updated ae_types.ts with missing IDAA-specific fields for Archives and Events (topic_name, archive_on, contact_li_json, etc.) using snake_case.
- Refactored bulletin board post filter to safely handle null archive_on dates.
- Fixed missing 'data' prop assignment in bulletin board list component to resolve type error.
- Corrected core_func.download_export__obj_type method name in recovery meetings export.
- Hardened safety checks for contact_li_json in recovery meetings view logic to prevent null property access.
- Mapped Jitsi meeting event data to internal snake_case variables and fixed input type assignments.
- Updated project documentation (TODO, GEMINI.md, .ae_brief) to reflect IDAA hardening progress.
2026-01-26 17:50:27 -05:00
Scott Idem
5ee17c2925 The badge view ID now correctly renders a badge! This took way too long. So many $ were removed and things missed. 2026-01-16 13:07:28 -05:00
Scott Idem
bb6b3b7352 The sorting now works and some missing fields were added. 2026-01-05 18:29:41 -05:00
Scott Idem
d99e9ee1b0 refactor(events): Centralize editable fields for event objects
- Implemented a whitelist for editable fields for the 'event' object type to prevent sending read-only fields in POST/PATCH requests.
- Created a new file  to define the editable fields.
- Modified  and  to use this whitelist.
- Removed the temporary cleaning logic from the event settings page.
- Corrected Svelte 5  to  in event settings components.
- Updated Dexie interfaces for badge, badge_template, and device to use string IDs.
2025-11-19 12:12:29 -05:00
Scott Idem
0987cd6ad9 style: Apply Prettier formatting with 4-space indentation
Applied consistent code formatting across the project using Prettier, now configured to use 4-space indentation instead of tabs.
2025-11-18 18:40:50 -05:00
Scott Idem
c8c19a35a6 refactor: Use random IDs as primary keys in IDB
This commit refactors the IndexedDB schema to use the string-based random IDs as primary keys instead of the numeric auto-incrementing IDs. This change affects the 'badge' table and all related components that interact with it. The badge detail page and list component have been updated to use the new primary key for more efficient and consistent data retrieval.
2025-11-18 17:49:16 -05:00
Scott Idem
7e1eaba3bc feat: Migrate ESLint to flat config and resolve initial linting errors
Migrated the ESLint configuration to the new flat config format ()
and addressed several initial linting errors.

Key changes include:
- Updated ESLint configuration to treat  as warnings instead of errors.
- Fixed  errors in  by declaring  and .
- Corrected  error in  by using  instead of an out-of-scope .
- Resolved  error in  by replacing the undefined  directive with the  component.
- Addressed  errors in  by replacing  with  and  with .
- Fixed  errors in  by importing necessary modules (, , ) and adding missing props (, , , , ).
2025-11-17 18:46:54 -05:00
Scott Idem
a3b37a5df4 refactor: Standardize data processing and update to Svelte 5 runes
This commit introduces a major refactoring of the data processing logic across multiple modules (events, archives, posts, sponsorships) to use a standardized pattern with . This improves consistency and maintainability.

Key changes:
- Replaced module-specific data processing with a generic helper.
- Removed deprecated  functions.
- Updated Svelte components to leverage the new Svelte 5 runes, simplifying state management.
- Fixed linting errors and updated test configurations.
- Added .
2025-11-17 16:38:54 -05:00
Scott Idem
74cc5c5d0d Work on badge printing and the actual badge layout. 2025-10-09 19:26:35 -04:00
Scott Idem
bad5da3ddc More serious work on badge printing. Working on the templates and actually implementing the printable badge. 2025-10-07 19:39:53 -04:00
Scott Idem
b24262b4ab Could not sleep. Working on the search for badges. 2025-10-07 03:25:02 -04:00
Scott Idem
c3992d8711 Removing old code. Standardizing the event related IDB table names. Getting badge printing ready again.... 2025-10-06 14:04:46 -04:00
Scott Idem
cd03d9e488 Updating the badge printing module. It needs a bit of work. Removing the old versions of functions. 2025-10-06 13:54:20 -04:00
Scott Idem
6c79be7179 Now with better Zoom info support. 2025-07-14 21:11:58 -04:00
Scott Idem
f8461f367e More work on the BB Posts for IDAA. Can now edit, update, and create now posts. 2025-07-02 13:52:30 -04:00
Scott Idem
dbbd8209cc More work on updating Archives and Posts to use tmp_sort_x and other changes. 2025-06-04 14:04:51 -04:00
Scott Idem
ed89776a60 Minor changes to style and related for IDAA recovery meeting status 2025-02-04 12:34:49 -05:00
Scott Idem
75d7a502f0 Adding the new event status for IDAA. 2025-02-04 12:01:32 -05:00
Scott Idem
e4485f2bda Fixes for layout and recurring pattern. 2024-11-20 18:36:24 -05:00
Scott Idem
31272a8985 Moved library files around. Trying to keep things organized... 2024-11-19 13:29:05 -05:00