Class: AlTimestamp

Inherits:
AlWidget show all
Defined in:
lib/al_form.rb,
lib/al_form/extend.rb

Overview

Note:

タイムスタンプウィジェット

年月日と時分秒を扱う 内部的にはTimeオブジェクトで保存する。

Direct Known Subclasses

AlDate, AlTime

Instance Attribute Summary (collapse)

Attributes inherited from AlWidget

#filter, #foreign, #hidden, #label, #message, #name, #required, #tag_attr, #value

Instance Method Summary (collapse)

Methods inherited from AlWidget

#set_attr, #set_value

Constructor Details

- (AlTimestamp) initialize(name, arg = {})

(AlTimestamp) constractor

AlWidget#initialize argは親クラスも参照

Parameters:

  • name (String)

    ウィジェット識別名 英文字を推奨

  • arg (Hash) (defaults to: {})

    引数ハッシュ

Options Hash (arg):

  • :max (Integer)

    最大値

  • :min (Integer)

    最小値

See Also:



1389
1390
1391
1392
1393
1394
1395
1396
# File 'lib/al_form.rb', line 1389

def initialize( name, arg = {} )
  require 'al_form/extend'

  super( name, arg )
  @filter = arg[:filter] || 'value.strip'
  @max = arg[:max]
  @min = arg[:min]
end

Instance Attribute Details

- (Integer) max

Returns 最大値

Returns:

  • (Integer)

    最大値



146
147
148
# File 'lib/al_form/extend.rb', line 146

def max
  @max
end

- (Integer) min

Returns 最小値

Returns:

  • (Integer)

    最小値



149
150
151
# File 'lib/al_form/extend.rb', line 149

def min
  @min
end

Instance Method Details

- (String) make_tag(arg = {})

(AlTimestamp) HTMLタグの生成

Parameters:

  • arg (Hash) (defaults to: {})

    htmlタグへ追加するアトリビュートを指定

Returns:

  • (String)

    htmlタグ



196
197
198
199
200
201
202
203
204
205
206
# File 'lib/al_form/extend.rb', line 196

def make_tag( arg = {} )
  if @hidden
    return %Q(<input type="hidden" name="#{@name}" id="#{@name}" value="#{make_value()}" #{AL_FORM_EMPTYTAG_CLOSE}\n)
  end

  r = %Q(<input type="text" name="#{@name}" id="#{@name}" value="#{make_value()}")
  (@tag_attr.merge arg).each do |k,v|
    r << %Q( #{k}="#{Alone::escape_html(v)}")
  end
  return "#{r} #{AL_FORM_EMPTYTAG_CLOSE}"
end

- (String) make_value(*arg)

(AlTimestamp) HTML値の生成

Parameters:

  • arg (String, Time)

    表示値。指定なければ内部値を使う。

Returns:

  • (String)

    html文字列



215
216
217
218
219
220
221
222
# File 'lib/al_form/extend.rb', line 215

def make_value( *arg )
  v = arg.empty? ? @value: arg[0]
  if v.class == Time
    return Alone::escape_html( v.strftime('%Y-%m-%d %H:%M:%S') )
  else
    return Alone::escape_html( v )
  end
end

- (Boolean) validate

(AlTimestamp) バリデート

Returns:

  • (Boolean)

    成否



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/al_form/extend.rb', line 157

def validate()
  require 'time'
  @message = ""

  if @value == "" || @value == nil
    if @required
      @message = "#{@label}を入力してください。"
      return false
    end
    @value = nil
    return true
  end

  begin
    @value = Time.parse( @value.to_s )
  rescue
    @message = "#{@label}を正しく入力してください。"
    return false
  end

  if @max && @value > @max
    @message = "#{@label}は、最大#{@max.strftime('%Y-%m-%d %H:%M:%S')}までで入力してください。"
    return false
  end
  if @min && @value < @min
    @message = "#{@label}は、最小#{@min.strftime('%Y-%m-%d %H:%M:%S')}までで入力してください。"
    return false
  end

  return true
end