Diff for /loncom/interface/lonstatistics.pm between versions 1.71 and 1.79

version 1.71, 2003/05/27 14:51:24 version 1.79, 2003/08/27 21:33:33
Line 300  sub PrepareClasslist { Line 300  sub PrepareClasslist {
     @Students = @TmpStudents;      @Students = @TmpStudents;
     #       # 
     # Now deal with that current student thing....      # Now deal with that current student thing....
     if (exists($ENV{'form.StudentAssessmentStudent'})) {      $curr_student = undef;
       if (exists($ENV{'form.SelectedStudent'})) {
         my ($current_uname,$current_dom) =           my ($current_uname,$current_dom) = 
             split(':',$ENV{'form.StudentAssessmentStudent'});              split(':',$ENV{'form.SelectedStudent'});
         my $i;          my $i;
         for ($i = 0; $i<=$#Students; $i++) {          for ($i = 0; $i<=$#Students; $i++) {
             next if (($Students[$i]->{'username'} ne $current_uname) ||               next if (($Students[$i]->{'username'} ne $current_uname) || 
Line 310  sub PrepareClasslist { Line 311  sub PrepareClasslist {
             $curr_student = $Students[$i];              $curr_student = $Students[$i];
             last; # If we get here, we have our student.              last; # If we get here, we have our student.
         }          }
         if ($i == 0) {          if (defined($curr_student)) {
             $prev_student = 'none';              if ($i == 0) {
         } else {                  $prev_student = undef;
             $prev_student = $Students[$i-1];              } else {
         }                  $prev_student = $Students[$i-1];
         if ($i == $#Students) {              }
             $next_student = 'none';              if ($i == $#Students) {
         } else {                  $next_student = undef;
             $next_student = $Students[$i+1];              } else {
                   $next_student = $Students[$i+1];
               }
         }          }
     }      }
     #      #
Line 329  sub PrepareClasslist { Line 332  sub PrepareClasslist {
             @SelectedStudentData = ($ENV{'form.StudentData'});              @SelectedStudentData = ($ENV{'form.StudentData'});
         }          }
     } else {      } else {
         @SelectedStudentData = ('fullname');          @SelectedStudentData = ('username');
     }      }
     foreach (@SelectedStudentData) {      foreach (@SelectedStudentData) {
         if ($_ eq 'all') {          if ($_ eq 'all') {
Line 377  selected student. Line 380  selected student.
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub current_student {   sub current_student { 
     if (defined($curr_student)) {      return $curr_student;
         return $curr_student;  
     } else {  
         return 'All Students';  
     }  
 }  }
   
 #######################################################  #######################################################
Line 399  in the list of students.  Or something. Line 398  in the list of students.  Or something.
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub previous_student {   sub previous_student { 
     if (defined($prev_student)) {      return $prev_student;
         return $prev_student;  
     } else {  
         return 'No Student Selected';  
     }  
 }  }
   
 #######################################################  #######################################################
Line 421  to be viewed. Line 416  to be viewed.
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub next_student {   sub next_student { 
     if (defined($next_student)) {      return $next_student;
         return $next_student;  
     } else {  
         return 'No Student Selected';  
     }  
 }  }
   
 #######################################################  #######################################################
Line 528  sub PrepareCourseData { Line 519  sub PrepareCourseData {
         my $name_length = length($seq->{'title'});          my $name_length = length($seq->{'title'});
         my $num_parts = $seq->{'num_assess_parts'};          my $num_parts = $seq->{'num_assess_parts'};
         #          #
         # The number of columns needed for the summation text:           # Use 3 digits for each the sum and total, which means 7 total...
         #    " 1/5" = 1+3 columns, " 10/99" = 1+5 columns          my $num_col = $num_parts+7;
         my $sum_length = 1+1+2*(length($num_parts));  
         my $num_col = $num_parts+$sum_length;  
         if ($num_col < $name_length) {          if ($num_col < $name_length) {
             $num_col = $name_length;              $num_col = $name_length;
         }          }
Line 808  sub SectionSelect { Line 797  sub SectionSelect {
     return $Str;      return $Str;
 }  }
   
   ###############################################
   ###############################################
   
   =pod 
   
   =item &Gather_Student_Data()
   
   Ensures all student data is up to date.
   
   =cut
   
   ###############################################
   ###############################################
   sub Gather_Student_Data {
       my ($r) = @_;
       my $c = $r->connection();
       #
       my @Sequences = &Apache::lonstatistics::Sequences_with_Assess();
       #
       my @Students = @Apache::lonstatistics::Students;
       #
       # Open the progress window
       my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
           ($r,'Statistics Compilation Status',
            'Statistics Compilation Progress', scalar(@Students));
       #
       while (my $student = shift @Students) {
           return if ($c->aborted());
           my ($status,undef) = &Apache::loncoursedata::ensure_current_data
               ($student->{'username'},$student->{'domain'},
                $ENV{'request.course.id'});
           &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
                                                    'last student');
       }
       &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
       $r->rflush();
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
 sub DisplayClasslist {  sub DisplayClasslist {
Line 816  sub DisplayClasslist { Line 843  sub DisplayClasslist {
     my @Fields = ('fullname','username','domain','id','section');      my @Fields = ('fullname','username','domain','id','section');
     #      #
     my $Str='';      my $Str='';
       if (! @Students) {
           if ($SelectedSections[0] eq 'all') { 
               if (lc($ENV{'form.Status'}) eq 'any') {
                   $Str .= '<h2>There are no students in the course.</h2>';
               } elsif (lc($ENV{'form.Status'}) eq 'active') {
                   $Str .= '<h2>There are no currently enrolled students in '.
                       'the course.</h2>';
               } elsif (lc($ENV{'form.Status'}) eq 'expired') {
                   $Str .= '<h2>There are no previously enrolled '.
                       'students in the course.</h2>';
               }
           } else { 
               my $sections;
               if (@SelectedSections == 1) {
                   $sections = 'section '.$SelectedSections[0];
               } elsif (@SelectedSections > 2) {
                   $sections = 'sections '.join(', ',@SelectedSections);
                   $sections =~ s/, ([^,])*$/, and $1/;
               } else {
                   $sections = 'sections '.join(' and ',@SelectedSections);
               }
               if (lc($ENV{'form.Status'}) eq 'any') {
                   $Str .= '<h2>There are no students in '.$sections.'.</h2>';
               } elsif (lc($ENV{'form.Status'}) eq 'active') {
                   $Str .= '<h2>There are no currently enrolled students '.
                       'in '.$sections.'.</h2>';
               } elsif (lc($ENV{'form.Status'}) eq 'expired') {
                   $Str .= '<h2>There are no previously enrolled students '.
                       'in '.$sections.'.</h2>';
               }
           }
           $Str.= '<a href="/adm/statistics?reportSelected=student_assessment">'.
               'Return to the chart.</a>';
           $r->print($Str);
           $r->rflush();
           return;
       }
   
       # "Click" is asinine but it is probably not my place to change the world.
       $Str .= '<h2>Click on a students name or username to view their chart</h2>';
     $Str .= '<table border="0"><tr><td bgcolor="#777777">'."\n";      $Str .= '<table border="0"><tr><td bgcolor="#777777">'."\n";
     $Str .= '<table border="0" cellpadding="3"><tr bgcolor="#e6ffff">'."\n";      $Str .= '<table border="0" cellpadding="3"><tr bgcolor="#e6ffff">'."\n";
     foreach my $field (@Fields) {      foreach my $field (@Fields) {
Line 836  sub DisplayClasslist { Line 903  sub DisplayClasslist {
         #          #
         foreach my $field (@Fields) {          foreach my $field (@Fields) {
             $Str .= '<td>';              $Str .= '<td>';
             if ($field eq 'fullname') {              if ($field eq 'fullname' || $field eq 'username') {
                 $Str .= '<a href="/adm/statistics?reportSelected=';                  $Str .= '<a href="/adm/statistics?reportSelected=';
                 $Str .= &Apache::lonnet::escape('student_assessment');                  $Str .= &Apache::lonnet::escape('student_assessment');
                 $Str .= '&StudentAssessmentStudent=';                  $Str .= '&sort='.&Apache::lonnet::escape($ENV{'form.sort'});
                   $Str .= '&SelectedStudent=';
                 $Str .= &Apache::lonnet::escape($sname).'">';                  $Str .= &Apache::lonnet::escape($sname).'">';
                 $Str .= $student->{$field}.'&nbsp';                  $Str .= $student->{$field}.'&nbsp';
                 $Str .= '</a>';                  $Str .= '</a>';
Line 865  sub CreateMainMenu { Line 933  sub CreateMainMenu {
     #      #
     my $Str = '';      my $Str = '';
     #      #
     $Str .= '<table border="0"><tbody><tr>'."\n";      $Str  = '<input type="hidden" name="reportSelected" value="'.$current.'">';
     $Str .= '<td></td>'."\n";  #    $Str .= '<table border="0"><tbody><tr>'."\n";
     $Str .= '<td></td>'."\n";  #    $Str .= '<td align="center"><b>Report:</b></td>'."\n";
     $Str .= '<td align="center"><b>Select a Report</b></td>'."\n";  #    $Str .= '<td align="center">';
     $Str .= '<tr>'."\n";  #    $Str .= '<select name="reportSelected" '.
     #  #        'onchange="document.Statistics.submit()">'."\n";
     $Str .= '<td align="center">'.  #    foreach (sort(keys(%$reports))) {
         '<input type="submit" name="Refresh" value="Update Display" />'.  #        $Str .= '<option value="'.$_.'"';
             "</td>\n";  #        if($current eq $_) {
     $Str .= '<td align="center">'.  #            $Str .= ' selected';
         '<input type="submit" name="ClearCache" value="Clear Caches" />'.  #        }
             "</td>\n";  #        $Str .= '>'.$reports->{$_}.'</option>'."\n";
     #  #    }
     $Str .= '<td align="center">';  #    $Str .= '</select></td>'."\n";
     $Str .= '<select name="reportSelected" >'."\n";  #    #
     foreach (sort(keys(%$reports))) {  #    $Str .= '<td>'.('&nbsp;'x30).'</td>';
         $Str .= '<option value="'.$_.'"';  #    $Str .= '<td align="center">'.
         if($current eq $_) {  #        '<input type="submit" name="ClearCache" value="Clear Caches" />'.
             $Str .= ' selected';  #            "</td>\n";
         }  #    $Str .= '</tr></tbody></table>'."\n";
         $Str .= '>'.$reports->{$_}.'</option>'."\n";  #    $Str .= '<hr>'."\n";
     }  
     $Str .= '</select></td>'."\n";  
     #  
     $Str .= '</tr></tbody></table>'."\n";  
     $Str .= '<hr>'."\n";  
     #      #
     return $Str;      return $Str;
 }  }
Line 940  sub handler { Line 1003  sub handler {
     # Extract form elements from query string      # Extract form elements from query string
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['sort','reportSelected',                                              ['sort','reportSelected',
                                              'StudentAssessmentStudent']);                                               'SelectedStudent']);
     if (! exists($ENV{'form.reportSelected'})) {      if (! exists($ENV{'form.reportSelected'})) {
         $ENV{'form.reportSelected'} = 'student_assessment';          $ENV{'form.reportSelected'} = 'student_assessment';
     }      }
Line 982  END Line 1045  END
     my %reports = ('classlist'          => 'Class list',      my %reports = ('classlist'          => 'Class list',
                    'problem_statistics' => 'Problem Statistics',                     'problem_statistics' => 'Problem Statistics',
                    'student_assessment' => 'Problem Status Chart',                     'student_assessment' => 'Problem Status Chart',
                    'percentage'         => 'Correct-problems Plot',  #                   'percentage'         => 'Correct-problems Plot',
                    'option_response'    => 'Option Response Analysis',  #                   'option_response'    => 'Option Response Analysis',
 #                   'activitylog'        => 'Activity Log',  #                   'activitylog'        => 'Activity Log',
                    );                     );
     $r->print(&CreateMainMenu($ENV{'form.status'},      $r->print(&CreateMainMenu($ENV{'form.status'},
Line 1001  END Line 1064  END
         &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);          &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);
     } elsif($GoToPage eq 'DoDiffGraph' || $GoToPage eq 'PercentWrongGraph') {      } elsif($GoToPage eq 'DoDiffGraph' || $GoToPage eq 'PercentWrongGraph') {
 #        &Apache::lonproblemstatistics::BuildGraphicChart($r,$c);  #        &Apache::lonproblemstatistics::BuildGraphicChart($r,$c);
     } elsif($GoToPage eq 'classlist') {  
         &DisplayClasslist($r);  
     } elsif($GoToPage eq 'Correct-problems Plot') {      } elsif($GoToPage eq 'Correct-problems Plot') {
 # &Apache::lonpercentage::BuildPercentageGraph($r,$c);  # &Apache::lonpercentage::BuildPercentageGraph($r,$c);
     }      }

Removed from v.1.71  
changed lines
  Added in v.1.79


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