Diff for /loncom/interface/statistics/lonproblemanalysis.pm between versions 1.131 and 1.133

version 1.131, 2008/10/23 09:07:51 version 1.133, 2008/12/11 14:55:27
Line 78  sub BuildProblemAnalysisPage { Line 78  sub BuildProblemAnalysisPage {
     my @Students = @Apache::lonstatistics::Students;      my @Students = @Apache::lonstatistics::Students;
     #      #
     if (@Students < 1 && exists($env{'form.firstrun'})) {      if (@Students < 1 && exists($env{'form.firstrun'})) {
         $r->print('<h2>There are no students in the sections/groups selected</h2>');          $r->print('<div class="LC_warning">'
                    .&mt('There are no students in the sections/groups selected.')
                    .'</div>'
           );
     }      }
     #      #
     my @CacheButtonHTML =       my @CacheButtonHTML = 
Line 141  sub BuildProblemAnalysisPage { Line 144  sub BuildProblemAnalysisPage {
             $r->print('<h3>'.$resource->src.'</h3>');              $r->print('<h3>'.$resource->src.'</h3>');
             $r->print('<h4>'.&Apache::lonstatistics::section_and_enrollment_description().'</h4>');              $r->print('<h4>'.&Apache::lonstatistics::section_and_enrollment_description().'</h4>');
             if ($env{'form.show_prob'} eq 'true') {              if ($env{'form.show_prob'} eq 'true') {
                 $r->print(&Apache::lonstathelpers::render_resource($resource));                  $r->print('<hr />'
                            .&Apache::lonstathelpers::render_resource($resource)
                            .'<hr />'
                   );
             }              }
             $r->rflush();              $r->rflush();
     if (@Students) {      if (@Students) {
Line 162  sub BuildProblemAnalysisPage { Line 168  sub BuildProblemAnalysisPage {
     &numerical_response_analysis($r,$current_problem,      &numerical_response_analysis($r,$current_problem,
  $problem_data,\@Students);   $problem_data,\@Students);
  } else {   } else {
     $r->print('<h2>Analysis of '.$current_problem->{'resptype'}.' is not supported</h2>');      $r->print('<div class="LC_warning">'
                                .&mt('Analysis of [_1] is not supported.'
                                    ,$current_problem->{'resptype'})
                                .'</div>'
                       );
  }   }
     }      }
         }          }
Line 214  sub numerical_response_analysis { Line 224  sub numerical_response_analysis {
     }      }
     #      #
     if (ref($response_data) ne 'ARRAY') {      if (ref($response_data) ne 'ARRAY') {
         $r->print('<h2>'.          $r->print('<div class="LC_warning">'
                   &mt('There is no submission data for this resource').                   .&mt('There is no submission data for this resource.')
                   '</h2>');                   .'</div>'
           );
         return;          return;
     }      }
     my $analysis_html = '<table>';      my $analysis_html = '<table>';
Line 233  sub numerical_response_analysis { Line 244  sub numerical_response_analysis {
             $stats_message =               $stats_message = 
                 '[_1] submissions, [_2] correct, [_3] incorrect';                  '[_1] submissions, [_2] correct, [_3] incorrect';
             $post_message = '';              $post_message = '';
             $no_data_message = 'No data exists for attempt [_1]';              $no_data_message = 'No data exists for attempt [_1].';
         } else {          } else {
             my $starttime = &Apache::lonhtmlcommon::get_date_from_form              my $starttime = &Apache::lonhtmlcommon::get_date_from_form
                 ('startdate_'.$plot_num);                  ('startdate_'.$plot_num);
Line 281  sub numerical_response_analysis { Line 292  sub numerical_response_analysis {
                                           $restriction_function);                                            $restriction_function);
         if ($stats->{'submission_count'} == 0) {          if ($stats->{'submission_count'} == 0) {
             $analysis_html.=               $analysis_html.= 
                 '<tr><td colspan="2"><font size="+1"><b>'.                  '<tr><td colspan="2"><div class="LC_warning">'.
                 &mt($no_data_message,$plot_num,@extra_data).                  &mt($no_data_message,$plot_num,@extra_data).
                 '</b></font></td></tr>';                  '</div></td></tr>';
         } else {          } else {
             $analysis_html.=               $analysis_html.= 
                 '<tr><td colspan="2" align="center"><font size="+1"><b>'.                  '<tr><td colspan="2" align="center"><font size="+1"><b>'.
Line 830  sub radio_response_analysis { Line 841  sub radio_response_analysis {
     }      }
     #      #
     if (! defined($response_data) || ref($response_data) ne 'ARRAY' ) {      if (! defined($response_data) || ref($response_data) ne 'ARRAY' ) {
         $analysis_html = '<h2>'.          $analysis_html = '<div class="LC_warning">'
             &mt('There is no submission data for this resource').                          .&mt('There is no submission data for this resource.')
             '</h2>';                          .'</div>';
         $r->print($analysis_html);          $r->print($analysis_html);
         return;          return;
     }      }
Line 863  sub radio_response_analysis { Line 874  sub radio_response_analysis {
                  &get_time_from_row($response_data->[-1]),                   &get_time_from_row($response_data->[-1]),
                  $plot_num);                   $plot_num);
             $pre_graph_text =               $pre_graph_text = 
                 'Data from [_6] to [_7]<br /> [_2] submissions from [_5] students, [_3] correct, [_4] incorrect';                  'Data from [_6] to [_7]'
                  .'<br />'
                  .'[_2] submissions from [_5] students, [_3] correct, [_4] incorrect';
             $extra_data[0] = &Apache::lonlocal::locallocaltime($starttime);              $extra_data[0] = &Apache::lonlocal::locallocaltime($starttime);
             $extra_data[1] = &Apache::lonlocal::locallocaltime($endtime);              $extra_data[1] = &Apache::lonlocal::locallocaltime($endtime);
             #              #
Line 951  sub radio_response_analysis { Line 964  sub radio_response_analysis {
             }              }
         } elsif ($no_data_text ne '') {          } elsif ($no_data_text ne '') {
             $analysis_html.='<tr><td colspan="4" align="center">'.              $analysis_html.='<tr><td colspan="4" align="center">'.
                   '<div class="LC_warning">'.
                 &mt($no_data_text,                  &mt($no_data_text,
                     $plot_num,$foil_choice_data->{'_count'},                      $plot_num,$foil_choice_data->{'_count'},
                     $correct,                                          $correct,                    
                     $foil_choice_data->{'_count'}-$correct,                      $foil_choice_data->{'_count'}-$correct,
                     @extra_data);                      @extra_data).
                   '</div>';
             if (defined($post_graph_text)) {              if (defined($post_graph_text)) {
                 $analysis_html.='<br />'.$post_graph_text;                  $analysis_html.='<br />'.$post_graph_text;
             }              }
Line 1217  sub OptionResponseAnalysis { Line 1232  sub OptionResponseAnalysis {
          $resource->symb,$respid);           $resource->symb,$respid);
     if (! defined($PerformanceData) ||       if (! defined($PerformanceData) || 
         ref($PerformanceData) ne 'ARRAY' ) {          ref($PerformanceData) ne 'ARRAY' ) {
         $r->print('<h2>'.          $r->print('<div class="LC_warning">'
                   &mt('There is no student data for this problem.').                   .&mt('There is no student data for this problem.')
                   '</h2>');                   .'</div>'
           );
     }  else {      }  else {
         $r->rflush();          $r->rflush();
         if ($env{'form.AnalyzeOver'} eq 'tries') {          if ($env{'form.AnalyzeOver'} eq 'tries') {
Line 1234  sub OptionResponseAnalysis { Line 1250  sub OptionResponseAnalysis {
             $r->print($analysis_html);              $r->print($analysis_html);
             $r->rflush();              $r->rflush();
         } else {          } else {
             $r->print('<h2>'.              $r->print('div class="LC_warning"'
                       &mt('The analysis you have selected is '.                       .&mt('The analysis you have selected is not supported at this time.')
                           'not supported at this time').                       .'</div>'
                       '</h2>');              );
         }          }
     }      }
 }  }
Line 1314  sub OR_tries_analysis { Line 1330  sub OR_tries_analysis {
         if (! defined($response_data{'_total'}->[$try]) ||          if (! defined($response_data{'_total'}->[$try]) ||
             $response_data{'_total'}->[$try] == 0) {               $response_data{'_total'}->[$try] == 0) { 
             if ($try > 1) {              if ($try > 1) {
                 $analysis_html.= '<tr><td align="center" colspan="4"><b>'.                  $analysis_html.= '<tr><td colspan="4">'
                     &mt('None of the selected students attempted the problem more than [_1] times.',$try-1).                                  .'<div class="LC_info">'
                     '</b></td></tr>';                                  .&mt('None of the selected students attempted the problem more than [_1] times.'
                                       ,$try-1)
                                   .'</div>'
                                   .'</td></tr>';
             } else {              } else {
                 $analysis_html.= '<tr><td colspan="4" align="center"><b>'.                  $analysis_html.= '<tr><td colspan="4">'
                     &mt('None of the selected students have attempted the problem').'</b></td></tr>';                                  .'<div class="LC_info">'
                                   .&mt('None of the selected students have attempted the problem.')
                                   .'</div>'
                                   .'</td></tr>';
             }              }
             last;              last;
         }          }
Line 1547  sub OR_Foil_Time_Analysis { Line 1569  sub OR_Foil_Time_Analysis {
     my ($processed_time_data,$correct,$data_count,$student_count,      my ($processed_time_data,$correct,$data_count,$student_count,
         $ORdata,$Foils,$Concepts) = @_;          $ORdata,$Foils,$Concepts) = @_;
     if ($data_count <= 0) {      if ($data_count <= 0) {
         return ('<h2>'.&mt('There is no data to plot').'</h2>','');          return ('<div class="LC_warning">'
                  .&mt('There is no data to plot.')
                  .'</div>'
                  ,''
           );
     }      }
     my $analysis_html;      my $analysis_html;
     my @plotdata;      my @plotdata;
Line 1723  sub build_foil_index { Line 1749  sub build_foil_index {
     }      }
     #      #
     # Build up the table of row labels.      # Build up the table of row labels.
     my $table = '<table border="1" >'."\n";      my $table = &Apache::loncommon::start_data_table();
     if (@Concepts > 1) {      if (@Concepts > 1) {
         $table .= '<tr>'.          $table .= &Apache::loncommon::start_data_table_header_row().
             '<th>'.&mt('Concept Number').'</th>'.              '<th>'.&mt('Concept Number').'</th>'.
             '<th>'.&mt('Concept').'</th>'.              '<th>'.&mt('Concept').'</th>'.
             '<th>'.&mt('Foil Number').'</th>'.              '<th>'.&mt('Foil Number').'</th>'.
             '<th>'.&mt('Foil Name').'</th>'.              '<th>'.&mt('Foil Name').'</th>'.
             '<th>'.&mt('Foil Text').'</th>'.              '<th>'.&mt('Foil Text').'</th>'.
             '<th>'.&mt('Correct Value').'</th>'.              '<th>'.&mt('Correct Value').'</th>'.
             "</tr>\n";              &Apache::loncommon::end_data_table_header_row();
     } else {      } else {
         $table .= '<tr>'.          $table .= &Apache::loncommon::start_data_table_header_row().
             '<th>'.&mt('Foil Number').'</th>'.              '<th>'.&mt('Foil Number').'</th>'.
             '<th>'.&mt('Foil Name').'</th>'.              '<th>'.&mt('Foil Name').'</th>'.
             '<th>'.&mt('Foil Text').'</th>'.              '<th>'.&mt('Foil Text').'</th>'.
             '<th>'.&mt('Correct Value').'</th>'.              '<th>'.&mt('Correct Value').'</th>'.
             "</tr>\n";              &Apache::loncommon::end_data_table_header_row();
     }              }        
     my $conceptindex = 1;      my $conceptindex = 1;
     my $foilindex = 1;      my $foilindex = 1;
Line 1747  sub build_foil_index { Line 1773  sub build_foil_index {
         my @FoilsInConcept = @{$concept->{'foils'}};          my @FoilsInConcept = @{$concept->{'foils'}};
         my $firstfoil = shift(@FoilsInConcept);          my $firstfoil = shift(@FoilsInConcept);
         if (@Concepts > 1) {          if (@Concepts > 1) {
             $table .= '<tr>'.              $table .= &Apache::loncommon::start_data_table_row().
                 '<td>'.$conceptindex.'</td>'.                  '<td>'.$conceptindex.'</td>'.
                 '<td>'.&HTML::Entities::encode($concept->{'name'},'<>&"').'</td>'.                  '<td>'.&HTML::Entities::encode($concept->{'name'},'<>&"').'</td>'.
                 '<td>'.$foilindex++.'</td>'.                  '<td>'.$foilindex++.'</td>'.
                 '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').'</td>'.                  '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').'</td>'.
                 '<td>'.$Foildata{$firstfoil}->{'text'}.'</td>'.                  '<td>'.$Foildata{$firstfoil}->{'text'}.'</td>'.
                 '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').'</td>'.                  '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').'</td>'.
                 "</tr>\n";                  &Apache::loncommon::end_data_table_row();
         } else {          } else {
             $table .= '<tr>'.              $table .= &Apache::loncommon::start_data_table_row().
                 '<td>'.$foilindex++.'</td>'.                  '<td>'.$foilindex++.'</td>'.
                 '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').'</td>'.                  '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').'</td>'.
                 '<td>'.$Foildata{$firstfoil}->{'text'}.'</td>'.                  '<td>'.$Foildata{$firstfoil}->{'text'}.'</td>'.
                 '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').'</td>'.                  '<td>'.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').'</td>'.
                 "</tr>\n";                  &Apache::loncommon::end_data_table_row();
         }          }
         foreach my $foilid (@FoilsInConcept) {          foreach my $foilid (@FoilsInConcept) {
             if (@Concepts > 1) {              if (@Concepts > 1) {
                 $table .= '<tr>'.                  $table .= &Apache::loncommon::start_data_table_row().
                     '<td></td>'.                      '<td></td>'.
                     '<td></td>'.                      '<td></td>'.
                     '<td>'.$foilindex.'</td>'.                      '<td>'.$foilindex.'</td>'.
                     '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').'</td>'.                      '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').'</td>'.
                     '<td>'.$Foildata{$foilid}->{'text'}.'</td>'.                      '<td>'.$Foildata{$foilid}->{'text'}.'</td>'.
                     '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').'</td>'.                      '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').'</td>'.
                     "</tr>\n";                      &Apache::loncommon::end_data_table_row();
             } else {              } else {
                 $table .= '<tr>'.                  $table .= &Apache::loncommon::start_data_table_row().
                     '<td>'.$foilindex.'</td>'.                      '<td>'.$foilindex.'</td>'.
                     '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').'</td>'.                      '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').'</td>'.
                     '<td>'.$Foildata{$foilid}->{'text'}.'</td>'.                      '<td>'.$Foildata{$foilid}->{'text'}.'</td>'.
                     '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').'</td>'.                      '<td>'.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').'</td>'.
                     "</tr>\n";                      &Apache::loncommon::end_data_table_row();
             }                              }                
         } continue {          } continue {
             $foilindex++;              $foilindex++;
Line 1787  sub build_foil_index { Line 1813  sub build_foil_index {
     } continue {      } continue {
         $conceptindex++;          $conceptindex++;
     }      }
     $table .= "</table>\n";      $table .= &Apache::loncommon::end_data_table();
     #      #
     # Build option index with color stuff      # Build option index with color stuff
     return ($table,\@Foils,\@Concepts);      return ($table,\@Foils,\@Concepts);
Line 1850  sub CreateInterface { Line 1876  sub CreateInterface {
     ## Build the menu      ## Build the menu
     my $Str = '';      my $Str = '';
     $Str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis');      $Str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis');
     $Str .= '<table cellspacing="5">'."\n";      $Str .= '<p>';
     $Str .= '<tr>';      $Str .= &Apache::loncommon::start_data_table();
     $Str .= '<td align="center"><b>'.&mt('Sections').'</b></td>';      $Str .= &Apache::loncommon::start_data_table_header_row();
     $Str .= '<td align="center"><b>'.&mt('Groups').'</b></td>';      $Str .= '<th>'.&mt('Sections').'</th>';
     $Str .= '<td align="center"><b>'.&mt('Access Status').'</b></td>';      $Str .= '<th>'.&mt('Groups').'</th>';
     $Str .= '<td align="center">&nbsp;</td>';      $Str .= '<th>'.&mt('Access Status').'</th>';
     $Str .= '</tr>'."\n";      $Str .= '<th>'.&mt('Options').'</th>';
       $Str .= &Apache::loncommon::end_data_table_header_row();
     ##      ##
     ##       ## 
     $Str .= '<tr><td align="center">'."\n";      $Str .= &Apache::loncommon::start_data_table_row();
       $Str .= '<td align="center">'."\n";
     $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);      $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);
     $Str .= '</td>';      $Str .= '</td>';
     #      #
