--- loncom/interface/Attic/lonspreadsheet.pm 2002/11/15 18:59:28 1.141 +++ loncom/interface/Attic/lonspreadsheet.pm 2002/11/19 19:20:50 1.142 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.141 2002/11/15 18:59:28 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; }