Class: Decidim::ScopesPickerCell
- Inherits:
-
ViewModel
- Object
- ViewModel
- Decidim::ScopesPickerCell
- Includes:
- ActionView::Helpers::FormOptionsHelper, ApplicationHelper, FiltersHelper, ScopesHelper
- Defined in:
- decidim-core/app/cells/decidim/scopes_picker_cell.rb
Overview
This cell is used to display scopes picker in a form
Instance Method Summary collapse
- #attribute ⇒ Object
- #checkboxes_on_top? ⇒ Boolean
- #form ⇒ Object
- #label? ⇒ Boolean
- #legend_title ⇒ Object
- #multiple? ⇒ Boolean
- #picker_options_class ⇒ Object
- #picker_options_id ⇒ Object
- #picker_options_name ⇒ Object
- #prompt_params ⇒ Object
- #sanitize_for_dom_selector(name) ⇒ Object
- #scope_params(scope) ⇒ Object
- #scopes ⇒ Object
- #selected_scopes ⇒ Object
- #values_on_top? ⇒ Boolean
- #wrapper_class ⇒ Object
Instance Method Details
#attribute ⇒ Object
57 58 59 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 57 def attribute [:attribute] end |
#checkboxes_on_top? ⇒ Boolean
16 17 18 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 16 def checkboxes_on_top? [:checkboxes_on_top] end |
#form ⇒ Object
12 13 14 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 12 def form model end |
#label? ⇒ Boolean
32 33 34 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 32 def label? [:label] end |
#legend_title ⇒ Object
28 29 30 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 28 def legend_title [:legend_title] end |
#multiple? ⇒ Boolean
20 21 22 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 20 def multiple? [:multiple] end |
#picker_options_class ⇒ Object
73 74 75 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 73 def "picker-#{multiple? ? "multiple" : "single"}" end |
#picker_options_id ⇒ Object
61 62 63 64 65 66 67 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 61 def if form..has_key?(:namespace) "#{form.[:namespace]}_#{sanitize_for_dom_selector(form.object_name)}" else "#{sanitize_for_dom_selector(form.object_name)}_#{attribute}" end end |
#picker_options_name ⇒ Object
77 78 79 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 77 def "#{form.object_name}[#{attribute}]" end |
#prompt_params ⇒ Object
53 54 55 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 53 def prompt_params scope_params(nil) end |
#sanitize_for_dom_selector(name) ⇒ Object
81 82 83 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 81 def sanitize_for_dom_selector(name) name.to_s.parameterize.underscore end |
#scope_params(scope) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 36 def scope_params(scope) { url: decidim.scopes_picker_path( root: try(:current_participatory_space).try(:scope), current: scope&.id, title: I18n.t("decidim.scopes.prompt"), global_value: "global", max_depth: try(:current_participatory_space).try(:scope_type_max_depth) ), text: scope_name_for_picker(scope, I18n.t("decidim.scopes.prompt")) } end |
#scopes ⇒ Object
49 50 51 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 49 def scopes selected_scopes.map { |scope| [scope, scope_params(scope)] } end |
#selected_scopes ⇒ Object
85 86 87 88 89 90 91 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 85 def selected_scopes selected = form.object.send(attribute) || [] selected = selected.values if selected.is_a?(Hash) selected = [selected] unless selected.is_a?(Array) selected = Decidim::Scope.where(id: selected.map(&:to_i)) unless selected.first.is_a?(Decidim::Scope) selected end |
#values_on_top? ⇒ Boolean
24 25 26 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 24 def values_on_top? !multiple? || checkboxes_on_top? end |
#wrapper_class ⇒ Object
69 70 71 |
# File 'decidim-core/app/cells/decidim/scopes_picker_cell.rb', line 69 def wrapper_class "#{attribute}_scopes_picker_filter" end |