Module: PhiltreRails::PhiltreViewHelpers
- Defined in:
- lib/philtre-rails/philtre_view_helpers.rb
Instance Method Summary collapse
-
#default_order_link_class ⇒ Object
can be overridden.
-
#order_by(filter, *fields, label: fields.first.to_s.titleize, order_link_class: default_order_link_class) ⇒ Object
Heavily modified from SearchLogic.
-
#unify_array(ary) ⇒ Object
There is a nicer way to do this, but it means monkey-patching Array.
Instance Method Details
#default_order_link_class ⇒ Object
can be overridden
15 16 17 |
# File 'lib/philtre-rails/philtre_view_helpers.rb', line 15 def default_order_link_class OrderLink end |
#order_by(filter, *fields, label: fields.first.to_s.titleize, order_link_class: default_order_link_class) ⇒ Object
Heavily modified from SearchLogic.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/philtre-rails/philtre_view_helpers.rb', line 20 def order_by( filter, *fields, label: fields.first.to_s.titleize, order_link_class: default_order_link_class ) return label if filter.nil? # current ordering from the filter # each expr is a Sequel::SQL::Expression exprs = Hash[ filter.order_expressions ] # Invert each ordering for the generated link. Current sort order will be displayed. order_links = fields.map do |field| if exprs[field] order_link_class.new exprs[field].invert, active: true else order_link_class.new Sequel.asc(field) end end # filter params must have order in the right format filter_params = filter.filter_parameters.dup filter_params[:order] = unify_array( order_links.map( &:name ) ) params_hash = {filter.class::Model.model_name.param_key.to_sym => filter_params} link_text = raw( [label, order_links.first.andand.icon].compact.join(' ') ) link_to link_text, params_hash, {class: order_links.first.andand.css_class} end |
#unify_array(ary) ⇒ Object
There is a nicer way to do this, but it means monkey-patching Array. Which upsets some folks.
6 7 8 9 10 11 12 |
# File 'lib/philtre-rails/philtre_view_helpers.rb', line 6 def unify_array( ary ) case ary.size when 0; nil when 1; ary.first else; ary end end |