Module: Decidim::Admin::FilterableHelper
- Defined in:
- app/helpers/decidim/admin/filterable_helper.rb
Overview
Helper that provides methods related to Decidim::Admin::Filterable concern.
Instance Method Summary collapse
-
#admin_filter_selector ⇒ Object
Renders the filters selector with tags in the admin panel.
- #applied_filter_tag(filter, value) ⇒ Object
- #applied_filters_hidden_field_tags ⇒ Object
- #applied_filters_tags ⇒ Object
-
#build_submenu_options_tree_from_array(filter, values) ⇒ Object
Builds a tree of links from an array.
-
#build_submenu_options_tree_from_hash(filter, values) ⇒ Object
Builds a tree of links from an Hash.
-
#dropdown_submenu(options) ⇒ Object
Produces the html for the dropdown submenu from the options tree.
-
#extra_dropdown_submenu_options_items(_filter) ⇒ Object
To be overriden.
- #filter_link_label(filter) ⇒ Object
- #filter_link_value(filter, value) ⇒ Object
- #i18n_filter_label(filter) ⇒ Object
- #i18n_filter_value(filter, value) ⇒ Object
- #remove_filter_icon_link(filter) ⇒ Object
-
#submenu_options_tree ⇒ Object
Builds a tree of links from Decidim::Admin::Filterable::filters_with_values.
Instance Method Details
#admin_filter_selector ⇒ Object
Renders the filters selector with tags in the admin panel.
8 9 10 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 8 def admin_filter_selector render partial: "decidim/admin/shared/filters" end |
#applied_filter_tag(filter, value) ⇒ Object
103 104 105 106 107 108 109 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 103 def applied_filter_tag(filter, value) content_tag(:span, class: "label secondary") do concat "#{i18n_filter_label(filter)}: " concat i18n_filter_value(filter, value) concat remove_filter_icon_link(filter) end end |
#applied_filters_hidden_field_tags ⇒ Object
86 87 88 89 90 91 92 93 94 95 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 86 def html = [] html += ransack_params.slice(*filters, *extra_filters).map do |filter, value| hidden_field_tag("q[#{filter}]", value) end html += query_params.slice(*extra_allowed_params).map do |filter, value| hidden_field_tag(filter, value) end html.join.html_safe end |
#applied_filters_tags ⇒ Object
97 98 99 100 101 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 97 def ransack_params.slice(*filters).map do |filter, value| applied_filter_tag(filter, value) end.join.html_safe end |
#build_submenu_options_tree_from_array(filter, values) ⇒ Object
Builds a tree of links from an array. The tree will have only one level.
25 26 27 28 29 30 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 25 def (filter, values) links = [] links += (filter) links += values.map { |value| filter_link_value(filter, value) } links.each_with_object({}) { |link, hash| hash[link] = nil } end |
#build_submenu_options_tree_from_hash(filter, values) ⇒ Object
Builds a tree of links from an Hash. The tree can have many levels.
39 40 41 42 43 44 45 46 47 48 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 39 def (filter, values) values.each_with_object({}) do |(key, value), hash| link = filter_link_value(filter, key) hash[link] = if value.nil? nil elsif value.is_a?(Hash) (filter, value) end end end |
#dropdown_submenu(options) ⇒ Object
Produces the html for the dropdown submenu from the options tree. Returns a ActiveSupport::SafeBuffer.
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 52 def () content_tag(:ul, class: "vertical menu") do .map do |key, value| if value.nil? content_tag(:li, key) elsif value.is_a?(Hash) content_tag(:li, class: "is-dropdown-submenu-parent") do key + (value) end end end.join.html_safe end end |
#extra_dropdown_submenu_options_items(_filter) ⇒ Object
To be overriden. Useful for adding links that do not match with the filter. Must return an Array.
34 35 36 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 34 def (_filter) [] end |
#filter_link_label(filter) ⇒ Object
66 67 68 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 66 def filter_link_label(filter) link_to(i18n_filter_label(filter), href: "#") end |
#filter_link_value(filter, value) ⇒ Object
70 71 72 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 70 def filter_link_value(filter, value) link_to(i18n_filter_value(filter, value), query_params_with(filter => value)) end |
#i18n_filter_label(filter) ⇒ Object
74 75 76 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 74 def i18n_filter_label(filter) t("decidim.admin.filters.#{filter}.label") end |
#i18n_filter_value(filter, value) ⇒ Object
78 79 80 81 82 83 84 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 78 def i18n_filter_value(filter, value) if I18n.exists?("decidim.admin.filters.#{filter}.values.#{value}") t(value, scope: "decidim.admin.filters.#{filter}.values") else find_dynamic_translation(filter, value) end end |
#remove_filter_icon_link(filter) ⇒ Object
111 112 113 114 115 116 117 118 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 111 def remove_filter_icon_link(filter) icon_link_to( "circle-x", url_for(query_params_without(filter)), t("decidim.admin.actions.cancel"), class: "action-icon--remove" ) end |
#submenu_options_tree ⇒ Object
Builds a tree of links from Decidim::Admin::Filterable::filters_with_values
13 14 15 16 17 18 19 20 21 22 |
# File 'app/helpers/decidim/admin/filterable_helper.rb', line 13 def filters_with_values.each_with_object({}) do |(filter, values), hash| link = filter_link_label(filter) hash[link] = if values.is_a?(Array) (filter, values) elsif values.is_a?(Hash) (filter, values) end end end |