Class: Ezframe::DatetimeType

Inherits:
TextType show all
Defined in:
lib/ezframe/column_type.rb

Instance Attribute Summary

Attributes inherited from TypeBase

#attribute, #error, #parent

Instance Method Summary collapse

Methods inherited from TextType

#normalize

Methods inherited from TypeBase

#db_value, get_class, #key, #label, #make_error_box, #multi_inputs?, #no_edit?, #no_view?, #normalize, #type, type_name, #use_view_format, #validate

Constructor Details

#initialize(attr = nil) ⇒ DatetimeType

Returns a new instance of DatetimeType.



434
435
436
437
438
# File 'lib/ezframe/column_type.rb', line 434

def initialize(attr = nil)
  super(attr)
  # @attribute[:class] = "datettimepicker"  # for jquery datetimepicker
  @attribute[:class] = "datetpicker"  
end

Instance Method Details

#db_typeObject



497
498
499
# File 'lib/ezframe/column_type.rb', line 497

def db_type
  "timestamp"
end

#form(opts = {}) ⇒ Object



483
484
485
486
487
488
489
490
491
492
493
494
495
# File 'lib/ezframe/column_type.rb', line 483

def form(opts = {})
  # EzLog.debug("DatetimeType: key=#{self.key}, opts=#{opts}")
  return nil if no_edit? && !opts[:force]
  h = super
  return nil unless h
  if h
    h[:type] = "text"
    h[:value] = @value || ""
    h[:class] = [ "datepicker" ]
    h[:class].push(@attribute[:class]) if @attribute[:class]
  end
  return h
end

#valueObject



501
502
503
504
505
# File 'lib/ezframe/column_type.rb', line 501

def value
  return nil if @value.nil? || (@value.is_a?(String) && @value.strip.empty?)
  return @value if @value.is_a?(Date) || @value.is_a?(Time)
  return DateTime.parse(@value) if @value.is_a?(String)
end

#value=(v) ⇒ Object



440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
# File 'lib/ezframe/column_type.rb', line 440

def value=(v)
  if v.nil?
    default = @attribute[:default]
    if default
      @value = default
    else
      @value = nil
    end
    return
  end
  if v.is_a?(String)
    if v.strip.empty?
      @value = nil
      return
    end
    begin
      @value = DateTime.parse(v)
    rescue => e
      EzLog.warn("date format error: #{self.key}=#{v}:#{e}")
      @value = nil
    end
    return
  end
  if v.is_a?(Date) || v.is_a?(Time) || v.is_a?(DateTime)
    @value = v
  else
    EzLog.info "[WARN] illegal value for date type: #{v.inspect}"
  end
end

#view(opts = {}) ⇒ Object



470
471
472
473
474
475
476
477
478
479
480
481
# File 'lib/ezframe/column_type.rb', line 470

def view(opts = {})
  return nil if no_view? && !opts[:force]
  if @value.is_a?(Time) || @value.is_a?(Date)
    if @attribute[:view_format]
      return use_view_format(@attribute[:view_format], @value)
    else
      return "%d/%02d/%02d %02d:%02d:%02d"%[@value.year, @value.mon, @value.mday, @value.hour, @value.min, @value.sec]
    end
  else
    return @value
  end
end