--- loncom/interface/Attic/lonspreadsheet.pm 2002/11/15 18:19:10 1.140 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/11/19 19:20:50 1.142 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.140 2002/11/15 18:19:10 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.142 2002/11/19 19:20:50 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1186,17 +1186,43 @@ sub get_row { ######################################################################## sub sort_indicies { my $sheet = shift; - # - # Sort the rows in some manner - # - my @sortby=(); my @sortidx=(); - # Skip row 0 - for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { - push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}')); - push (@sortidx, $row); + # + if ($sheet->{'sheettype'} eq 'classcalc') { + my @sortby=(); + # Skip row 0 + for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { + my (undef,$sname,$sdom,$fullname,$section,$id) = + split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}}); + push (@sortby, lc($fullname)); + push (@sortidx, $row); + } + @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; + } elsif ($sheet->{'sheettype'} eq 'studentcalc') { + my @sortby=(); + # Skip row 0 + &Apache::lonnet::logthis('starting sort for studentcalc'); + for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { + my (undef,$symb,$uname,$udom,$mapid,$resid,$title) = + split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}}); + $symb = &Apache::lonnet::unescape($symb); + my ($sequence) = ($symb =~ /\/([^\/]*\.sequence)/); + if ($sequence eq '') { + $sequence = $symb; + } + push (@sortby, $sequence); + push (@sortidx, $row); + } + @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; + } else { + my @sortby=(); + # Skip row 0 + for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { + push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}')); + push (@sortidx, $row); + } + @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; } - @sortidx=sort { lc($sortby[$a]) cmp lc($sortby[$b]); } @sortidx; return @sortidx; } @@ -1332,6 +1358,19 @@ END foreach my $rownum (@Rows) { my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); next if ($rowlabel =~ /^\s*$/); + next if (($sheet->{'sheettype'} eq 'assesscalc') && + (! $ENV{'form.showall'}) && + ($rowdata[0]->{'value'} =~ /^\s*$/)); + if ($sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) { + my $row_is_empty = 1; + foreach my $cell (@rowdata) { + if ($cell->{'value'} !~ /^\s*$/) { + $row_is_empty = 0; + last; + } + } + next if $row_is_empty; + } # my $defaultbg='#E0FF'; # @@ -1753,7 +1792,8 @@ sub readsheet { if ($fh=Apache::File->new($includedir.'/'.$dfn)) { $sheetxml=join('',<$fh>); } else { - $sheetxml='"Error"'; + # $sheetxml='"Error"'; + $sheetxml=''; } %f=%{&parse_sheet(\$sheetxml)}; } elsif($fn=~/\/*\.spreadsheet$/) { @@ -3115,7 +3155,7 @@ ENDSCRIPT # Write the modified worksheet $r->print('Current sheet: '.$sheet->{'filename'}.'

'); &tmpwrite($sheet); - if ($sheet->{'sheettype'} eq 'studentcalc') { + if ($sheet->{'sheettype'} eq 'assesscalc') { $r->print('

Show rows with empty A column: '); } else { $r->print('

Show empty rows: ');