version 1.4, 2003/11/11 22:14:28
|
version 1.10, 2004/01/19 21:31:08
|
Line 33 use Apache::loncommon();
|
Line 33 use Apache::loncommon();
|
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::loncoursedata(); |
use Apache::loncoursedata(); |
use Apache::lonstatistics; |
use Apache::lonstatistics; |
|
use Apache::lonstathelpers; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use HTML::Entities(); |
use HTML::Entities(); |
use Time::Local(); |
use Time::Local(); |
Line 50 my @SubmitButtons = (
|
Line 51 my @SubmitButtons = (
|
text => 'Choose a different resource' }, |
text => 'Choose a different resource' }, |
); |
); |
|
|
sub render_resource { |
|
my ($resource) = @_; |
|
## |
|
## Render the problem |
|
my $base; |
|
($base,undef) = ($resource->{'src'} =~ m|(.*/)[^/]*$|); |
|
$base = "http://".$ENV{'SERVER_NAME'}.$base; |
|
my $rendered_problem = |
|
&Apache::lonnet::ssi_body($resource->{'src'}); |
|
$rendered_problem =~ s/<\s*form\s*/<nop /g; |
|
$rendered_problem =~ s|(<\s*/form\s*>)|<\/nop>|g; |
|
return '<table bgcolor="ffffff"><tr><td>'. |
|
'<base href="'.$base.'" />'. |
|
$rendered_problem. |
|
'</td></tr></table>'; |
|
} |
|
|
|
sub BuildSubmissionTimePage { |
sub BuildSubmissionTimePage { |
my ($r,$c)=@_; |
my ($r,$c)=@_; |
# |
# |
Line 131 sub BuildSubmissionTimePage {
|
Line 115 sub BuildSubmissionTimePage {
|
$r->print('<h1>'.$resource->{'title'}.'</h1>'); |
$r->print('<h1>'.$resource->{'title'}.'</h1>'); |
$r->print('<h3>'.$resource->{'src'}.'</h3>'); |
$r->print('<h3>'.$resource->{'src'}.'</h3>'); |
$r->rflush(); |
$r->rflush(); |
$r->print(&render_resource($resource)); |
$r->print(&Apache::lonstathelpers::render_resource($resource)); |
$r->rflush(); |
$r->rflush(); |
$r->print(&analyze_times($r,$resource,\@Students,$part)); |
$r->print(&analyze_times($r,$resource,\@Students,$part)); |
} |
} |
Line 171 sub analyze_times {
|
Line 155 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 241 sub analyze_times {
|
Line 225 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 250 sub analyze_times {
|
Line 237 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 364 sub ProblemSelector {
|
Line 360 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 |