--- loncom/interface/statistics/lonproblemanalysis.pm 2010/01/14 17:20:51 1.138
+++ loncom/interface/statistics/lonproblemanalysis.pm 2020/11/12 00:15:27 1.142.2.5
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.138 2010/01/14 17:20:51 bisitz Exp $
+# $Id: lonproblemanalysis.pm,v 1.142.2.5 2020/11/12 00:15:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -73,6 +73,8 @@ sub BuildProblemAnalysisPage {
#
&Apache::lonstatistics::PrepareClasslist();
#
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis'));
+
$r->print(&CreateInterface());
#
my @Students = @Apache::lonstatistics::Students;
@@ -88,7 +90,7 @@ sub BuildProblemAnalysisPage {
&Apache::lonstathelpers::manage_caches($r,'Statistics','stats_status');
$r->rflush();
#
- my $problem_types = '(option|radiobutton|numerical)';
+ my $problem_types = &analyzable_types();
if (exists($env{'form.problemchoice'}) &&
! exists($env{'form.SelectAnother'})) {
foreach my $button (@SubmitButtons) {
@@ -114,21 +116,9 @@ sub BuildProblemAnalysisPage {
$r->rflush();
#
# Determine which problem we are to analyze
- my $current_problem = &Apache::lonstathelpers::get_target_from_id
- ($env{'form.problemchoice'});
- #
- my ($navmap,$prev,$curr,$next) =
- &Apache::lonstathelpers::get_prev_curr_next($current_problem,
- $problem_types,
- 'response',
- );
- if (exists($env{'form.PrevProblemAnalysis'}) && defined($prev)) {
- $current_problem = $prev;
- } elsif (exists($env{'form.NextProblemAnalysis'}) && defined($next)) {
- $current_problem = $next;
- } else {
- $current_problem = $curr;
- }
+ my ($navmap,$current_problem) = &get_current_problem(); # need to retrieve $navmap
+ # to support $resource->* calls
+ # for src and compTitle (below)
#
# Store the current problem choice and send it out in the form
$env{'form.problemchoice'} =
@@ -142,7 +132,7 @@ sub BuildProblemAnalysisPage {
my $resource = $current_problem->{'resource'};
$r->print('
'
);
@@ -1362,8 +1382,12 @@ sub OR_tries_analysis {
}
}
#
+ my %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Correct Concepts',
+ 'xlabel' => 'Concept Number',
+ 'ylabel' => 'Percent Correct');
$concept_graph = &Apache::loncommon::DrawBarGraph
- ('Correct Concepts','Concept Number','Percent Correct',
+ ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});
}
#
@@ -1401,8 +1425,12 @@ sub OR_tries_analysis {
push(@Labels,'');
}
#
+ my %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Correct Statements',
+ 'xlabel' => 'Statement',
+ 'ylabel' => '% Answered Correct');
my $correct_graph = &Apache::loncommon::DrawBarGraph
- ('Correct Statements','Statement','% Answered Correct',
+ ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
100,$plotcolors,\@Labels,$Datasets[0],{xskip=>1});
#
@@ -1413,8 +1441,12 @@ sub OR_tries_analysis {
}
my $count = $response_data{'_total'}->[$try] -
$response_data{'_correct'}->[$try];
+ %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Incorrect Statements',
+ 'xlabel' => 'Statement',
+ 'ylabel' => '% Chosen Incorrectly');
my $incorrect_graph = &Apache::loncommon::DrawBarGraph
- ('Incorrect Statements','Statement','% Chosen Incorrectly',
+ ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
100,$plotcolors,\@Labels,@Datasets,{xskip=>1});
$analysis_html.=
'
'.
@@ -1476,10 +1508,11 @@ sub OR_time_analysis {
if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }
#
if ($num_concepts < 2) {
- $table = ''.
- &mt('Not enough data for concept analysis. '.
- 'Performing Foil Analysis').
- ''.$table;
+ $table = ''.
+ &mt('Not enough data for concept analysis.'.
+ ' Performing Foil Analysis instead.').
+ ' '.
+ $table;
}
#
my $num_plots = $env{'form.NumPlots'};
@@ -1536,7 +1569,7 @@ sub OR_time_analysis {
$correct |= 0;
##
$table .= ' |
'.
- &mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',
+ &mt('[quant,_1,submission,submissions,No submissions] from [quant,_2,student], [_3] correct, [_4] incorrect',
$data_count,$student_count,$correct,$data_count-$correct).
' |
'.$/;
my $concept_correct_plot = '';
@@ -1608,9 +1641,13 @@ sub OR_Foil_Time_Analysis {
}
#
# Create the plot
- my $correct_plot = &Apache::loncommon::DrawBarGraph('Correct Statements',
- 'Statement Number',
- 'Percent Correct',
+ my %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Correct Statements',
+ 'xlabel' => 'Statement Number',
+ 'ylabel' => 'Percent Correct');
+ my $correct_plot = &Apache::loncommon::DrawBarGraph($lt{'title'},
+ $lt{'xlabel'},
+ $lt{'ylabel'},
100,
$plotcolors,
undef,
@@ -1619,10 +1656,14 @@ sub OR_Foil_Time_Analysis {
for (my $j=0; $j< scalar(@{$plotdata[0]});$j++) {
$plotdata[0]->[$j]=0;
}
+ %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Incorrect Statements',
+ 'xlabel' => 'Statement Number',
+ 'ylabel' => 'Incorrect Option Choice');
my $incorrect_plot =
- &Apache::loncommon::DrawBarGraph('Incorrect Statements',
- 'Statement Number',
- 'Incorrect Option Choice',
+ &Apache::loncommon::DrawBarGraph($lt{'title'},
+ $lt{'xlabel'},
+ $lt{'ylabel'},
100,
$plotcolors,
undef,
@@ -1651,9 +1692,13 @@ sub OR_Concept_Time_Analysis {
}
#
# Create the plot
- return &Apache::loncommon::DrawBarGraph('Correct Concepts',
- 'Concept Number',
- 'Percent Correct',
+ my %lt = &Apache::lonlocal::texthash(
+ 'title' => 'Correct Concepts',
+ 'xlabel' => 'Concept Number',
+ 'ylabel' => 'Percent Correct');
+ return &Apache::loncommon::DrawBarGraph($lt{'title'},
+ $lt{'xlabel'},
+ $lt{'ylabel'},
100,
$plotcolors,
undef,
@@ -1875,7 +1920,6 @@ sub CreateInterface {
##
## Build the menu
my $Str = '';
- $Str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis');
$Str .= '
';
$Str .= &Apache::loncommon::start_data_table();
$Str .= &Apache::loncommon::start_data_table_header_row();
@@ -1913,16 +1957,16 @@ sub CreateInterface {
$showprob_checkbox.' '.&mt('Show problem').
'
';
##
- my $analyze_selector = '';
$Str .= '