Class: ActionView::Helpers::DateTimeSelector
- Inherits:
-
Object
- Object
- ActionView::Helpers::DateTimeSelector
- Includes:
- TagHelper
- Defined in:
- lib/action_view/helpers/date_helper.rb
Overview
:nodoc:
Constant Summary collapse
- DEFAULT_PREFIX =
"date".freeze
- POSITION =
{ year: 1, month: 2, day: 3, hour: 4, minute: 5, second: 6 }.freeze
- AMPM_TRANSLATION =
Hash[ [[0, "12 AM"], [1, "01 AM"], [2, "02 AM"], [3, "03 AM"], [4, "04 AM"], [5, "05 AM"], [6, "06 AM"], [7, "07 AM"], [8, "08 AM"], [9, "09 AM"], [10, "10 AM"], [11, "11 AM"], [12, "12 PM"], [13, "01 PM"], [14, "02 PM"], [15, "03 PM"], [16, "04 PM"], [17, "05 PM"], [18, "06 PM"], [19, "07 PM"], [20, "08 PM"], [21, "09 PM"], [22, "10 PM"], [23, "11 PM"]] ].freeze
Constants included from TagHelper
TagHelper::BOOLEAN_ATTRIBUTES, TagHelper::PRE_CONTENT_STRINGS, TagHelper::TAG_PREFIXES
Instance Method Summary collapse
-
#initialize(datetime, options = {}, html_options = {}) ⇒ DateTimeSelector
constructor
A new instance of DateTimeSelector.
- #select_date ⇒ Object
- #select_datetime ⇒ Object
- #select_day ⇒ Object
- #select_hour ⇒ Object
- #select_minute ⇒ Object
- #select_month ⇒ Object
- #select_second ⇒ Object
- #select_time ⇒ Object
- #select_year ⇒ Object
Methods included from TagHelper
#cdata_section, #content_tag, #escape_once, #tag
Methods included from OutputSafetyHelper
#raw, #safe_join, #to_sentence
Methods included from CaptureHelper
#capture, #content_for, #content_for?, #provide, #with_output_buffer
Constructor Details
#initialize(datetime, options = {}, html_options = {}) ⇒ DateTimeSelector
Returns a new instance of DateTimeSelector.
719 720 721 722 723 724 725 |
# File 'lib/action_view/helpers/date_helper.rb', line 719 def initialize(datetime, = {}, = {}) @options = .dup @html_options = .dup @datetime = datetime @options[:datetime_separator] ||= " — " @options[:time_separator] ||= " : " end |
Instance Method Details
#select_date ⇒ Object
748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 |
# File 'lib/action_view/helpers/date_helper.rb', line 748 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) set_day_if_discarded [:day, :month, :year].each { |o| order.unshift(o) unless order.include?(o) } build_selects_from_types(order) end |
#select_datetime ⇒ Object
727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 |
# File 'lib/action_view/helpers/date_helper.rb', line 727 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] set_day_if_discarded 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
810 811 812 813 814 815 816 |
# File 'lib/action_view/helpers/date_helper.rb', line 810 def select_day if @options[:use_hidden] || @options[:discard_day] build_hidden(:day, day || 1) else (:day, day, start: 1, end: 31, leading_zeros: false, use_two_digit_numbers: @options[:use_two_digit_numbers]) end end |
#select_hour ⇒ Object
798 799 800 801 802 803 804 805 806 807 808 |
# File 'lib/action_view/helpers/date_helper.rb', line 798 def select_hour if @options[:use_hidden] || @options[:discard_hour] build_hidden(:hour, hour) else = {} [:ampm] = @options[:ampm] || false [:start] = @options[:start_hour] || 0 [:end] = @options[:end_hour] || 23 (:hour, hour, ) end end |
#select_minute ⇒ Object
790 791 792 793 794 795 796 |
# File 'lib/action_view/helpers/date_helper.rb', line 790 def select_minute if @options[:use_hidden] || @options[:discard_minute] build_hidden(:minute, min) else (:minute, min, step: @options[:minute_step]) end end |
#select_month ⇒ Object
818 819 820 821 822 823 824 825 826 827 828 829 830 |
# File 'lib/action_view/helpers/date_helper.rb', line 818 def select_month if @options[:use_hidden] || @options[:discard_month] build_hidden(:month, month || 1) else = [] 1.upto(12) do |month_number| = { value: month_number } [:selected] = "selected" if month == month_number << content_tag("option".freeze, month_name(month_number), ) + "\n" end build_select(:month, .join) end end |
#select_second ⇒ Object
782 783 784 785 786 787 788 |
# File 'lib/action_view/helpers/date_helper.rb', line 782 def select_second if @options[:use_hidden] || @options[:discard_second] build_hidden(:second, sec) if @options[:include_seconds] else (:second, sec) end end |
#select_time ⇒ Object
766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 |
# File 'lib/action_view/helpers/date_helper.rb', line 766 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
832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 |
# File 'lib/action_view/helpers/date_helper.rb', line 832 def select_year if !@datetime || @datetime == 0 val = "1" middle_year = Date.today.year else val = middle_year = year end if @options[:use_hidden] || @options[:discard_year] build_hidden(:year, val) else = {} [:start] = @options[:start_year] || middle_year - 5 [:end] = @options[:end_year] || middle_year + 5 [:step] = [:start] < [:end] ? 1 : -1 [:leading_zeros] = false [:max_years_allowed] = @options[:max_years_allowed] || 1000 if ([:end] - [:start]).abs > [:max_years_allowed] raise ArgumentError, "There are too many years options to be built. Are you sure you haven't mistyped something? You can provide the :max_years_allowed parameter." end (:year, val, ) end end |