version 1.1, 2003/10/29 15:22:04
|
version 1.4, 2003/11/11 22:14:28
|
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 149 sub get_week_start {
|
Line 159 sub get_week_start {
|
|
|
sub analyze_times { |
sub analyze_times { |
my ($r,$resource,$students,$part) = @_; |
my ($r,$resource,$students,$part) = @_; |
|
# |
|
# Convenience arrays |
|
my @FullWeekDay = (qw/Sunday Monday Tuesday Wednesday Thursday Friday |
|
Saturday/); |
|
my @WeekDay = (qw/SUN MON TUE WED THU FRI SAT SUN/); |
|
my @Month = (qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/); |
|
# |
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 |
Line 163 sub analyze_times {
|
Line 180 sub analyze_times {
|
return $html; |
return $html; |
} |
} |
# Process the data |
# Process the data |
# Get first and last times |
|
my $span = &get_time_from_row($SubData->[-1]) - |
|
&get_time_from_row($SubData->[0]); |
|
if ($span == 0) { |
|
$html.= '<h2>There is no submission data for this resource</h2>'; |
|
return $html; |
|
} |
|
# |
# |
my (undef,undef,undef,$mday,$month,$year,$wday,$yday,$isdst) = |
my (undef,undef,undef,$mday,$month,$year,$wday,$yday,$isdst) = |
localtime(&get_time_from_row($SubData->[0])); |
localtime(&get_time_from_row($SubData->[0])); |
my $day_start = &Time::Local::timelocal(0,0,0,$mday,$month,$year); |
my $day_start = &Time::Local::timelocal(0,0,0,$mday,$month,$year); |
my $start_day_of_week = $wday; |
|
# |
|
my @WeekDay = (qw/SUN MON TUE WED THU FRI SAT SUN/); |
|
my @Month = (qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/); |
|
# |
|
my $cumulative_answers = 0; |
|
# |
|
my @Ydata; |
|
my @AnsData; |
|
my @Xlabel; |
|
# |
# |
|
# Configure the bins used to store the data. |
my $binsize = 3600; # seconds |
my $binsize = 3600; # seconds |
my $bins_per_day = 86400/$binsize; |
my $bins_per_day = 86400/$binsize; |
my $bincount = 0; |
my $bincount = 0; |
my $endtime = $day_start; |
my $endtime = $day_start; |
# |
# |
|
# Initialize loop variables |
my $max; |
my $max; |
|
my @Ydata=(0); |
|
my @AnsData=(0); |
|
my @Xlabel=($WeekDay[$wday]); |
|
my $cumulative_answers = 0; |
|
# |
foreach my $row (@$SubData) { |
foreach my $row (@$SubData) { |
my $subtime = &get_time_from_row($row); |
my $subtime = &get_time_from_row($row); |
while ($subtime > $endtime && $endtime < time) { |
while ($subtime > $endtime && $endtime < time) { |
Line 200 sub analyze_times {
|
Line 207 sub analyze_times {
|
$AnsData[$bincount]=$AnsData[$bincount-1]; |
$AnsData[$bincount]=$AnsData[$bincount-1]; |
$endtime += $binsize; |
$endtime += $binsize; |
if ($bincount % (86400/$binsize) == 0) { |
if ($bincount % (86400/$binsize) == 0) { |
$Xlabel[$bincount] = $WeekDay[$wday++]; |
$wday++; |
$wday %= 7; |
$wday %= 7; |
|
$Xlabel[$bincount] = $WeekDay[$wday]; |
} else { |
} else { |
$Xlabel[$bincount] = ''; |
$Xlabel[$bincount] = ''; |
} |
} |
Line 226 sub analyze_times {
|
Line 234 sub analyze_times {
|
$AnsData[$bincount]=$AnsData[$bincount-1]; |
$AnsData[$bincount]=$AnsData[$bincount-1]; |
$endtime += $binsize; |
$endtime += $binsize; |
if ($bincount % (86400/$binsize) == 0) { |
if ($bincount % (86400/$binsize) == 0) { |
|
$wday ++; |
|
$wday %= 7; |
$Xlabel[$bincount] = $WeekDay[$wday]; |
$Xlabel[$bincount] = $WeekDay[$wday]; |
} else { |
} else { |
$Xlabel[$bincount] = ''; |
$Xlabel[$bincount] = ''; |
Line 234 sub analyze_times {
|
Line 244 sub analyze_times {
|
|
|
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) = localtime($day_start); |
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($day_start); |
$xlabel .= 'Sunday '.join(' ',($Month[$month],$mday,1900+$year)).' - '; |
$xlabel .= $FullWeekDay[$wday].' '. |
(undef,undef,undef,$mday,$month,$year) = localtime($endtime); |
join(' ',($Month[$month],$mday,1900+$year)).' - '; |
$xlabel .= 'Sunday '.join(' ',($Month[$month],$mday,1900+$year)); |
(undef,undef,undef,$mday,$month,$year,$wday) = localtime($endtime); |
|
$xlabel .= $FullWeekDay[$wday].' '. |
|
join(' ',($Month[$month],$mday,1900+$year)); |
$html .= &Apache::loncommon::DrawXYYGraph($title, |
$html .= &Apache::loncommon::DrawXYYGraph($title, |
$xlabel, |
$xlabel, |
'Number of Submissions', |
'Number of Submissions per hour', |
$plotcolors, |
$plotcolors, |
\@Xlabel, |
\@Xlabel, |
\@Ydata, |
\@Ydata, |
Line 259 sub analyze_times {
|
Line 271 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 268 sub successful_submission {
|
Line 280 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 276 sub get_time_from_row {
|
Line 288 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; |
} |
} |