--- loncom/interface/statistics/lonproblemanalysis.pm 2004/03/16 16:41:26 1.81
+++ loncom/interface/statistics/lonproblemanalysis.pm 2004/03/22 17:25:27 1.82
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.81 2004/03/16 16:41:26 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.82 2004/03/22 17:25:27 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -160,8 +160,17 @@ sub BuildProblemAnalysisPage {
$ProblemData,
\@Students);
} elsif ($current_problem->{'resptype'} eq 'numerical') {
- &NumericalResponseAnalysis($r,$current_problem,
- $ProblemData,\@Students);
+ ##
+ ## analyze all responses of a problem at once
+ my $res = $current_problem->{'resource'};
+ foreach my $partid (@{$res->{'parts'}}) {
+ $current_problem->{'part'} = $partid;
+ foreach my $respid (@{$res->{'partdata'}->{$partid}->{'ResponseIds'}}) {
+ $current_problem->{'respid'}=$respid;
+ &NumericalResponseAnalysis($r,$current_problem,
+ $ProblemData,\@Students);
+ }
+ }
} else {
$r->print('
This analysis is not supported
');
}
@@ -188,13 +197,29 @@ sub BuildProblemAnalysisPage {
sub NumericalResponseAnalysis {
my ($r,$problem,$ProblemData,$Students) = @_;
my $c = $r->connection();
- my ($resource,$respid) = ($problem->{'resource'},
- $problem->{'respid'});
- $r->print('Response '.$respid.'');
+ my ($resource,$partid,$respid) = ($problem->{'resource'},
+ $problem->{'part'},
+ $problem->{'respid'});
+ #
+ if (scalar(@{$resource->{'parts'}})>1) {
+ if (@{$resource->{'partdata'}->{$partid}->{'ResponseIds'}}>1) {
+ $r->print(''.
+ &mt('Part [_1], response [_2].',$partid,$respid).
+ '
');
+ } else {
+ $r->print(''.
+ &mt('Part [_1]',$partid,$respid).
+ '
');
+ }
+ } elsif (@{$resource->{'partdata'}->{$partid}->{'ResponseIds'}}>1) {
+ $r->print(''.&mt('Response [_1]',$respid).'
');
+ }
+ #
my $analysis_html;
- my $PerformanceData =
- &Apache::loncoursedata::get_response_data
- ($Students,$resource->{'symb'},$respid);
+ my $PerformanceData = &Apache::loncoursedata::get_response_data
+ (\@Apache::lonstatistics::SelectedSections,
+ $Apache::lonstatistics::enrollment_status,
+ $resource->{'symb'},$respid);
if (! defined($PerformanceData) ||
ref($PerformanceData) ne 'ARRAY' ) {
$analysis_html = ''.
@@ -232,6 +257,9 @@ sub one_dimensional_plot {
# Compute data -> image scaling factors
my $min = $Labels->[0];
my $max = $Labels->[-1];
+ if ($max == $min) {
+ $max =$min+1;
+ }
my $h_scale = ($width-10)/($max-$min);
#
my $max_y = 0;
@@ -294,6 +322,17 @@ sub line {
return qq{$/};
}
+sub text {
+ my ($x,$y,$color,$text,$font,$direction) = @_;
+ if (! defined($font) || $font !~ /^(tiny|small|medium|large|giant)$/) {
+ $font = 'medium';
+ }
+ if (! defined($direction) || $direction ne 'vertical') {
+ $direction = '';
+ }
+ return qq{$text};
+}
+
sub rectangle {
my ($x1,$y1,$x2,$y2,$color,$thickness,$filled) = @_;
return qq{};
@@ -348,9 +387,10 @@ sub RadioResponseAnalysis {
my ($resource,$respid) = ($problem->{'resource'},
$problem->{'respid'});
my $analysis_html;
- my $PerformanceData =
- &Apache::loncoursedata::get_response_data
- ($Students,$resource->{'symb'},$respid);
+ my $PerformanceData = &Apache::loncoursedata::get_response_data
+ (\@Apache::lonstatistics::SelectedSections,
+ $Apache::lonstatistics::enrollment_status,
+ $resource->{'symb'},$respid);
if (! defined($PerformanceData) ||
ref($PerformanceData) ne 'ARRAY' ) {
$analysis_html = ''.
@@ -533,9 +573,10 @@ sub OptionResponseAnalysis {
my ($resource,$respid) = ($problem->{'resource'},
$problem->{'respid'});
# Note: part data is not needed.
- my $PerformanceData =
- &Apache::loncoursedata::get_response_data
- ($Students,$resource->{'symb'},$respid);
+ my $PerformanceData = &Apache::loncoursedata::get_response_data
+ (\@Apache::lonstatistics::SelectedSections,
+ $Apache::lonstatistics::enrollment_status,
+ $resource->{'symb'},$respid);
if (! defined($PerformanceData) ||
ref($PerformanceData) ne 'ARRAY' ) {
$r->print(''.