class Metallize::Form::MultiSelectList

Attributes

options[RW]

Public Class Methods

new(node) click to toggle source
Calls superclass method Metallize::Form::Field::new
# File lib/metallize/form/multi_select_list.rb, line 7
def initialize node
  value    = []
  @options = []

  # parse
  node.find_elements(:tag_name, 'option').each do |n|
    @options << Metallize::Form::Option.new(n, self)
  end

  super node, value

end

Public Instance Methods

select_none() click to toggle source

Select no options

# File lib/metallize/form/multi_select_list.rb, line 23
def select_none
  @value = []
  options.each { |o| o.untick }
end
selected_options() click to toggle source

Get a list of all selected options

# File lib/metallize/form/multi_select_list.rb, line 41
def selected_options
  @options.find_all { |o| o.selected? }
end
value() click to toggle source
# File lib/metallize/form/multi_select_list.rb, line 45
def value
  value = []
  value.concat @value
  value.concat selected_options.map { |o| o.value }
  value.first
end
value=(values) click to toggle source
# File lib/metallize/form/multi_select_list.rb, line 28
def value=(values)
  select_none
  [values].flatten.each do |value|
    option = options.find { |o| o.value == value }
    if option.nil?
      @value.push(value)
    else
      option.node.click
    end
  end
end