[LON-CAPA-cvs] cvs: loncom /interface/statistics lonstudentassessment.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 11 Feb 2004 17:42:34 -0000
This is a MIME encoded message
--matthew1076521354
Content-Type: text/plain
matthew Wed Feb 11 12:42:34 2004 EDT
Modified files:
/loncom/interface/statistics lonstudentassessment.pm
Log:
Fix and cleanup excel output of scores summary and scores tries by being
explicit about which row we are in.
--matthew1076521354
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20040211124234.txt"
Index: loncom/interface/statistics/lonstudentassessment.pm
diff -u loncom/interface/statistics/lonstudentassessment.pm:1.85 loncom/interface/statistics/lonstudentassessment.pm:1.86
--- loncom/interface/statistics/lonstudentassessment.pm:1.85 Wed Feb 11 11:02:37 2004
+++ loncom/interface/statistics/lonstudentassessment.pm Wed Feb 11 12:42:34 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstudentassessment.pm,v 1.85 2004/02/11 16:02:37 matthew Exp $
+# $Id: lonstudentassessment.pm,v 1.86 2004/02/11 17:42:34 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1007,28 +1007,30 @@
$rows_output++;
}
#
+ # Figure out the rows we need
+ my $sequence_name_row = $rows_output+1;
+ my $resource_name_row = $sequence_name_row+1;
+ my $maximum_data_row = $sequence_name_row+2;
+ my $first_data_row = $sequence_name_row+3;
+ #
# Add the student headers
$cols_output = 0;
foreach my $field (&get_student_fields_to_show()) {
- $excel_sheet->write($rows_output,$cols_output++,$field,
+ $excel_sheet->write($resource_name_row,$cols_output++,$field,
$format->{'bold'});
}
- my $row_offset = 0;
- if ($data eq 'tries' || $data eq 'scores') {
- $row_offset = -1;
- }
#
# Add the remaining column headers
my $total_formula_string = '=0';
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
- $excel_sheet->write($rows_output+$row_offset,
+ $excel_sheet->write($sequence_name_row,,
$cols_output,$seq->{'title'},$format->{'h3'});
+ # Determine starting cell
+ $seq->{'Excel:startcell'}=
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($maximum_data_row,$cols_output);
+ $seq->{'Excel:startcol'}=$cols_output;
if ($data eq 'tries' || $data eq 'scores') {
- # Determine starting cell
- $seq->{'Excel:startcell'}=
- &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$cols_output);
- $seq->{'Excel:startcol'}=$cols_output;
# Put the names of the problems and parts into the sheet
my $count = 0;
foreach my $res (@{$seq->{'contents'}}) {
@@ -1040,13 +1042,13 @@
}
if (scalar(@{$res->{'parts'}}) > 1) {
foreach my $part (@{$res->{'parts'}}) {
- $excel_sheet->write($rows_output,
+ $excel_sheet->write($resource_name_row,
$cols_output++,
$res->{'title'}.' part '.$part,
$format->{'bold'});
}
} else {
- $excel_sheet->write($rows_output,
+ $excel_sheet->write($resource_name_row,
$cols_output++,
$res->{'title'},$format->{'bold'});
}
@@ -1059,7 +1061,7 @@
} else {
$seq->{'Excel:endcell'} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$cols_output-1);
+ ($maximum_data_row,$cols_output-1);
$seq->{'Excel:endcol'} = $cols_output-1;
}
# Create the formula for summing up this sequence
@@ -1074,42 +1076,38 @@
# Determine cell the score is held in
$seq->{'Excel:scorecell'} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$cols_output);
+ ($maximum_data_row,$cols_output);
$seq->{'Excel:scorecol'}=$cols_output;
if ($data eq 'parts correct total') {
- $excel_sheet->write($rows_output,$cols_output++,'parts correct',
+ $excel_sheet->write($resource_name_row,$cols_output++,
+ 'parts correct',
$format->{'bold'});
} else {
- $excel_sheet->write($rows_output,$cols_output++,'score',
+ $excel_sheet->write($resource_name_row,$cols_output++,
+ 'score',
$format->{'bold'});
}
#
$total_formula_string.='+'.
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$cols_output-1);
- $excel_sheet->write($rows_output,$cols_output++,'maximum',
+ ($maximum_data_row,$cols_output-1);
+ $excel_sheet->write($resource_name_row,$cols_output++,
+ 'maximum',
$format->{'bold'});
}
- $excel_sheet->write($rows_output,$cols_output++,'Grand Total',
+ $excel_sheet->write($resource_name_row,$cols_output++,'Grand Total',
$format->{'bold'});
$total_formula = $excel_sheet->store_formula($total_formula_string);
#
- # Bookkeeping
- if ($data eq 'sum and total' || $data eq 'parts correct total') {
- $rows_output += 2;
- } else {
- $rows_output += 1;
- }
- #
# Output a row for MAX
$cols_output = 0;
foreach my $field (&get_student_fields_to_show()) {
if ($field eq 'username' || $field eq 'fullname' ||
$field eq 'id') {
- $excel_sheet->write($rows_output,$cols_output++,'Maximum',
+ $excel_sheet->write($maximum_data_row,$cols_output++,'Maximum',
$format->{'bold'});
} else {
- $excel_sheet->write($rows_output,$cols_output++,'');
+ $excel_sheet->write($maximum_data_row,$cols_output++,'');
}
}
#
@@ -1119,7 +1117,7 @@
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {
$total_cell_translation{$seq->{'Excel:scorecell'}} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$seq->{'Excel:scorecol'});
+ ($maximum_data_row,$seq->{'Excel:scorecol'});
my $weight;
my $max = 0;
foreach my $resource (@{$seq->{'contents'}}) {
@@ -1135,42 +1133,42 @@
}
}
if ($data eq 'scores') {
- $excel_sheet->write($rows_output,$cols_output++,$weight);
+ $excel_sheet->write($maximum_data_row,$cols_output++,$weight);
} elsif ($data eq 'tries') {
- $excel_sheet->write($rows_output,$cols_output++,'');
+ $excel_sheet->write($maximum_data_row,$cols_output++,'');
}
$max += $weight;
}
}
if (! ($data eq 'sum only' || $data eq 'parts correct')) {
- $excel_sheet->write($rows_output,$cols_output++,'');
+ $excel_sheet->write($maximum_data_row,$cols_output++,'');
}
#
if ($data eq 'tries' || $data eq 'scores') {
my %replaceCells;
$replaceCells{$seq->{'Excel:startcell'}} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$seq->{'Excel:startcol'});
+ ($maximum_data_row,$seq->{'Excel:startcol'});
$replaceCells{$seq->{'Excel:endcell'}} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
- ($rows_output,$seq->{'Excel:endcol'});
- $excel_sheet->repeat_formula($rows_output,$cols_output++,
+ ($maximum_data_row,$seq->{'Excel:endcol'});
+ $excel_sheet->repeat_formula($maximum_data_row,$cols_output++,
$seq->{'Excel:sum'},undef,
%replaceCells);
} else {
- $excel_sheet->write($rows_output,$cols_output++,
+ $excel_sheet->write($maximum_data_row,$cols_output++,
$max);
}
$grand_total+=$max;
}
if ($data eq 'tries' || $data eq 'scores') {
- $excel_sheet->repeat_formula($rows_output,$cols_output++,
+ $excel_sheet->repeat_formula($maximum_data_row,$cols_output++,
$total_formula,undef,
%total_cell_translation);
} else {
- $excel_sheet->write($rows_output,$cols_output++,$grand_total);
+ $excel_sheet->write($maximum_data_row,$cols_output++,$grand_total);
}
- $rows_output++;
+ $rows_output = $first_data_row;
#
# Let the user know what we are doing
my $studentcount = scalar(@Apache::lonstatistics::Students);
--matthew1076521354--