Class: ReportsKit::Reports::GenerateAutocompleteResults

Inherits:
Object
  • Object
show all
Defined in:
lib/reports_kit/reports/generate_autocomplete_results.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, properties, context_record: nil) ⇒ GenerateAutocompleteResults

Returns a new instance of GenerateAutocompleteResults.



6
7
8
9
10
11
12
13
# 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

Instance Attribute Details

#context_paramsObject

Returns the value of attribute context_params.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def context_params
  @context_params
end

#context_recordObject

Returns the value of attribute context_record.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def context_record
  @context_record
end

#filterObject

Returns the value of attribute filter.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def filter
  @filter
end

#filter_keyObject

Returns the value of attribute filter_key.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def filter_key
  @filter_key
end

#paramsObject

Returns the value of attribute params.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def params
  @params
end

#propertiesObject

Returns the value of attribute properties.



4
5
6
# File 'lib/reports_kit/reports/generate_autocomplete_results.rb', line 4

def properties
  @properties
end

Instance Method Details

#performObject

Raises:

  • (ArgumentError)


15
16
17
18
19
20
21
22
23
24
25
26
# 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