--- loncom/interface/statistics/lonproblemstatistics.pm 2005/04/07 06:56:24 1.104 +++ loncom/interface/statistics/lonproblemstatistics.pm 2006/08/18 15:15:38 1.110 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.104 2005/04/07 06:56:24 albertel Exp $ +# $Id: lonproblemstatistics.pm,v 1.110 2006/08/18 15:15:38 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,6 +60,9 @@ use Apache::lonlocal; use Spreadsheet::WriteExcel; use Apache::lonstathelpers(); use Time::HiRes; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; + my @StatsArray; my %SeqStat; # keys are symbs, values are hash refs @@ -608,12 +611,13 @@ sub CreateInterface { &parse_field_selection(); # my $Str = ''; - $Str .= &Apache::lonhtmlcommon::breadcrumbs - (undef,'Overall Problem Statistics','Statistics_Overall_Key'); + $Str .= &Apache::lonhtmlcommon::breadcrumbs('Overall Problem Statistics', + 'Statistics_Overall_Key'); $Str .= '
'.&mt('Sections').' | '; - $Str .= ''.&mt('Enrollment Status').' | '; + $Str .= ''.&mt('Groups').' | '; + $Str .= ''.&mt('Access Status').' | '; $Str .= ''.&mt('Sequences and Folders').' | '; $Str .= ''.&mt('Statistics').' | '; $Str .= ''. @@ -623,6 +627,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 .= ' | ';
#
@@ -661,6 +667,11 @@ Main interface to problem statistics.
my $navmap;
my @sequences;
+sub clean_up {
+ undef($navmap);
+ undef(@sequences);
+}
+
sub BuildProblemStatisticsPage {
my ($r,$c)=@_;
undef($navmap);
@@ -669,6 +680,7 @@ sub BuildProblemStatisticsPage {
my %Saveable_Parameters = ('Status' => 'scalar',
'statsoutputmode' => 'scalar',
'Section' => 'array',
+ 'Groups' => 'array',
'StudentData' => 'array',
'Maps' => 'array',
'fieldselections'=> 'array');
@@ -705,6 +717,7 @@ sub BuildProblemStatisticsPage {
'for the first analysis. Future analysis this session '.
' will not have this delay.').
'');
+ &clean_up();
return;
}
$r->rflush();
@@ -718,6 +731,7 @@ sub BuildProblemStatisticsPage {
if (! ref($navmap)) {
$r->print(''.&mt('A course-wide error occured.').''. ''.$navmap.''); + &clean_up(); return; } if (exists($env{'form.Excel'})) { @@ -765,6 +779,7 @@ sub BuildProblemStatisticsPage { &output_sequence_statistics($r); } } + &clean_up(); return; } @@ -1302,6 +1317,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; @@ -1543,6 +1559,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; @@ -1551,7 +1568,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'} = @@ -1621,8 +1638,9 @@ 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); + $starttime,$endtime, $symb); # # compute their percent scores on the problems in the sequence, my $number_to_grab = int(scalar(@{$ranking})/4); @@ -1632,7 +1650,7 @@ sub compute_discrimination_factor { my @TopSet = map { $_->[&Apache::loncoursedata::RNK_student()]; - } @{$ranking}[($num_students-$number_to_grab)..($num_students-1)]; + } @{$ranking}[-$number_to_grab..0]; if (! @BottomSet || (@BottomSet == 1 && $BottomSet[0] eq '') || ! @TopSet || (@TopSet == 1 && $TopSet[0] eq '')) { return 'nan'; @@ -1686,6 +1704,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; @@ -1701,6 +1720,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; |