version 1.17, 2004/07/06 16:01:48
|
version 1.19, 2005/03/04 20:34:15
|
Line 85 sub BuildSubmissionTimePage {
|
Line 85 sub BuildSubmissionTimePage {
|
&mt('Graph Problem Submission Times').'" />'); |
&mt('Graph Problem Submission Times').'" />'); |
$r->print(' 'x5); |
$r->print(' 'x5); |
$r->print('<h3>'.&mt('Please select a problem to analyze').'</h3>'); |
$r->print('<h3>'.&mt('Please select a problem to analyze').'</h3>'); |
$r->print(&Apache::lonstathelpers::ProblemSelector('.')); |
$r->print(&Apache::lonstathelpers::problem_selector('.')); |
} else { |
} else { |
foreach my $button (@SubmitButtons) { |
foreach my $button (@SubmitButtons) { |
$r->print('<input type="submit" name="'.$button->{'name'}.'" '. |
$r->print('<input type="submit" name="'.$button->{'name'}.'" '. |
Line 101 sub BuildSubmissionTimePage {
|
Line 101 sub BuildSubmissionTimePage {
|
my $current_problem = &Apache::lonstathelpers::get_target_from_id |
my $current_problem = &Apache::lonstathelpers::get_target_from_id |
($ENV{'form.problemchoice'}); |
($ENV{'form.problemchoice'}); |
# |
# |
my ($prev,$curr,$next) = |
my ($navmap,$prev,$curr,$next) = |
&Apache::lonstathelpers::get_prev_curr_next($current_problem, |
&Apache::lonstathelpers::get_prev_curr_next($current_problem, |
'.', |
'.', |
'part'); |
'part'); |
Line 126 sub BuildSubmissionTimePage {
|
Line 126 sub BuildSubmissionTimePage {
|
if (! defined($resource)) { |
if (! defined($resource)) { |
$r->print('resource is undefined'); |
$r->print('resource is undefined'); |
} else { |
} else { |
$r->print('<h1>'.$resource->{'title'}.'</h1>'); |
$r->print('<h1>'.$resource->compTitle.'</h1>'); |
$r->print('<h3>'.$resource->{'src'}.'</h3>'); |
$r->print('<h3>'.$resource->src.'</h3>'); |
$r->rflush(); |
$r->rflush(); |
$r->print(&Apache::lonstathelpers::render_resource($resource)); |
$r->print(&Apache::lonstathelpers::render_resource($resource)); |
$r->print('<br />'); |
$r->print('<br />'); |
$r->rflush(); |
$r->rflush(); |
$r->print(&analyze_times($r,$resource,\@Students, |
$r->print(&analyze_times($r,$resource->symb,\@Students, |
$current_problem->{'part'})); |
$current_problem->{'part'})); |
} |
} |
$r->print('<hr />'); |
$r->print('<hr />'); |
Line 158 sub get_week_start {
|
Line 158 sub get_week_start {
|
} |
} |
|
|
sub analyze_times { |
sub analyze_times { |
my ($r,$resource,$students,$part) = @_; |
my ($r,$symb,$students,$part) = @_; |
my $htmltable; |
my $htmltable; |
# |
# |
# Convenience arrays |
# Convenience arrays |
Line 170 sub analyze_times {
|
Line 170 sub analyze_times {
|
my $html; # holds results of analysis |
my $html; # holds results of analysis |
# Get the data |
# Get the data |
my $SubData = &Apache::loncoursedata::get_response_time_data |
my $SubData = &Apache::loncoursedata::get_response_time_data |
($students,$resource->{'symb'},$part); |
(\@Apache::lonstatistics::SelectedSections, |
|
$Apache::lonstatistics::enrollment_status, |
|
$symb,$part); |
if (! defined($SubData) || ! ref($SubData)) { |
if (! defined($SubData) || ! ref($SubData)) { |
$html.= '<h2>There is no submission data for this problem</h2>'; |
$html.= '<h2>There is no submission data for this problem at all</h2>'; |
return $html; |
return $html; |
} |
} |
my $NumSub = scalar(@{$SubData}); |
my $NumSub = scalar(@{$SubData}); |
Line 199 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 221 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 238 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 264 sub analyze_times {
|
Line 268 sub analyze_times {
|
'<th>'.(' 'x3).'</th>'. |
'<th>'.(' 'x3).'</th>'. |
'<th valign="bottom">'.&mt('Correct Submissions').'</th>'. |
'<th valign="bottom">'.&mt('Correct Submissions').'</th>'. |
'<th>'.(' 'x3).'</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>'. |
'</tr>'. |
'</thead>'. |
'</thead>'. |
'<tbody>'; |
'<tbody>'; |
Line 272 sub analyze_times {
|
Line 278 sub analyze_times {
|
my @CumulativeCorrectPercent; |
my @CumulativeCorrectPercent; |
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)); |
$CumulativeCorrectPercent[$i] = sprintf('%3.1f',100*$CumulativeCorrect[$i]/$numstudents); |
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 288 sub analyze_times {
|
Line 294 sub analyze_times {
|
'<td> </td>'. |
'<td> </td>'. |
'<td align="right">'.$AnsData[$i].(' 'x3).'</td>'. |
'<td align="right">'.$AnsData[$i].(' 'x3).'</td>'. |
'<td> </td>'. |
'<td> </td>'. |
|
'<td align="right">'.$CumulativeCorrect[$i].'</td>'. |
|
'<td> </td>'. |
'<td align="right">'.$CumulativeCorrectPercent[$i].'</td>'. |
'<td align="right">'.$CumulativeCorrectPercent[$i].'</td>'. |
'</tr>'.$/; |
'</tr>'.$/; |
} |
} |
Line 335 sub successful_submission {
|
Line 343 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 { |