'.
''.&mt('Distribution of correct answers').''.
@@ -522,33 +677,6 @@ sub circle {
return &arc($x,$y,$radius,$radius,0,360,$color,$thickness,$filled);
}
-sub build_student_data_worksheet {
- my ($workbook,$format) = @_;
- my $rows_output = 3;
- my $cols_output = 0;
- my $worksheet = $workbook->addworksheet('Student Data');
- $worksheet->write($rows_output++,0,'Student Data',$format->{'h3'});
- my @Headers = ('full name','username','domain','section',
- "student\nnumber",'identifier');
- $worksheet->write_row($rows_output++,0,\@Headers,$format->{'header'});
- my @Students = @Apache::lonstatistics::Students;
- my $studentrows = &Apache::loncoursedata::get_student_data(\@Students);
- my %ids;
- foreach my $row (@$studentrows) {
- my ($mysqlid,$student) = @$row;
- $ids{$student}=$mysqlid;
- }
- foreach my $student (@Students) {
- my $name_domain = $student->{'username'}.':'.$student->{'domain'};
- $worksheet->write_row($rows_output++,0,
- [$student->{'fullname'},
- $student->{'username'},$student->{'domain'},
- $student->{'section'},$student->{'id'},
- $ids{$name_domain}]);
- }
- return $worksheet;
-}
-
#########################################################
#########################################################
##
@@ -570,6 +698,9 @@ sub radio_response_analysis {
my $analysis_html;
my $foildata = $problem_analysis->{'_Foils'};
my ($table,$foils,$concepts) = &build_foil_index($problem_analysis);
+ if (! defined($concepts)) {
+ $concepts = [];
+ }
#
my %true_foils;
my $num_true = 0;
@@ -965,7 +1096,6 @@ sub classify_response_data {
if (&$function(\%subm)) {
$students{$subm{'student'}}++;
$submission_data{'_count'}++;
-
if (&submission_is_correct($subm{'award'})) {
$submission_data{'_correct'}++;
}
@@ -1042,6 +1172,9 @@ sub OR_tries_analysis {
my $mintries = 1;
my $maxtries = $ENV{'form.NumPlots'};
my ($table,$Foils,$Concepts) = &build_foil_index($ORdata);
+ if (! defined($Concepts)) {
+ $Concepts = [];
+ }
my %response_data = &OR_analyze_by_tries($r,$PerformanceData,
$mintries,$maxtries);
my $analysis = '';
@@ -1129,7 +1262,7 @@ sub OR_tries_analysis {
#
$concept_graph = &Apache::loncommon::DrawBarGraph
('Correct Concepts','Concept Number','Percent Correct',
- 100,$plotcolors,undef,\@concept_plot_data);
+ 100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});
}
#
# Create Foil Plots
@@ -1167,7 +1300,7 @@ sub OR_tries_analysis {
#
my $correct_graph = &Apache::loncommon::DrawBarGraph
('Correct Statements','Statement','% Answered Correct',
- 100,$plotcolors,\@Labels,$Datasets[0]);
+ 100,$plotcolors,\@Labels,$Datasets[0],{xskip=>1});
#
#
@@ -1179,7 +1312,7 @@ sub OR_tries_analysis {
$response_data{'_correct'}->[$try];
my $incorrect_graph = &Apache::loncommon::DrawBarGraph
('Incorrect Statements','Statement','% Chosen Incorrectly',
- 100,$plotcolors,\@Labels,@Datasets);
+ 100,$plotcolors,\@Labels,@Datasets,{xskip=>1});
$analysis_html.=
' |
'.
''.
@@ -1373,7 +1506,8 @@ sub OR_Foil_Time_Analysis {
100,
$plotcolors,
undef,
- $plotdata[0]);
+ $plotdata[0],
+ {xskip=>1});
for (my $j=0; $j< scalar(@{$plotdata[0]});$j++) {
$plotdata[0]->[$j]=0;
}
@@ -1384,7 +1518,7 @@ sub OR_Foil_Time_Analysis {
100,
$plotcolors,
undef,
- @plotdata);
+ @plotdata,{xskip=>1});
return ($correct_plot,$incorrect_plot);
}
@@ -1415,7 +1549,7 @@ sub OR_Concept_Time_Analysis {
100,
$plotcolors,
undef,
- \@plotdata);
+ \@plotdata,{xskip=>1});
}
sub OR_time_process_data {
@@ -1463,6 +1597,33 @@ sub OR_time_process_data {
##
#########################################################
#########################################################
+sub build_student_data_worksheet {
+ my ($workbook,$format) = @_;
+ my $rows_output = 3;
+ my $cols_output = 0;
+ my $worksheet = $workbook->addworksheet('Student Data');
+ $worksheet->write($rows_output++,0,'Student Data',$format->{'h3'});
+ my @Headers = ('full name','username','domain','section',
+ "student\nnumber",'identifier');
+ $worksheet->write_row($rows_output++,0,\@Headers,$format->{'header'});
+ my @Students = @Apache::lonstatistics::Students;
+ my $studentrows = &Apache::loncoursedata::get_student_data(\@Students);
+ my %ids;
+ foreach my $row (@$studentrows) {
+ my ($mysqlid,$student) = @$row;
+ $ids{$student}=$mysqlid;
+ }
+ foreach my $student (@Students) {
+ my $name_domain = $student->{'username'}.':'.$student->{'domain'};
+ $worksheet->write_row($rows_output++,0,
+ [$student->{'fullname'},
+ $student->{'username'},$student->{'domain'},
+ $student->{'section'},$student->{'id'},
+ $ids{$name_domain}]);
+ }
+ return $worksheet;
+}
+
sub OR_excel_sheet {
my ($r,$resource,$performance_data,$ORdata) = @_;
my $response = '';
@@ -1613,6 +1774,7 @@ sub OR_build_response_data_worksheet {
my ($foilid,$correct) = split('=',$Foilgrades[$j]);
my (undef,$submission) = split('=',$Foilsubs[$j]);
$submission = &Apache::lonnet::unescape($submission);
+ $foilid = &Apache::lonnet::unescape($foilid);
$response_data{$foilid.' submission'}=$submission;
$response_data{$foilid.' award'}=$correct;
}
|