class ReportsKit::Reports::GenerateAutocompleteResults
Attributes
context_params[RW]
context_record[RW]
filter[RW]
filter_key[RW]
params[RW]
properties[RW]
Public Class Methods
new(params, properties, context_record: nil)
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 6 def initialize(params, properties, context_record: nil) self.params = params self.properties = properties self.context_params = params[:context_params] self.filter_key = params[:key] self.filter = Reports::PropertiesToFilter.new(properties, context_record: context_record).perform(filter_key) self.context_record = context_record end
Public Instance Methods
perform()
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 15 def perform autocomplete_method_results = Reports::GenerateAutocompleteMethodResults.new(filter_key, properties, params).perform return autocomplete_method_results if autocomplete_method_results raise ArgumentError.new("Could not find a model for filter_key: '#{filter_key}'") unless model return autocomplete_results_method.call(params: params, context_record: context_record, relation: relation) if autocomplete_results_method results = filter.apply_contextual_filters(relation, context_params) results = results.limit(10_000) results = results.map { |result| { id: result.id, text: result.to_s } } results = results.sort_by { |result| result[:text].downcase } results = filter_results(results) results.first(100) end
Private Instance Methods
autocomplete_results_method()
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 30 def autocomplete_results_method ReportsKit.configuration.autocomplete_results_method end
filter_results(results)
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 42 def filter_results(results) query = params[:q].try(:downcase) if query.present? results = results.to_a.select { |r| r[:text].downcase.include?(query) } end results end
model()
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 50 def model @model ||= begin filter.instance_class end end
relation()
click to toggle source
# File lib/reports_kit/reports/generate_autocomplete_results.rb, line 34 def relation if context_record context_record.public_send(filter.context_record_association) else model end end