Class: ActionView::Helpers::DateTimeSelector
- Inherits:
-
Object
- Object
- ActionView::Helpers::DateTimeSelector
show all
- Extended by:
- ActiveSupport::Memoizable
- Includes:
- TagHelper
- Defined in:
- lib/action_view/helpers/date_helper.rb
Overview
Constant Summary
collapse
- DEFAULT_PREFIX =
'date'.freeze
- POSITION =
{
:year => 1, :month => 2, :day => 3, :hour => 4, :minute => 5, :second => 6
}.freeze
Constants included
from TagHelper
TagHelper::BOOLEAN_ATTRIBUTES
Instance Method Summary
collapse
Methods included from TagHelper
#cdata_section, #content_tag, #escape_once, #tag
#capture, #content_for, #content_for?, #flush_output_buffer, #with_output_buffer
Constructor Details
#initialize(datetime, options = {}, html_options = {}) ⇒ DateTimeSelector
Returns a new instance of DateTimeSelector.
591
592
593
594
595
596
597
|
# File 'lib/action_view/helpers/date_helper.rb', line 591
def initialize(datetime, options = {}, html_options = {})
@options = options.dup
@html_options = html_options.dup
@datetime = datetime
@options[:datetime_separator] ||= ' — '
@options[:time_separator] ||= ' : '
end
|
Instance Method Details
#select_date ⇒ Object
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
|
# File 'lib/action_view/helpers/date_helper.rb', line 624
def 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 @datetime && @options[:discard_day] && !@options[:discard_month]
@datetime = @datetime.change(:day => 1)
end
[:day, :month, :year].each { |o| order.unshift(o) unless order.include?(o) }
build_selects_from_types(order)
end
|
#select_datetime ⇒ Object
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
|
# File 'lib/action_view/helpers/date_helper.rb', line 599
def select_datetime
order = date_order.dup
order -= [:hour, :minute, :second]
@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)
@options[:discard_minute] ||= true if @options[:discard_hour]
@options[:discard_second] ||= true unless @options[:include_seconds] && !@options[:discard_minute]
if @datetime && @options[:discard_day] && !@options[:discard_month]
@datetime = @datetime.change(:day => 1)
end
if @options[:tag] && @options[:ignore_date]
select_time
else
[:day, :month, :year].each { |o| order.unshift(o) unless order.include?(o) }
order += [:hour, :minute, :second] unless @options[:discard_hour]
build_selects_from_types(order)
end
end
|
#select_day ⇒ Object
686
687
688
689
690
691
692
|
# File 'lib/action_view/helpers/date_helper.rb', line 686
def select_day
if @options[:use_hidden] || @options[:discard_day]
build_hidden(:day, day)
else
build_options_and_select(:day, day, :start => 1, :end => 31, :leading_zeros => false)
end
end
|
#select_hour ⇒ Object
678
679
680
681
682
683
684
|
# File 'lib/action_view/helpers/date_helper.rb', line 678
def select_hour
if @options[:use_hidden] || @options[:discard_hour]
build_hidden(:hour, hour)
else
build_options_and_select(:hour, hour, :end => 23)
end
end
|
#select_minute ⇒ Object
670
671
672
673
674
675
676
|
# File 'lib/action_view/helpers/date_helper.rb', line 670
def select_minute
if @options[:use_hidden] || @options[:discard_minute]
build_hidden(:minute, min)
else
build_options_and_select(:minute, min, :step => @options[:minute_step])
end
end
|
#select_month ⇒ Object
694
695
696
697
698
699
700
701
702
703
704
705
706
|
# File 'lib/action_view/helpers/date_helper.rb', line 694
def select_month
if @options[:use_hidden] || @options[:discard_month]
build_hidden(:month, month)
else
month_options = []
1.upto(12) do |month_number|
options = { :value => month_number }
options[:selected] = "selected" if month == month_number
month_options << content_tag(:option, month_name(month_number), options) + "\n"
end
build_select(:month, month_options.join)
end
end
|
#select_second ⇒ Object
662
663
664
665
666
667
668
|
# File 'lib/action_view/helpers/date_helper.rb', line 662
def select_second
if @options[:use_hidden] || @options[:discard_second]
build_hidden(:second, sec) if @options[:include_seconds]
else
build_options_and_select(:second, sec)
end
end
|
#select_time ⇒ Object
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
|
# File 'lib/action_view/helpers/date_helper.rb', line 646
def select_time
order = []
@options[:discard_month] = true
@options[:discard_year] = true
@options[:discard_day] = true
@options[:discard_second] ||= true unless @options[:include_seconds]
order += [:year, :month, :day] unless @options[:ignore_date]
order += [:hour, :minute]
order << :second if @options[:include_seconds]
build_selects_from_types(order)
end
|
#select_year ⇒ Object
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
|
# File 'lib/action_view/helpers/date_helper.rb', line 708
def select_year
if !@datetime || @datetime == 0
val = ''
middle_year = Date.today.year
else
val = middle_year = year
end
if @options[:use_hidden] || @options[:discard_year]
build_hidden(:year, val)
else
options = {}
options[:start] = @options[:start_year] || middle_year - 5
options[:end] = @options[:end_year] || middle_year + 5
options[:step] = options[:start] < options[:end] ? 1 : -1
options[:leading_zeros] = false
build_options_and_select(:year, val, options)
end
end
|