[LON-CAPA-cvs] cvs: loncom /interface lonhtmlcommon.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 11 Jun 2003 14:20:29 -0000
matthew Wed Jun 11 10:20:29 2003 EDT
Modified files:
/loncom/interface lonhtmlcommon.pm
Log:
Use Time::HiRes::time for progress window computations. No filtering yet,
just a higher resolution timer.
Index: loncom/interface/lonhtmlcommon.pm
diff -u loncom/interface/lonhtmlcommon.pm:1.22 loncom/interface/lonhtmlcommon.pm:1.23
--- loncom/interface/lonhtmlcommon.pm:1.22 Wed May 21 12:16:32 2003
+++ loncom/interface/lonhtmlcommon.pm Wed Jun 11 10:20:29 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.22 2003/05/21 16:16:32 matthew Exp $
+# $Id: lonhtmlcommon.pm,v 1.23 2003/06/11 14:20:29 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -578,6 +578,102 @@
########################################################
########################################################
+=pod
+
+=item Progess Window Handling Routines
+
+These routines handle the creation, update, increment, and closure of
+progress windows. The progress window reports to the user the number
+of items completed and an estimate of the time required to complete the rest.
+
+=over 4
+
+
+=item &Create_PrgWin
+
+Writes javascript to the client to open a progress window and returns a
+data structure used for bookkeeping.
+
+Inputs
+
+=over 4
+
+=item $r Apache request
+
+=item $title The title of the progress window
+
+=item $heading A description (usually 1 line) of the process being initiated.
+
+=item $number_to_do The total number of items being processed.
+
+=back
+
+Returns a hash containing the progress state data structure.
+
+
+=item &Update_PrgWin
+
+Updates the text in the progress indicator. Does not increment the count.
+See &Increment_PrgWin.
+
+Inputs:
+
+=over 4
+
+=item $r Apache request
+
+=item $prog_state Pointer to the data structure returned by &Create_PrgWin
+
+=item $displaystring The string to write to the status indicator
+
+=back
+
+Returns: none
+
+
+=item Increment_PrgWin
+
+Increment the count of items completed for the progress window by 1.
+
+Inputs:
+
+=over 4
+
+=item $r Apache request
+
+=item $prog_state Pointer to the data structure returned by Create_PrgWin
+
+=item $extraInfo A description of the items being iterated over. Typically
+'student'.
+
+=back
+
+Returns: none
+
+
+=item Close_PrgWin
+
+Closes the progress window.
+
+Inputs:
+
+=over 4
+
+=item $r Apache request
+
+=item $prog_state Pointer to the data structure returned by Create_PrgWin
+
+=back
+
+Returns: none
+
+=back
+
+=cut
+
+########################################################
+########################################################
+
# Create progress
sub Create_PrgWin {
my ($r, $title, $heading, $number_to_do)=@_;
@@ -594,8 +690,8 @@
my %prog_state;
$prog_state{'done'}=0;
- $prog_state{'firststart'}=time;
- $prog_state{'laststart'}=time;
+ $prog_state{'firststart'}=&Time::HiRes::time();
+ $prog_state{'laststart'}=&Time::HiRes::time();
$prog_state{'max'}=$number_to_do;
$r->rflush();
@@ -607,7 +703,7 @@
my ($r,$prog_state,$displayString)=@_;
$r->print('<script>popwin.document.popremain.remaining.value="'.
$displayString.'";</script>');
- $$prog_state{'laststart'}=time;
+ $$prog_state{'laststart'}=&Time::HiRes::time();
$r->rflush();
}
@@ -615,7 +711,8 @@
sub Increment_PrgWin {
my ($r,$prog_state,$extraInfo)=@_;
$$prog_state{'done'}++;
- my $time_est= (time - $$prog_state{'firststart'})/$$prog_state{'done'} *
+ my $time_est= (&Time::HiRes::time() - $$prog_state{'firststart'})/
+ $$prog_state{'done'} *
($$prog_state{'max'}-$$prog_state{'done'});
$time_est = int($time_est);
if (int ($time_est/60) > 0) {
@@ -630,7 +727,14 @@
} else {
$time_est .= ' seconds';
}
- my $lasttime = time-$$prog_state{'laststart'};
+ my $lasttime = &Time::HiRes::time()-$$prog_state{'laststart'};
+ if ($lasttime > 9) {
+ $lasttime = int($lasttime);
+ } elsif ($lasttime < 0.01) {
+ $lasttime = 0;
+ } else {
+ $lasttime = sprintf("%3.2f",$lasttime);
+ }
if ($lasttime == 1) {
$lasttime = '('.$lasttime.' second for '.$extraInfo.')';
} else {
@@ -639,7 +743,7 @@
$r->print('<script>popwin.document.popremain.remaining.value="'.
$$prog_state{'done'}.'/'.$$prog_state{'max'}.
': '.$time_est.' remaining '.$lasttime.'";'.'</script>');
- $$prog_state{'laststart'}=time;
+ $$prog_state{'laststart'}=&Time::HiRes::time();
$r->rflush();
}
@@ -652,4 +756,5 @@
}
1;
+
__END__