class Repor::Serializers::FormFieldSerializer

Public Instance Methods

aggregator_field() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 22
def aggregator_field
  select_tag("#{prefix}[aggregator]",
    options_for_select(aggregator_options, report.aggregator_name))
end
aggregator_options() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 14
def aggregator_options
  @agg_opts ||= report.aggregators.map { |name, agg| [human_aggregator_label(agg), name] }
end
axis_fields() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 37
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() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 104
def axis_fields_class
  'repor-axis-fields'
end
bin_dimension_field(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 70
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) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 83
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) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 114
def bin_max_placeholder(dimension); 'max'; end
bin_min_field(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 78
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) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 115
def bin_min_placeholder(dimension); 'min'; end
bin_step_field(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 88
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) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 116
def bin_step_placeholder(dimension)
  dimension.bin_width.inspect
end
category_dimension_field(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 57
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) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 128
def css_class(s)
  s.to_s.demodulize.underscore.dasherize
end
dimension_fields() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 46
def dimension_fields
  report.dimensions.map { |name, dimension| field_for(dimension) }.compact
end
dimension_fields_class(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 108
def dimension_fields_class(dimension)
  ['repor-dimension-fields',
   "repor-dimension-fields--#{css_class(dimension.name)}",
   "repor-dimension-fields--#{css_class(dimension.class.name)}"].join(' ')
end
dimension_options() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 18
def dimension_options
  @dim_opts ||= report.dimensions.map { |name, dim| [human_dimension_label(dim), name] }
end
field_for(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 50
def field_for(dimension)
  case dimension
  when Repor::Dimensions::CategoryDimension then category_dimension_field(dimension)
  when Repor::Dimensions::BinDimension then bin_dimension_field(dimension)
  end
end
fields_for(dimension, &block) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 93
def fields_for(dimension, &block)
  "<fieldset class='#{dimension_fields_class(dimension)}'>
    <legend>#{human_dimension_label(dimension)}</legend>
    #{yield}
  </fieldset>".html_safe
end
html_fields() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 7
def html_fields
  "<div class='#{wrapper_class}'>
    #{axis_fields}
    #{dimension_fields.join}
  </div>".html_safe
end
prefix() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 120
def prefix
  report.class.name.underscore
end
prefix_for(dimension) click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 124
def prefix_for(dimension)
  "#{prefix}[dimensions][#{dimension.name}]"
end
primary_grouper_field() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 27
def primary_grouper_field
  select_tag("#{prefix}[groupers][0]",
    options_for_select(dimension_options, report.grouper_names[0]))
end
secondary_grouper_field() click to toggle source
# File lib/repor/serializers/form_field_serializer.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() click to toggle source
# File lib/repor/serializers/form_field_serializer.rb, line 100
def wrapper_class
  "repor-fields repor-fields--#{css_class(report.class.name)}"
end