Class: ReportsKit::FormBuilder

Inherits:
Object
  • Object
show all
Includes:
ActionView::Helpers
Defined in:
lib/reports_kit/form_builder.rb

Constant Summary collapse

DEFAULT_DATE_RANGE_VALUE =
['-2M', 'now']

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(properties, additional_params: nil) ⇒ FormBuilder

Returns a new instance of FormBuilder.



9
10
11
12
# File 'lib/reports_kit/form_builder.rb', line 9

def initialize(properties, additional_params: nil)
  self.properties = properties.deep_symbolize_keys
  self.additional_params = additional_params
end

Instance Attribute Details

#additional_paramsObject

Returns the value of attribute additional_params.



7
8
9
# File 'lib/reports_kit/form_builder.rb', line 7

def additional_params
  @additional_params
end

#propertiesObject

Returns the value of attribute properties.



7
8
9
# File 'lib/reports_kit/form_builder.rb', line 7

def properties
  @properties
end

Instance Method Details

#check_box(filter_key, options = {}) ⇒ Object



14
15
16
17
18
# File 'lib/reports_kit/form_builder.rb', line 14

def check_box(filter_key, options = {})
  filter = validate_filter!(filter_key)
  checked = filter.normalized_properties[:criteria][:value] == 'true'
  check_box_tag(filter_key, '1', checked, options)
end

#date_range(filter_key, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/reports_kit/form_builder.rb', line 20

def date_range(filter_key, options = {})
  filter = validate_filter!(filter_key)
  defaults = { class: 'form-control input-sm date_range_picker' }
  options = defaults.deep_merge(options)
  value = filter.normalized_properties[:criteria][:value].presence
  value ||= default_date_range_value
  text_field_tag(filter_key, value, options)
end

#multi_autocomplete(filter_key, options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/reports_kit/form_builder.rb', line 29

def multi_autocomplete(filter_key, options = {})
  validate_filter!(filter_key)
  filter = series_filters.find { |f| f.key == filter_key.to_s }
  reports_kit_path = Rails.application.routes.url_helpers.reports_kit_path
  path = "#{reports_kit_path}reports_kit/resources/measures/#{filter.series.key}/filters/#{filter_key}/autocomplete?"
  path += additional_params.to_query if additional_params.present?
  scope = options.delete(:scope)
  params = {}
  params[:scope] = scope if scope.present?

  defaults = {
    class: 'form-control input-sm select2',
    multiple: 'multiple',
    data: {
      placeholder: options[:placeholder],
      path: path,
      params: params
    }
  }
  options = defaults.deep_merge(options)
  select_tag(filter_key, nil, options)
end

#string_filter(filter_key, options = {}) ⇒ Object



52
53
54
55
56
57
# File 'lib/reports_kit/form_builder.rb', line 52

def string_filter(filter_key, options = {})
  filter = validate_filter!(filter_key)
  defaults = { class: 'form-control input-sm' }
  options = defaults.deep_merge(options)
  text_field_tag(filter_key, filter.normalized_properties[:criteria][:value], options)
end