--- loncom/interface/statistics/lonproblemstatistics.pm 2004/04/06 15:45:13 1.83 +++ loncom/interface/statistics/lonproblemstatistics.pm 2004/05/14 20:30:17 1.85 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.83 2004/04/06 15:45:13 matthew Exp $ +# $Id: lonproblemstatistics.pm,v 1.85 2004/05/14 20:30:17 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -55,6 +55,7 @@ use Apache::loncommon(); use Apache::lonhtmlcommon; use Apache::loncoursedata; use Apache::lonstatistics; +use LONCAPA::lonmetadata(); use Apache::lonlocal; use Spreadsheet::WriteExcel; use Apache::lonstathelpers(); @@ -95,6 +96,10 @@ my %SeqStat; # keys are symbs, values ## statistics display? ## selected yes (yes|no) Is the column selected by default? ## +## format no sprintf format string +## +## excel_format no excel format type +## (see &Apache::loncommon::define_excel_formats my @Fields = ( { name => 'problem_num', title => 'P#', @@ -260,6 +265,39 @@ my @Fields = ( selectable => 'yes', defaultselected => 'no', }, +## duedate included for research purposes. Commented out most of the time. +# { name => 'duedate', +# title => 'Due Date', +# align => 'left', +# color => '#FFFFFF', +# sortable => 'yes', +# graphable => 'no', +# long_title => 'Due date of resource for instructor', +# selectable => 'no', +# defaultselected => 'yes', +# }, +## opendate included for research purposes. Commented out most of the time. +# { name => 'opendate', +# title => 'Open Date', +# align => 'left', +# color => '#FFFFFF', +# sortable => 'yes', +# graphable => 'no', +# long_title => 'date resource became answerable', +# selectable => 'no', +# defaultselected => 'yes', +# }, +## symb included for research purposes. Commented out most of the time. +# { name => 'symb', +# title => 'Symb', +# align => 'left', +# color => '#FFFFFF', +# sortable => 'yes', +# graphable => 'no', +# long_title => 'Unique LON-CAPA identifier for problem', +# selectable => 'no', +# defaultselected => 'yes', +# }, ); my @SeqFields = ( @@ -1240,8 +1278,12 @@ sub Excel_output { $cols_output=0; foreach my $field (@SeqFields) { next if ($field->{'selected'} ne 'yes'); + my $fieldformat = undef; + if (exists($field->{'excel_format'})) { + $fieldformat = $format->{$field->{'excel_format'}}; + } $excel_sheet->write($rows_output,$cols_output++, - $data->{$field->{'name'}}); + $data->{$field->{'name'}},$fieldformat); } $rows_output++; $cols_output=0; @@ -1259,8 +1301,12 @@ sub Excel_output { foreach my $field (@Fields) { next if ($field->{'selected'} ne 'yes'); next if ($field->{'name'} eq 'problem_num'); + my $fieldformat = undef; + if (exists($field->{'excel_format'})) { + $fieldformat = $format->{$field->{'excel_format'}}; + } $excel_sheet->write($rows_output,$cols_output++, - $data->{$field->{'name'}}); + $data->{$field->{'name'}},$fieldformat); } $rows_output++; $cols_output=0; @@ -1440,6 +1486,7 @@ sub get_statistics { (\@Apache::lonstatistics::SelectedSections, $Apache::lonstatistics::enrollment_status, $symb,$part,$courseid,$starttime,$endtime); + $data->{'symb'} = $symb; $data->{'part'} = $part; $data->{'problem_num'} = $problem_num; $data->{'container'} = $sequence->{'title'}; @@ -1453,24 +1500,25 @@ sub get_statistics { } # # Store in metadata if computations were done for all students - if ($Apache::lonstatistics::SelectedSections[0] eq 'all' && - $data->{'num_students'} > 1) { - my %storestats; - # + if ($data->{'num_students'} > 1) { + my @Sections = @Apache::lonstatistics::SelectedSections; + my $sections = '"'.join(' ',@Sections).'"'; + $sections =~ s/&+/_/g; # Ensure no special characters + $data->{'sections'}=$sections; + $data->{'course'} = $ENV{'request.course.id'}; my $urlres=(&Apache::lonnet::decode_symb($resource->{'symb'}))[2]; + $data->{'urlres'}=$urlres; + my %storestats = + &LONCAPA::lonmetadata::dynamic_metadata_storage($data); my ($dom,$user) = $urlres=~/^(\w+)\/(\w+)/; - my $preamble = $courseid.'___'.$urlres.'___'; - # - $storestats{$preamble.'timestamp'} = time; - $storestats{$preamble.'stdno'} = $data->{'num_students'}; - $storestats{$preamble.'avetries'} = $data->{'mean_tries'}; - $storestats{$preamble.'difficulty'} = $data->{'deg_of_diff'}; - if ($SelectedFields{'deg_of_disc'}) { - $storestats{$preamble.'discrimination'} = $data->{'deg_of_disc'}; - } - # &Apache::lonnet::put('nohist_resevaldata',\%storestats,$dom,$user); } + # + # Get the due date for research purposes (commented out most of the time) +# $data->{'duedate'} = +# &Apache::lonnet::EXT('resource.'.$part.'.duedate',$symb); +# $data->{'opendate'} = +# &Apache::lonnet::EXT('resource.'.$part.'.opendate',$symb); return $data; }