Diff for /loncom/interface/statistics/lonstudentassessment.pm between versions 1.39 and 1.47

version 1.39, 2003/03/07 17:01:45 version 1.47, 2003/05/13 15:00:42
Line 198  sub get_student_fields_to_show { Line 198  sub get_student_fields_to_show {
     return @to_show;      return @to_show;
 }  }
   
 sub get_sequences_to_show {  
     my @Sequences;  
     foreach my $map_symb (@Apache::lonstatistics::SelectedMaps) {  
         foreach my $sequence (@Apache::lonstatistics::Sequences) {  
             next if ($sequence->{'symb'} ne $map_symb && $map_symb ne 'all');  
             next if ($sequence->{'num_assess'} < 1);  
             push (@Sequences,$sequence);  
         }  
     }  
     return @Sequences;  
 }  
   
   
 #######################################################  #######################################################
 #######################################################  #######################################################
   
Line 237  sub CreateInterface { Line 224  sub CreateInterface {
     $Str .= '<tr>';      $Str .= '<tr>';
     $Str .= '<td align="center"><b>Sections</b></td>';      $Str .= '<td align="center"><b>Sections</b></td>';
     $Str .= '<td align="center"><b>Student Data</b></td>';      $Str .= '<td align="center"><b>Student Data</b></td>';
     $Str .= '<td align="center"><b>Problem Sets</b></td>';      $Str .= '<td align="center"><b>Enrollment Status</b></td>';
       $Str .= '<td align="center"><b>Sequences and Folders</b></td>';
     $Str .= '<td align="center"><b>Output Format</b></td>';      $Str .= '<td align="center"><b>Output Format</b></td>';
     $Str .= '</tr>'."\n";      $Str .= '</tr>'."\n";
     #      #
Line 255  sub CreateInterface { Line 243  sub CreateInterface {
     $Str .= &Apache::lonstatistics::StudentDataSelect('StudentData','multiple',      $Str .= &Apache::lonstatistics::StudentDataSelect('StudentData','multiple',
                                                       5,undef);                                                        5,undef);
     $Str .= '</td><td>'."\n";      $Str .= '</td><td>'."\n";
       $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5);
       $Str .= '</td><td>'."\n";
     $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,      $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,
                                               $only_seq_with_assessments);                                                $only_seq_with_assessments);
     $Str .= '</td><td>'."\n";      $Str .= '</td><td>'."\n";
Line 284  my @OutputOptions = Line 274  my @OutputOptions =
        show => 'all',         show => 'all',
        show_links => 'yes',         show_links => 'yes',
        },         },
        { name  => 'HTML, with all links',
          value => 'html, with all links',
          description => 'Output HTML with each symbol linked to the problem '.
      'which generated it.  '.
              'This includes links for unattempted problems.',
          mode => 'html',
          show => 'all',
          show_links => 'all',
          },
      { name  => 'HTML, without links',       { name  => 'HTML, without links',
        value => 'html, without links',         value => 'html, without links',
        description => 'Output HTML.  By not including links, the size of the'.         description => 'Output HTML.  By not including links, the size of the'.
Line 394  sub OutputDescriptions { Line 393  sub OutputDescriptions {
   
 sub CreateAndParseOutputSelector {  sub CreateAndParseOutputSelector {
     my $Str = '';      my $Str = '';
     my $elementname = 'outputmode';      my $elementname = 'chartoutputmode';
     #      #
     # Format for output options is 'mode, restrictions';      # Format for output options is 'mode, restrictions';
     my $selected = 'html, with links';      my $selected = 'html, with links';
Line 485  sub html_initialize { Line 484  sub html_initialize {
         $Str .= $title.' 'x($width-$base).$padding;          $Str .= $title.' 'x($width-$base).$padding;
     }      }
     # Now the selected sequences need to be listed      # Now the selected sequences need to be listed
     foreach my $sequence (&get_sequences_to_show) {      foreach my $sequence (&Apache::lonstatistics::Sequences_with_Assess()){
         my $title = $sequence->{'title'};          my $title = $sequence->{'title'};
         my $base  = $sequence->{'base_width'};          my $base  = $sequence->{'base_width'};
         my $width = $sequence->{'width'};          my $width = $sequence->{'width'};
Line 538  sub html_outputstudent { Line 537  sub html_outputstudent {
     # By sequence build up the data      # By sequence build up the data
     my $studentstats;      my $studentstats;
     my $PerformanceStr = '';      my $PerformanceStr = '';
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         my ($performance,$score,$seq_max) =          my ($performance,$score,$seq_max) =
             &StudentPerformanceOnSequence($student,\%StudentsData,              &StudentPerformanceOnSequence($student,\%StudentsData,
                                           $seq,$show_links);                                            $seq,$show_links);
Line 608  sub StudentAverageTotal { Line 607  sub StudentAverageTotal {
     my $total_max = 0;      my $total_max = 0;
     $Str .= '<table border=2 cellspacing="1">'."\n";      $Str .= '<table border=2 cellspacing="1">'."\n";
     $Str .= "<tr><th>Title</th><th>Average</th><th>Maximum</th></tr>\n";      $Str .= "<tr><th>Title</th><th>Average</th><th>Maximum</th></tr>\n";
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         my $ave = int(100*($Statistics->{$seq->{'symb'}}->{'score'}/          my $ave;
             ($num_students-$nodata_count)))/100;          if ($num_students > $nodata_count) {
               $ave = int(100*($Statistics->{$seq->{'symb'}}->{'score'}/
                               ($num_students-$nodata_count)))/100;
           } else {
               $ave = 0;
           }
         $total_ave += $ave;          $total_ave += $ave;
         my $max = $seq->{'num_assess_parts'};          my $max = $seq->{'num_assess_parts'};
         $total_max += $max;          $total_max += $max;
Line 666  sub multi_sheet_excel_initialize { Line 670  sub multi_sheet_excel_initialize {
     my $num_data_per_part  = 2; # 'status' and 'numtries'      my $num_data_per_part  = 2; # 'status' and 'numtries'
     my $fields_per_student = scalar(&get_student_fields_to_show());      my $fields_per_student = scalar(&get_student_fields_to_show());
     my $bytes_per_field    = 20; # Back of the envelope calculation      my $bytes_per_field    = 20; # Back of the envelope calculation
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         $num_sequences++ if ($seq->{'num_assess'} > 0);          $num_sequences++ if ($seq->{'num_assess'} > 0);
         $fields_per_student += $num_data_per_part * $seq->{'num_assess_parts'};          $fields_per_student += $num_data_per_part * $seq->{'num_assess_parts'};
     }      }
Line 812  sub excel_initialize { Line 816  sub excel_initialize {
     }      }
     #      #
     # Add the Sequence Headers      # Add the Sequence Headers
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         $excel_sheet->write($rows_output,$cols_output,$seq->{'title'});          $excel_sheet->write($rows_output,$cols_output,$seq->{'title'});
         if ($show eq 'totals') {          if ($show eq 'totals') {
             $excel_sheet->write($rows_output+1,$cols_output,'score');              $excel_sheet->write($rows_output+1,$cols_output,'score');
Line 830  sub excel_initialize { Line 834  sub excel_initialize {
         $rows_output += 1;          $rows_output += 1;
     }      }
     #      #
       # Output a row for MAX
       if ($show ne 'totals') {
           $cols_output = 0;
           foreach my $field (&get_student_fields_to_show()) {
               if ($field eq 'username' || $field eq 'fullname' || 
                   $field eq 'id') {
                   $excel_sheet->write($rows_output,$cols_output++,'Maximum');
               } else {
                   $excel_sheet->write($rows_output,$cols_output++,'');
               }
           }
           #
           # Add the Sequence Headers
           foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
               $excel_sheet->write($rows_output,$cols_output++,
                                   $seq->{'num_assess_parts'});
           }
           $rows_output++;
       }
       #
     # Let the user know what we are doing      # Let the user know what we are doing
     my $studentcount = scalar(@Apache::lonstatistics::Students);       my $studentcount = scalar(@Apache::lonstatistics::Students); 
     $r->print("<h1>Compiling Excel spreadsheet for ".      $r->print("<h1>Compiling Excel spreadsheet for ".
Line 868  sub excel_outputstudent { Line 892  sub excel_outputstudent {
     }      }
     #      #
     # Write out sequence scores and totals data      # Write out sequence scores and totals data
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         my ($performance,$score,$seq_max) =          my ($performance,$score,$seq_max) =
             &StudentPerformanceOnSequence($student,\%StudentsData,              &StudentPerformanceOnSequence($student,\%StudentsData,
                                           $seq,'no');                                            $seq,'no');
Line 974  sub csv_initialize{ Line 998  sub csv_initialize{
             $Str .= '"'.&Apache::loncommon::csv_translate($field).'",';              $Str .= '"'.&Apache::loncommon::csv_translate($field).'",';
         }          }
     }      }
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         if ($show eq 'scores') {          if ($show eq 'scores') {
             $Str .= '"'.&Apache::loncommon::csv_translate($seq->{'title'}).              $Str .= '"'.&Apache::loncommon::csv_translate($seq->{'title'}).
                 '",';                  '",';
Line 1028  sub csv_outputstudent { Line 1052  sub csv_outputstudent {
     }      }
     #      #
     # Output performance data      # Output performance data
     foreach my $seq (&get_sequences_to_show) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         my ($performance,$score,$seq_max) =          my ($performance,$score,$seq_max) =
             &StudentPerformanceOnSequence($student,\%StudentsData,              &StudentPerformanceOnSequence($student,\%StudentsData,
                                           $seq,'no');                                            $seq,'no');
Line 1134  sub StudentPerformanceOnSequence { Line 1158  sub StudentPerformanceOnSequence {
                         $symbol = ' ';                          $symbol = ' ';
                     }                      }
                     $sum++;                      $sum++;
                   } elsif (exists($resource_data->{'resource.'.
                                                        $partnum.'.tries'})){
                       $symbol = '.';
                 } else {                  } else {
                     $symbol = ' ';                      $symbol = ' ';
                 }                  }
Line 1146  sub StudentPerformanceOnSequence { Line 1173  sub StudentPerformanceOnSequence {
                 }                  }
             }              }
             #              #
             if ($links eq 'yes' && $symbol ne ' ') {              if ( ($links eq 'yes' && $symbol ne ' ') ||
                    ($links eq 'all')) {
                 $symbol = '<a href="/adm/grades'.                  $symbol = '<a href="/adm/grades'.
                     '?symb='.&Apache::lonnet::escape($resource->{'symb'}).                      '?symb='.&Apache::lonnet::escape($resource->{'symb'}).
                         '&student='.$student->{'username'}.                          '&student='.$student->{'username'}.

Removed from v.1.39  
changed lines
  Added in v.1.47


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