Diff for /loncom/interface/statistics/lonstudentassessment.pm between versions 1.60 and 1.71

version 1.60, 2003/06/17 17:47:54 version 1.71, 2003/10/21 21:23:53
Line 138  Inputs: Line 138  Inputs:
 #######################################################  #######################################################
 sub BuildStudentAssessmentPage {  sub BuildStudentAssessmentPage {
     my ($r,$c)=@_;      my ($r,$c)=@_;
   
     undef($Statistics);      undef($Statistics);
       undef($show_links);
       undef($output_mode);
       undef($data);
       undef($base);
       undef($datadescription);
       undef($single_student_mode);
   
       $single_student_mode = 0;
     $single_student_mode = 1 if ($ENV{'form.SelectedStudent'});      $single_student_mode = 1 if ($ENV{'form.SelectedStudent'});
     if ($ENV{'form.selectstudent'}) {      if ($ENV{'form.selectstudent'}) {
         &Apache::lonstatistics::DisplayClasslist($r);          &Apache::lonstatistics::DisplayClasslist($r);
Line 191  sub BuildStudentAssessmentPage { Line 200  sub BuildStudentAssessmentPage {
     #       are immediately reflected in the chart.      #       are immediately reflected in the chart.
     &Apache::lonnet::clear_EXT_cache_status();      &Apache::lonnet::clear_EXT_cache_status();
     #      #
       # Clean out loncoursedata's package data, just to be safe.
       &Apache::loncoursedata::clear_internal_caches();
       #
     # Call the initialize routine selected above      # Call the initialize routine selected above
     $initialize->($r);      $initialize->($r);
     foreach my $student (@Students) {      foreach my $student (@Students) {
Line 335  sub CreateInterface { Line 347  sub CreateInterface {
                                   'value="Select One Student" />';                                    'value="Select One Student" />';
     $Str .= ' 'x5;      $Str .= ' 'x5;
     $Str .= '<input type="submit" name="ClearCache" value="Clear Caches" />';      $Str .= '<input type="submit" name="ClearCache" value="Clear Caches" />';
     $Str .= '&nbsp;'x5.'<br />';      $Str .= '&nbsp;'x5;
       $Str .= '<br />';
     return $Str;      return $Str;
 }  }
   
Line 445  my @OutputDataOptions = Line 458  my @OutputDataOptions =
     (      (
      { name  => 'Scores',       { name  => 'Scores',
        base  => 'scores',         base  => 'scores',
        value => 'scores',  
        shortdesc => 'Score on each Problem Part',  
        longdesc =>'The students score on each problem part, computed as'.  
            'the part weight * part awarded',  
        },  
      { name  => 'Scores Sum',  
        base  => 'scores',  
        value => 'sum only',  
        shortdesc => 'Sum of Scores on each Problem Part',  
        longdesc =>'The total of the scores of the student on each problem'.  
            ' part in the sequences or folders selected.',  
        },  
      { name  => 'Scores Sum & Maximums',  
        base  => 'scores',  
        value => 'sum and total',         value => 'sum and total',
        shortdesc => 'Total Score and Maximum Possible for each '.         shortdesc => 'Total Score and Maximum Possible for each '.
            'Sequence or Folder',             'Sequence or Folder',
        longdesc => 'The score of each student as well as the '.         longdesc => 'The score of each student as well as the '.
            ' maximum possible on each Sequence or Folder.',             ' maximum possible on each Sequence or Folder.',
        },         },
      { name  => 'Scores Summary Table Only',       { name  => 'Scores Per Problem',
        base  => 'scores',         base  => 'scores',
        value => 'final table scores',         value => 'scores',
        shortdesc => 'Summary of Scores',         shortdesc => 'Score on each Problem Part',
        longdesc  => 'The average score on each sequence or folder for the '.         longdesc =>'The students score on each problem part, computed as'.
            'selected students.',             'the part weight * part awarded',
        },         },
   #     { name  => 'Scores Sum',
   #       base  => 'scores',
   #       value => 'sum only',
   #       shortdesc => 'Sum of Scores on each Problem Part',
   #       longdesc =>'The total of the scores of the student on each problem'.
   #           ' part in the sequences or folders selected.',
   #       },
   #     { name  => 'Scores Summary Table Only',
   #       base  => 'scores',
   #       value => 'final table scores',
   #       shortdesc => 'Summary of Scores',
   #       longdesc  => 'The average score on each sequence or folder for the '.
   #           'selected students.',
   #       },
      { name  =>'Tries',       { name  =>'Tries',
        base  =>'tries',         base  =>'tries',
        value => 'tries',         value => 'tries',
Line 480  my @OutputDataOptions = Line 493  my @OutputDataOptions =
        },         },
      { name  =>'Parts Correct',       { name  =>'Parts Correct',
        base  =>'tries',         base  =>'tries',
        value => 'parts correct',  
        shortdesc => 'Number of Problem Parts completed successfully.',  
        longdesc => 'The Number of Problem Parts completed successfully'.  
            ' on each sequence or folder.',  
        },  
      { name  =>'Parts Correct & Maximums',  
        base  =>'tries',  
        value => 'parts correct total',         value => 'parts correct total',
        shortdesc => 'Number of Problem Parts completed successfully.',         shortdesc => 'Number of Problem Parts completed successfully.',
        longdesc => 'The Number of Problem Parts completed successfully and '.         longdesc => 'The Number of Problem Parts completed successfully and '.
            'the maximum possible for each student',             'the maximum possible for each student',
        },         },
      { name  => 'Parts Summary Table Only',  #     { name  =>'Parts Correct',
        base  => 'tries',  #       base  =>'tries',
        value => 'final table parts',  #       value => 'parts correct',
        shortdesc => 'Summary of Parts Correct',  #       shortdesc => 'Number of Problem Parts completed successfully.',
        longdesc  => 'A summary table of the average number of problem parts '.  #       longdesc => 'The Number of Problem Parts completed successfully'.
            'students were able to get correct on each sequence.',  #           ' on each sequence or folder.',
        },  #       },
   #     { name  => 'Parts Summary Table Only',
   #       base  => 'tries',
   #       value => 'final table parts',
   #       shortdesc => 'Summary of Parts Correct',
   #       longdesc  => 'A summary table of the average number of problem parts '.
   #           'students were able to get correct on each sequence.',
   #       },
      );       );
   
 sub HTMLifyOutputDataDescriptions {  sub HTMLifyOutputDataDescriptions {
Line 581  sub html_initialize { Line 594  sub html_initialize {
     $padding = ' 'x3;      $padding = ' 'x3;
     $count = 0;      $count = 0;
     $nodata_count = 0;      $nodata_count = 0;
       undef(%prog_state);
     #      #
     $r->print("<h3>".$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.      $r->print("<h3>".$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.
               "&nbsp;&nbsp;".localtime(time)."</h3>");                "&nbsp;&nbsp;".localtime(time)."</h3>");
Line 832  my $request_aborted; Line 846  my $request_aborted;
 sub excel_initialize {  sub excel_initialize {
     my ($r) = @_;      my ($r) = @_;
     #      #
     $request_aborted = undef;      undef ($excel_sheet);
       undef ($excel_workbook);
       undef ($filename);
       undef ($rows_output);
       undef ($cols_output);
       undef (%prog_state);
       undef ($request_aborted);
       #
     my $total_columns = scalar(&get_student_fields_to_show());      my $total_columns = scalar(&get_student_fields_to_show());
     foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {      foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
         # Add 2 because we need a 'sum' and 'total' column for each          # Add 2 because we need a 'sum' and 'total' column for each
Line 913  END Line 934  END
     #      #
     # Add a worksheet      # Add a worksheet
     my $sheetname = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};      my $sheetname = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
     if (length($sheetname) > 31) {      $sheetname = &Apache::loncommon::clean_excel_name($sheetname);
         $sheetname = substr($sheetname,0,31);  
     }  
     $excel_sheet = $excel_workbook->addworksheet($sheetname);      $excel_sheet = $excel_workbook->addworksheet($sheetname);
     #      #
     # Put the course description in the header      # Put the course description in the header
Line 1056  END Line 1075  END
         ($r,'Excel File Compilation Status',          ($r,'Excel File Compilation Status',
          'Excel File Compilation Progress', $studentcount);           'Excel File Compilation Progress', $studentcount);
     #      #
       &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,
                                             'Processing first student');
     return;      return;
 }  }
   
Line 1167  sub csv_initialize{ Line 1188  sub csv_initialize{
     my ($r) = @_;      my ($r) = @_;
     #       # 
     # Clean up      # Clean up
     $filename = undef;      undef($outputfile);
     $outputfile = undef;      undef($filename);
       undef($request_aborted);
     undef(%prog_state);      undef(%prog_state);
     #      #
     # Deal with unimplemented requests      # Deal with unimplemented requests
Line 1386  sub StudentTriesOnSequence { Line 1408  sub StudentTriesOnSequence {
                 } elsif ($status eq 'excused') {                  } elsif ($status eq 'excused') {
                     $symbol = 'x';                      $symbol = 'x';
                     $max--;                      $max--;
                 } elsif ($status eq 'correct_by_student' &&                  } elsif (($status eq 'correct_by_scantron' ||
                             $status eq 'correct_by_student') &&
                     exists($resource_data->{'resource.'.$partnum.'.tries'})){                      exists($resource_data->{'resource.'.$partnum.'.tries'})){
                     $tries = $resource_data->{'resource.'.$partnum.'.tries'};                      $tries = $resource_data->{'resource.'.$partnum.'.tries'};
                     if ($tries > 9) {                      if ($tries > 9) {
Line 1425  sub StudentTriesOnSequence { Line 1448  sub StudentTriesOnSequence {
                 $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'}.
                             '&domain='.$student->{'domain'}.                              '&userdom='.$student->{'domain'}.
                                 '&command=submission">'.$symbol.'</a>';                                  '&command=submission">'.$symbol.'</a>';
             }              }
             $value .= $symbol;              $value .= $symbol;
Line 1493  sub StudentPerformanceOnSequence { Line 1516  sub StudentPerformanceOnSequence {
             my $awarded = 0;              my $awarded = 0;
             if (exists($resource_data->{'resource.'.$part.'.awarded'})) {              if (exists($resource_data->{'resource.'.$part.'.awarded'})) {
                 $awarded = $resource_data->{'resource.'.$part.'.awarded'};                  $awarded = $resource_data->{'resource.'.$part.'.awarded'};
                   $awarded = 0 if (! $awarded);
             }              }
             #              #
             $partscore = $weight*$awarded;              $partscore = $weight*$awarded;
             $score += $partscore;              $score += $partscore;
             $symbol = $weight;               $symbol = $partscore; 
               if (abs($symbol - sprintf("%.0f",$symbol)) < 0.001) {
                   $symbol = sprintf("%.0f",$symbol);
               }
             if (length($symbol) > 1) {              if (length($symbol) > 1) {
                 $symbol = '*';                  $symbol = '*';
             }              }
Line 1525  sub StudentPerformanceOnSequence { Line 1552  sub StudentPerformanceOnSequence {
                 $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'}.
                     '&domain='.$student->{'domain'}.                      '&userdom='.$student->{'domain'}.
                     '&command=submission">'.$symbol.'</a>';                      '&command=submission">'.$symbol.'</a>';
             }              }
             $Str .= $symbol;              $Str .= $symbol;

Removed from v.1.60  
changed lines
  Added in v.1.71


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