--- loncom/interface/statistics/lonstudentassessment.pm 2004/05/18 17:43:36 1.101
+++ loncom/interface/statistics/lonstudentassessment.pm 2005/01/05 20:01:46 1.108
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstudentassessment.pm,v 1.101 2004/05/18 17:43:36 matthew Exp $
+# $Id: lonstudentassessment.pm,v 1.108 2005/01/05 20:01:46 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -357,6 +357,9 @@ sub CreateInterface {
$Str .= '';
$Str .= ' 'x5;
+ $Str .=
+ &mt('Status [_1]',
+ '');
$Str .= '
';
return $Str;
}
@@ -607,6 +610,7 @@ Return a line of the chart for a student
my $nodata_count; # The number of students for which there is no data
my %prog_state; # progress state used by loncommon PrgWin routines
+ my $total_sum_width;
sub html_initialize {
my ($r) = @_;
@@ -633,6 +637,7 @@ sub html_initialize {
}
#
# Compute the column widths and output the sequence titles
+ my $total_count;
foreach my $sequence (&Apache::lonstatistics::Sequences_with_Assess()){
#
# Comptue column widths
@@ -642,6 +647,7 @@ sub html_initialize {
# Use 1 digit for a space
$sequence->{'width_sum'} += 1;
}
+ $total_count += $sequence->{'num_assess_parts'};
# Use 3 digits for the sum
$sequence->{'width_sum'} += 3;
}
@@ -672,7 +678,8 @@ sub html_initialize {
length($sequence->{'title'})
).$padding;
}
- $Str .= "total\n";
+ $total_sum_width = length($total_count)+1;
+ $Str .= " total\n";
$Str .= "
"; $r->print($Str); $r->rflush(); @@ -690,6 +697,10 @@ sub html_outputstudent { my @to_show = &get_student_fields_to_show(); foreach my $field (@to_show) { my $title=$student->{$field}; + # Deal with 'comments' - how I love special cases + if ($field eq 'comments') { + $title = ''.&mt('Comments').''; + } my $base = length($title); my $width=$Apache::lonstatistics::StudentData{$field}->{'width'}; $Str .= $title.' 'x($width-$base).$padding; @@ -767,9 +778,11 @@ sub html_outputstudent { $max += $seq_stats->{'max'}; } if (! defined($score)) { - $score = ' 'x3; + $score = ' ' x $total_sum_width; + } else { + $score = sprintf("%.0f",$score); } - $Str .= ' '.' 'x(length($max)-length($score)).$score.'/'.$max; + $Str .= ' '.' 'x($total_sum_width-length($score)).$score.' / '.$max; $Str .= " \n"; # $r->print($Str); @@ -795,18 +808,16 @@ sub html_finish { } sub StudentAverageTotal { - my $Str = "Summary Tables
\n"; -# my $max_students; -# my $total_ave = 0; -# my $total_max = 0; + my $Str = ''.&mt('Summary Tables').'
'.$/; $Str .= '
Title | Average | Maximum |
---|---|---|
'.&mt('Title').' | '. + ''.&mt('Average').' | '. + ''.&mt('Maximum').' | '. + '
'.$seq->{'title'}.' | '. ''.$ave.' | '. ''.$max.' '.' |
Number of Students | Average | '. -# "Maximum |
---|---|---|
'.$max_students.' | '. -# ''.$total_ave.' '.' | '. -# ''.$total_max.' '.' | '; -# $Str .= "
Sequence or Folder | Score | Maximum | |
---|---|---|---|
'.&mt('Sequence or Folder').' | '; + if ($chosen_output->{'base'} eq 'tries') { + $Str .= ''.&mt('Parts Correct').' | '; + } else { + $Str .= ''.&mt('Score').' | '; + } + $Str .= ''.&mt('Maximum').' | '."
Total | '. + $Str .= '|||
'.&mt('Total').' | '. ''.$total.' | '. ''.$total_max." |
'.&mt('LON-CAPA is unable to produce your Excel spreadsheet because your selections will result in more than 255 columns. Excel allows only 255 columns in a spreadsheet.').'
'.$/. + ''.&mt('You may consider reducing the number of Sequences or Folders you have selected.').'
'.$/. + ''.&mt('LON-CAPA can produce CSV files of this data or Excel files of the Scores Summary data.').'
'.$/; if ($chosen_output->{'base'} eq 'tries' && $total_columns > 255) { - $r->print(<-LON-CAPA is unable to produce your Excel spreadsheet because your selections -will result in more than 255 columns. Excel allows only 255 columns in a -spreadsheet. -
-You may consider reducing the number of Sequences or Folders you -have selected. -
-LON-CAPA can produce CSV files of this data or Excel files of the -summary data (Parts Correct or Parts Correct & Totals). -
-END - $request_aborted = 1; + $r->print($too_many_cols_error_message); + $request_aborted = 1; } if ($chosen_output->{'base'} eq 'scores' && $total_columns > 255) { - $r->print(<-LON-CAPA is unable to produce your Excel spreadsheet because your selections -will result in more than 255 columns. Excel allows only 255 columns in a -spreadsheet. -
-You may consider reducing the number of Sequences or Folders you -have selected. -
-LON-CAPA can produce CSV files of this data or Excel files of the -Scores Summary data. -
-END - $request_aborted = 1; + $r->print($too_many_cols_error_message); + $request_aborted = 1; } return if ($request_aborted); # @@ -1079,13 +1067,14 @@ END $cols_output++, $res->{'title'}.' part '.$part, $format->{'bold'}); + $count++; } } else { $excel_sheet->write($resource_name_row, $cols_output++, $res->{'title'},$format->{'bold'}); + $count++; } - $count++; } } # Determine ending cell @@ -1233,7 +1222,7 @@ END if ($chosen_output->{'grand_maximum'}) { $excel_sheet->repeat_formula($maximum_data_row,$cols_output++, $maximum_formula,undef, - %total_cell_translation); + %maximum_cell_translation); } } # End of MAXIMUM row output if ($chosen_output->{'maximum_row'}) { $rows_output = $first_data_row; @@ -1305,7 +1294,8 @@ END # Initialize progress window %prog_state=&Apache::lonhtmlcommon::Create_PrgWin ($r,'Excel File Compilation Status', - 'Excel File Compilation Progress', $studentcount); + 'Excel File Compilation Progress', $studentcount, + 'inline',undef,'Statistics','stats_status'); # &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state, 'Processing first student'); @@ -1321,7 +1311,12 @@ sub excel_outputstudent { # Write out student data my @to_show = &get_student_fields_to_show(); foreach my $field (@to_show) { - $excel_sheet->write($rows_output,$cols_output++,$student->{$field}); + my $value = $student->{$field}; + if ($field eq 'comments') { + $value = &Apache::lonmsg::retrieve_instructor_comments + ($student->{'username'},$student->{'domain'}); + } + $excel_sheet->write($rows_output,$cols_output++,$value); } # # Get student assessment data @@ -1343,6 +1338,10 @@ sub excel_outputstudent { $total_cell_translation{$seq->{'Excel:scorecell'}} = &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell ($rows_output,$seq->{'Excel:scorecol'}); + # and maximum cell + $maximum_cell_translation{$seq->{'Excel:maxcell'}} = + &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell + ($rows_output,$seq->{'Excel:maxcol'}); # my ($performance,$performance_length,$score,$seq_max,$rawdata); if ($chosen_output->{'tries'} || $chosen_output->{'correct'}){ @@ -1413,7 +1412,7 @@ sub excel_outputstudent { if ($chosen_output->{'grand_maximum'}) { $excel_sheet->repeat_formula($rows_output,$cols_output++, $maximum_formula,undef, - %total_cell_translation); + %maximum_cell_translation); } # # Bookkeeping @@ -1497,7 +1496,8 @@ END my $studentcount = scalar(@Apache::lonstatistics::Students); %prog_state=&Apache::lonhtmlcommon::Create_PrgWin ($r,'CSV File Compilation Status', - 'CSV File Compilation Progress', $studentcount); + 'CSV File Compilation Progress', $studentcount, + 'inline',undef,'Statistics','stats_status'); # # Open a file $filename = '/prtspool/'. @@ -1582,7 +1582,12 @@ sub csv_outputstudent { # Output student fields my @to_show = &get_student_fields_to_show(); foreach my $field (@to_show) { - $Str .= '"'.&Apache::loncommon::csv_translate($student->{$field}).'",'; + my $value = $student->{$field}; + if ($field eq 'comments') { + $value = &Apache::lonmsg::retrieve_instructor_comments + ($student->{'username'},$student->{'domain'}); + } + $Str .= '"'.&Apache::loncommon::csv_translate($value).'",'; } # # Get student assessment data @@ -1768,7 +1773,7 @@ sub StudentTriesOnSequence { } } # - if (! defined($tries)) { + if (! defined($tries) || $symbol eq '.') { $tries = $symbol; } push (@TriesData,$tries);