Class: ActionView::Helpers::EnhancedDateTimeSelector

Inherits:
DateTimeSelector
  • Object
show all
Defined in:
lib/enhanced_date_select.rb

Instance Method Summary collapse

Instance Method Details

#enhanced_select_dateObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/enhanced_date_select.rb', line 51

def enhanced_select_date
  order = date_order.dup

  @options[:discard_hour] = true
  @options[:discard_minute] = true
  @options[:discard_second] = true

  @options[:discard_year] ||= true unless order.include?(:year)
  @options[:discard_month] ||= true unless order.include?(:month)
  @options[:discard_day] ||= true if @options[:discard_month] || !order.include?(:day)

  # If the day is hidden and the month is visible, the day should be set to the 1st so all month choices are valid (otherwise it could be 31 and February wouldn't be a valid date)
  if @datetime && @options[:discard_day] && !@options[:discard_month]
    if @datetime.is_a?(Hash)
      @datetime[:day] = 1
    else
      @datetime = @datetime.change(:day => 1)
    end
  end

  [:day, :month, :year].each { |o| order.unshift(o) unless order.include?(o) }

  build_selects_from_types(order)
end