Diff for /loncom/interface/lonstatistics.pm between versions 1.31 and 1.32

version 1.31, 2002/07/25 19:30:24 version 1.32, 2002/07/25 21:23:51
Line 94  sub ProcessFormData{ Line 94  sub ProcessFormData{
     } else {      } else {
         $cache->{'StudentAssessmentMove'} = 'selected';          $cache->{'StudentAssessmentMove'} = 'selected';
     }      }
     &CheckFormElement($cache, 'StudentAssessmentMap', 'StudentAssessmentMap',   
                       'All Maps');  
     &CheckFormElement($cache, 'StudentAssessmentStudent',       &CheckFormElement($cache, 'StudentAssessmentStudent', 
                       'StudentAssessmentStudent', 'All Students');                        'StudentAssessmentStudent', 'All Students');
     $cache->{'StudentAssessmentStudent'} =       $cache->{'StudentAssessmentStudent'} = 
Line 195  sub SortStudents { Line 193  sub SortStudents {
     return \@order;      return \@order;
 }  }
   
   =pod
   
   =item &SpaceColumns()
   
   Determines the width of all the columns in the chart.  It is based on
   the max of the data for that column and its header.
   
   =over 4
   
   Input: $students, $studentInformation, $headings, $ChartDB
   
   $students: An array pointer to a list of students (username:domain)
   
   $studentInformatin: The type of data for the student information.  It is
   used as part of the key in $CacheData.
   
   $headings: The name of the student information columns.
   
   $ChartDB: The name of the cache database which is opened for read/write.
   
   Output: None - All data stored in cache.
   
   =back
   
   =cut
   
   sub SpaceColumns {
       my ($students,$studentInformation,$headings,$cache)=@_;
   
       # Initialize Lengths
       for(my $index=0; $index<(scalar @$headings); $index++) {
           my @titleLength=split(//,$headings->[$index]);
           $cache->{$studentInformation->[$index].':columnWidth'}=
               scalar @titleLength;
       }
   
       foreach my $name (@$students) {
           foreach (@$studentInformation) {
               my @dataLength=split(//,$cache->{$name.':'.$_});
               my $length=(scalar @dataLength);
               if($length > $cache->{$_.':columnWidth'}) {
                   $cache->{$_.':columnWidth'}=$length;
               }
           }
       }
   
       return;
   }
   
 sub PrepareData {  sub PrepareData {
     my ($c, $cacheDB)=@_;      my ($c, $cacheDB, $studentInformation, $headings)=@_;
   
     # Test for access to the cache data      # Test for access to the cache data
     my $courseID=$ENV{'request.course.id'};      my $courseID=$ENV{'request.course.id'};
Line 255  sub PrepareData { Line 302  sub PrepareData {
   
     &ProcessFormData(\%cache);      &ProcessFormData(\%cache);
     my $students = &SortStudents(\%cache);      my $students = &SortStudents(\%cache);
       &SpaceColumns($students, $studentInformation, $headings, \%cache);
       $cache{'updateTime:columnWidth'}=24;
   
     if($cache{'download'} ne 'false') {      if($cache{'download'} ne 'false') {
         my $who = $cache{'download'};          my $who = $cache{'download'};
Line 291  sub PrepareData { Line 340  sub PrepareData {
         return 'aborted';           return 'aborted'; 
     }      }
   
     if($c->aborted()) {  
         untie(%cache);  
         return 'aborted';   
     }  
   
     untie(%cache);      untie(%cache);
   
     return ('OK', $students);      return ('OK', $students);
Line 359  sub setbgcolor { Line 403  sub setbgcolor {
 }  }
   
 sub BuildClasslist {  sub BuildClasslist {
     my ($cacheDB,$students,$studentInformation,$headings,$spacePadding)=@_;      my ($cacheDB,$students,$studentInformation,$headings)=@_;
   
     my %cache;      my %cache;
     unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {      unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
Line 372  sub BuildClasslist { Line 416  sub BuildClasslist {
   
     my $displayString = '<td align="left"><a href="/adm/statistics?';      my $displayString = '<td align="left"><a href="/adm/statistics?';
     $displayString .= 'sort=LINKDATA">DISPLAYDATA&nbsp</a></td>'."\n";      $displayString .= 'sort=LINKDATA">DISPLAYDATA&nbsp</a></td>'."\n";
     $Str .= &Apache::lonhtmlcommon::CreateStudentInformationHeadings(\%cache,      $Str .= &Apache::lonhtmlcommon::CreateHeadings(\%cache, $studentInformation,
                                                            $studentInformation,                                                     $headings, $displayString);
                                                            $headings,  
                                                            $displayString);  
     $Str .= '<td align="left">';  
     $Str .= '<a href="/adm/statistics?sort=lastDownloadTime">';  
     $Str .= 'Last Updated&nbsp</a></td>'."\n";  
     $Str .= '</tr>'."\n";      $Str .= '</tr>'."\n";
     my $alternate=0;      my $alternate=0;
     foreach (@$students) {      foreach (@$students) {
         my ($username, $domain) = split(':', $_);          my ($username, $domain) = split(':', $_);
         if($alternate) {          if($alternate) {
             $Str .= '<tr bgcolor="#ffffe6"><td>';              $Str .= '<tr bgcolor="#ffffe6">';
         } else {          } else {
             $Str .= '<tr bgcolor="#ffffc6"><td>';              $Str .= '<tr bgcolor="#ffffc6">';
         }          }
         $alternate = ($alternate + 1) % 2;          $alternate = ($alternate + 1) % 2;
         foreach my $data (@$studentInformation) {          foreach my $data (@$studentInformation) {
               $Str .= '<td>';
             if($data eq 'fullname') {              if($data eq 'fullname') {
                 $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 .= '&StudentAssessmentStudent=';
                 $Str .= &Apache::lonnet::escape($cache{$_.':'.$data}).'">';                  $Str .= &Apache::lonnet::escape($cache{$_.':'.$data}).'">';
                 #$Str .= 'Student Assessment'.'">';                  $Str .= $cache{$_.':'.$data}.'&nbsp';
             }  
   
             $Str .= $cache{$_.':'.$data}.'&nbsp';  
   
             if($data eq 'fullname') {  
                 $Str .= '</a>';                  $Str .= '</a>';
               } elsif($data eq 'updateTime') {
                   $Str .= '<a href="/adm/statistics?reportSelected=';
                   $Str .= &Apache::lonnet::escape('Class list');
                   $Str .= '&download='.$_.'">';
                   $Str .= $cache{$_.':'.$data}.'&nbsp';
                   $Str .= '&nbsp</a>';
               } else {
                   $Str .= $cache{$_.':'.$data}.'&nbsp';
             }              }
   
             $Str .= '</td><td>';              $Str .= '</td>'."\n";
         }          }
   
         $Str .= '<a href="/adm/statistics?download='.$_.'">';  
         my $downloadTime = $cache{$_.':lastDownloadTime'};  
         if($downloadTime ne 'Not downloaded') {  
             $downloadTime = localtime($downloadTime);  
         }  
         $Str .= $downloadTime;  
   
         $Str .= '&nbsp</a></td></tr>'."\n";  
     }      }
   
       $Str .= '</tr>'."\n";
     $Str .= '</table></td></tr></table>'."\n";      $Str .= '</table></td></tr></table>'."\n";
   
     untie(%cache);      untie(%cache);
Line 428  sub BuildStatistics { Line 463  sub BuildStatistics {
     my ($r)=@_;      my ($r)=@_;
   
     my $c = $r->connection;      my $c = $r->connection;
     my @studentInformation=('fullname','section','id','domain','username');      my @studentInformation=('fullname','section','id','domain','username',
     my @headings=('Full Name', 'Section', 'PID', 'Domain', 'User Name');                              'updateTime');
     my $spacePadding = '   ';      my @headings=('Full Name', 'Section', 'PID', 'Domain', 'User Name',
                     'Last Updated');
       my $spacing = '   ';
     my %reports = ('classlist'          => 'Class list',      my %reports = ('classlist'          => 'Class list',
                    'problem_statistics' => 'Problem Statistics',                     'problem_statistics' => 'Problem Statistics',
                    'student_assessment' => 'Student Assessment',                     'student_assessment' => 'Student Assessment',
Line 442  sub BuildStatistics { Line 479  sub BuildStatistics {
                   "_$ENV{'user.domain'}_$courseID\_statistics.db";                    "_$ENV{'user.domain'}_$courseID\_statistics.db";
   
     my %color=&setbgcolor(0);      my %color=&setbgcolor(0);
     my ($returnValue, $students) = &PrepareData($c, $cacheDB);      my ($returnValue, $students) = &PrepareData($c, $cacheDB, 
                                                   \@studentInformation, 
                                                   \@headings);
     if($returnValue ne 'OK') {      if($returnValue ne 'OK') {
         $r->print('<html><body>'.$returnValue."\n".'</body></html>');          $r->print('<html><body>'.$returnValue."\n".'</body></html>');
         return OK;          return OK;
Line 487  sub BuildStatistics { Line 526  sub BuildStatistics {
     } elsif($GoToPage eq 'Student Assessment') {      } elsif($GoToPage eq 'Student Assessment') {
         $r->print(          $r->print(
             &Apache::lonstudentassessment::BuildStudentAssessmentPage($cacheDB,              &Apache::lonstudentassessment::BuildStudentAssessmentPage($cacheDB,
                                                                      $students,                                                              $students,
                                                                      $courseID,                                                              $courseID,
                                                                      $c));                                                              'Statistics',
                                                               \@headings,
                                                               $spacing,
                                                               \@studentInformation,
                                                               $r, $c));
     } elsif($GoToPage eq 'Analyze') {      } elsif($GoToPage eq 'Analyze') {
         $r->print(&Apache::lonproblemanalysis::BuildAnalyzePage($cacheDB,           $r->print(&Apache::lonproblemanalysis::BuildAnalyzePage($cacheDB, 
                                                                 $students,                                                                   $students, 
Line 500  sub BuildStatistics { Line 543  sub BuildStatistics {
         &Apache::lonproblemstatistics::BuildWrongGraph($r);          &Apache::lonproblemstatistics::BuildWrongGraph($r);
     } elsif($GoToPage eq 'Class list') {      } elsif($GoToPage eq 'Class list') {
         $r->print(&BuildClasslist($cacheDB, $students, \@studentInformation,          $r->print(&BuildClasslist($cacheDB, $students, \@studentInformation,
                                   \@headings, $spacePadding));                                    \@headings));
     }      }
   
     $r->print('</form>'."\n");      $r->print('</form>'."\n");

Removed from v.1.31  
changed lines
  Added in v.1.32


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