--- loncom/interface/lonhtmlcommon.pm 2010/06/02 05:34:27 1.274 +++ loncom/interface/lonhtmlcommon.pm 2010/06/09 14:55:22 1.275 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.274 2010/06/02 05:34:27 droeschl Exp $ +# $Id: lonhtmlcommon.pm,v 1.275 2010/06/09 14:55:22 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1049,11 +1049,22 @@ sub Update_PrgWin { # increment progress state sub Increment_PrgWin { - my ($r,$prog_state,$extraInfo)=@_; - $$prog_state{'done'}++; + my ($r,$prog_state,$extraInfo,$step)=@_; + if ($step !~ /^\d+$/) { + $step = 1; # default + } + $$prog_state{'done'} += $step; + + # Catch (max modulo step) <> 0 + my $current = $$prog_state{'done'}; + my $last = ($$prog_state{'max'} - $current); + if ($last <= 0) { + $last = 1; + $current = $$prog_state{'max'}; + } + my $time_est= (&Time::HiRes::time() - $$prog_state{'firststart'})/ - $$prog_state{'done'} * - ($$prog_state{'max'}-$$prog_state{'done'}); + $current * $last; $time_est = int($time_est); # my $min = int($time_est/60); @@ -1100,7 +1111,7 @@ sub Increment_PrgWin { $$prog_state{'window'}.'.document.'. $$prog_state{'formname'}.'.'. $$prog_state{'inputname'}.'.value="'. - $$prog_state{'done'}.'/'.$$prog_state{'max'}. + $current.'/'.$$prog_state{'max'}. ': '.$time_est.' '.&mt('remaining').' '.$lasttime.'";' )); $$prog_state{'laststart'}=&Time::HiRes::time();