Line 1873  sub CreateInterface { Line 1901  sub CreateInterface {
     #      #
     ##      ##
     ##      ##
     $Str .= '<td>';      $Str .= '<td align="right" valign="top">';
     ##      ##
     my $showprob_checkbox =       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') {      if ($env{'form.show_prob'} eq 'true') {
         $showprob_checkbox .= 'checked ';          $showprob_checkbox .= 'checked="checked" ';
     }      }
     $showprob_checkbox.= ' />';      $showprob_checkbox.= ' />';
     $Str.= '<nobr><label>'.      $Str.= '<span class="LC_nobreak"><label>'.
         &mt('Show problem [_1]',$showprob_checkbox).          &mt('Show problem [_1]',$showprob_checkbox).
         '</label></nobr><br />';          '</label></span><br />';
     ##      ##
     my $analyze_selector = '<select name="AnalyzeOver" >';      my $analyze_selector = '<select name="AnalyzeOver" >';
     $analyze_selector .= '<option value="tries" ';      $analyze_selector .= '<option value="tries" ';
     if (! exists($env{'form.AnalyzeOver'}) ||       if (! exists($env{'form.AnalyzeOver'}) || 
         $env{'form.AnalyzeOver'} eq 'tries'){          $env{'form.AnalyzeOver'} eq 'tries'){
         # Default to tries          # Default to tries
         $analyze_selector .= ' selected ';          $analyze_selector .= ' selected="selected" ';
     }      }
     $analyze_selector .= '>'.&mt('Tries').'</option>';      $analyze_selector .= '>'.&mt('Tries').'</option>';
     $analyze_selector .= '<option value="time" ';      $analyze_selector .= '<option value="time" ';
     $analyze_selector .= ' selected ' if ($env{'form.AnalyzeOver'} eq 'time');      $analyze_selector .= ' selected ' if ($env{'form.AnalyzeOver'} eq 'time');
     $analyze_selector .= '>'.&mt('Time').'</option>';      $analyze_selector .= '>'.&mt('Time').'</option>';
     $analyze_selector .= '</select>';      $analyze_selector .= '</select>';
     $Str .= '<nobr><label>'.      $Str .= '<span class="LC_nobreak"><label>'.
         &mt('Analyze Over [_1] [_2]',          &mt('Analyze Over [_1] [_2]',
             $analyze_selector,              $analyze_selector,
             &Apache::loncommon::help_open_topic('Analysis_Analyze_Over')).              &Apache::loncommon::help_open_topic('Analysis_Analyze_Over')).
             '</label></nobr><br />'.$/;              '</label></span><br />'.$/;
     ##      ##
     my $numplots_selector = '<select name="NumPlots">';      my $numplots_selector = '<select name="NumPlots">';
     if (! exists($env{'form.NumPlots'})       if (! exists($env{'form.NumPlots'}) 
Line 1911  sub CreateInterface { Line 1939  sub CreateInterface {
     }      }
     foreach my $i (1,2,3,4,5,6,7,8,10,15,20) {      foreach my $i (1,2,3,4,5,6,7,8,10,15,20) {
         $numplots_selector .= '<option value="'.$i.'" ';          $numplots_selector .= '<option value="'.$i.'" ';
         if ($env{'form.NumPlots'} == $i) { $numplots_selector.=' selected '; }          if ($env{'form.NumPlots'} == $i) { $numplots_selector.=' selected="selected" '; }
         $numplots_selector .= '>'.$i.'</option>';          $numplots_selector .= '>'.$i.'</option>';
     }      }
     $numplots_selector .= '</select></nobr><br />';      $numplots_selector .= '</select></span><br />';
     $Str .= '<nobr><label>'.&mt('Number of Plots [_1]',$numplots_selector).      $Str .= '<span class="LC_nobreak"><label>'.&mt('Number of Plots [_1]',$numplots_selector).
         '</label></nobr>';          '</label></span>';
     ##      ##
     $Str .= '<span class="LC_nobreak"><label>'  
            .&mt('Status: [_1]',  
                     '<input type="text" name="stats_status"'  
                    .' size="60" value="" readonly="readonly" />')  
            .'</label></span>';  
     $Str .= '</td>';      $Str .= '</td>';
     ##      ##
     ##      ##
     $Str .= '</tr>'."\n";      $Str .= &Apache::loncommon::end_data_table_row();
     $Str .= '</table>'."\n";      $Str .= &Apache::loncommon::end_data_table();
       $Str .= '<p class="LC_nobreak"><label>'
              .&mt('Status: [_1]',
                       '<input type="text" name="stats_status"'
                      .' size="60" value="" readonly="readonly" />')
              .'</label></p>';
       $Str .= '</p>';
     return $Str;      return $Str;
 }  }
   

Removed from v.1.131  
changed lines
  Added in v.1.133


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>