NUBIC/surveyor

View on GitHub
app/inputs/surveyor_check_boxes_input.rb

Summary

Maintainability
A
15 mins
Test Coverage
class SurveyorCheckBoxesInput < Formtastic::Inputs::CheckBoxesInput
  include Surveyor::Helpers::FormtasticCustomInput
  def to_html
    super
  end
  def choice_html(choice)
    output = "" 
    output << template.content_tag(:label,
      hidden_fields? ?
        check_box_with_hidden_input(choice) :
        check_box_without_hidden_input(choice) <<
      choice_label(choice),
      label_html_options.merge(:for => choice_input_dom_id(choice), :class => nil)
    )
    output << builder.text_field(:response_other, input_html_options_with(choice, :response_other)) if options[:response_class] == "other_and_string"
    output << builder.text_field(response_class_to_method(options[:response_class]), input_html_options_with(choice, options[:response_class])) if %w(date datetime time float integer string other_and_string).include? options[:response_class]
    output << builder.text_area(:text_value, input_html_options_with(choice, :text_value)) if options[:response_class] == "text"
    output.html_safe
  end
  def checked?(value)
    selected_values.include?(value.to_s)
  end
  def disabled?(value)
    disabled_values.include?(value) || input_html_options[:disabled] == true
  end
  def make_selected_values
    if object.respond_to?(method)
      selected_items = [object.send(method)].compact.flatten.map(&:to_s)
      
      [*selected_items.map { |o| send_or_call_or_object(value_method, o) }].compact
    else
      []
    end
  end
end