--- loncom/interface/statistics/lonproblemstatistics.pm 2004/03/01 16:39:19 1.69
+++ loncom/interface/statistics/lonproblemstatistics.pm 2004/03/07 21:42:19 1.70
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemstatistics.pm,v 1.69 2004/03/01 16:39:19 matthew Exp $
+# $Id: lonproblemstatistics.pm,v 1.70 2004/03/07 21:42:19 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -57,6 +57,7 @@ use Apache::loncoursedata;
use Apache::lonstatistics;
use Apache::lonlocal;
use Spreadsheet::WriteExcel;
+use Apache::lonstathelpers();
##
## Localization notes:
@@ -185,19 +186,19 @@ select sections, maps, and output.
###############################################
my @OutputOptions =
(
- { name => 'problem statistics grouped by sequence',
+ { name => 'grouped by sequence',
value => 'HTML problem statistics grouped',
description => 'Output statistics for the problem parts.',
mode => 'html',
show => 'grouped',
},
- { name => 'problem statistics ungrouped',
+ { name => 'ungrouped',
value => 'HTML problem statistics ungrouped',
description => 'Output statistics for the problem parts.',
mode => 'html',
show => 'ungrouped',
},
- { name => 'problem statistics, Excel',
+ { name => 'Excel',
value => 'Excel problem statistics',
description => 'Output statistics for the problem parts '.
'in an Excel workbook',
@@ -216,6 +217,8 @@ sub CreateInterface {
$Str .= '
'.&mt('Enrollment Status').' | ';
$Str .= ''.&mt('Sequences and Folders').' | ';
$Str .= ''.&mt('Output').' | ';
+ $Str .= ''.
+ &Apache::lonstathelpers::limit_by_time_form().' | ';
$Str .= ''."\n";
#
$Str .= ''."\n";
@@ -297,7 +300,16 @@ sub BuildProblemStatisticsPage {
$r->print("".
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.
"\n");
- $r->print("".localtime(time)."");
+ my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();
+ if (defined($starttime) || defined($endtime)) {
+ # Inform the user what the time limits on the data are.
+ $r->print(''.&mt('Statistics on submissions from [_1] to [_2]',
+ &Apache::lonlocal::locallocaltime($starttime),
+ &Apache::lonlocal::locallocaltime($endtime)).
+ '');
+ }
+ $r->print("".&mt('Compiled on [_1]',
+ &Apache::lonlocal::locallocaltime(time))."");
$r->rflush();
if ($show eq 'grouped') {
&output_html_grouped_by_sequence($r);
@@ -503,6 +515,8 @@ sub output_excel {
$ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.
time.'_'.rand(1000000000).'.xls';
#
+ my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();
+ #
my $excel_workbook = undef;
my $excel_sheet = undef;
#
@@ -561,6 +575,22 @@ sub output_excel {
$excel_sheet->write($rows_output,$cols_output++,$sectionstring);
$cols_output += scalar(@Sections);
#
+ # Time restrictions
+ my $time_string;
+ if (defined($starttime)) {
+ # call localtime but not lonlocal:locallocaltime because excel probably
+ # cannot handle localized text. Probably.
+ $time_string .= 'Data collected from '.localtime($time_string);
+ if (defined($endtime)) {
+ $time_string .= ' to '.localtime($endtime);
+ }
+ $time_string .= '.';
+ } elsif (defined($endtime)) {
+ # See note above about lonlocal:locallocaltime
+ $time_string .= 'Data collected before '.localtime($endtime).'.';
+ }
+
+ #
# Put the date in there too
$excel_sheet->write($rows_output,$cols_output++,
'Compiled on '.localtime(time));
@@ -782,16 +812,36 @@ sub plot_statistics {
return;
}
+########################################################
+########################################################
+
+=pod
+
+=item &get_statistics()
+
+Wrapper routine from the call to loncoursedata::get_problem_statistics.
+Calls lonstathelpers::get_time_limits() to limit the data set by time.
+
+Inputs: $sequence, $resource, $part, $problem_num
+
+Returns: Hash reference with statistics data from
+loncoursedata::get_problem_statistics.
+
+=cut
+
+########################################################
+########################################################
sub get_statistics {
my ($sequence,$resource,$part,$problem_num) = @_;
#
+ my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();
my $symb = $resource->{'symb'};
my $courseid = $ENV{'request.course.id'};
#
my $data = &Apache::loncoursedata::get_problem_statistics
(\@Apache::lonstatistics::SelectedSections,
$Apache::lonstatistics::enrollment_status,
- $symb,$part,$courseid);
+ $symb,$part,$courseid,$starttime,$endtime);
$data->{'part'} = $part;
$data->{'problem_num'} = $problem_num;
$data->{'container'} = $sequence->{'title'};
|