version 1.2, 2003/10/29 18:59:46
|
version 1.9, 2004/01/08 19:20:12
|
Line 69 sub render_resource {
|
Line 69 sub render_resource {
|
|
|
sub BuildSubmissionTimePage { |
sub BuildSubmissionTimePage { |
my ($r,$c)=@_; |
my ($r,$c)=@_; |
|
# |
|
my %Saveable_Parameters = ('Status' => 'scalar', |
|
'Section' => 'array'); |
|
&Apache::loncommon::store_course_settings('submissiontime_analysis', |
|
\%Saveable_Parameters); |
|
&Apache::loncommon::restore_course_settings('submissiontime_analysis', |
|
\%Saveable_Parameters); |
|
# |
|
&Apache::lonstatistics::PrepareClasslist(); |
|
# |
$r->print('<h2>'.&mt('Submission Time Plots').'</h2>'); |
$r->print('<h2>'.&mt('Submission Time Plots').'</h2>'); |
$r->print(&CreateInterface()); |
$r->print(&CreateInterface()); |
# |
# |
Line 161 sub analyze_times {
|
Line 171 sub analyze_times {
|
my $SubData = &Apache::loncoursedata::get_response_time_data |
my $SubData = &Apache::loncoursedata::get_response_time_data |
($students,$resource->{'symb'},$part); |
($students,$resource->{'symb'},$part); |
if (! defined($SubData) || ! ref($SubData)) { |
if (! defined($SubData) || ! ref($SubData)) { |
$html.= '<h2>There is no submission data for this resource</h2>'; |
$html.= '<h2>There is no submission data for this problem</h2>'; |
return $html; |
return $html; |
} |
} |
my $NumSub = scalar(@{$SubData}); |
my $NumSub = scalar(@{$SubData}); |
if (! @{$SubData}) { |
if (! @{$SubData}) { |
$html.= '<h2>There is no submission data for this resource</h2>'; |
$html.= '<h2>There is no submission data for this problem</h2>'; |
return $html; |
return $html; |
} |
} |
# Process the data |
# Process the data |
Line 231 sub analyze_times {
|
Line 241 sub analyze_times {
|
$Xlabel[$bincount] = ''; |
$Xlabel[$bincount] = ''; |
} |
} |
} |
} |
|
my $numstudents = scalar(@$students); |
|
for (my $i=0;$i<=$#AnsData;$i++) { |
|
$AnsData[$i] = int(100*($AnsData[$i]/$numstudents)); |
|
} |
my $title = 'Number of Submissions and Number Correct'; |
my $title = 'Number of Submissions and Number Correct'; |
my $xlabel; |
my $xlabel; |
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($day_start); |
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($day_start); |
Line 240 sub analyze_times {
|
Line 253 sub analyze_times {
|
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($endtime); |
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($endtime); |
$xlabel .= $FullWeekDay[$wday].' '. |
$xlabel .= $FullWeekDay[$wday].' '. |
join(' ',($Month[$month],$mday,1900+$year)); |
join(' ',($Month[$month],$mday,1900+$year)); |
|
my $width = 50+2*$bincount; |
|
if ($width < 250) { |
|
$width = 250; |
|
} |
$html .= &Apache::loncommon::DrawXYYGraph($title, |
$html .= &Apache::loncommon::DrawXYYGraph($title, |
$xlabel, |
$xlabel, |
'Number of Submissions per hour', |
'Submissions vs Time', |
$plotcolors, |
$plotcolors, |
\@Xlabel, |
\@Xlabel, |
\@Ydata, |
\@Ydata, |
0,$max, |
0,$max, |
\@AnsData, |
\@AnsData, |
0,scalar(@$students), |
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, |
width => 50+2*$bincount) |
width => $width, |
|
y1_label=>'Number of Submissions per hour', |
|
y2_label=>'Percent of Students answering Correctly', |
|
'data.1.label'=>'Submissions per hour', |
|
'data.2.label'=>'Percent correct', |
|
) |
); |
); |
$html .= '<br />'; |
$html .= '<br />'; |
return $html; |
return $html; |
Line 261 sub analyze_times {
|
Line 283 sub analyze_times {
|
sub successful_submission { |
sub successful_submission { |
my ($row) = @_; |
my ($row) = @_; |
if (ref($row) eq 'ARRAY') { |
if (ref($row) eq 'ARRAY') { |
return $row->[1]; |
return $row->[&Apache::loncoursedata::RT_awarded()]; |
} |
} |
return undef; |
return undef; |
return 0; |
return 0; |
Line 270 sub successful_submission {
|
Line 292 sub successful_submission {
|
sub get_time_from_row { |
sub get_time_from_row { |
my ($row) = @_; |
my ($row) = @_; |
if (ref($row) eq 'ARRAY') { |
if (ref($row) eq 'ARRAY') { |
return $row->[3]; |
return $row->[&Apache::loncoursedata::RT_timestamp()]; |
} |
} |
return undef; |
return undef; |
} |
} |
Line 278 sub get_time_from_row {
|
Line 300 sub get_time_from_row {
|
sub get_tries_from_row { |
sub get_tries_from_row { |
my ($row) = @_; |
my ($row) = @_; |
if (ref($row) eq 'ARRAY') { |
if (ref($row) eq 'ARRAY') { |
return $row->[2]; |
return $row->[&Apache::loncoursedata::RT_tries()]; |
} |
} |
return undef; |
return undef; |
} |
} |
Line 354 sub ProblemSelector {
|
Line 376 sub ProblemSelector {
|
if ($ENV{'form.problemchoice'} eq $value) { |
if ($ENV{'form.problemchoice'} eq $value) { |
$checked = 'checked '; |
$checked = 'checked '; |
} |
} |
|
my $title = $res->{'title'}; |
|
if (! defined($title) || $title eq '') { |
|
($title) = ($res->{'src'} =~ m:/([^/]*)$:); |
|
} |
|
# &Apache::lonnet::logthis('title = :'.$title.':'); |
$seq_str .= '<tr><td>'. |
$seq_str .= '<tr><td>'. |
'<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'. |
'<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'. |
'</td><td>'. |
'</td><td>'. |
'<a href="'.$res->{'src'}.'">'.$res->{'title'}.'</a> '; |
'<a href="'.$res->{'src'}.'">'.$title.'</a> '; |
} else { |
} else { |
|
my $title = $res->{'title'}; |
|
if (! defined($title) || $title eq '') { |
|
($title) = ($res->{'src'} =~ m:/([^/]*)$:); |
|
} |
$seq_str .= '<tr><td>'. |
$seq_str .= '<tr><td>'. |
' '.'</td><td>'. |
' '.'</td><td>'. |
'<a href="'.$res->{'src'}.'">'.$res->{'title'}.'</a>'. |
'<a href="'.$res->{'src'}.'">'.$title.'</a>'. |
"</td></tr>\n"; |
"</td></tr>\n"; |
foreach my $part (@{$res->{'parts'}}) { |
foreach my $part (@{$res->{'parts'}}) { |
my $value = &Apache::lonnet::escape |
my $value = &Apache::lonnet::escape |