--- loncom/interface/Attic/lonspreadsheet.pm 2002/04/10 15:30:13 1.83 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/04/18 20:21:38 1.87 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.83 2002/04/10 15:30:13 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.87 2002/04/18 20:21:38 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -122,6 +122,8 @@ sub initsheet { $safeeval->permit("sort"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); + $safehole->wrap(\&send_msg, $safeeval,"&send_msg"); + $safehole->wrap(\&send_crit_msg,$safeeval,"&send_crit_msg"); my $code=<<'ENDDEFS'; # ---------------------------------------------------- Inside of the safe space @@ -508,6 +510,15 @@ sub HASH { return $Values[-1]; } +#------------------------------------------------------- + +=item NUM(range) + +returns the number of items in the range. + +=cut + +#------------------------------------------------------- sub NUM { my $mask=mask(@_); my $num= $#{@{grep(/$mask/,keys(%v))}}+1; @@ -527,6 +538,15 @@ sub BIN { } +#------------------------------------------------------- + +=item SUM(range) + +returns the sum of items in the range. + +=cut + +#------------------------------------------------------- sub SUM { my $mask=mask(@_); my $sum=0; @@ -536,6 +556,15 @@ sub SUM { return $sum; } +#------------------------------------------------------- + +=item MEAN(range) + +compute the average of the items in the range. + +=cut + +#------------------------------------------------------- sub MEAN { my $mask=mask(@_); my $sum=0; my $num=0; @@ -550,6 +579,15 @@ sub MEAN { } } +#------------------------------------------------------- + +=item STDDEV(range) + +compute the standard deviation of the items in the range. + +=cut + +#------------------------------------------------------- sub STDDEV { my $mask=mask(@_); my $sum=0; my $num=0; @@ -566,6 +604,15 @@ sub STDDEV { return sqrt($sum/($num-1)); } +#------------------------------------------------------- + +=item PROD(range) + +compute the product of the items in the range. + +=cut + +#------------------------------------------------------- sub PROD { my $mask=mask(@_); my $prod=1; @@ -575,6 +622,15 @@ sub PROD { return $prod; } +#------------------------------------------------------- + +=item MAX(range) + +compute the maximum of the items in the range. + +=cut + +#------------------------------------------------------- sub MAX { my $mask=mask(@_); my $max='-'; @@ -585,6 +641,15 @@ sub MAX { return $max; } +#------------------------------------------------------- + +=item MIN(range) + +compute the minimum of the items in the range. + +=cut + +#------------------------------------------------------- sub MIN { my $mask=mask(@_); my $min='-'; @@ -595,12 +660,22 @@ sub MIN { return $min; } +#------------------------------------------------------- + +=item SUMMAX(num,lower,upper) + +compute the sum of the largest 'num' items in the range from +'lower' to 'upper' + +=cut + +#------------------------------------------------------- sub SUMMAX { my ($num,$lower,$upper)=@_; my $mask=mask($lower,$upper); my @inside=(); foreach (grep /$mask/,keys(%v)) { - $inside[$#inside+1]=$v{$_}; + push (@inside,$v{$_}); } @inside=sort(@inside); my $sum=0; my $i; @@ -610,6 +685,16 @@ sub SUMMAX { return $sum; } +#------------------------------------------------------- + +=item SUMMIN(num,lower,upper) + +compute the sum of the smallest 'num' items in the range from +'lower' to 'upper' + +=cut + +#------------------------------------------------------- sub SUMMIN { my ($num,$lower,$upper)=@_; my $mask=mask($lower,$upper); @@ -1233,17 +1318,11 @@ sub readsheet { } elsif($fn=~/\/*\.spreadsheet$/) { my $sheetxml=&Apache::lonnet::getfile (&Apache::lonnet::filelocation('',$fn)); - print "
$sheetxml
"; if ($sheetxml == -1) { $sheetxml='"Error loading spreadsheet ' .$fn.'"'; } %f=%{&parse_sheet(\$sheetxml)}; - print "
";
-         foreach (sort( keys(%f))) {
-             print "$_ = $f{$_}\n";
-         }
-         print "
"; } else { my $sheet=''; my %tmphash = &Apache::lonnet::dump($fn,$cdom,$cnum); @@ -2342,8 +2421,8 @@ $tmpdir=$r->dir_config('lonDaemons').'/t function celledit(cn,cf) { var cnf=prompt(cn,cf); - if (cnf!=null) { - document.sheet.unewfield.value=cn; + if (cnf!=null) { + document.sheet.unewfield.value=cn; document.sheet.unewformula.value=cnf; document.sheet.submit(); } @@ -2571,6 +2650,7 @@ ENDSCRIPT } } $r->print('>'); + if (&gettype($asheet) eq 'classcalc') { $r->print( ' Output CSV format: