Module: ActiveScaffold::Helpers::HumanConditionHelpers

Included in:
ViewHelpers
Defined in:
lib/active_scaffold/helpers/human_condition_helpers.rb

Overview

Helpers that assist with rendering of a human readable search statement

Instance Method Summary collapse

Instance Method Details

#active_scaffold_human_condition_for(column) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_scaffold/helpers/human_condition_helpers.rb', line 6

def active_scaffold_human_condition_for(column)
  value = field_search_params[column.name]
  search_ui = column.search_ui
  search_ui ||= column.column.type if column.column
  if override_human_condition_column?(column)
    send(override_human_condition_column(column), value, {})
  elsif search_ui and override_human_condition?(column.search_ui)
    send(override_human_condition(column.search_ui), column, value)
  else
    case search_ui
    when :integer, :decimal, :float
      "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value[:opt].downcase).downcase} #{format_number_value(controller.class.condition_value_for_numeric(column, value[:from]), column.options) if value[:from].present?} #{value[:opt] == 'BETWEEN' ? '- ' + format_number_value(controller.class.condition_value_for_numeric(column, value[:to]), column.options).to_s : ''}"
    when :string
      opt = ActiveScaffold::Finder::StringComparators.index(value[:opt]) || value[:opt]
      "#{column.active_record_class.human_attribute_name(column.name)} #{as_(opt).downcase} '#{value[:from]}' #{opt == 'BETWEEN' ? '- ' + value[:to].to_s : ''}"
    when :date, :time, :datetime, :timestamp
      conversion = column.column.type == :date ? :to_date : :to_time
      from = controller.condition_value_for_datetime(column, value[:from], conversion)
      to = controller.condition_value_for_datetime(column, value[:to], conversion)
      "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value[:opt])} #{I18n.l(from)} #{value[:opt] == 'BETWEEN' ? '- ' + I18n.l(to) : ''}"
    when :select, :multi_select, :record_select
      associated = value
      associated = [associated].compact unless associated.is_a? Array
      if column.association
        associated = column.association.klass.where(:id => associated.map(&:to_i)).collect(&:to_label)
      elsif column.options[:options]
        associated = associated.collect do |value|
          text, val = column.options[:options].find {|text, val| (val.nil? ? text : val).to_s == value.to_s}
          value = active_scaffold_translated_option(column, text, val).first if text
          value
        end
      end
      as_(:association, :scope => :human_conditions, :column => column.active_record_class.human_attribute_name(column.name), :value => associated.join(', '))
    when :boolean, :checkbox
      label = column.column.type_cast(value) ? as_(:true) : as_(:false)
      as_(:boolean, :scope => :human_conditions, :column => column.active_record_class.human_attribute_name(column.name), :value => label)
    when :null
      "#{column.active_record_class.human_attribute_name(column.name)} #{as_(value.to_sym)}"
    end
  end unless value.nil?
end

#override_human_condition(search_ui) ⇒ Object

the naming convention for overriding human condition search_ui types



59
60
61
# File 'lib/active_scaffold/helpers/human_condition_helpers.rb', line 59

def override_human_condition(search_ui)
  "active_scaffold_human_condition_#{search_ui}"
end

#override_human_condition?(search_ui) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/active_scaffold/helpers/human_condition_helpers.rb', line 54

def override_human_condition?(search_ui)
  respond_to?(override_human_condition(search_ui))
end

#override_human_condition_column(column) ⇒ Object Also known as: override_human_condition_column?

the naming convention for overriding form fields with helpers



49
50
51
# File 'lib/active_scaffold/helpers/human_condition_helpers.rb', line 49

def override_human_condition_column(column)
  override_helper column, 'human_condition_column'
end