--- loncom/interface/statistics/lonproblemanalysis.pm 2005/02/23 02:03:42 1.115
+++ 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.115 2005/02/23 02:03:42 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.119 2005/03/15 00:51:43 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -107,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',
@@ -130,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'}};
@@ -162,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));
}
}
@@ -187,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'}) {
@@ -482,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;
@@ -531,6 +535,8 @@ sub numerical_classify_responses {
}
}
}
+ $stats{'correct_count'} |= 0;
+ $stats{'incorrect_count'} |= 0;
$stats{'students'}=scalar(keys(%students));
return (\%submission_data,\%stats);
}
@@ -766,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...
@@ -882,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).
' |
'.$/;
@@ -1173,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(''.
@@ -1309,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}));
@@ -1471,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',
@@ -1814,7 +1820,6 @@ sub CreateInterface {
$Str .= '';
$Str .= ''.&mt('Sections').' | ';
$Str .= ''.&mt('Enrollment Status').' | ';
-# $Str .= ''.&mt('Sequences and Folders').' | ';
$Str .= ' | ';
$Str .= ' '."\n";
##
@@ -1827,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 .= ' | ';
|