--- loncom/interface/statistics/lonsubmissiontimeanalysis.pm 2005/02/28 20:16:03 1.18
+++ loncom/interface/statistics/lonsubmissiontimeanalysis.pm 2005/03/14 20:28:22 1.22
@@ -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.22 2005/03/14 20:28:22 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,7 +37,6 @@ use Apache::lonstathelpers;
use Apache::lonlocal;
use HTML::Entities();
use Time::Local();
-use Spreadsheet::WriteExcel();
my $plotcolors = ['#33ff00',
'#ff33cc', '#990000', '#aaaa66', '#663399', '#ff9933',
@@ -128,6 +127,9 @@ sub BuildSubmissionTimePage {
} else {
$r->print('
'.$resource->compTitle.'
');
$r->print(''.$resource->src.'
');
+ $r->print(''.
+ &Apache::lonstatistics::section_and_enrollment_description().
+ '
');
$r->rflush();
$r->print(&Apache::lonstathelpers::render_resource($resource));
$r->print('
');
@@ -170,7 +172,7 @@ sub analyze_times {
my $html; # holds results of analysis
# Get the data
my $SubData = &Apache::loncoursedata::get_response_time_data
- (\@Apache::lonstatistics::SelectedSections,
+ ([&Apache::lonstatistics::get_selected_sections()],
$Apache::lonstatistics::enrollment_status,
$symb,$part);
if (! defined($SubData) || ! ref($SubData)) {
@@ -201,6 +203,7 @@ sub analyze_times {
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 +226,7 @@ sub analyze_times {
$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 +244,7 @@ sub analyze_times {
$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,
@@ -262,19 +266,27 @@ sub analyze_times {
''.&mt('Begin').' | '.
''.(' 'x3).' | '.
''.&mt('End').' | '.
- ''.&mt('Submissions').' | '.
+ ''.&mt('Submissions (plotted)').' | '.
''.(' 'x3).' | '.
- ''.&mt('Correct Submissions').' | '.
+ ''.&mt('Correct Submissions (not plotted)').' | '.
''.(' 'x3).' | '.
- ''.&mt('Cumulative Percent Correct').' | '.
+ ''.&mt('Cumulative Correct of those attempting the problem (not plotted)').' | '.
+ ''.(' 'x3).' | '.
+ ''.&mt('Cumulative Percent Correct of those attempting the problem (not plotted)').' | '.
+ ''.(' 'x3).' | '.
+ ''.&mt('Cumulative Percent Correct of selected students (plotted)').' | '.
''.
''.
'';
my @CumulativeCorrect=(0);
- my @CumulativeCorrectPercent;
+ my @corr_as_percent_of_selected;
+ my @corr_as_percent_of_answering;
for (my $i=0;$i<=$#Ydata;$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) {
next if (! defined($BinEnd[$i]) || $BinEnd[$i] == 0);
$htmltable .=
@@ -290,7 +302,11 @@ sub analyze_times {
' | '.
''.$AnsData[$i].(' 'x3).' | '.
' | '.
- ''.$CumulativeCorrectPercent[$i].' | '.
+ ''.$CumulativeCorrect[$i].' | '.
+ ' | '.
+ ''.$corr_as_percent_of_answering[$i].' | '.
+ ' | '.
+ ''.$corr_as_percent_of_selected[$i].' | '.
''.$/;
}
}
@@ -316,7 +332,7 @@ sub analyze_times {
$plotcolors,
\@Xlabel,
\@Ydata,0,$max,
- \@CumulativeCorrectPercent,0,100,
+ \@corr_as_percent_of_selected,0,100,
(xskip => $bins_per_day,
x_ticks => $bins_per_day,
x_tick_offset => $bins_per_day,
@@ -337,7 +353,6 @@ sub successful_submission {
return $row->[&Apache::loncoursedata::RT_awarded()];
}
return undef;
- return 0;
}
sub get_time_from_row {