[LON-CAPA-cvs] cvs: loncom /interface/statistics lonstudentassessment.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Tue, 18 May 2004 17:43:36 -0000
matthew Tue May 18 13:43:36 2004 EDT
Modified files:
/loncom/interface/statistics lonstudentassessment.pm
Log:
Bug 2193: Chart Excel needs maximum possible total for each student.
Index: loncom/interface/statistics/lonstudentassessment.pm
diff -u loncom/interface/statistics/lonstudentassessment.pm:1.100 loncom/interface/statistics/lonstudentassessment.pm:1.101
--- loncom/interface/statistics/lonstudentassessment.pm:1.100 Thu Apr 1 13:49:39 2004
+++ loncom/interface/statistics/lonstudentassessment.pm Tue May 18 13:43:36 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstudentassessment.pm,v 1.100 2004/04/01 18:49:39 matthew Exp $
+# $Id: lonstudentassessment.pm,v 1.101 2004/05/18 17:43:36 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -476,6 +476,7 @@
sequence_sum => 1,
sequence_max => 1,
grand_total => 1,
+ grand_maximum => 1,
summary_table => 1,
maximum_row => 1,
shortdesc => 'Total Score and Maximum Possible for each '.
@@ -493,6 +494,7 @@
sequence_sum => 1,
sequence_max => 1,
grand_total => 1,
+ grand_maximum => 1,
summary_table => 1,
maximum_row => 1,
shortdesc => 'Score on each Problem Part',
@@ -509,6 +511,7 @@
sequence_sum => 0,
sequence_max => 0,
grand_total => 0,
+ grand_maximum => 0,
summary_table => 0,
maximum_row => 0,
shortdesc => 'Number of Tries before success on each Problem Part',
@@ -524,6 +527,7 @@
sequence_sum => 1,
sequence_max => 1,
grand_total => 1,
+ grand_maximum => 1,
summary_table => 1,
maximum_row => 0,
shortdesc => 'Number of Problem Parts completed successfully.',
@@ -888,6 +892,7 @@
my $request_aborted;
my $total_formula;
+my $maximum_formula;
sub excel_initialize {
my ($r) = @_;
@@ -900,6 +905,7 @@
undef (%prog_state);
undef ($request_aborted);
undef ($total_formula);
+ undef ($maximum_formula);
#
my $total_columns = scalar(&get_student_fields_to_show());
my $num_students = scalar(@Apache::lonstatistics::Students);
@@ -1048,6 +1054,7 @@
#
# Add the remaining column headers
my $total_formula_string = '=0';
+ my $maximum_formula_string = '=0';
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
$excel_sheet->write($sequence_name_row,,
$cols_output,$seq->{'title'},$format->{'bold'});
@@ -1125,16 +1132,30 @@
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
($first_data_row,$cols_output-1);
if ($chosen_output->{'sequence_max'}) {
- $excel_sheet->write($resource_name_row,$cols_output++,
+ $excel_sheet->write($resource_name_row,$cols_output,
'maximum',
$format->{'bold'});
+ $seq->{'Excel:maxcell'} =
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($first_data_row,$cols_output);
+ $seq->{'Excel:maxcol'}=$cols_output;
+ $maximum_formula_string.='+'.
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($first_data_row,$cols_output);
+ $cols_output++;
+
}
}
if ($chosen_output->{'grand_total'}) {
$excel_sheet->write($resource_name_row,$cols_output++,'Total',
$format->{'bold'});
}
+ if ($chosen_output->{'grand_maximum'}) {
+ $excel_sheet->write($resource_name_row,$cols_output++,'Max. Total',
+ $format->{'bold'});
+ }
$total_formula = $excel_sheet->store_formula($total_formula_string);
+ $maximum_formula = $excel_sheet->store_formula($maximum_formula_string);
##############################################
# Output a row for MAX, if appropriate
##############################################
@@ -1152,11 +1173,15 @@
#
# Add the maximums for each sequence or assessment
my %total_cell_translation;
+ my %maximum_cell_translation;
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
$cols_output=$seq->{'Excel:startcol'};
$total_cell_translation{$seq->{'Excel:scorecell'}} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
($maximum_data_row,$seq->{'Excel:scorecol'});
+ $maximum_cell_translation{$seq->{'Excel:maxcell'}} =
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($maximum_data_row,$seq->{'Excel:maxcol'});
my $weight;
my $max = 0;
foreach my $resource (@{$seq->{'contents'}}) {
@@ -1205,6 +1230,11 @@
$total_formula,undef,
%total_cell_translation);
}
+ if ($chosen_output->{'grand_maximum'}) {
+ $excel_sheet->repeat_formula($maximum_data_row,$cols_output++,
+ $maximum_formula,undef,
+ %total_cell_translation);
+ }
} # End of MAXIMUM row output if ($chosen_output->{'maximum_row'}) {
$rows_output = $first_data_row;
##############################################
@@ -1306,6 +1336,7 @@
#
# Write out sequence scores and totals data
my %total_cell_translation;
+ my %maximum_cell_translation;
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
$cols_output = $seq->{'Excel:startcol'};
# Keep track of cells to translate in total cell
@@ -1379,6 +1410,11 @@
$total_formula,undef,
%total_cell_translation);
}
+ if ($chosen_output->{'grand_maximum'}) {
+ $excel_sheet->repeat_formula($rows_output,$cols_output++,
+ $maximum_formula,undef,
+ %total_cell_translation);
+ }
#
# Bookkeeping
$rows_output++;
@@ -1526,6 +1562,10 @@
$sequence_row.= '"",';
$resource_row.= '"Total",';
}
+ if ($chosen_output->{'grand_maximum'}) {
+ $sequence_row.= '"",';
+ $resource_row.= '"Maximum",';
+ }
chomp($sequence_row);
chomp($resource_row);
print $outputfile $sequence_row."\n";
@@ -1557,6 +1597,7 @@
#
# Output performance data
my $total = 0;
+ my $maximum = 0;
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
my ($performance,$performance_length,$score,$seq_max,$rawdata);
if ($chosen_output->{'tries'}){
@@ -1590,9 +1631,13 @@
$Str .= '"'.$seq_max.'",';
}
$total+=$score;
+ $maximum += $seq_max;
}
if ($chosen_output->{'grand_total'}) {
$Str .= '"'.$total.'",';
+ }
+ if ($chosen_output->{'grand_maximum'}) {
+ $Str .= '"'.$maximum.'",';
}
chop($Str);
$Str .= "\n";