--- loncom/interface/statistics/lonproblemanalysis.pm 2005/02/22 22:51:16 1.114 +++ loncom/interface/statistics/lonproblemanalysis.pm 2005/03/15 00:51:43 1.119 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemanalysis.pm,v 1.114 2005/02/22 22:51:16 matthew Exp $ +# $Id: lonproblemanalysis.pm,v 1.119 2005/03/15 00:51:43 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -97,6 +97,9 @@ sub BuildProblemAnalysisPage { $r->print($html.(' 'x5)); } # + $r->print(&Apache::lonstathelpers::submission_report_form + ('problem_analysis')); + # $r->print('
'); $r->rflush(); # @@ -104,7 +107,7 @@ sub BuildProblemAnalysisPage { my $current_problem = &Apache::lonstathelpers::get_target_from_id ($ENV{'form.problemchoice'}); # - my ($prev,$curr,$next) = + my ($navmap,$prev,$curr,$next) = &Apache::lonstathelpers::get_prev_curr_next($current_problem, $problem_types, 'response', @@ -127,14 +130,15 @@ sub BuildProblemAnalysisPage { $r->print('resource is undefined'); } else { my $resource = $current_problem->{'resource'}; - $r->print('

'.$resource->{'title'}.'

'); - $r->print('

'.$resource->{'src'}.'

'); + $r->print('

'.$resource->compTitle.'

'); + $r->print('

'.$resource->src.'

'); + $r->print('

'.&Apache::lonstatistics::section_and_enrollment_description().'

'); if ($ENV{'form.show_prob'} eq 'true') { $r->print(&Apache::lonstathelpers::render_resource($resource)); } $r->rflush(); my %Data = &Apache::lonstathelpers::get_problem_data - ($resource->{'src'}); + ($resource->src); my $problem_data = $Data{$current_problem->{'part'}. '.'. $current_problem->{'respid'}}; @@ -159,8 +163,7 @@ sub BuildProblemAnalysisPage { &mt('Analyze Problem').'" />'); $r->print(' 'x5); $r->print('

'.&mt('Please select a problem to analyze').'

'); - $r->print(&Apache::lonstathelpers::ProblemSelector - ($problem_types)); + $r->print(&Apache::lonstathelpers::problem_selector($problem_types)); } } @@ -184,9 +187,9 @@ sub numerical_response_analysis { $problem->{'respid'}); # Gather student data my $response_data = &Apache::loncoursedata::get_response_data - (\@Apache::lonstatistics::SelectedSections, + ([&Apache::lonstatistics::get_selected_sections()], $Apache::lonstatistics::enrollment_status, - $resource->{'symb'},$respid); + $resource->symb,$respid); # $problem_analysis->{'answercomputed'} = 1; if ($problem_analysis->{'answercomputed'}) { @@ -479,8 +482,12 @@ sub numerical_classify_responses { if ($stats{'max_abs'} < $abs_high) { $stats{'max_abs'} = $abs_high; } - my $low_percent = 100 * abs($abs_low / $subm{'correct'}); - my $high_percent = 100 * abs($abs_high / $subm{'correct'}); + my $low_percent; + my $high_percent; + if (defined($subm{'correct'}) && $subm{'correct'} != 0) { + $low_percent = 100 * abs($abs_low / $subm{'correct'}); + $high_percent = 100 * abs($abs_high / $subm{'correct'}); + } if (! defined($stats{'min_percent'}) || $stats{'min_percent'} > $low_percent) { $stats{'min_percent'} = $low_percent; @@ -528,6 +535,8 @@ sub numerical_classify_responses { } } } + $stats{'correct_count'} |= 0; + $stats{'incorrect_count'} |= 0; $stats{'students'}=scalar(keys(%students)); return (\%submission_data,\%stats); } @@ -763,9 +772,9 @@ 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::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... @@ -879,16 +888,14 @@ sub radio_response_analysis { $choice_plot ne '' || $stacked_plot ne '') { my $correct = $foil_choice_data->{'_correct'}; - if (! defined($correct) || $correct eq '') { - $correct = 0; - } - my $incorrect = + $correct |= 0; + my $incorrect = $foil_choice_data->{'_count'}-$correct; $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). ''.$/; @@ -1170,9 +1177,9 @@ sub OptionResponseAnalysis { $problem->{'respid'}); # Note: part data is not needed. my $PerformanceData = &Apache::loncoursedata::get_response_data - (\@Apache::lonstatistics::SelectedSections, + ([&Apache::lonstatistics::get_selected_sections()], $Apache::lonstatistics::enrollment_status, - $resource->{'symb'},$respid); + $resource->symb,$respid); if (! defined($PerformanceData) || ref($PerformanceData) ne 'ARRAY' ) { $r->print('

'. @@ -1306,6 +1313,7 @@ sub OR_tries_analysis { # Create Foil Plots my $data_count = $response_data{'_total'}->[$try]; my $correct = $response_data{'_correct'}->[$try]; + $correct |= 0; my @Datasets; foreach my $option ('_correct',@{$ORdata->{'_Options'}}) { next if (! exists($foil_plot[$try]->{$option})); @@ -1468,6 +1476,7 @@ sub OR_time_analysis { ## my ($processed_time_data,$correct,$data_count,$student_count) = &OR_time_process_data($performance_data,$begin_index,$end_index); + $correct |= 0; ## $table .= ''. &mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect', @@ -1811,7 +1820,6 @@ sub CreateInterface { $Str .= ''; $Str .= ''.&mt('Sections').''; $Str .= ''.&mt('Enrollment Status').''; -# $Str .= ''.&mt('Sequences and Folders').''; $Str .= ' '; $Str .= ''."\n"; ## @@ -1824,17 +1832,6 @@ sub CreateInterface { $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); $Str .= ''; # -# $Str .= ''; - my $only_seq_with_assessments = sub { - my $s=shift; - if ($s->{'num_assess'} < 1) { - return 0; - } else { - return 1; - } - }; - &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, - $only_seq_with_assessments); ## ## $Str .= '';