package WebGUI::Middleware::Debug::Performance; use 5.008; use strict; use warnings; use parent qw(Plack::Middleware::Debug::Base); our $VERSION = '0.07'; sub panel_name { 'Asset Performance' } sub run { my ($self, $env, $panel) = @_; my $perf_log = []; $env->{'webgui.perf.logger'} = sub { my $args = shift; my $asset = $args->{asset}; my $log_data = { 'time' => $args->{time}, 'type' => $args->{type}, 'message' => $args->{message}, $asset ? ( 'viewUrl' => $asset->getUrl, 'editUrl' => $asset->getUrl('func=edit'), 'assetTitle' => $asset->title, ) : (), }; push @$perf_log, $log_data; }; return sub { my $res = shift; $panel->nav_subtitle(scalar @$perf_log . ' events'); if (@$perf_log) { $panel->content($self->render_log($perf_log)); } }; } my $log_template = __PACKAGE__->build_template(<<'EOTMPL'); % my $i; % for my $event ( @{ $_[0]->{list} } ) { % }
Time Type Item
<%= $event->{time} %> <%= $event->{type} %> % if ($event->{message}) { <%= $event->{message} %> % } % if ($event->{assetTitle}) { View Edit <%= $event->{assetTitle} %> % }
EOTMPL sub render_log { my ($self, $events) = @_; $self->render($log_template, { list => $events }); } 1;