Sha256: caee65bf61da5949c1cee7f4db29c4495d7fff4448b9381a89ba295121da5f6d

Contents?: true

Size: 1.9 KB

Versions: 12

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

module Fields
  class DatetimeFieldPresenter < FieldPresenter
    def value
      super&.in_time_zone
    end

    def value_for_preview
      value = self.value
      I18n.l(value) if value
    end

    def field_options
      return {} if access_readonly?

      options = {}
      current_time = Time.zone.now.change(sec: 0, usec: 0)

      if @model.options.start_from_now?
        start_minutes_offset = @model.options.start_from_now_minutes_offset.minutes.to_i
        options[:min] = current_time + start_minutes_offset
      elsif @model.options.start_from_time?
        options[:min] = @model.options.start
      elsif @model.options.start_from_minutes_before_finish?
        minutes_before_finish = @model.options.minutes_before_finish.minutes
        if @model.options.finish_to_now?
          finish_minutes_offset = @model.options.finish_to_now_minutes_offset.minutes.to_i
          options[:min] = current_time + finish_minutes_offset - minutes_before_finish
        elsif @model.options.finish_to_time?
          options[:min] = @model.options.finish - minutes_before_finish
        end
      end

      if @model.options.finish_to_now?
        finish_minutes_offset = @model.options.finish_to_now_minutes_offset.minutes.to_i
        options[:max] = current_time + finish_minutes_offset
      elsif @model.options.finish_to_time?
        options[:max] = @model.options.finish
      elsif @model.options.finish_to_minutes_since_start?
        minutes_since_start = @model.options.minutes_since_start.minutes.to_i
        if @model.options.start_from_now?
          start_minutes_offset = @model.options.start_from_now_minutes_offset.minutes.to_i
          options[:max] = current_time + start_minutes_offset + minutes_since_start
        elsif @model.options.start_from_time?
          options[:max] = @model.options.start + minutes_since_start
        end
      end

      options
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
script_core-0.3.2 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.3.0 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.7 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.6 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.5 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.4 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.3 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.2 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.1 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.2.0 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.1.1 spec/dummy/app/presenters/fields/datetime_field_presenter.rb
script_core-0.1.0 spec/dummy/app/presenters/fields/datetime_field_presenter.rb