');
$r->rflush();
$r->print(&Apache::lonstathelpers::render_resource($resource));
$r->print(' ');
$r->rflush();
- $r->print(&analyze_times($r,$resource,\@Students,
- $current_problem->{'part'}));
+ if (@Students) {
+ $r->print(&analyze_times($r,$resource->symb,\@Students,
+ $current_problem->{'part'}));
+ }
}
$r->print('');
}
@@ -158,7 +163,7 @@ sub get_week_start {
}
sub analyze_times {
- my ($r,$resource,$students,$part) = @_;
+ my ($r,$symb,$students,$part) = @_;
my $htmltable;
#
# Convenience arrays
@@ -170,9 +175,12 @@ sub analyze_times {
my $html; # holds results of analysis
# Get the data
my $SubData = &Apache::loncoursedata::get_response_time_data
- ($students,$resource->{'symb'},$part);
+ ([&Apache::lonstatistics::get_selected_sections()],
+ [&Apache::lonstatistics::get_selected_groups()],
+ $Apache::lonstatistics::enrollment_status,
+ $symb,$part);
if (! defined($SubData) || ! ref($SubData)) {
- $html.= '
There is no submission data for this problem
';
+ $html.= '
There is no submission data for this problem at all
';
return $html;
}
my $NumSub = scalar(@{$SubData});
@@ -199,6 +207,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);
@@ -221,6 +230,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
@@ -238,7 +248,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,
@@ -260,19 +270,27 @@ sub analyze_times {
'
'.&mt('Begin').'
'.
'
'.(' 'x3).'
'.
'
'.&mt('End').'
'.
- '
'.&mt('Submissions').'
'.
+ '
'.&mt('Submissions (plotted)').'
'.
+ '
'.(' 'x3).'
'.
+ '
'.&mt('Correct Submissions (not plotted)').'
'.
'
'.(' 'x3).'
'.
- '
'.&mt('Correct Submissions').'
'.
+ '
'.&mt('Cumulative Correct of those attempting the problem (not plotted)').'
'.
'
'.(' 'x3).'
'.
- '
'.&mt('Cumulative Percent Correct').'
'.
+ '
'.&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 .=
@@ -288,7 +306,11 @@ sub analyze_times {
'
'.
'
'.$AnsData[$i].(' 'x3).'
'.
'
'.
- '
'.$CumulativeCorrectPercent[$i].'
'.
+ '
'.$CumulativeCorrect[$i].'
'.
+ '
'.
+ '
'.$corr_as_percent_of_answering[$i].'
'.
+ '
'.
+ '
'.$corr_as_percent_of_selected[$i].'
'.
''.$/;
}
}
@@ -314,7 +336,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,
@@ -335,7 +357,6 @@ sub successful_submission {
return $row->[&Apache::loncoursedata::RT_awarded()];
}
return undef;
- return 0;
}
sub get_time_from_row {
@@ -371,18 +392,19 @@ sub Process_Row {
sub CreateInterface {
##
## Environment variable initialization
- if (! exists$ENV{'form.AnalyzeOver'}) {
- $ENV{'form.AnalyzeOver'} = 'Tries';
+ if (! exists$env{'form.AnalyzeOver'}) {
+ $env{'form.AnalyzeOver'} = 'Tries';
}
##
## Build the menu
my $Str = '';
- $Str .= &Apache::lonhtmlcommon::breadcrumbs(undef,'Submission Time Plots');
+ $Str .= &Apache::lonhtmlcommon::breadcrumbs('Submission Time Plots');
$Str .= '