Diff for /loncom/interface/statistics/lonstudentassessment.pm between versions 1.158 and 1.164

version 1.158, 2009/10/01 16:28:24 version 1.164, 2011/10/05 18:56:00
Line 51  package Apache::lonstudentassessment; Line 51  package Apache::lonstudentassessment;
   
 use strict;  use strict;
 use Apache::lonstatistics();  use Apache::lonstatistics();
   use Apache::lonquickgrades();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::loncoursedata;  use Apache::loncoursedata;
Line 166  sub BuildStudentAssessmentPage { Line 167  sub BuildStudentAssessmentPage {
         &Apache::lonstatistics::DisplayClasslist($r);          &Apache::lonstatistics::DisplayClasslist($r);
         return;          return;
     }      }
       $r->print(&Apache::lonhtmlcommon::breadcrumbs('Chart','Chart_Description:Chart_Sections:Chart_Student_Data:Chart_Enrollment_Status:Chart_Sequences:Chart_Output_Formats:Chart_Output_Data'));
       &Apache::lonquickgrades::startGradeScreen($r,'chart');
   
     #      #
     # Print out the HTML headers for the interface      # Print out the HTML headers for the interface
     #    This also parses the output mode selector      #    This also parses the output mode selector
Line 230  sub BuildStudentAssessmentPage { Line 234  sub BuildStudentAssessmentPage {
         $output_student->($r,$student);          $output_student->($r,$student);
     }      }
     # Call the "finish" routine selected above      # Call the "finish" routine selected above
       &Apache::lonquickgrades::endGradeScreen($r);
     $finish->($r);      $finish->($r);
     #      #
     return;      return;
