Embperl
view release on metacpan or search on metacpan
Embperl/Form/Control/age.pm view on Meta::CPAN
sub init
{
my ($self) = @_ ;
$self->{unit} ||= '' ;
return $self ;
}
# ------------------------------------------------------------------------------------------
#
# get_sort_value - returns the value that should be used to sort
#
sub get_sort_value
{
my ($self, $req, $value) = @_ ;
$value = $self -> get_value ($req) if (!defined ($value)) ;
return $value ;
}
# ------------------------------------------------------------------------------------------
#
# get_display_text - returns the text that should be displayed
#
sub get_display_text
{
my ($self, $req, $time) = @_ ;
$time = $self -> get_value ($req) if (!defined ($time)) ;
return if ($time eq '') ;
#20060914041444Z
my ($year, $mon, $mday, $hour, $min, $sec, $tz) = ($time =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(.)$/) ;
my ($sec2, $min2, $hour2, $mday2, $mon2, $year2) = gmtime ;
$mon2++ ;
$year2+=1900 ;
#warn "$_[0] $year,$mon,$mday, $hour,$min,$sec,$year2,$mon2,$mday2, $hour2,$min2,$sec2" ;
my ($Dd,$Dh,$Dm,$Ds) = eval { Delta_DHMS($year,$mon,$mday, $hour,$min,$sec,
$year2,$mon2,$mday2, $hour2,$min2,$sec2) } ;
my $age = $Dd > 0?"${Dd}Tage":sprintf ('%d:%02dh', $Dh, $Dm) ;
my $tooltip = sprintf('%d.%02d.%04d %d:%02d', $mday, $mon, $year, $hour, $min) ;
return wantarray?($age, $tooltip):$age ;
}
# ------------------------------------------------------------------------------------------
#
# init_data - daten aufteilen
#
sub init_data
{
my ($self, $req, $parentctrl, $force) = @_ ;
my $fdat = $req -> {docdata} || \%fdat ;
my $name = $self->{name} ;
my $val = $fdat->{$name} ;
return if ($val eq '' || ($req -> {"ef_age_init_done_$name"} && !$force)) ;
my ($age, $tooltip) = $self -> $self -> get_display_text ($req, $val) ;
$fdat->{$name} = $age;
$fdat->{'_tt_' . $name} = $tooltip ;
$req -> {"ef_age_init_done_$name"} = 1 ;
}
# ------------------------------------------------------------------------------------------
#
# prepare_fdat - daten zusammenfuehren
#
sub prepare_fdat
{
my ($self, $req) = @_ ;
my $fdat = $req -> {form} || \%fdat ;
my $name = $self->{name} ;
return if (!exists $fdat->{$name}) ;
my $val = $fdat->{$name} ;
return if ($val eq '') ;
}
1 ;
__EMBPERL__
__END__
=pod
=head1 NAME
Embperl::Form::Control::age - A age input control with optional unit inside an Embperl Form
=head1 SYNOPSIS
{
type => 'age',
text => 'blabla',
name => 'foo',
unit => 'sec',
}
=head1 DESCRIPTION
Used to create an age input control inside an Embperl Form.
Will format date as days:hours:minutes from current time.
Optionally it can display an unit after the input field.
See Embperl::Form on how to specify parameters.
=head2 PARAMETER
( run in 1.125 second using v1.01-cache-2.11-cpan-39bf76dae61 )