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
Constructor Details
#initialize(datetime, options = {}, html_options = {}) ⇒ DateTimeSelector
Returns a new instance of DateTimeSelector.
588
589
590
591
592
|
# File 'lib/action_view/helpers/date_helper.rb', line 588
def initialize(datetime, options = {}, html_options = {})
@options = options.dup
@html_options = html_options.dup
@datetime = datetime
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
645
646
647
|
# File 'lib/action_view/helpers/date_helper.rb', line 624
def select_date
order = date_order.dup
if @options[:tag]
@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
end
[:day, :month, :year].each { |o| order.unshift(o) unless order.include?(o) }
build_selects_from_types(order)
end
|
#select_datetime ⇒ Object
594
595
596
597
598
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 594
def select_datetime
if @options[:tag] && @options[:ignore_date]
select_time
elsif @options[:tag]
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
[: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)
else
"#{select_date}#{@options[:datetime_separator]}#{select_time}".html_safe
end
end
|
#select_day ⇒ Object
692
693
694
695
696
697
698
|
# File 'lib/action_view/helpers/date_helper.rb', line 692
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
684
685
686
687
688
689
690
|
# File 'lib/action_view/helpers/date_helper.rb', line 684
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
676
677
678
679
680
681
682
|
# File 'lib/action_view/helpers/date_helper.rb', line 676
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
700
701
702
703
704
705
706
707
708
709
710
711
712
|
# File 'lib/action_view/helpers/date_helper.rb', line 700
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
668
669
670
671
672
673
674
|
# File 'lib/action_view/helpers/date_helper.rb', line 668
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
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
|
# File 'lib/action_view/helpers/date_helper.rb', line 649
def select_time
order = []
if @options[:tag]
@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]
end
order += [:hour, :minute]
order << :second if @options[:include_seconds]
build_selects_from_types(order)
end
|
#select_year ⇒ Object
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
|
# File 'lib/action_view/helpers/date_helper.rb', line 714
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
|