Class: Decidim::Votings::PollingOfficers::PollingOfficersPickerCell
- Inherits:
-
Decidim::ViewModel
- Object
- Decidim::ViewModel
- Decidim::Votings::PollingOfficers::PollingOfficersPickerCell
- Defined in:
- decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb
Overview
This cell renders a polling officers picker.
Constant Summary collapse
- MAX_POLLING_OFFICERS =
1000
Instance Method Summary collapse
- #decorated_polling_officers ⇒ Object
- #filtered? ⇒ Boolean
- #filtered_polling_officers ⇒ Object
- #more_polling_officers? ⇒ Boolean
- #more_polling_officers_count ⇒ Object
- #picker_path ⇒ Object
- #polling_officers ⇒ Object
- #polling_officers_collection_name ⇒ Object
- #polling_officers_count ⇒ Object
- #search_text ⇒ Object
- #show ⇒ Object
Instance Method Details
#decorated_polling_officers ⇒ Object
44 45 46 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 44 def decorated_polling_officers filtered_polling_officers.limit(MAX_POLLING_OFFICERS) end |
#filtered? ⇒ Boolean
20 21 22 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 20 def filtered? !search_text.nil? end |
#filtered_polling_officers ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 48 def filtered_polling_officers @filtered_polling_officers ||= if filtered? query = polling_officers.joins(:user) if search_text.start_with?("@") query.where("nickname ILIKE ?", "#{search_text.delete("@")}%") else query.where("name ILIKE ?", "%#{search_text}%").or( query.where("email ILIKE ?", "%#{search_text}%") ) end else polling_officers end end |
#more_polling_officers? ⇒ Boolean
32 33 34 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 32 def more_polling_officers? @more_polling_officers ||= more_polling_officers_count.positive? end |
#more_polling_officers_count ⇒ Object
36 37 38 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 36 def more_polling_officers_count @more_polling_officers_count ||= polling_officers_count - MAX_POLLING_OFFICERS end |
#picker_path ⇒ Object
24 25 26 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 24 def picker_path request.path end |
#polling_officers ⇒ Object
63 64 65 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 63 def polling_officers @polling_officers ||= model.available_polling_officers end |
#polling_officers_collection_name ⇒ Object
67 68 69 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 67 def polling_officers_collection_name Decidim::Votings::PollingOfficer.model_name.human(count: 2) end |
#polling_officers_count ⇒ Object
40 41 42 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 40 def polling_officers_count @polling_officers_count ||= filtered_polling_officers.count end |
#search_text ⇒ Object
28 29 30 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 28 def search_text params[:q] end |
#show ⇒ Object
12 13 14 15 16 |
# File 'decidim-elections/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb', line 12 def show return render :polling_officers if filtered? render end |