--- loncom/interface/lonhtmlcommon.pm 2003/03/10 20:21:45 1.17 +++ loncom/interface/lonhtmlcommon.pm 2003/06/18 15:02:20 1.24 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.17 2003/03/10 20:21:45 matthew Exp $ +# $Id: lonhtmlcommon.pm,v 1.24 2003/06/18 15:02:20 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -65,6 +65,9 @@ use strict; =item &date_setter +&date_setter returns html and javascript for a compact date-setting form. +To retrieve values from it, use &get_date_from_form(). + Inputs =over 4 @@ -82,6 +85,12 @@ The current setting for this time parame An undefined value is taken to indicate the value is the current time. Also, to be explicit, a value of 'now' also indicates the current time. +=back + +Bugs + +The method used to restrict user input will fail in the year 2400. + =cut ############################################## @@ -177,8 +186,12 @@ ENDJS ############################################## ############################################## +=pod + =item &get_date_from_form +get_date_from_form retrieves the date specified in an &date_setter form. + Inputs: =over 4 @@ -239,6 +252,7 @@ sub get_date_from_form { $year = $tmpyear - 1900; } } + if (($year<70) || ($year>137)) { return undef; } if (eval(&timelocal($sec,$min,$hour,$day,$month,$year))) { return &timelocal($sec,$min,$hour,$day,$month,$year); } else { @@ -251,6 +265,33 @@ sub get_date_from_form { =pod +=item &pjump_javascript_definition() + +Returns javascript defining the 'pjump' function, which opens up a +parameter setting wizard. + +=cut + +############################################## +############################################## +sub pjump_javascript_definition { + my $Str = <Ascending'."\n". - 'Descending'."\n"; - $Str .= ''."\n"; - - return $Str; -} - -sub MapOptions { - my ($data, $page, $formName)=@_; - my $Str = ''; - $Str .= ''."\n"; } @@ -674,6 +579,102 @@ sub FormatStudentInformation { ######################################################## ######################################################## +=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)=@_; @@ -690,8 +691,8 @@ sub Create_PrgWin { 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(); @@ -703,7 +704,7 @@ sub Update_PrgWin { my ($r,$prog_state,$displayString)=@_; $r->print(''); - $$prog_state{'laststart'}=time; + $$prog_state{'laststart'}=&Time::HiRes::time(); $r->rflush(); } @@ -711,7 +712,8 @@ sub Update_PrgWin { 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) { @@ -726,12 +728,23 @@ sub Increment_PrgWin { } else { $time_est .= ' seconds'; } - + 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 { + $lasttime = '('.$lasttime.' seconds for '.$extraInfo.')'; + } $r->print(''); - $$prog_state{'laststart'}=time; + ': '.$time_est.' remaining '.$lasttime.'";'.''); + $$prog_state{'laststart'}=&Time::HiRes::time(); $r->rflush(); } @@ -744,4 +757,5 @@ sub Close_PrgWin { } 1; + __END__ 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.