CGI-ProgressBar
view release on metacpan or search on metacpan
lib/CGI/ProgressBar.pm view on Meta::CPAN
use strict;
use warnings;
package CGI::ProgressBar;
=head1 NAME
CGI::ProgressBar - CGI.pm sub-class with a progress bar object
=head1 SYNOPSIS
use strict;
use warnings;
use CGI::ProgressBar qw/:standard/;
$| = 1; # Do not buffer output
print header,
start_html(
-title=>'A Simple Example',
-style=>{
-src => '', # You can override the bar style here
-code => '', # or inline, here.
}
),
h1('A Simple Example'),
p('This example will update a JS/CSS progress bar.'),
progress_bar( -from=>1, -to=>100 );
# We're set to go.
for (1..10){
print update_progress_bar;
# Simulate being busy:
sleep 1;
}
# Now we're done, get rid of the bar:
print hide_progress_bar;
print p('All done.');
print end_html;
exit;
=head1 DESCRIPTION
This module provides an HTML/JS progress bar for web browsers, to keep end-users occupied when otherwise
nothing would appear to be happening.
It aims to require that the recipient client have a minimum
of JavaScript 1.0, HTML 4.0, and CSS/1.
All feedback would be most welcome. Address at the end of the POD.
=cut
use 5.004;
=head2 DEPENDENCIES
CGI
=cut
our $VERSION = '0.05';
BEGIN {
use CGI::Util; # qw(rearrange);
use base 'CGI';
=head2 EXPORT
progress_bar
update_progress_bar
hide_progress_bar
=cut
no strict 'refs';
foreach (qw/ progress_bar update_progress_bar hide_progress_bar/){
*{caller(0).'::'.$_} = \&{__PACKAGE__.'::'.$_};
}
use strict 'refs';
}
=head1 USE
The module sub-classes CGI.pm, providing three additional methods (or
functions, depending on your taste), each of which are detailed below.
Simply replace your "use CGI qw//;" with "use CGI::ProgressBar qw//;".
Make sure you are aware of your output buffer size: C<$|=$smothingsmall>.
Treat each new function as any other CGI.pm HTML-producing routine with
the exception that the arguments should be supplied as in OOP form. In
( run in 1.055 second using v1.01-cache-2.11-cpan-39bf76dae61 )