Module: Discerner::Methods::Helpers::SearchesHelper

Included in:
ParametersHelper, SearchesHelper
Defined in:
lib/discerner/methods/helpers/searches_helper.rb

Instance Method Summary collapse

Instance Method Details

#combined_searches_options(search = nil) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 47

def combined_searches_options(search=nil)
  all_searches = Discerner::Search.order(:id)

  username = discerner_user.username unless discerner_user.blank?
  all_searches = all_searches.by_user(username) unless username.blank?

  if search.blank? || !search.persisted?
    searches = all_searches.not_deleted.reject{|s| s.disabled?}
  else
    searches_available = all_searches.not_deleted.
      where('id != ? and dictionary_id = ?', search.id,search.dictionary_id).
      reject{|s| s.nested_searches.include?(search) || s.disabled?}
    searches_used = search.combined_searches
    searches = searches_available | searches_used
  end
  searches.map {|s| [s.display_name, s.id, {class: s.dictionary.css_class_name}]}
end

#dictionary_options(searchable_dictionaries) ⇒ Object



43
44
45
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 43

def dictionary_options(searchable_dictionaries)
  searchable_dictionaries.map{|d| [d.name, d.id, {class: d.css_class_name}]}
end


118
119
120
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 118

def discerner_export_link
  link_to "Export options", export_parameters_path(@discerner_search), class: "discerner-button discerner-button-positive"
end

#discerner_format_date(date) ⇒ Object



126
127
128
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 126

def discerner_format_date(date)
  date.strftime("%m/%d/%Y") if date
end

#discerner_format_datetime(datetime) ⇒ Object



122
123
124
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 122

def discerner_format_datetime(datetime)
  datetime.strftime("%m/%d/%Y %I:%M %p") if datetime
end

#discerner_generate_nested_attributes_template(f, association, association_prefix = nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 9

def discerner_generate_nested_attributes_template(f, association, association_prefix = nil )
  if association_prefix.nil?
    association_prefix = association.to_s.singularize
  end
  new_object = f.object.class.reflect_on_association(association).klass.new
  fields = f.fields_for(association, new_object, child_index: "new_#{association}") do |form_builder|
    render(association_prefix + "_fields", f: form_builder)
  end
  escape_javascript(fields)
end


20
21
22
23
24
25
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 20

def discerner_link_to_add_fields(name, association, html_options={})
  css_class = html_options[:class] || ' '
  css_class += "add_#{association.to_s} add discerner-add-link discerner-icon-link"
  html_options[:class] = css_class
  link_to(name, 'javascript:void(0);', html_options)
end


27
28
29
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 27

def discerner_link_to_remove_fields(name, f, association)
  f.hidden_field(:_destroy) + link_to(name, "javascript:void(0);", class: "delete_#{association.to_s} discerner-delete-link discerner-icon-link")
end

#discerner_nested_record_id(builder, assocation) ⇒ Object



31
32
33
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 31

def discerner_nested_record_id(builder, assocation)
  builder.object.id.nil? ? "new_nested_record" : "#{assocation.to_s.singularize}_#{builder.object.id}"
end

#discerner_results_partialObject



5
6
7
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 5

def discerner_results_partial
  "discerner/dictionaries/#{@discerner_search.dictionary.parameterized_name}/results"
end

#exportable_parameter_categories(search = nil) ⇒ Object



85
86
87
88
89
90
91
92
93
94
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 85

def exportable_parameter_categories(search=nil)
  if search.blank? || !search.persisted?
    parameter_categories = Discerner::ParameterCategory.not_deleted.exportable.to_a
  else
    parameter_categories_available = search.dictionary.parameter_categories.exportable.to_a
    parameter_categories_used      = search.export_parameters.map{ |ep| ep.parameter.parameter_category }.flatten
    parameter_categories           = parameter_categories_available | parameter_categories_used
  end
  parameter_categories
end

#exportable_parameters(search, category) ⇒ Object



96
97
98
99
100
101
102
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 96

def exportable_parameters(search, category)
  return if search.blank? || !search.persisted?
  parameters_available = category.parameters.exportable.to_a
  parameters_used      = search.export_parameters.map{|ep| ep.parameter}.reject{|p| p.parameter_category != category }.flatten
  parameters           = parameters_available | parameters_used
  parameters.sort{|a,b| a.name <=> b.name}
end

#operator_options(type = nil) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 35

def operator_options(type=nil)
  operators = Discerner::Operator.not_deleted
  unless type.blank?
    operators = operators.joins(:parameter_types).where("discerner_parameter_types.name in (?)", type)
  end
  operators.includes(:parameter_types).uniq.map {|o| [o.text, o.id, {class: o.css_class_name}]}
end

#parameter_options(searchable_parameters, base_id = nil) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 65

def parameter_options(searchable_parameters, base_id=nil)
  options = []
  searchable_parameters.each do |p|
    option = [p.display_name, p.id]
    html_options = {class: p.css_class_name}
    html_options[:id] = searchable_object_index(p, base_id) unless base_id.blank?
    option << html_options
    options << option
  end
  options
end

#parameter_value_options(searchable_values, base_id = nil) ⇒ Object



77
78
79
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 77

def parameter_value_options(searchable_values, base_id=nil)
  searchable_values.map { |pv| [(pv.category_name.nil? ? pv.name : "#{pv.category_name} - #{pv.name}"), pv.id, base_id.nil? ? {} : { id: searchable_object_index(pv, base_id) }] }
end

#search_parameter_values(search_parameter) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 104

def search_parameter_values(search_parameter)
  search_parameter_values = search_parameter.parameter.parameter_type.name == 'list' ? search_parameter.search_parameter_values.chosen : search_parameter.search_parameter_values
  display_values = []
  search_parameter_values.each do |spv|
    string = ''
    value = spv.parameter_value.blank? ? spv.value : spv.parameter_value.name
    string += spv.operator.text unless spv.operator.blank?
    string += " \"#{value}\"" unless value.blank?
    string += " \"#{spv.additional_value}\"" unless spv.additional_value.blank?
    display_values << string
  end
  display_values.join(' or ')
end

#searchable_object_index(object, base_id = nil) ⇒ Object



81
82
83
# File 'lib/discerner/methods/helpers/searches_helper.rb', line 81

def searchable_object_index(object, base_id=nil)
  "#{base_id}_#{object.id}"
end