Line 318  the chart page. Line 323  the chart page.
 #######################################################  #######################################################
 sub CreateInterface {  sub CreateInterface {
     my $Str = '';      my $Str = '';
     $Str .= &Apache::lonhtmlcommon::breadcrumbs('Chart','Chart_Description:Chart_Sections:Chart_Student_Data:Chart_Enrollment_Status:Chart_Sequences:Chart_Output_Formats:Chart_Output_Data');  
 #    $Str .= &CreateLegend();  
     $Str .= '<table cellspacing="5">'."\n";      $Str .= '<table cellspacing="5">'."\n";
     $Str .= '<tr>';      $Str .= '<tr>';
     $Str .= '<td align="center"><b>'.&mt('Sections').'</b>'.      $Str .= '<td align="center"><b>'.&mt('Sections').'</b>'.
Line 554  my @OutputDataOptions = Line 557  my @OutputDataOptions =
   
 sub HTMLifyOutputDataDescriptions {  sub HTMLifyOutputDataDescriptions {
     my $Str = '';      my $Str = '';
     $Str .= "<h2>'.&mt('Output Data').'</h2>\n";      $Str .= '<h2>'.&mt('Output Data').'</h2>'."\n";
     $Str .= "<dl>\n";      $Str .= "<dl>\n";
     foreach my $option (@OutputDataOptions) {      foreach my $option (@OutputDataOptions) {
         $Str .= '    <dt>'.$option->{'name'}.'</dt>';          $Str .= '    <dt>'.$option->{'name'}.'</dt>';
Line 671  sub html_initialize { Line 674  sub html_initialize {
     # If we're showing links, show a checkbox to open in new      # If we're showing links, show a checkbox to open in new
     # windows.      # windows.
     if ($show_links ne 'no') {      if ($show_links ne 'no') {
         my $labeltext = &mt('Show links in new window:');          my $labeltext = &mt('Show links in new window');
         $r->print(<<NEW_WINDOW_CHECKBOX);          $r->print(<<NEW_WINDOW_CHECKBOX);
 <script type="text/javascript">new_window = true;</script>  <script type="text/javascript">new_window = true;</script>
 <p><label>$labeltext   <p><label> 
 <input type="checkbox" checked="checked" onclick="new_window=this.checked" />  <input type="checkbox" checked="checked" onclick="new_window=this.checked" />
   $labeltext
 </label></p>  </label></p>
 NEW_WINDOW_CHECKBOX  NEW_WINDOW_CHECKBOX
     }      }
Line 828  sub html_outputstudent { Line 832  sub html_outputstudent {
 #       $r->print("</pre><pre>");  #       $r->print("</pre><pre>");
         $r->print('</pre>');          $r->print('</pre>');
         &Apache::lonhtmlcommon::Increment_PrgWin(          &Apache::lonhtmlcommon::Increment_PrgWin(
             $r,\%prog_state,'last five students');              $r,\%prog_state,'last five students',5);
         $r->rflush();          $r->rflush();
         $r->print('<pre>');          $r->print('<pre>');
     }      }
Line 873  sub html_outputstudent { Line 877  sub html_outputstudent {
     my $PerformanceStr = '';      my $PerformanceStr = '';
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
         my $symb = $seq->symb;          my $symb = $seq->symb;
           my $randompick = $seq->randompick();
         my ($performance,$performance_length,$score,$seq_max,$rawdata);          my ($performance,$performance_length,$score,$seq_max,$rawdata);
         if ($chosen_output->{'tries'}) {          if ($chosen_output->{'tries'}) {
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_tries_on_sequence($student,\%StudentsData,                  &student_tries_on_sequence($student,\%StudentsData,
                                            $navmap,$seq,$show_links);                                             $navmap,$seq,$show_links,$randompick);
         } else {          } else {
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_performance_on_sequence($student,\%StudentsData,                  &student_performance_on_sequence($student,\%StudentsData,
                                                  $navmap,$seq,$show_links,                                                   $navmap,$seq,$show_links,
                                                  $chosen_output->{ignore_weight});                                                   $chosen_output->{ignore_weight},
                                                    $randompick);
         }          }
         my $ratio='';          my $ratio='';
         if ($chosen_output->{'every_problem'} &&           if ($chosen_output->{'every_problem'} && 
Line 1494  sub excel_outputstudent { Line 1500  sub excel_outputstudent {
     my %maximum_cell_translation;      my %maximum_cell_translation;
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
         my $symb = $seq->symb;          my $symb = $seq->symb;
           my $randompick = $seq->randompick();
         $cols_output = $formula_data{$symb}->{'Excel:startcol'};          $cols_output = $formula_data{$symb}->{'Excel:startcol'};
         # Keep track of cells to translate in total cell          # Keep track of cells to translate in total cell
         $total_cell_translation{$formula_data{$symb}->{'Excel:scorecell'}} =           $total_cell_translation{$formula_data{$symb}->{'Excel:scorecell'}} = 
Line 1508  sub excel_outputstudent { Line 1515  sub excel_outputstudent {
         if ($chosen_output->{'tries'} || $chosen_output->{'correct'}){          if ($chosen_output->{'tries'} || $chosen_output->{'correct'}){
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_tries_on_sequence($student,\%StudentsData,                  &student_tries_on_sequence($student,\%StudentsData,
                                            $navmap,$seq,'no');                                             $navmap,$seq,'no',$randompick);
         } else {          } else {
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_performance_on_sequence($student,\%StudentsData,                  &student_performance_on_sequence($student,\%StudentsData,
                                                  $navmap,$seq,'no',                                                   $navmap,$seq,'no',
                                                  $chosen_output->{ignore_weight});                                                   $chosen_output->{ignore_weight},
                                                    $randompick);
         }           } 
         if ($chosen_output->{'every_problem'}) {          if ($chosen_output->{'every_problem'}) {
             if ($chosen_output->{'correct'}) {              if ($chosen_output->{'correct'}) {
Line 1678  END Line 1686  END
     # Datestamp      # Datestamp
     my $description = $env{'course.'.$env{'request.course.id'}.'.description'};      my $description = $env{'course.'.$env{'request.course.id'}.'.description'};
     print $outputfile '"'.&Apache::loncommon::csv_translate($description).'",'.      print $outputfile '"'.&Apache::loncommon::csv_translate($description).'",'.
         '"'.&Apache::loncommon::csv_translate(scalar(localtime(time))).'"'.          '"'.&Apache::loncommon::csv_translate(scalar(&Apache::lonlocal::locallocaltime(time))).'"'.
             "\n";              "\n";
     print $outputfile '"'.      print $outputfile '"'.
         &Apache::loncommon::csv_translate          &Apache::loncommon::csv_translate
Line 1775  sub csv_outputstudent { Line 1783  sub csv_outputstudent {
     my $total = 0;      my $total = 0;
     my $maximum = 0;      my $maximum = 0;
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
           my $randompick = $seq->randompick();
         my ($performance,$performance_length,$score,$seq_max,$rawdata);          my ($performance,$performance_length,$score,$seq_max,$rawdata);
         if ($chosen_output->{'tries'}){          if ($chosen_output->{'tries'}){
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_tries_on_sequence($student,\%StudentsData,                  &student_tries_on_sequence($student,\%StudentsData,
                                            $navmap,$seq,'no');                                             $navmap,$seq,'no',$randompick);
         } else {          } else {
             ($performance,$performance_length,$score,$seq_max,$rawdata) =              ($performance,$performance_length,$score,$seq_max,$rawdata) =
                 &student_performance_on_sequence($student,\%StudentsData,                  &student_performance_on_sequence($student,\%StudentsData,
                                                  $navmap,$seq,'no',                                                   $navmap,$seq,'no',
                                                  $chosen_output->{ignore_weight});                                                   $chosen_output->{ignore_weight},
                                                    $randompick);
         }          }
         if ($chosen_output->{'every_problem'}) {          if ($chosen_output->{'every_problem'}) {
             if ($chosen_output->{'correct'}) {              if ($chosen_output->{'correct'}) {
Line 1885  Inputs: Line 1895  Inputs:
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub student_tries_on_sequence {  sub student_tries_on_sequence {
     my ($student,$studentdata,$navmap,$seq,$links) = @_;      my ($student,$studentdata,$navmap,$seq,$links,$randompick) = @_;
     $links = 'no' if (! defined($links));      $links = 'no' if (! defined($links));
     my $Str = '';      my $Str = '';
     my ($sum,$max) = (0,0);      my ($sum,$max) = (0,0);
Line 1980  sub student_tries_on_sequence { Line 1990  sub student_tries_on_sequence {
         }          }
         $Str .= $value;          $Str .= $value;
     }      }
     if ($seq->randompick()) {      if ($randompick) {
         $max = $seq->randompick();          $max = $randompick;
     }      }
     if (! $hasdata && $sum == 0) {      if (! $hasdata && $sum == 0) {
         $sum = ' ';          $sum = ' ';
Line 2046  Inputs: Line 2056  Inputs:
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub student_performance_on_sequence {  sub student_performance_on_sequence {
     my ($student,$studentdata,$navmap,$seq,$links,$awarded_only) = @_;      my ($student,$studentdata,$navmap,$seq,$links,$awarded_only,$randompick) = @_;
     $links = 'no' if (! defined($links));      $links = 'no' if (! defined($links));
     my $Str = ''; # final result string      my $Str = ''; # final result string
     my ($score,$max) = (0,0);      my ($score,$max) = (0,0);
Line 2055  sub student_performance_on_sequence { Line 2065  sub student_performance_on_sequence {
     my @ScoreData = ();      my @ScoreData = ();
     my $partscore;      my $partscore;
     my $hasdata = 0; # flag, 0 if there were no submissions on the sequence      my $hasdata = 0; # flag, 0 if there were no submissions on the sequence
       my %ptsfreq;
     foreach my $resource (&get_resources($navmap,$seq)) {      foreach my $resource (&get_resources($navmap,$seq)) {
         my $symb = $resource->symb;          my $symb = $resource->symb;
         my $resource_data = $studentdata->{$symb};          my $resource_data = $studentdata->{$symb};
           my $resmax = 0;
         foreach my $part (@{$resource->parts()}) {          foreach my $part (@{$resource->parts()}) {
             $partscore = undef;              $partscore = undef;
             my $weight;              my $weight;
Line 2073  sub student_performance_on_sequence { Line 2085  sub student_performance_on_sequence {
             }              }
             #              #
             $max += $weight; # see the 'excused' branch below...              $max += $weight; # see the 'excused' branch below...
               $resmax += $weight;
             $performance_length++; # one character per part              $performance_length++; # one character per part
             $symbol = ' '; # default to space              $symbol = ' '; # default to space
             #              #
Line 2133  sub student_performance_on_sequence { Line 2146  sub student_performance_on_sequence {
             }              }
             $Str .= $symbol;              $Str .= $symbol;
         }          }
           if ($ptsfreq{$resmax}) {
               $ptsfreq{$resmax} ++;
           } else {
               $ptsfreq{$resmax} = 1;
           }
       }
       if ($randompick) {
           my @uniquetotals = keys(%ptsfreq);
           if ((@uniquetotals = 1) && ($ptsfreq{$uniquetotals[0]} > 0)) {
               $max = $max * $randompick/$ptsfreq{$uniquetotals[0]};
           }
     }      }
     if (! $hasdata && $score == 0) {      if (! $hasdata && $score == 0) {
         $score = ' ';          $score = ' ';

Removed from v.1.158  
changed lines
  Added in v.1.164


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