Skip to content

feat: replace Member.all with TomSelect for meeting organisers#2567

Draft
mroderick wants to merge 2 commits intocodebar:masterfrom
mroderick:feature/meeting-organisers-tomselect
Draft

feat: replace Member.all with TomSelect for meeting organisers#2567
mroderick wants to merge 2 commits intocodebar:masterfrom
mroderick:feature/meeting-organisers-tomselect

Conversation

@mroderick
Copy link
Copy Markdown
Collaborator

@mroderick mroderick commented Apr 11, 2026

Please review #2566 first. Once that is merged, we can rebase this branch.

Summary

  • Replaces Member.all dropdown with TomSelect for remote member search in meeting organiser field
  • Fixes create action bug where organisers were assigned before meeting was saved
  • Adds remove_button plugin for multi-select item removal
  • Pre-populates existing organisers on edit form

Changes

File Change
app/controllers/admin/meetings_controller.rb Fixed: call set_organisers after save
app/views/admin/meetings/_form.html.haml TomSelect CDN, f.select with options_for_select
app/assets/javascripts/application.js TomSelect init with remove_button plugin
spec/support/select_from_tom_select.rb Added remove_from_tom_select helper
spec/features/admin/meeting_spec.rb Tests for TomSelect interaction

Bug Fix

The create action was calling set_organisers before @meeting.save, so @meeting.id was nil. Roleify's add_role(:organiser, @meeting) couldn't create permissions without a valid resource_id. Fixed by moving organisers assignment after successful save (matches workshop controller pattern).

Testing

bundle exec rspec spec/features/admin/meeting_spec.rb

All 9 tests pass.

Related

Technical Debt

Three TomSelect configs now exist (member_lookup, meeting_invitations, meeting_organisers) with identical options. Consider extracting to a reusable function in a future refactor.

- Replace Chosen.js dropdown with TomSelect for member lookup
- Load members dynamically via /admin/members/search endpoint
- Add select_from_tom_select helper for Capybara tests
- Update tests for remote data loading
- Exclude #meeting_invitations_member from Chosen.js initialization

Reuses /admin/members/search endpoint from PR codebar#2562.
Fixes performance issue loading 28k+ members on every page render.
- Add organisers field to TomSelect initialization with remove_button plugin
- Pre-populate existing organisers on edit form using options_for_select
- Add remove_from_tom_select test helper for multi-select interaction
- Update tests for TomSelect interaction (add/remove organisers)
- Exclude meeting_organisers from Chosen.js initialization

Reuses /admin/members/search endpoint from PR codebar#2562.
Fixes performance issue loading 28k+ members on every page load.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant