[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemanalysis.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 18 Feb 2004 19:16:55 -0000
matthew Wed Feb 18 14:16:55 2004 EDT
Modified files:
/loncom/interface/statistics lonproblemanalysis.pm
Log:
Modified &prepare_excel_output to include the 'awarded', 'weight', and
'score' columns in the Excel worksheet it produces.
Index: loncom/interface/statistics/lonproblemanalysis.pm
diff -u loncom/interface/statistics/lonproblemanalysis.pm:1.69 loncom/interface/statistics/lonproblemanalysis.pm:1.70
--- loncom/interface/statistics/lonproblemanalysis.pm:1.69 Wed Feb 18 12:33:12 2004
+++ loncom/interface/statistics/lonproblemanalysis.pm Wed Feb 18 14:16:55 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.69 2004/02/18 17:33:12 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.70 2004/02/18 19:16:55 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -191,8 +191,9 @@
#########################################################
sub prepare_excel_output {
my ($r,$problem,$ProblemData,$Students) = @_;
- my ($resource,$respid) = ($problem->{'resource'},
- $problem->{'respid'});
+ my ($resource,$respid,$partid) = ($problem->{'resource'},
+ $problem->{'respid'},
+ $problem->{'part'});
$r->print('<h2>'.
&mt('Preparing Excel spreadsheet of student responses').
'</h2>');
@@ -200,7 +201,10 @@
&GetStudentAnswers($r,$problem,$Students);
#
my @Columns = ( 'username','domain','attempt','time',
- 'submission','correct', 'grading');
+ 'submission','correct', 'grading','awarded','weight',
+ 'score');
+ my $awarded_col = 7;
+ my $weight_col = 8;
#
# Create excel worksheet
my $filename = '/prtspool/'.
@@ -221,6 +225,9 @@
my $format = &Apache::loncommon::define_excel_formats($workbook);
my $worksheet = $workbook->addworksheet('Student Submission Data');
#
+ # Make sure we get new weight data instead of data on a 10 minute delay
+ &Apache::lonnet::clear_EXT_cache_status();
+ #
# Put on the standard headers and whatnot
my $rows_output=0;
$worksheet->write($rows_output++,0,$resource->{'title'},$format->{'h1'});
@@ -230,16 +237,22 @@
#
# Populate the worksheet with the student data
foreach my $student (@$Students) {
- # For each attempt
- # write the username, domain, attempt number, timestamp,
- # submission, correct answer, grading
my $results = &Apache::loncoursedata::get_response_data_by_student
($student,$resource->{'symb'},$respid);
+ my %row;
+ $row{'username'} = $student->{'username'};
+ $row{'domain'} = $student->{'domain'};
+ $row{'correct'} = $student->{'answer'};
+ $row{'weight'} = &Apache::lonnet::EXT
+ ('resource.'.$partid.'.weight',$resource->{'symb'},
+ undef,undef,undef);
if (! defined($results) || ref($results) ne 'ARRAY') {
- my %row;
- $row{'username'} = $student->{'username'};
- $row{'domain'} = $student->{'domain'};
- $row{'correct'} = $student->{'answer'};
+ $row{'score'} = '='.
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($rows_output,$awarded_col)
+ .'*'.
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($rows_output,$weight_col);
my $cols_output = 0;
foreach my $col (@Columns) {
if (! exists($row{$col})) {
@@ -251,23 +264,33 @@
$rows_output++;
} else {
foreach my $response (@$results) {
+ delete($row{'time'});
+ delete($row{'attempt'});
+ delete($row{'submission'});
+ delete($row{'awarded'});
+ delete($row{'grading'});
+ delete($row{'score'});
my %row_format;
- my %row;
#
# Time is handled differently
$row{'time'} = &calc_serial(
$response->[&Apache::loncoursedata::RDs_timestamp()]);
$row_format{'time'}=$format->{'date'};
#
- $row{'username'} = $student->{'username'};
- $row{'domain'} = $student->{'domain'};
$row{'attempt'} = $response->[
&Apache::loncoursedata::RDs_tries()];
$row{'submission'} = $response->[
&Apache::loncoursedata::RDs_submission()];
- $row{'correct'} = $student->{'answer'};
$row{'grading'} = $response->[
&Apache::loncoursedata::RDs_awarddetail()];
+ $row{'awarded'} = $response->[
+ &Apache::loncoursedata::RDs_awarded()];
+ $row{'score'} = '='.
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($rows_output,$awarded_col)
+ .'*'.
+ &Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
+ ($rows_output,$weight_col);
my $cols_output = 0;
foreach my $col (@Columns) {
$worksheet->write($rows_output,$cols_output++,$row{$col},