--- loncom/interface/statistics/lonproblemanalysis.pm 2005/02/16 17:43:20 1.111 +++ loncom/interface/statistics/lonproblemanalysis.pm 2006/08/17 21:19:47 1.127 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemanalysis.pm,v 1.111 2005/02/16 17:43:20 matthew Exp $ +# $Id: lonproblemanalysis.pm,v 1.127 2006/08/17 21:19:47 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,7 +27,7 @@ package Apache::lonproblemanalysis; use strict; -use Apache::lonnet(); +use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::loncoursedata(); @@ -38,6 +38,9 @@ use Apache::lonstudentsubmissions(); use HTML::Entities(); use Time::Local(); use capa; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; + my $plotcolors = ['#33ff00', '#0033cc', '#990000', '#aaaa66', '#663399', '#ff9933', @@ -59,6 +62,7 @@ sub BuildProblemAnalysisPage { # my %Saveable_Parameters = ('Status' => 'scalar', 'Section' => 'array', + 'Groups' => 'array', 'NumPlots' => 'scalar', 'AnalyzeOver' => 'scalar', ); @@ -73,8 +77,8 @@ sub BuildProblemAnalysisPage { # my @Students = @Apache::lonstatistics::Students; # - if (@Students < 1 && exists($ENV{'form.firstrun'})) { - $r->print('
'. &mt($no_data_message,$plot_num,@extra_data). @@ -274,16 +289,16 @@ sub numerical_response_analysis { ' | |||||||||||||||||
'. &mt($stats_message, - $responses->{'_count'}, - $responses->{'_correct'}, - $responses->{'_count'}-$responses->{'_correct'}, - $responses->{'_students'}, + $stats->{'submission_count'}, + $stats->{'correct_count'}, + $stats->{'incorrect_count'}, + $stats->{'students'}, @extra_data). ' | |||||||||||||||||
'. - &numerical_plot_percent($r,$responses).' | '. + &numerical_plot_percent($r,$responses,$stats).''. ''. - &numerical_plot_differences($r,$responses).' | '. + &numerical_plot_differences($r,$responses,$stats).''. ''.&mt('Correct').' | '. ''.&mt('Count').' | '. ''.$/; - for (my $i=0;$i||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'.$labels->[$i].' | '. @@ -535,7 +606,10 @@ sub numerical_determine_answers { my ($r,$resource,$partid,$respid,$students)=@_; my $c = $r->connection(); # - # FIX ME: May need progress dialog updates + my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin + ($r,'Student Answer Compilation Status', + 'Student Answer Compilation Progress', scalar(@$students), + 'inline',undef,'Statistics','stats_status'); # # Read in the cache (if it exists) before we start timing things. &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'}); @@ -553,13 +627,16 @@ sub numerical_determine_answers { $sdom); # make the key my $key = $partid.'.'.$respid; - $correct->{$sname.':'.$sdom}->{'answer'} = - $analysis->{$key.'.answer'}->[0]; - $correct->{$sname.':'.$sdom}->{'unit'} = - $analysis->{$key.'.unit'}->[0]; + foreach my $item ('answer','unit','ans_high','ans_low') { + $correct->{$sname.':'.$sdom}->{$item} = + $analysis->{$key.'.'.$item}->[0]; + } $answers{$analysis->{$key.'.answer'}->[0]}++; + &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, + &mt('last student')); } &Apache::lonstathelpers::write_analysis_cache(); + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); return ($correct,\%answers); } @@ -680,7 +757,7 @@ sub circle { sub radio_response_analysis { my ($r,$problem,$problem_analysis,$students) = @_; # - if ($ENV{'form.AnalyzeOver'} !~ /^(tries|time)$/) { + if ($env{'form.AnalyzeOver'} !~ /^(tries|time)$/) { $r->print('Bad request'); } # @@ -709,9 +786,10 @@ sub radio_response_analysis { $analysis_html .= $table; # Gather student data my $response_data = &Apache::loncoursedata::get_response_data - (\@Apache::lonstatistics::SelectedSections, + ([&Apache::lonstatistics::get_selected_sections()], + [&Apache::lonstatistics::get_selected_groups()], $Apache::lonstatistics::enrollment_status, - $resource->{'symb'},$respid); + $resource->symb,$respid); my $correct; # either a hash reference or a scalar if ($problem_analysis->{'answercomputed'} || scalar(@$concepts) > 1) { # This takes a while for large classes... @@ -722,7 +800,7 @@ sub radio_response_analysis { my ($idx,@remainder) = split('&',$student->{'answer'}); my ($answer) = ($remainder[$idx]=~/^(.*)=([^=]*)$/); $correct->{$student->{'username'}.':'.$student->{'domain'}}= - &Apache::lonnet::unescape($answer); + &unescape($answer); } } else { foreach my $foil (keys(%$foildata)) { @@ -741,13 +819,13 @@ sub radio_response_analysis { } # $analysis_html.='
'. ''. &mt($pre_graph_text, $plot_num,$foil_choice_data->{'_count'}, $correct, - $foil_choice_data->{'_count'}-$correct, + $incorrect, $foil_choice_data->{'_students'}, @extra_data). ' | ||||||||||||
'.
&mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',
@@ -1748,19 +1824,18 @@ sub build_foil_key {
sub CreateInterface {
##
## Environment variable initialization
- if (! exists$ENV{'form.AnalyzeOver'}) {
- $ENV{'form.AnalyzeOver'} = 'tries';
+ if (! exists($env{'form.AnalyzeOver'})) {
+ $env{'form.AnalyzeOver'} = 'tries';
}
##
## Build the menu
my $Str = '';
- $Str .= &Apache::lonhtmlcommon::breadcrumbs
- (undef,'Detailed Problem Analysis');
+ $Str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis');
$Str .= '
|