[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__