Diff for /loncom/interface/statistics/lonsubmissiontimeanalysis.pm between versions 1.18 and 1.20

version 1.18, 2005/02/28 20:16:03 version 1.20, 2005/03/08 17:39:35
Line 201  sub analyze_times { Line 201  sub analyze_times {
     my @Xlabel=($WeekDay[$wday]); # Labels of itmes      my @Xlabel=($WeekDay[$wday]); # Labels of itmes
     my @BinEnd;                   # The end time of each bin      my @BinEnd;                   # The end time of each bin
     my $cumulative_answers = 0;   # The sum of @AnsData      my $cumulative_answers = 0;   # The sum of @AnsData
       my %students;       # which students have attempted the problem?
     #      #
     foreach my $row (@$SubData) {      foreach my $row (@$SubData) {
         my $subtime = &get_time_from_row($row);          my $subtime = &get_time_from_row($row);
Line 223  sub analyze_times { Line 224  sub analyze_times {
         $max = $Ydata[$bincount] if ($max < $Ydata[$bincount]);          $max = $Ydata[$bincount] if ($max < $Ydata[$bincount]);
         $AnsData[$bincount] += &successful_submission($row);          $AnsData[$bincount] += &successful_submission($row);
         $cumulative_answers += &successful_submission($row);          $cumulative_answers += &successful_submission($row);
           $students{$row->[&Apache::loncoursedata::RT_student_id()]}++;
     }      }
     #      #
     # Pad the data to a full day      # Pad the data to a full day
Line 240  sub analyze_times { Line 242  sub analyze_times {
             $Xlabel[$bincount] = '';              $Xlabel[$bincount] = '';
         }          }
     }      }
     my $numstudents = scalar(@$students);      my $numstudents = scalar(keys(%students));
     #      #
     # Determine a nice maximum value to use      # Determine a nice maximum value to use
     foreach my $maximum (10,15,20,25,30,40,50,60,70,80,90,100,      foreach my $maximum (10,15,20,25,30,40,50,60,70,80,90,100,
Line 262  sub analyze_times { Line 264  sub analyze_times {
         '<th valign="bottom">'.&mt('Begin').'</th>'.          '<th valign="bottom">'.&mt('Begin').'</th>'.
         '<th>'.('&nbsp;'x3).'</th>'.          '<th>'.('&nbsp;'x3).'</th>'.
         '<th valign="bottom">'.&mt('End').'</th>'.          '<th valign="bottom">'.&mt('End').'</th>'.
         '<th valign="bottom">'.&mt('Submissions').'</th>'.          '<th valign="bottom">'.&mt('Submissions (plotted)').'</th>'.
         '<th>'.('&nbsp;'x3).'</th>'.          '<th>'.('&nbsp;'x3).'</th>'.
         '<th valign="bottom">'.&mt('Correct Submissions').'</th>'.          '<th valign="bottom">'.&mt('Correct Submissions (not plotted)').'</th>'.
         '<th>'.('&nbsp;'x3).'</th>'.          '<th>'.('&nbsp;'x3).'</th>'.
         '<th valign="bottom">'.&mt('Cumulative Percent Correct').'</th>'.          '<th valign="bottom">'.&mt('Cumulative Correct of those attempting the problem (not plotted)').'</th>'.
           '<th>'.('&nbsp;'x3).'</th>'.
           '<th valign="bottom">'.&mt('Cumulative Percent Correct of those attempting the problem (not plotted)').'</th>'.
           '<th>'.('&nbsp;'x3).'</th>'.
           '<th valign="bottom">'.&mt('Cumulative Percent Correct of selected students (plotted)').'</th>'.
         '</tr>'.          '</tr>'.
         '</thead>'.          '</thead>'.
         '<tbody>';          '<tbody>';
     my @CumulativeCorrect=(0);      my @CumulativeCorrect=(0);
     my @CumulativeCorrectPercent;      my @corr_as_percent_of_selected;
       my @corr_as_percent_of_answering;
     for (my $i=0;$i<=$#Ydata;$i++) {      for (my $i=0;$i<=$#Ydata;$i++) {
         $CumulativeCorrect[$i]=$CumulativeCorrect[-1]+$AnsData[$i];          $CumulativeCorrect[$i]=$CumulativeCorrect[-1]+$AnsData[$i];
         $CumulativeCorrectPercent[$i] = (int(100*$CumulativeCorrect[$i]/$numstudents));          $corr_as_percent_of_answering[$i] = 
               sprintf('%3.1f',100*$CumulativeCorrect[$i]/$numstudents);
           $corr_as_percent_of_selected[$i] = 
               sprintf('%3.1f',100*$CumulativeCorrect[$i]/scalar(@$students));
         if ($Ydata[$i] != 0) {          if ($Ydata[$i] != 0) {
             next if (! defined($BinEnd[$i]) || $BinEnd[$i] == 0);              next if (! defined($BinEnd[$i]) || $BinEnd[$i] == 0);
             $htmltable .=               $htmltable .= 
Line 290  sub analyze_times { Line 300  sub analyze_times {
                 '<td>&nbsp;</td>'.                  '<td>&nbsp;</td>'.
                 '<td align="right">'.$AnsData[$i].('&nbsp;'x3).'</td>'.                  '<td align="right">'.$AnsData[$i].('&nbsp;'x3).'</td>'.
                 '<td>&nbsp;</td>'.                  '<td>&nbsp;</td>'.
                 '<td align="right">'.$CumulativeCorrectPercent[$i].'</td>'.                  '<td align="right">'.$CumulativeCorrect[$i].'</td>'.
                   '<td>&nbsp;</td>'.
                   '<td align="right">'.$corr_as_percent_of_answering[$i].'</td>'.
                   '<td>&nbsp;</td>'.
                   '<td align="right">'.$corr_as_percent_of_selected[$i].'</td>'.
                 '</tr>'.$/;                  '</tr>'.$/;
         }          }
     }      }
Line 316  sub analyze_times { Line 330  sub analyze_times {
                                               $plotcolors,                                                $plotcolors,
                                               \@Xlabel,                                                \@Xlabel,
                                               \@Ydata,0,$max,                                                \@Ydata,0,$max,
                                               \@CumulativeCorrectPercent,0,100,                                                \@corr_as_percent_of_selected,0,100,
                                               (xskip => $bins_per_day,                                                (xskip => $bins_per_day,
                                                x_ticks => $bins_per_day,                                                 x_ticks => $bins_per_day,
                                                x_tick_offset => $bins_per_day,                                                 x_tick_offset => $bins_per_day,
Line 337  sub successful_submission { Line 351  sub successful_submission {
         return $row->[&Apache::loncoursedata::RT_awarded()];          return $row->[&Apache::loncoursedata::RT_awarded()];
     }      }
     return undef;      return undef;
     return 0;  
 }  }
   
 sub get_time_from_row {  sub get_time_from_row {

Removed from v.1.18  
changed lines
  Added in v.1.20


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