[LON-CAPA-cvs] cvs: loncom /interface/statistics lonsubmissiontimeanalysis.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Fri, 04 Mar 2005 20:34:15 -0000
matthew Fri Mar 4 15:34:15 2005 EDT
Modified files:
/loncom/interface/statistics lonsubmissiontimeanalysis.pm
Log:
Bug 3983: Discrepancy between overall statistics and submission time analysis
computations of correct %. lonsubmissiontimeanalysis.pm now computes the
% correct of students attempting the problem (and tells the user as much).
Index: loncom/interface/statistics/lonsubmissiontimeanalysis.pm
diff -u loncom/interface/statistics/lonsubmissiontimeanalysis.pm:1.18 loncom/interface/statistics/lonsubmissiontimeanalysis.pm:1.19
--- loncom/interface/statistics/lonsubmissiontimeanalysis.pm:1.18 Mon Feb 28 15:16:03 2005
+++ loncom/interface/statistics/lonsubmissiontimeanalysis.pm Fri Mar 4 15:34:15 2005
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonsubmissiontimeanalysis.pm,v 1.18 2005/02/28 20:16:03 matthew Exp $
+# $Id: lonsubmissiontimeanalysis.pm,v 1.19 2005/03/04 20:34:15 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -201,6 +201,7 @@
my @Xlabel=($WeekDay[$wday]); # Labels of itmes
my @BinEnd; # The end time of each bin
my $cumulative_answers = 0; # The sum of @AnsData
+ my %students; # which students have attempted the problem?
#
foreach my $row (@$SubData) {
my $subtime = &get_time_from_row($row);
@@ -223,6 +224,7 @@
$max = $Ydata[$bincount] if ($max < $Ydata[$bincount]);
$AnsData[$bincount] += &successful_submission($row);
$cumulative_answers += &successful_submission($row);
+ $students{$row->[&Apache::loncoursedata::RT_student_id()]}++;
}
#
# Pad the data to a full day
@@ -240,7 +242,7 @@
$Xlabel[$bincount] = '';
}
}
- my $numstudents = scalar(@$students);
+ my $numstudents = scalar(keys(%students));
#
# Determine a nice maximum value to use
foreach my $maximum (10,15,20,25,30,40,50,60,70,80,90,100,
@@ -266,7 +268,9 @@
'<th>'.(' 'x3).'</th>'.
'<th valign="bottom">'.&mt('Correct Submissions').'</th>'.
'<th>'.(' 'x3).'</th>'.
- '<th valign="bottom">'.&mt('Cumulative Percent Correct').'</th>'.
+ '<th valign="bottom">'.&mt('Cumulative Correct of those attempting the problem').'</th>'.
+ '<th>'.(' 'x3).'</th>'.
+ '<th valign="bottom">'.&mt('Cumulative Percent Correct of those attempting the problem').'</th>'.
'</tr>'.
'</thead>'.
'<tbody>';
@@ -274,7 +278,7 @@
my @CumulativeCorrectPercent;
for (my $i=0;$i<=$#Ydata;$i++) {
$CumulativeCorrect[$i]=$CumulativeCorrect[-1]+$AnsData[$i];
- $CumulativeCorrectPercent[$i] = (int(100*$CumulativeCorrect[$i]/$numstudents));
+ $CumulativeCorrectPercent[$i] = sprintf('%3.1f',100*$CumulativeCorrect[$i]/$numstudents);
if ($Ydata[$i] != 0) {
next if (! defined($BinEnd[$i]) || $BinEnd[$i] == 0);
$htmltable .=
@@ -290,6 +294,8 @@
'<td> </td>'.
'<td align="right">'.$AnsData[$i].(' 'x3).'</td>'.
'<td> </td>'.
+ '<td align="right">'.$CumulativeCorrect[$i].'</td>'.
+ '<td> </td>'.
'<td align="right">'.$CumulativeCorrectPercent[$i].'</td>'.
'</tr>'.$/;
}
@@ -337,7 +343,6 @@
return $row->[&Apache::loncoursedata::RT_awarded()];
}
return undef;
- return 0;
}
sub get_time_from_row {