--- loncom/interface/statistics/lonproblemstatistics.pm 2003/09/03 16:07:06 1.58
+++ loncom/interface/statistics/lonproblemstatistics.pm 2004/02/20 16:38:49 1.68
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemstatistics.pm,v 1.58 2003/09/03 16:07:06 matthew Exp $
+# $Id: lonproblemstatistics.pm,v 1.68 2004/02/20 16:38:49 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,11 +51,20 @@ package Apache::lonproblemstatistics;
use strict;
use Apache::lonnet();
+use Apache::loncommon();
use Apache::lonhtmlcommon;
use Apache::loncoursedata;
use Apache::lonstatistics;
+use Apache::lonlocal;
use Spreadsheet::WriteExcel;
+##
+## Localization notes:
+##
+## in @Fields[0]->{'long_title'} is placed in Excel files and is used as the
+## header for plots created with Graph.pm, both of which more than likely do
+## not support localization.
+##
my @Fields = (
{ name => 'problem_num',
title => 'P#',
@@ -138,7 +147,7 @@ my @Fields = (
title => '#YES',
align => 'right',
color => '#FFDDDD',
- format => '%d',
+ format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
long_title => 'Number of Students able to Solve' },
@@ -146,7 +155,7 @@ my @Fields = (
title => '#yes',
align => 'right',
color => '#FFDDDD',
- format => '%d',
+ format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
long_title => 'Number of Students given Override' },
@@ -199,12 +208,14 @@ my @OutputOptions =
sub CreateInterface {
my $Str = '';
+ $Str .= &Apache::lonhtmlcommon::breadcrumbs
+ (undef,&mt('Overall Problem Statistics'),'Statistics_Overall_Key');
$Str .= '
'."\n";
$Str .= '';
- $Str .= 'Sections ';
- $Str .= 'Enrollment Status ';
- $Str .= 'Sequences and Folders ';
- $Str .= 'Output ';
+ $Str .= ''.&mt('Sections').' ';
+ $Str .= ''.&mt('Enrollment Status').' ';
+ $Str .= ''.&mt('Sequences and Folders').' ';
+ $Str .= ''.&mt('Output').' ';
$Str .= ' '."\n";
#
$Str .= ''."\n";
@@ -232,9 +243,11 @@ sub CreateInterface {
$Str .= $html;
$Str .= ' '."\n";
$Str .= '
'."\n";
- $Str .= ' ';
+ $Str .= ' ';
$Str .= ' 'x5;
- $Str .= ' ';
+ $Str .= ' ';
$Str .= ' 'x5;
return ($Str,$outputmode,$show);
}
@@ -255,6 +268,18 @@ Main interface to problem statistics.
sub BuildProblemStatisticsPage {
my ($r,$c)=@_;
#
+ my %Saveable_Parameters = ('Status' => 'scalar',
+ 'statsoutputmode' => 'scalar',
+ 'Section' => 'array',
+ 'StudentData' => 'array',
+ 'Maps' => 'array');
+ &Apache::loncommon::store_course_settings('statistics',
+ \%Saveable_Parameters);
+ &Apache::loncommon::restore_course_settings('statistics',
+ \%Saveable_Parameters);
+ #
+ &Apache::lonstatistics::PrepareClasslist();
+ #
my ($interface,$output_mode,$show) = &CreateInterface();
$r->print($interface);
$r->print(' ');
@@ -280,10 +305,10 @@ sub BuildProblemStatisticsPage {
&output_html_ungrouped($r);
}
} elsif ($output_mode eq 'excel') {
- $r->print("Preparing Excel Spreadsheet ");
+ $r->print(''.&mt('Preparing Excel Spreadsheet').' ');
&output_excel($r);
} else {
- $r->print("Not implemented ");
+ $r->print(''.&mt('Not implemented').' ');
}
return;
}
@@ -490,9 +515,9 @@ sub output_excel {
# Check for errors
if (! defined($excel_workbook)) {
$r->log_error("Error creating excel spreadsheet $filename: $!");
- $r->print("Problems creating new Excel file. ".
+ $r->print(&mt("Problems creating new Excel file. ".
"This error has been logged. ".
- "Please alert your LON-CAPA administrator");
+ "Please alert your LON-CAPA administrator."));
return ;
}
#
@@ -507,7 +532,9 @@ sub output_excel {
if (length($sheetname) > 31) {
$sheetname = substr($sheetname,0,31);
}
- $excel_sheet = $excel_workbook->addworksheet($sheetname);
+ $excel_sheet = $excel_workbook->addworksheet(
+ &Apache::loncommon::clean_excel_name($sheetname)
+ );
#
# Put the course description in the header
$excel_sheet->write($rows_output,$cols_output++,
@@ -556,6 +583,8 @@ sub output_excel {
# Brief headers
foreach my $field (@Fields) {
next if ($field->{'name'} eq 'problem_num');
+ # Use english for excel as I am not sure how well excel handles
+ # other character sets....
$excel_sheet->write($rows_output,$cols_output++,$field->{'title'});
}
$rows_output++;
@@ -589,7 +618,8 @@ sub output_excel {
$excel_workbook->close();
# Tell the user where to get their excel file
$r->print(' '.
- 'Your Excel spreadsheet. '."\n");
+ ''.
+ &mt('Your Excel Spreadsheet').' '."\n");
$r->rflush();
return;
}
@@ -645,7 +675,7 @@ sub statistics_table_header {
'document.Statistics.sortby.value='."'".$field->{'name'}."'".
';document.Statistics.submit();">';
}
- $header_row .= $field->{'title'};
+ $header_row .= &mt($field->{'title'});
if ($options =~ /sortable/) {
$header_row.= '';
}
@@ -656,7 +686,7 @@ sub statistics_table_header {
$header_row .= '';
- $header_row .= 'plot )';
+ $header_row .= &mt('plot').')';
}
$header_row .= '';
}
@@ -738,8 +768,13 @@ sub plot_statistics {
}
}
- $r->print("".&DrawGraph(\@Data,$title,'Problem Number',$yaxis,
- $Max)."
\n");
+ $r->print("".&Apache::loncommon::DrawBarGraph($title,
+ 'Problem Number',
+ $yaxis,
+ $Max,
+ undef, # colors
+ undef, # labels
+ \@Data)."
\n");
#
# Print out the data
$ENV{'form.sortby'} = 'Contents';
@@ -747,50 +782,16 @@ sub plot_statistics {
return;
}
-###############################################
-###############################################
-
-=pod
-
-=item &DrawGraph()
-
-=cut
-
-###############################################
-###############################################
-sub DrawGraph {
- my ($values,$title,$xaxis,$yaxis,$Max)=@_;
- $title = '' if (! defined($title));
- $xaxis = '' if (! defined($xaxis));
- $yaxis = '' if (! defined($yaxis));
- $title = &Apache::lonnet::escape($title);
- $xaxis = &Apache::lonnet::escape($xaxis);
- $yaxis = &Apache::lonnet::escape($yaxis);
- #
- my $sendValues = join(',', @$values);
- my $sendCount = scalar(@$values);
- $Max =1 if ($Max < 1);
- if ( int($Max) < $Max ) {
- $Max++;
- $Max = int($Max);
- }
- my @GData = ($title,$xaxis,$yaxis,$Max,$sendCount,$sendValues);
- return ' ';
-}
-
sub get_statistics {
my ($sequence,$resource,$part,$problem_num) = @_;
#
my $symb = $resource->{'symb'};
my $courseid = $ENV{'request.course.id'};
#
- my $students = \@Apache::lonstatistics::Students;
- if ($Apache::lonstatistics::SelectedSections[0] eq 'all') {
- $students = undef;
- }
my $data = &Apache::loncoursedata::get_problem_statistics
- ($students,$symb,$part,$courseid);
+ (\@Apache::lonstatistics::SelectedSections,
+ $Apache::lonstatistics::enrollment_status,
+ $symb,$part,$courseid);
$data->{'part'} = $part;
$data->{'problem_num'} = $problem_num;
$data->{'container'} = $sequence->{'title'};
@@ -808,6 +809,8 @@ sub get_statistics {
=item &ProblemStatisticsLegend()
+HELP This needs to be localized, or at least generated automatically.
+
=cut
###############################################