Class: ActiveReporter::Serializer::FormField
- Inherits:
-
Base
- Object
- Base
- ActiveReporter::Serializer::FormField
show all
- Includes:
- ActionView::Helpers::FormOptionsHelper, ActionView::Helpers::FormTagHelper
- Defined in:
- lib/active_reporter/serializer/form_field.rb
Instance Attribute Summary
Attributes inherited from Base
#report
Instance Method Summary
collapse
Methods inherited from Base
#axis_summary, #filter_summary, #human_aggregator_label, #human_aggregator_value_label, #human_category_value_label, #human_dimension_label, #human_dimension_value_label, #human_null_value_label, #human_number_value_label, #human_time_value_label, #initialize, #record_type, #time_formats
Instance Method Details
#aggregator_field ⇒ Object
24
25
26
|
# File 'lib/active_reporter/serializer/form_field.rb', line 24
def aggregator_field
select_tag("#{prefix}[aggregator]", options_for_select(aggregator_options, report.aggregators.keys.first))
end
|
#aggregator_options ⇒ Object
16
17
18
|
# File 'lib/active_reporter/serializer/form_field.rb', line 16
def aggregator_options
@aggregator_options ||= report.all_aggregators.map { |name, agg| [human_aggregator_label(name => agg), name] }
end
|
#axis_fields ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/active_reporter/serializer/form_field.rb', line 36
def axis_fields
"<div class='#{axis_fields_class}'>
Show me #{aggregator_field}
by #{primary_grouper_field}
and #{secondary_grouper_field}
for
</div>".html_safe
end
|
#axis_fields_class ⇒ Object
99
100
101
|
# File 'lib/active_reporter/serializer/form_field.rb', line 99
def axis_fields_class
"active-reporter-axis-fields"
end
|
#bin_dimension_field(dimension) ⇒ Object
68
69
70
71
72
73
74
|
# File 'lib/active_reporter/serializer/form_field.rb', line 68
def bin_dimension_field(dimension)
fields_for(dimension) do
fields = "#{bin_min_field(dimension)} to #{bin_max_field(dimension)}"
fields += " by #{bin_step_field(dimension)}" if dimension.grouping?
fields
end
end
|
#bin_max_field(dimension) ⇒ Object
80
81
82
|
# File 'lib/active_reporter/serializer/form_field.rb', line 80
def bin_max_field(dimension)
text_field_tag("#{prefix_for(dimension)}[only][max]", dimension.filter_max, placeholder: bin_max_placeholder(dimension))
end
|
#bin_max_placeholder(dimension) ⇒ Object
111
112
113
|
# File 'lib/active_reporter/serializer/form_field.rb', line 111
def bin_max_placeholder(dimension)
"max"
end
|
#bin_min_field(dimension) ⇒ Object
76
77
78
|
# File 'lib/active_reporter/serializer/form_field.rb', line 76
def bin_min_field(dimension)
text_field_tag("#{prefix_for(dimension)}[only][min]", dimension.filter_min, placeholder: bin_min_placeholder(dimension))
end
|
#bin_min_placeholder(dimension) ⇒ Object
115
116
117
|
# File 'lib/active_reporter/serializer/form_field.rb', line 115
def bin_min_placeholder(dimension)
"min"
end
|
#bin_step_field(dimension) ⇒ Object
84
85
86
|
# File 'lib/active_reporter/serializer/form_field.rb', line 84
def bin_step_field(dimension)
text_field_tag("#{prefix_for(dimension)}[bin_width]", dimension.params[:bin_width], placeholder: bin_step_placeholder(dimension))
end
|
#bin_step_placeholder(dimension) ⇒ Object
119
120
121
|
# File 'lib/active_reporter/serializer/form_field.rb', line 119
def bin_step_placeholder(dimension)
dimension.bin_width.inspect
end
|
#category_dimension_field(dimension) ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/active_reporter/serializer/form_field.rb', line 56
def category_dimension_field(dimension)
options = [[nil, nil]]
dimension.all_values.each do |value|
options << [human_dimension_value_label(dimension, value), value]
end
fields_for(dimension) do
select_tag("#{prefix_for(dimension)}[only]", options_for_select(options, dimension.filter_values.first))
end
end
|
#css_class(name) ⇒ Object
131
132
133
|
# File 'lib/active_reporter/serializer/form_field.rb', line 131
def css_class(name)
name.to_s.demodulize.underscore.dasherize
end
|
#dimension_fields ⇒ Object
45
46
47
|
# File 'lib/active_reporter/serializer/form_field.rb', line 45
def dimension_fields
report.dimensions.map { |name, dimension| field_for(dimension) }.compact
end
|
#dimension_fields_class(dimension) ⇒ Object
103
104
105
106
107
108
109
|
# File 'lib/active_reporter/serializer/form_field.rb', line 103
def dimension_fields_class(dimension)
[
"active-reporter-dimension-fields",
"active-reporter-dimension-fields--#{css_class(dimension.name)}",
"active-reporter-dimension-fields--#{css_class(dimension.class.name)}"
].join(" ")
end
|
#dimension_options ⇒ Object
20
21
22
|
# File 'lib/active_reporter/serializer/form_field.rb', line 20
def dimension_options
@dimension_options ||= report.dimensions.map { |name, dim| [human_dimension_label(dim), name] }
end
|
#field_for(dimension) ⇒ Object
#fields_for(dimension, &block) ⇒ Object
88
89
90
91
92
93
|
# File 'lib/active_reporter/serializer/form_field.rb', line 88
def fields_for(dimension, &block)
"<fieldset class='#{dimension_fields_class(dimension)}'>
<legend>#{human_dimension_label(dimension)}</legend>
#{yield}
</fieldset>".html_safe
end
|
#html_fields ⇒ Object
9
10
11
12
13
14
|
# File 'lib/active_reporter/serializer/form_field.rb', line 9
def html_fields
"<div class='#{wrapper_class}'>
#{axis_fields}
#{dimension_fields.join}
</div>".html_safe
end
|
#prefix ⇒ Object
123
124
125
|
# File 'lib/active_reporter/serializer/form_field.rb', line 123
def prefix
report.class.name.underscore
end
|
#prefix_for(dimension) ⇒ Object
127
128
129
|
# File 'lib/active_reporter/serializer/form_field.rb', line 127
def prefix_for(dimension)
"#{prefix}[dimensions][#{dimension.name}]"
end
|
#primary_grouper_field ⇒ Object
28
29
30
|
# File 'lib/active_reporter/serializer/form_field.rb', line 28
def primary_grouper_field
select_tag("#{prefix}[groupers][0]", options_for_select(dimension_options, report.grouper_names[0]))
end
|
#secondary_grouper_field ⇒ Object
32
33
34
|
# File 'lib/active_reporter/serializer/form_field.rb', line 32
def secondary_grouper_field
select_tag("#{prefix}[groupers][1]", options_for_select([[nil, nil]] + dimension_options, report.grouper_names[1]))
end
|
#wrapper_class ⇒ Object
95
96
97
|
# File 'lib/active_reporter/serializer/form_field.rb', line 95
def wrapper_class
"active-reporter-fields active-reporter-fields--#{css_class(report.class.name)}"
end
|