Cross-event training attendees index + shared registrant roster partial - #2101
Open
maebeale wants to merge 6 commits into
Open
Cross-event training attendees index + shared registrant roster partial#2101maebeale wants to merge 6 commits into
maebeale wants to merge 6 commits into
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…roster Extract the Background page's inline registrant roster into a shared events/_registrant_roster partial, then reuse it for a new admin training_attendees index — every person who has attended a facilitator training, deduped to one row, with an added event column (per-row expand chevron + page-level all/last toggle). Scholarship/CE link to the person's most-recent training record; each event links to its registration edit page. Reached from the participation report and the statistics hub. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lti-training attendance Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tion status Rename the roster's Status column to Program status. On the cross-event index, source the Organization column from the orgs linked on the person's training registrations (uniqued across trainings) rather than their affiliations. Add an index-only Affiliation status column (Active/Pending/Inactive, deduped) plus a matching filter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
maebeale
marked this pull request as ready for review
August 6, 2026 15:56
Extract the Background charts into a shared events/_registrant_breakdowns partial (driven by data + event/index context) and add a cross-event TrainingAttendeesBreakdowns aggregator so the same charts render on the index over the filtered attendee population. The search boxes now refilter names and charts together, and each breakdown row drills in as an index filter (age group, country, district, life experience, setting, program status, organization, scholarship, CE). Background stays static. Fix: derive the aggregator's person ids with includes stripped — the roster's scoped age-range eager-load would otherwise turn .ids into a filtering JOIN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 suggested review level: 5 Inspect 🔬 new cross-event index + charts, two new aggregation services, extraction of the Background roster AND charts into shared partials, new columns/filters, links from two report pages
What
events/_registrant_rosterand its charts intoevents/_registrant_breakdowns— both shared, driven by a data object + context. Background renders identically.GET /events/training_attendees: everyone who's attended a facilitator training, deduped to one row. Lazy Turbo-frame; the search boxes refilter names + charts together.TrainingAttendeesBreakdowns, profile-sourced. Each breakdown row drills in as an index filter.Services
TrainingAttendeesRoster— per-person roster lookup maps (cross-eventEventDashboardcounterpart).TrainingAttendeesBreakdowns— aggregate chart datasets over the filtered set.Seeds
Amy (4) & Aisha (3) have multiple attended trainings so the multi-event UI shows in dev.
Notes for review
Tests
TrainingAttendeesRoster+TrainingAttendeesBreakdownsservice specs;training_attendeesrequest spec (auth, filters, exclusions, columns, charts render, drill-in filter, links);page_bg_class; updated Background/statistics assertions.Screenshots to add.