--- loncom/interface/Attic/lonspreadsheet.pm 2002/07/04 17:51:32 1.93 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/07/05 21:44:50 1.96 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.93 2002/07/04 17:51:32 www Exp $ +# $Id: lonspreadsheet.pm,v 1.96 2002/07/05 21:44:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -106,6 +106,14 @@ my %courseopt; my %useropt; my %parmhash; +# +# Some hashes for stats on timing and performance +# + +my %starttimes; +my %usedtimes; +my %numbertimes; + # Stuff that only the screen handler can know my $includedir; @@ -122,6 +130,7 @@ sub initsheet { $safeeval->permit("sort"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); + $safeeval->share('$@'); my $code=<<'ENDDEFS'; # ---------------------------------------------------- Inside of the safe space @@ -165,6 +174,10 @@ $cfn=''; $usymb=''; +# error messages + +$errormsg=''; + sub mask { my ($lower,$upper)=@_; @@ -820,7 +833,7 @@ sub sett { } sub calc { - %v=(); + undef %v; &sett(); my $notfinished=1; my $depth=0; @@ -828,16 +841,16 @@ sub calc { $notfinished=0; foreach (keys(%t)) { my $old=$v{$_}; - $v{$_}=eval($t{$_}); + $v{$_}=eval $t{$_}; if ($@) { - %v=(); - return $@; + undef %v; + return $_.': '.$@; } if ($v{$_} ne $old) { $notfinished=1; } } $depth++; if ($depth>100) { - %v=(); + undef %v; return 'Maximum calculation depth exceeded'; } } @@ -956,7 +969,7 @@ sub setrowlabels { sub calcsheet { my $safeeval=shift; - $safeeval->reval('&calc();'); + return $safeeval->reval('&calc();'); } # ------------------------------------------------------------------ Get values @@ -1490,10 +1503,11 @@ sub tmpread { } } elsif ($nfield eq 'insertrow') { $countrows++; + my $newrow=substr('000000'.$countrows,-7); if ($nform eq 'top') { - $fo{'A'.$countrows}='AAAAA_'.$countrows; + $fo{'A'.$countrows}='--- '.$newrow; } else { - $fo{'A'.$countrows}='zzzzz_'.$countrows; + $fo{'A'.$countrows}='~~~ '.$newrow; } } else { if ($nfield) { $fo{$nfield}=$nform; }