package NGCP::Panel::Field::DataTable; use Moose; use Template; extends 'HTML::FormHandler::Field'; has '+widget' => (default => ''); # leave this empty, as there is no widget ... has 'template' => ( isa => 'Str', is => 'rw', default => 'share/templates/helpers/datatables_field.tt' ); has 'ajax_src' => ( isa => 'Str', is => 'rw' ); has 'table_fields' => ( isa => 'ArrayRef', is => 'rw' ); sub render_element { my ($self) = @_; my $output = ''; (my $tablename = $self->html_name) =~ s!\.!!g; my $vars = { field_name => $self->html_name, table_id => $tablename . "table", hidden_id => $tablename . "hidden", value => $self->value, ajax_src => $self->ajax_src, table_fields => $self->table_fields, }; my $t = new Template({}); $t->process($self->template, $vars, \$output) || print ">>>>>>>>>>>>>>>>> failed to process tt: ".$t->error()."\n"; return $output; } sub render { my ( $self, $result ) = @_; $result ||= $self->result; die "No result for form field '" . $self->full_name . "'. Field may be inactive." unless $result; my $output = $self->render_element( $result ); return $self->wrap_field( $result, $output ); } sub wrap_field { my ( $self, $result, $rendered_widget ) = @_; return $rendered_widget; } 1; # vim: set tabstop=4 expandtab: