--- loncom/interface/statistics/lonstudentassessment.pm 2003/03/03 22:54:05 1.32 +++ loncom/interface/statistics/lonstudentassessment.pm 2003/03/04 16:10:09 1.34 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonstudentassessment.pm,v 1.32 2003/03/03 22:54:05 matthew Exp $ +# $Id: lonstudentassessment.pm,v 1.34 2003/03/04 16:10:09 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -143,6 +143,7 @@ the button marked "Update Disp

ENDMSG +# $r->print(&OutputDescriptions()); return; } # @@ -273,33 +274,62 @@ sub CreateInterface { my @OutputOptions = ({ name => 'HTML, with links', value => 'html, with links', - description => ''}, + description => 'Output HTML with each symbol linked to the problem '. + 'which generated it.'}, { name => 'HTML, without links', value => 'html, without links', - description => ''}, - { name => 'HTML, totals', - value => 'html, totals', - description => ''}, + description => 'Output HTML. By not including links, the size of the'. + ' web page is greatly reduced. If your browser crashes on the '. + 'full display, try this.'}, { name => 'HTML, scores only', value => 'html, scores only', - description => ''}, + description => 'Output HTML, only showing the total number of correct'. + ' problems (or problem parts) and not the maximum possible for '. + 'each student'}, + { name => 'HTML, totals', + value => 'html, totals', + description => 'Output HTML, but only the summary statistics for each'. + ' sequence selected.'}, + { name => 'Excel, scores only', + value => 'excel, scores only', + description => 'Output an Excel file (compatable with Excel 95), '. + 'with a single column for each sequence showing the students '. + 'score.'}, +# { name => 'Excel, everything', +# value => 'excel, everything', +# description => 'Output an Excel file (compatable with Excel 95), '. +# 'with a seperate worksheet for each sequence you have selected '. +# 'the data for each problem part '. +# '(number of tries, status, points awarded) '. +# 'will be listed.'}, { name => 'Excel, totals', value => 'excel, totals', + description => 'Output an Excel file (compatable with Excel 95), '. + 'with two columns for each sequence, the students score on the '. + 'sequence and the students maximum possible on the sequence'}, + { name => 'CSV, everything', + value => 'csv, everything', description => ''}, - { name => 'Excel, scores only', - value => 'excel, scores only', + { name => 'CSV, scores only', + value => 'csv, scores only', description => ''}, { name => 'CSV, totals', value => 'csv, totals', description => ''}, - { name => 'CSV, scores only', - value => 'csv, scores only', - description => ''}, - { name => 'CSV, everything', - value => 'csv, everything', - description => ''} ); +sub OutputDescriptions { + my $Str = ''; + $Str .= "

Output Modes

\n"; + $Str .= "
\n"; + foreach my $outputmode (@OutputOptions) { + $Str .="
".$outputmode->{'name'}."
\n"; + $Str .="
".$outputmode->{'description'}."
\n"; + } + $Str .= "
\n"; + return $Str; +} + sub CreateAndParseOutputSelector { my $Str = ''; my $elementname = 'outputmode'; @@ -551,20 +581,55 @@ sub excel_initialize { $excel_workbook->set_tempdir($Apache::lonnet::tmpdir); # # Add a worksheet - $excel_sheet = $excel_workbook->addworksheet - ($ENV{'course.'.$ENV{'request.course.id'}.'.description'}); + my $sheetname = $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; + if (length($sheetname) > 31) { + $sheetname = substr($sheetname,0,31); + } + $excel_sheet = $excel_workbook->addworksheet($sheetname); + # + # Put the course description in the header + $excel_sheet->write($rows_output,$cols_output++, + $ENV{'course.'.$ENV{'request.course.id'}.'.description'}); + $cols_output += 3; + # + # Put a description of the sections listed + my $sectionstring = ''; + my @Sections = @Apache::lonstatistics::SelectedSections; + if (scalar(@Sections) > 1) { + if (scalar(@Sections) > 2) { + my $last = pop(@Sections); + $sectionstring = "Sections ".join(', ',@Sections).', and '.$last; + } else { + $sectionstring = "Sections ".join(' and ',@Sections); + } + } else { + if ($Sections[0] eq 'all') { + $sectionstring = "All sections"; + } else { + $sectionstring = "Section ".$Sections[0]; + } + } + $excel_sheet->write($rows_output,$cols_output++,$sectionstring); + $cols_output += scalar(@Sections); + # + # Put the date in there too + $excel_sheet->write($rows_output,$cols_output++, + 'Compiled on '.localtime(time)); + # + $rows_output++; # # Add the student headers + $cols_output = 0; foreach my $field (&get_student_fields_to_show()) { - $excel_sheet->write(1,$cols_output++,$field); + $excel_sheet->write($rows_output,$cols_output++,$field); } # # Add the Sequence Headers foreach my $seq (&get_sequences_to_show) { - $excel_sheet->write(0,$cols_output,$seq->{'title'}); + $excel_sheet->write($rows_output,$cols_output,$seq->{'title'}); if ($show eq 'totals') { - $excel_sheet->write(1,$cols_output,'score'); - $excel_sheet->write(1,$cols_output+1,'maximum'); + $excel_sheet->write($rows_output+1,$cols_output,'score'); + $excel_sheet->write($rows_output+1,$cols_output+1,'maximum'); $cols_output += 2; } else { $cols_output++; @@ -573,9 +638,9 @@ sub excel_initialize { # # Bookkeeping if ($show eq 'totals') { - $rows_output = 2; + $rows_output += 2; } else { - $rows_output = 1; + $rows_output += 1; } # # Let the user know what we are doing @@ -648,7 +713,8 @@ sub excel_outputstudent { $r->print($num_students.' out of '. (scalar(@Apache::lonstatistics::Students)). " students processed. ". - $time_est." remain.
\n"); + $time_est." remain. Elapsed: ".(time - $start_time). + "
\n"); $r->rflush(); } return;