--- loncom/interface/statistics/lonproblemanalysis.pm	2008/10/30 17:45:25	1.132
+++ loncom/interface/statistics/lonproblemanalysis.pm	2013/10/01 14:52:47	1.144
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonproblemanalysis.pm,v 1.132 2008/10/30 17:45:25 bisitz Exp $
+# $Id: lonproblemanalysis.pm,v 1.144 2013/10/01 14:52:47 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -31,6 +31,7 @@ use Apache::lonnet;
 use Apache::loncommon();
 use Apache::lonhtmlcommon();
 use Apache::loncoursedata();
+use Apache::lonquickgrades();
 use Apache::lonstatistics;
 use Apache::lonlocal;
 use Apache::lonstathelpers();
@@ -73,6 +74,9 @@ sub BuildProblemAnalysisPage {
     #
     &Apache::lonstatistics::PrepareClasslist();
     #
+    $r->print(&Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis'));
+    &Apache::lonquickgrades::startGradeScreen($r,'statistics');
+
     $r->print(&CreateInterface());
     #
     my @Students = @Apache::lonstatistics::Students;
@@ -142,7 +146,7 @@ sub BuildProblemAnalysisPage {
             my $resource = $current_problem->{'resource'};
             $r->print('<h1>'.$resource->compTitle.'</h1>');
             $r->print('<h3>'.$resource->src.'</h3>');
-            $r->print('<h4>'.&Apache::lonstatistics::section_and_enrollment_description().'</h4>');
+            $r->print('<p>'.&Apache::lonstatistics::section_and_enrollment_description().'</p>');
             if ($env{'form.show_prob'} eq 'true') {
                 $r->print('<hr />'
                          .&Apache::lonstathelpers::render_resource($resource)
@@ -396,10 +400,13 @@ sub numerical_plot_percent {
         if ($max <$_) { $max = $_; last; }
     }
     #
-    my $title = &mt('Percent Difference');
+    my %lt = &Apache::lonlocal::texthash(
+                 'title'  => 'Percent Difference',
+                 'xlabel' => 'Percent Difference from Correct',
+                 'ylabel' => 'Percent of Answers');
     my @labels = (1..scalar(@bins)-1);
     my $graph = &Apache::loncommon::DrawBarGraph
-        ($title,'Percent Difference from Correct','Percent of Answers',
+        ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
          $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,
          {xskip=>1});
     #
@@ -469,10 +476,13 @@ sub numerical_plot_differences {
         if ($max <$_) { $max = $_; last; }
     }
     #
-    my $title = &mt('Difference between submission and correct');
+    my %lt = &Apache::lonlocal::texthash(
+                 'title'  => 'Difference between submission and correct',
+                 'xlabel' => 'Difference from Correct',
+                 'ylabel' => 'Percent of Answers');
     my @labels = (1..scalar(@bins)-1);
     my $graph = &Apache::loncommon::DrawBarGraph
-        ($title,'Difference from Correct','Percent of Answers',
+        ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
          $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,
          {xskip=>1});
     #
@@ -626,10 +636,7 @@ sub numerical_determine_answers {
     my ($r,$resource,$partid,$respid,$students)=@_;
     my $c = $r->connection();
     #
-    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
-        ($r,'Student Answer Compilation Status',
-         'Student Answer Compilation Progress', scalar(@$students),
-         'inline',undef,'Statistics','stats_status');
+    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$students));
     #
     # Read in the cache (if it exists) before we start timing things.
     &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});
@@ -663,7 +670,7 @@ sub numerical_determine_answers {
         }
         $answers{$correct->{$sname.':'.$sdom}{'answer'}}++;
         &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
-                                                 &mt('last student'));
+                                                     'last student');
     }
     &Apache::lonstathelpers::write_analysis_cache();
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
@@ -857,8 +864,8 @@ sub radio_response_analysis {
             $no_data_text,@extra_data);
         if ($env{'form.AnalyzeOver'} eq 'tries') {
             $restriction_function = sub {($_[0]->{'tries'} == $plot_num?1:0)};
-            $correct_foil_title = 'Attempt '.$plot_num;
-            $incorrect_foil_title = 'Attempt '.$plot_num;
+            $correct_foil_title = &mt('Attempt [_1]',$plot_num);
+            $incorrect_foil_title = &mt('Attempt [_1]',$plot_num);
             $pre_graph_text = 
                 'Attempt [_1], [_2] submissions, [_3] correct, [_4] incorrect';
             $post_graph_text = '';
@@ -916,8 +923,9 @@ sub radio_response_analysis {
         # Concept Plot
         my $concept_plot = '';
         if (scalar(@$concepts) > 1) {
+            my $title = &mt('Correct Concepts');
             $concept_plot = &RR_concept_plot($concepts,$foil_choice_data,
-                                             'Correct Concepts');
+                                             $title);
         }
         # % Choosing plot
         my $choice_plot = &RR_create_percent_selected_plot
@@ -1032,10 +1040,11 @@ sub RR_concept_plot {
     for (my $i=0;$i<=$#correct;$i++) { 
         $correct[$i] = sprintf('%0f',$correct[$i]/$total*100);
     }
-    my $xlabel = 'concept';
+    my $xlabel = &mt('concept');
+    my $ylabel = &mt('Percent Choosing');
     my $plot=  &Apache::loncommon::DrawBarGraph($title,
                                                 $xlabel,
-                                                'Percent Choosing',
+                                                $ylabel,
                                                 100,
                                                 ['#33ff00','#ff3300'],
                                                 undef,
@@ -1101,10 +1110,11 @@ sub RR_create_percent_selected_plot {
         @labels = (1 .. scalar(@correct));
     }
     #
-    my $xlabel = 'foil chosen';
+    my $xlabel = &mt('foil chosen');
+    my $ylabel = &mt('Percent Choosing');
     my $plot=  &Apache::loncommon::DrawBarGraph($title,
                                                 $xlabel,
-                                                'Percent Choosing',
+                                                $ylabel,
                                                 100,
                                                 ['#33ff00','#ff3300'],
                                                 \@labels,
@@ -1165,8 +1175,10 @@ sub RR_create_stacked_selection_plot {
         push(@empty_row,0);
     }
     #
+    my $xlabel = &mt('Correct Foil');
+    my $ylabel = &mt('foils chosen Incorrectly');
     my $graph = &Apache::loncommon::DrawBarGraph
-        ($title,'Correct Foil','foils chosen Incorrectly',
+        ($title,$xlabel,$ylabel,
          100,$plotcolors,\@labels,\@empty_row,@dataset);
     return ($graph,\%count_per_foil);
 }
@@ -1332,7 +1344,7 @@ sub OR_tries_analysis {
             if ($try > 1) {
                 $analysis_html.= '<tr><td colspan="4">'
                                 .'<div class="LC_info">'
-                                .&mt('None of the selected students attempted the problem more than [_1] times.'
+                                .&mt('None of the selected students attempted the problem more than [quant,_1,time].'
                                     ,$try-1)
                                 .'</div>'
                                 .'</td></tr>';
@@ -1362,8 +1374,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 +1417,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 +1433,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.= 
             '<tr><td colspan="4" align="center">'.
@@ -1476,10 +1500,11 @@ sub OR_time_analysis {
     if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }
     #
     if ($num_concepts < 2) {
-        $table = '<h3>'.
-            &mt('Not enough data for concept analysis.  '.
-                'Performing Foil Analysis').
-                '</h3>'.$table;
+        $table = '<p class="LC_info">'.
+                 &mt('Not enough data for concept analysis.'.
+                     ' Performing Foil Analysis instead.').
+                 '</p>'.
+                 $table;
     }
     #
     my $num_plots = $env{'form.NumPlots'};
@@ -1536,7 +1561,7 @@ sub OR_time_analysis {
         $correct |= 0;
         ##
         $table .= '<tr><td colspan="4" align="center"><font size="+1">'.
-            &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).
                 '</font></td></tr>'.$/;
         my $concept_correct_plot = '';
@@ -1558,7 +1583,7 @@ sub OR_time_analysis {
         $table .= '<tr><td colspan="4" align="center">'.
             &mt('Start time: [_1]',$startdateform).'<br />'.
             &mt('End time: [_1]',$enddateform).'</td></tr>'.$/;
-        $table.= '<tr><td colspan="4">&nbsp</td></tr>'.$/;
+        $table.= '<tr><td colspan="4">&nbsp;</td></tr>'.$/;
     }
     $table .= '</table>';
     #
@@ -1608,9 +1633,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 +1648,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 +1684,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 +1912,6 @@ sub CreateInterface {
     ##
     ## Build the menu
     my $Str = '';
-    $Str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis');
     $Str .= '<p>';
     $Str .= &Apache::loncommon::start_data_table();
     $Str .= &Apache::loncommon::start_data_table_header_row();
@@ -1901,17 +1937,17 @@ sub CreateInterface {
     #
     ##
     ##
-    $Str .= '<td align="right" valign="top">';
+    $Str .= '<td valign="top">';
     ##
     my $showprob_checkbox = 
-        '<input type="checkbox" name="show_prob" value="true" ';
+        '<input type="checkbox" name="show_prob" value="true"';
     if ($env{'form.show_prob'} eq 'true') {
-        $showprob_checkbox .= 'checked="checked" ';
+        $showprob_checkbox .= ' checked="checked"';
     }
     $showprob_checkbox.= ' />';
-    $Str.= '<nobr><label>'.
-        &mt('Show problem [_1]',$showprob_checkbox).
-        '</label></nobr><br />';
+    $Str.= '<span class="LC_nobreak"><label>'.
+        $showprob_checkbox.' '.&mt('Show problem').
+        '</label></span><br />';
     ##
     my $analyze_selector = '<select name="AnalyzeOver" >';
     $analyze_selector .= '<option value="tries" ';
@@ -1925,11 +1961,11 @@ sub CreateInterface {
     $analyze_selector .= ' selected ' if ($env{'form.AnalyzeOver'} eq 'time');
     $analyze_selector .= '>'.&mt('Time').'</option>';
     $analyze_selector .= '</select>';
-    $Str .= '<nobr><label>'.
+    $Str .= '<span class="LC_nobreak"><label>'.
         &mt('Analyze Over [_1] [_2]',
             $analyze_selector,
             &Apache::loncommon::help_open_topic('Analysis_Analyze_Over')).
-            '</label></nobr><br />'.$/;
+            '</label></span><br />'.$/;
     ##
     my $numplots_selector = '<select name="NumPlots">';
     if (! exists($env{'form.NumPlots'}) 
@@ -1942,9 +1978,9 @@ sub CreateInterface {
         if ($env{'form.NumPlots'} == $i) { $numplots_selector.=' selected="selected" '; }
         $numplots_selector .= '>'.$i.'</option>';
     }
-    $numplots_selector .= '</select></nobr><br />';
-    $Str .= '<nobr><label>'.&mt('Number of Plots [_1]',$numplots_selector).
-        '</label></nobr>';
+    $numplots_selector .= '</select>';
+    $Str .= '<span class="LC_nobreak"><label>'.&mt('Number of Plots [_1]',$numplots_selector).
+        '</label></span><br />';
     ##
     $Str .= '</td>';
     ##