Sha256: acde14d91ebe1a0360a514c66d69102a9bc0378064c93daaf11fe59be813b165

Contents?: true

Size: 1.09 KB

Versions: 42

Compression:

Stored size: 1.09 KB

Contents

module Avo
  module Fields
    class DateTimeField < DateField
      attr_reader :format
      attr_reader :picker_format
      attr_reader :time_24hr
      attr_reader :timezone

      def initialize(id, **args, &block)
        super(id, **args, &block)

        add_boolean_prop args, :time_24hr
        add_string_prop args, :picker_format, "Y-m-d H:i:S"
        add_string_prop args, :format, "yyyy-LL-dd TT"
        add_string_prop args, :timezone
      end

      def formatted_value
        return nil if value.nil?

        value.utc.to_time.iso8601
      end

      def edit_formatted_value
        return nil if value.nil?

        value.utc.iso8601
      end

      def fill_field(model, key, value, params)
        if value.in?(["", nil])
          model[id] = value

          return model
        end

        return model if value.blank?

        model[id] = utc_time(value)

        model
      end

      def utc_time(value)
        if timezone.present?
          ActiveSupport::TimeZone.new(timezone).local_to_utc(Time.parse(value))
        else
          value
        end
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
avo-2.17.1.pre.3 lib/avo/fields/date_time_field.rb
avo-2.17.1.pre.2.customauthorizationclients lib/avo/fields/date_time_field.rb
avo-2.17.1.pre.1.zeitwerk.eager.load.dir lib/avo/fields/date_time_field.rb
avo-2.17.0 lib/avo/fields/date_time_field.rb
avo-2.16.1.pre.1.nativefields lib/avo/fields/date_time_field.rb
avo-2.16.0 lib/avo/fields/date_time_field.rb
avo-2.15.3 lib/avo/fields/date_time_field.rb
avo-2.15.3.pre.1.data.attrs.to.sidebar.items lib/avo/fields/date_time_field.rb
avo-2.15.2 lib/avo/fields/date_time_field.rb
avo-2.15.2.pre.1 lib/avo/fields/date_time_field.rb
avo-2.15.1 lib/avo/fields/date_time_field.rb
avo-2.15.0 lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.7.polytranslations1 lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.6.nosprockets lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.5.nosprockets lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.4.tosqlfix lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.3.jsbundling lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.2.tailwindcss lib/avo/fields/date_time_field.rb
avo-2.14.3.pre.1.branding lib/avo/fields/date_time_field.rb
avo-2.14.2 lib/avo/fields/date_time_field.rb