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
22
23
24
|
# File 'lib/active_reporter/serializer/form_field.rb', line 22
def aggregator_field
select_tag("#{prefix}[aggregator]", options_for_select(aggregator_options, report.aggregators.keys.first))
end
|
#aggregator_options ⇒ Object
14
15
16
|
# File 'lib/active_reporter/serializer/form_field.rb', line 14
def aggregator_options
@agg_opts ||= report.all_aggregators.map { |name, agg| [human_aggregator_label(agg), name] }
end
|
#axis_fields ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/active_reporter/serializer/form_field.rb', line 34
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
97
98
99
|
# File 'lib/active_reporter/serializer/form_field.rb', line 97
def axis_fields_class
'active-reporter-axis-fields'
end
|
#bin_dimension_field(dimension) ⇒ Object
66
67
68
69
70
71
72
|
# File 'lib/active_reporter/serializer/form_field.rb', line 66
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
78
79
80
|
# File 'lib/active_reporter/serializer/form_field.rb', line 78
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
109
110
111
|
# File 'lib/active_reporter/serializer/form_field.rb', line 109
def bin_max_placeholder(dimension)
'max'
end
|
#bin_min_field(dimension) ⇒ Object
74
75
76
|
# File 'lib/active_reporter/serializer/form_field.rb', line 74
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
113
114
115
|
# File 'lib/active_reporter/serializer/form_field.rb', line 113
def bin_min_placeholder(dimension)
'min'
end
|
#bin_step_field(dimension) ⇒ Object
82
83
84
|
# File 'lib/active_reporter/serializer/form_field.rb', line 82
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
117
118
119
|
# File 'lib/active_reporter/serializer/form_field.rb', line 117
def bin_step_placeholder(dimension)
dimension.bin_width.inspect
end
|
#category_dimension_field(dimension) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/active_reporter/serializer/form_field.rb', line 54
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(s) ⇒ Object
129
130
131
|
# File 'lib/active_reporter/serializer/form_field.rb', line 129
def css_class(s)
s.to_s.demodulize.underscore.dasherize
end
|
#dimension_fields ⇒ Object
43
44
45
|
# File 'lib/active_reporter/serializer/form_field.rb', line 43
def dimension_fields
report.dimensions.map { |name, dimension| field_for(dimension) }.compact
end
|
#dimension_fields_class(dimension) ⇒ Object
101
102
103
104
105
106
107
|
# File 'lib/active_reporter/serializer/form_field.rb', line 101
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
18
19
20
|
# File 'lib/active_reporter/serializer/form_field.rb', line 18
def dimension_options
@dim_opts ||= report.dimensions.map { |name, dim| [human_dimension_label(dim), name] }
end
|
#field_for(dimension) ⇒ Object
47
48
49
50
51
52
|
# File 'lib/active_reporter/serializer/form_field.rb', line 47
def field_for(dimension)
case dimension
when ActiveReporter::Dimension::Category then category_dimension_field(dimension)
when ActiveReporter::Dimension::Set then bin_dimension_field(dimension)
end
end
|
#fields_for(dimension, &block) ⇒ Object
86
87
88
89
90
91
|
# File 'lib/active_reporter/serializer/form_field.rb', line 86
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
7
8
9
10
11
12
|
# File 'lib/active_reporter/serializer/form_field.rb', line 7
def html_fields
"<div class='#{wrapper_class}'>
#{axis_fields}
#{dimension_fields.join}
</div>".html_safe
end
|
#prefix ⇒ Object
121
122
123
|
# File 'lib/active_reporter/serializer/form_field.rb', line 121
def prefix
report.class.name.underscore
end
|
#prefix_for(dimension) ⇒ Object
125
126
127
|
# File 'lib/active_reporter/serializer/form_field.rb', line 125
def prefix_for(dimension)
"#{prefix}[dimensions][#{dimension.name}]"
end
|
#primary_grouper_field ⇒ Object
26
27
28
|
# File 'lib/active_reporter/serializer/form_field.rb', line 26
def primary_grouper_field
select_tag("#{prefix}[groupers][0]", options_for_select(dimension_options, report.grouper_names[0]))
end
|
#secondary_grouper_field ⇒ Object
30
31
32
|
# File 'lib/active_reporter/serializer/form_field.rb', line 30
def secondary_grouper_field
select_tag("#{prefix}[groupers][1]", options_for_select([[nil, nil]]+dimension_options, report.grouper_names[1]))
end
|
#wrapper_class ⇒ Object
93
94
95
|
# File 'lib/active_reporter/serializer/form_field.rb', line 93
def wrapper_class
"active-reporter-fields active-reporter-fields--#{css_class(report.class.name)}"
end
|