Class: Ezframe::BirthdayType
- Defined in:
- lib/ezframe/column_type.rb
Instance Attribute Summary
Attributes inherited from TypeBase
Instance Method Summary collapse
- #form(opts = {}) ⇒ Object
- #form_to_value(form, target_key: nil) ⇒ Object
- #multi_inputs? ⇒ Boolean
- #parse_date(date) ⇒ Object
- #validate(val) ⇒ Object
-
#validate_date(val) ⇒ Object
日付の検証.
- #view(opts = {}) ⇒ Object
Methods inherited from TextType
Methods inherited from TypeBase
#db_type, #db_value, get_class, #initialize, #key, #label, #make_error_box, #no_edit?, #no_view?, #normalize, #type, type_name, #use_view_format, #value, #value=
Constructor Details
This class inherits a constructor from Ezframe::TypeBase
Instance Method Details
#form(opts = {}) ⇒ Object
509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 |
# File 'lib/ezframe/column_type.rb', line 509 def form(opts = {}) return nil if no_edit? && !opts[:force] now = Time.now year_list = [] 110.times do |y| year = now.year - y - 10 year_list.push [year, "#{year}(#{Japanese.convert_wareki(year)})"] end year_list.unshift([ 0, "(年)" ]) key = self.key key ="#{key}#{opts[:key_suffix]}" if opts[:key_suffix] year, mon, mday = parse_date(@value) mon_list = (1..12).map { |m| [m, "#{m}"] } mon_list.unshift([0, "(月)"]) mday_list = (1..31).map { |d| [d, "#{d}"] } mday_list.unshift([0, "(日)"]) ezvalid = "target_key=#{key}:with=#multi-#{key}" return Ht.div(id: "multi-#{key}", child: [ Ht.div([Ht.select(name: "#{key}_year", class: %w[browser-default multi_input], item: year_list, value: year, ezvalid: ezvalid), Ht.small("年")]), Ht.select(name: "#{key}_mon", class: %w[browser-default multi_input], item: mon_list, value: mon, ezvalid: ezvalid), Ht.small("月"), Ht.select(name: "#{key}_mday", class: %w[browser-default multi_input], item: mday_list, value: mday, ezvalid: ezvalid), Ht.small("日"), make_error_box(key)]) end |
#form_to_value(form, target_key: nil) ⇒ Object
559 560 561 562 563 |
# File 'lib/ezframe/column_type.rb', line 559 def form_to_value(form, target_key: nil) key = target_key || self.key y, m, d = form["#{key}_year".to_sym], form["#{key}_mon".to_sym], form["#{key}_mday".to_sym] return "%d-%02d-%02d"%[y.to_i, m.to_i, d.to_i] end |
#multi_inputs? ⇒ Boolean
555 556 557 |
# File 'lib/ezframe/column_type.rb', line 555 def multi_inputs? true end |
#parse_date(date) ⇒ Object
548 549 550 551 552 553 |
# File 'lib/ezframe/column_type.rb', line 548 def parse_date(date) if date && date =~ /(\d+)\-(\d+)\-(\d+)/ return [ $1.to_i,$2.to_i,$3.to_i ] end return nil end |
#validate(val) ⇒ Object
565 566 567 |
# File 'lib/ezframe/column_type.rb', line 565 def validate(val) return validate_date(val) end |
#validate_date(val) ⇒ Object
日付の検証
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 |
# File 'lib/ezframe/column_type.rb', line 570 def validate_date(val) if val.is_a?(String) y,m,d = val.split("-") if y.to_i == 0 || m.to_i == 0 || d.to_i == 0 return nil end tm = Time.mktime(y.to_i, m.to_i, d.to_i) elsif val.is_a?(Time) tm = val end if tm.mday != d.to_i @error = :invalid_value return @error end return nil end |
#view(opts = {}) ⇒ Object
538 539 540 541 542 543 544 545 546 |
# File 'lib/ezframe/column_type.rb', line 538 def view(opts = {}) return nil if no_view? && !opts[:force] return nil unless @value year, mon, mday = parse_date(@value) year_s = if year.to_i == 0 then "?" else "%d" % [year]; end mon_s = if mon.to_i == 0 then "?" else "%2d" % [mon]; end mday_s = if mday.to_i == 0 then "?" else "%2d" % [mday]; end return "#{year_s}<small>年</small>#{mon_s}<small>月</small>#{mday_s}<small>日</small>" end |