Diff for /loncom/interface/Attic/lonspreadsheet.pm between versions 1.142 and 1.143

version 1.142, 2002/11/19 19:20:50 version 1.143, 2002/11/19 22:36:09
Line 1149  sub exportdata { Line 1149  sub exportdata {
   
   
 sub update_student_sheet{  sub update_student_sheet{
     my ($sheet,$c) = @_;      my ($sheet,$r,$c) = @_;
     # Load in the studentcalc sheet      # Load in the studentcalc sheet
     &readsheet($sheet,'default_studentcalc');      &readsheet($sheet,'default_studentcalc');
     # Determine the structure (contained assessments, etc) of the sheet      # Determine the structure (contained assessments, etc) of the sheet
Line 1157  sub update_student_sheet{ Line 1157  sub update_student_sheet{
     # Load in the cached sheets for this student      # Load in the cached sheets for this student
     &cachedssheets($sheet);      &cachedssheets($sheet);
     # Load in the (possibly cached) data from the assessment sheets              # Load in the (possibly cached) data from the assessment sheets        
     &loadstudent($sheet,$c);      &loadstudent($sheet,$r,$c);
     # Compute the sheet      # Compute the sheet
     &calcsheet($sheet);      &calcsheet($sheet);
 }  }
Line 1189  sub sort_indicies { Line 1189  sub sort_indicies {
     my @sortidx=();      my @sortidx=();
     #      #
     if ($sheet->{'sheettype'} eq 'classcalc') {      if ($sheet->{'sheettype'} eq 'classcalc') {
         my @sortby=();          my @sortby=(undef);
         # Skip row 0          # Skip row 0
         for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {          for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {
             my (undef,$sname,$sdom,$fullname,$section,$id) =               my (undef,$sname,$sdom,$fullname,$section,$id) = 
Line 1199  sub sort_indicies { Line 1199  sub sort_indicies {
         }          }
         @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx;          @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx;
     } elsif ($sheet->{'sheettype'} eq 'studentcalc') {      } elsif ($sheet->{'sheettype'} eq 'studentcalc') {
         my @sortby=();          my @sortby1=(undef);
           my @sortby2=(undef);
         # Skip row 0          # Skip row 0
         &Apache::lonnet::logthis('starting sort for studentcalc');  
         for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {          for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {
             my (undef,$symb,$uname,$udom,$mapid,$resid,$title) =               my (undef,$symb,$uname,$udom,$mapid,$resid,$title) = 
                 split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}});                  split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}});
Line 1210  sub sort_indicies { Line 1210  sub sort_indicies {
             if ($sequence eq '') {              if ($sequence eq '') {
                 $sequence = $symb;                  $sequence = $symb;
             }              }
             push (@sortby, $sequence);              push (@sortby1, $sequence);
               push (@sortby2, $title);
             push (@sortidx, $row);              push (@sortidx, $row);
         }          }
         @sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx;          @sortidx = sort { $sortby1[$a] cmp $sortby1[$b] || 
                                 $sortby2[$a] cmp $sortby2[$b] } @sortidx;
     } else {      } else {
         my @sortby=();          my @sortby=(undef);
         # Skip row 0          # Skip row 0
         for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {          for (my $row=1;$row<=$sheet->{'maxrow'};$row++) {
             push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}'));              push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}'));
Line 1361  END Line 1363  END
         next if (($sheet->{'sheettype'} eq 'assesscalc') &&           next if (($sheet->{'sheettype'} eq 'assesscalc') && 
                  (! $ENV{'form.showall'})                &&                   (! $ENV{'form.showall'})                &&
                  ($rowdata[0]->{'value'} =~ /^\s*$/));                   ($rowdata[0]->{'value'} =~ /^\s*$/));
         if ($sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) {          if (! $ENV{'form.showall'} &&
               $sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) {
             my $row_is_empty = 1;              my $row_is_empty = 1;
             foreach my $cell (@rowdata) {              foreach my $cell (@rowdata) {
                 if ($cell->{'value'} !~  /^\s*$/) {                  if ($cell->{'value'} !~  /^\s*$/) {
Line 1369  END Line 1372  END
                     last;                      last;
                 }                  }
             }              }
             next if $row_is_empty;              next if ($row_is_empty);
         }          }
         #          #
         my $defaultbg='#E0FF';          my $defaultbg='#E0FF';
Line 1535  END Line 1538  END
         # Create a new spreadsheet          # Create a new spreadsheet
         my $studentsheet = &makenewsheet($sname,$sdom,'studentcalc',undef);          my $studentsheet = &makenewsheet($sname,$sdom,'studentcalc',undef);
         # Read in the spreadsheet definition          # Read in the spreadsheet definition
         &update_student_sheet($studentsheet,$c);          &update_student_sheet($studentsheet,$r,$c);
         # Stuff the sheet into excel          # Stuff the sheet into excel
         &export_sheet_as_excel($studentsheet,$student_excel_worksheet);          &export_sheet_as_excel($studentsheet,$student_excel_worksheet);
         my $totaltime = int((time - $starttime) / $count * $sheet->{'maxrow'});          my $totaltime = int((time - $starttime) / $count * $sheet->{'maxrow'});
Line 1651  sub export_sheet_as_excel { Line 1654  sub export_sheet_as_excel {
     # Loop through the rows and output them one at a time      # Loop through the rows and output them one at a time
     foreach my $rownum (@Rows) {      foreach my $rownum (@Rows) {
         my ($rowlabel,@rowdata) = &get_row($sheet,$rownum);          my ($rowlabel,@rowdata) = &get_row($sheet,$rownum);
         next if ($rowlabel =~ /^\s*$/);          next if ($rowlabel =~ /^[\s]*$/);
         $cols_output = 0;          $cols_output = 0;
         my $label = &format_excel_rowlabel($rowlabel);          my $label = &format_excel_rowlabel($rowlabel);
           if ( ! $ENV{'form.showall'} &&
                $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);
           }
         $worksheet->write($rows_output,$cols_output++,$label);          $worksheet->write($rows_output,$cols_output++,$label);
         if (ref($label)) {          if (ref($label)) {
             $cols_output = (scalar(@$label));              $cols_output = (scalar(@$label));
Line 1680  sub outsheet_xml   { Line 1694  sub outsheet_xml   {
 ## Outsheet - calls other outsheet_* functions  ## Outsheet - calls other outsheet_* functions
 ##  ##
 sub outsheet {  sub outsheet {
     my ($r,$sheet)=@_;      my ($sheet,$r)=@_;
     if (! exists($ENV{'form.output'})) {      if (! exists($ENV{'form.output'})) {
         $ENV{'form.output'} = 'HTML';          $ENV{'form.output'} = 'HTML';
     }      }
Line 3211  ENDSCRIPT Line 3225  ENDSCRIPT
 #value='Insert Row Bottom'><br>  #value='Insert Row Bottom'><br>
 #ENDINSERTBUTTONS  #ENDINSERTBUTTONS
     # Print out sheet      # Print out sheet
     &outsheet($r,$sheet);      &outsheet($sheet,$r);
     $r->print('</form></body></html>');      $r->print('</form></body></html>');
     #  Done      #  Done
     return OK;      return OK;

Removed from v.1.142  
changed lines
  Added in v.1.143


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>