--- loncom/interface/statistics/lonproblemstatistics.pm 2006/05/01 19:29:13 1.107 +++ loncom/interface/statistics/lonproblemstatistics.pm 2008/10/23 09:07:51 1.114 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.107 2006/05/01 19:29:13 albertel Exp $ +# $Id: lonproblemstatistics.pm,v 1.114 2008/10/23 09:07:51 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,6 +60,8 @@ use Apache::lonlocal; use Spreadsheet::WriteExcel; use Apache::lonstathelpers(); use Time::HiRes; +use LONCAPA; + my @StatsArray; my %SeqStat; # keys are symbs, values are hash refs @@ -613,7 +615,8 @@ sub CreateInterface { $Str .= ''."\n"; $Str .= ''; $Str .= ''; - $Str .= ''; + $Str .= ''; + $Str .= ''; $Str .= ''; $Str .= ''; $Str .= ''."\n"; $Str .= '
'.&mt('Sections').''.&mt('Enrollment Status').''.&mt('Groups').''.&mt('Access Status').''.&mt('Sequences and Folders').''.&mt('Statistics').''. @@ -623,6 +626,8 @@ sub CreateInterface { $Str .= '
'."\n"; $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); $Str .= ''; + $Str .= &Apache::lonstatistics::GroupSelect('Group','multiple',5); + $Str .= ''; $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); $Str .= ''; # @@ -631,11 +636,11 @@ sub CreateInterface { $Str .= '
'."\n"; # - $Str .= '

'.&mt('Status: [_1]', - '' - ). - '

'; + $Str .= '

' + .&mt('Status: [_1]', + '') + .'

'; # $Str .= ''; @@ -674,6 +679,7 @@ sub BuildProblemStatisticsPage { my %Saveable_Parameters = ('Status' => 'scalar', 'statsoutputmode' => 'scalar', 'Section' => 'array', + 'Groups' => 'array', 'StudentData' => 'array', 'Maps' => 'array', 'fieldselections'=> 'array'); @@ -708,7 +714,7 @@ sub BuildProblemStatisticsPage { '

'. &mt('It may take some time to update the student data '. 'for the first analysis. Future analysis this session '. - ' will not have this delay.'). + 'will not have this delay.'). '

'); &clean_up(); return; @@ -722,7 +728,7 @@ sub BuildProblemStatisticsPage { ($navmap,@sequences) = &Apache::lonstatistics::selected_sequences_with_assessments(); if (! ref($navmap)) { - $r->print('

'.&mt('A course-wide error occured.').'

'. + $r->print('

'.&mt('A course-wide error occurred.').'

'. '

'.$navmap.'

'); &clean_up(); return; @@ -1310,6 +1316,7 @@ sub Excel_output { &Apache::lonstatistics::section_and_enrollment_description('plaintext'), $format->{'h3'}); $cols_output += scalar(&Apache::lonstatistics::get_selected_sections()); + $cols_output += scalar(&Apache::lonstatistics::get_selected_groups()); # # Time restrictions my $time_string; @@ -1551,6 +1558,7 @@ sub get_statistics { # my $data = &Apache::loncoursedata::get_problem_statistics ([&Apache::lonstatistics::get_selected_sections()], + [&Apache::lonstatistics::get_selected_groups()], $Apache::lonstatistics::enrollment_status, $symb,$part,$courseid,$starttime,$endtime); $data->{'symb'} = $symb; @@ -1559,7 +1567,7 @@ sub get_statistics { $data->{'container'} = $sequence->compTitle; $data->{'title'} = $resource->compTitle; $data->{'title.link'} = $resource->src.'?symb='. - &Apache::lonnet::escape($resource->symb); + &escape($resource->symb); # if ($SelectedFields{'deg_of_disc'}) { $data->{'deg_of_disc'} = @@ -1577,7 +1585,7 @@ sub get_statistics { $data->{'urlres'}=$urlres; my %storestats = &LONCAPA::lonmetadata::dynamic_metadata_storage($data); - my ($dom,$user) = $urlres=~/^(\w+)\/(\w+)/; + my ($dom,$user) = ($urlres=~m{^($LONCAPA::domain_re)/($LONCAPA::username_re)}); &Apache::lonnet::put('nohist_resevaldata',\%storestats,$dom,$user); } # @@ -1585,16 +1593,16 @@ sub get_statistics { ($data->{'num_solved'}+0.1); # # 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); -# $data->{'maxtries'} = -# &Apache::lonnet::EXT('resource.'.$part.'.maxtries',$symb); -# $data->{'hinttries'} = -# &Apache::lonnet::EXT('resource.'.$part.'.hinttries',$symb); - $data->{'weight'} = - &Apache::lonnet::EXT('resource.'.$part.'.weight',$symb); +# my $duedate = &Apache::lonnet::EXT('resource.'.$part.'.duedate',$symb);; +# my $opendate = &Apache::lonnet::EXT('resource.'.$part.'.opendate',$symb); +# my $maxtries = &Apache::lonnet::EXT('resource.'.$part.'.maxtries',$symb); +# my $hinttries = &Apache::lonnet::EXT('resource.'.$part.'.hinttries',$symb); + my $weight = &Apache::lonnet::EXT('resource.'.$part.'.weight',$symb); + $data->{'weight'} = $weight; +# $data->{'duedate'} = $duedate; +# $data->{'opendate'} = $opendate; +# $data->{'maxtries'} = $maxtries; +# $data->{'hinttries'} = $hinttries; # $data->{'resptypes'} = join(',',@{$resource->{'partdata'}->{$part}->{'ResponseTypes'}}); return $data; } @@ -1629,6 +1637,7 @@ sub compute_discrimination_factor { &Apache::loncoursedata::rank_students_by_scores_on_resources (\@Resources, [&Apache::lonstatistics::get_selected_sections()], + [&Apache::lonstatistics::get_selected_groups()], $Apache::lonstatistics::enrollment_status,undef, $starttime,$endtime, $symb); # @@ -1694,6 +1703,7 @@ sub compute_sequence_statistics { my ($smin,$smax,$sMean,$sSTD,$scount,$sMAX) = &Apache::loncoursedata::score_stats ([&Apache::lonstatistics::get_selected_sections()], + [&Apache::lonstatistics::get_selected_groups()], $Apache::lonstatistics::enrollment_status, \@Resources,$starttime,$endtime,undef); $SeqStat{$symb}->{'title'} = $seq->compTitle; @@ -1709,6 +1719,7 @@ sub compute_sequence_statistics { my ($cmin,$cmax,$cMean,$cSTD,$ccount)= &Apache::loncoursedata::count_stats ([&Apache::lonstatistics::get_selected_sections()], + [&Apache::lonstatistics::get_selected_groups()], $Apache::lonstatistics::enrollment_status, \@Resources,$starttime,$endtime,undef); my $K = $part_count;