Diff for /loncom/interface/lonstatistics.pm between versions 1.75 and 1.84

version 1.75, 2003/06/10 18:22:17 version 1.84, 2003/10/02 17:08:53
Line 83  use Apache::lonproblemstatistics(); Line 83  use Apache::lonproblemstatistics();
 use Apache::lonstudentassessment();  use Apache::lonstudentassessment();
 use Apache::lonpercentage;  use Apache::lonpercentage;
 use Apache::lonmysql;  use Apache::lonmysql;
   use Apache::lonlocal;
 use Time::HiRes;  use Time::HiRes;
   
 #######################################################  #######################################################
Line 797  sub SectionSelect { Line 798  sub SectionSelect {
     return $Str;      return $Str;
 }  }
   
   #######################################################
   #######################################################
   
   =pod
   
   =item &CreateAndParseOutputSelector()
   
   Construct a selection list of options for output and parse output selections.
   
   =cut
   
   #######################################################
   #######################################################
   sub OutputDescriptions {
       my (@OutputOptions) = @_;
       my $Str = '';
       $Str .= "<h2>Output Modes</h2>\n";
       $Str .= "<dl>\n";
       foreach my $outputmode (@OutputOptions) {
    $Str .="    <dt>".$outputmode->{'name'}."</dt>\n";
    $Str .="        <dd>".$outputmode->{'description'}."</dd>\n";
       }
       $Str .= "</dl>\n";
       return $Str;
   }
   
   sub CreateAndParseOutputSelector {
       my ($elementname,$default,@OutputOptions) = @_;
       my $output_mode;
       my $show;
       my $Str = '';
       #
       # Format for output options is 'mode, restrictions';
       my $selected = $default;
       if (exists($ENV{'form.'.$elementname})) {
           if (ref($ENV{'form.'.$elementname} eq 'ARRAY')) {
               $selected = $ENV{'form.'.$elementname}->[0];
           } else {
               $selected = $ENV{'form.'.$elementname};
           }
       }
       #
       # Set package variables describing output mode
       $output_mode = 'html';
       $show        = 'all';
       foreach my $option (@OutputOptions) {
           next if ($option->{'value'} ne $selected);
           $output_mode = $option->{'mode'};
           $show        = $option->{'show'};
       }
       #
       # Build the form element
       $Str = qq/<select size="5" name="$elementname">/;
       foreach my $option (@OutputOptions) {
           if (exists($option->{'special'}) && 
               $option->{'special'} =~ /do not show/) {
               next;
           }
           $Str .= "\n".'    <option value="'.$option->{'value'}.'"';
           $Str .= " selected " if ($option->{'value'} eq $selected);
           $Str .= ">".&mt($option->{'name'})."<\/option>";
       }
       $Str .= "\n</select>";
       return ($Str,$output_mode,$show);
   }
   
   ###############################################
   ###############################################
   
   =pod 
   
   =item &Gather_Student_Data()
   
   Ensures all student data is up to date.
   
   =cut
   
   ###############################################
   ###############################################
   sub Gather_Student_Data {
       my ($r) = @_;
       my $c = $r->connection();
       #
       &Apache::loncoursedata::clear_internal_caches();
       #
       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();
   }
   
   ###############################################
   ###############################################
   
   =pod 
   
   =item &Gather_Full_Student_Data()
   
   Ensures all student data is up to date.
   
   =cut
   
   ###############################################
   ###############################################
   sub Gather_Full_Student_Data {
       my ($r) = @_;
       my $c = $r->connection();
       #
       &Apache::loncoursedata::clear_internal_caches();
       #
       my @Students = @Apache::lonstatistics::Students;
       #
       # Open the progress window
       my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
           ($r,&mt('Student Data Compilation Status'),
            &mt('Student Data Compilation Progress'), scalar(@Students));
       #
       while (my $student = shift @Students) {
           return if ($c->aborted());
           my ($status,undef) = &Apache::loncoursedata::ensure_current_full_data
               ($student->{'username'},$student->{'domain'},
                $ENV{'request.course.id'});
           &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
                                                    &mt('last student'));
       }
       &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
       $r->rflush();
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
 sub DisplayClasslist {  sub DisplayClasslist {
Line 805  sub DisplayClasslist { Line 950  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 825  sub DisplayClasslist { Line 1010  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 .= '&sort='.&Apache::lonnet::escape($ENV{'form.sort'});                  $Str .= '&sort='.&Apache::lonnet::escape($ENV{'form.sort'});
Line 855  sub CreateMainMenu { Line 1040  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 align="center"><b>Select a Report</b></td>'."\n";  #    $Str .= '<td align="center"><b>Report:</b></td>'."\n";
     $Str .= '<td></td>'."\n";  #    $Str .= '<td align="center">';
     $Str .= '<td></td>'."\n";  #    $Str .= '<select name="reportSelected" '.
     $Str .= '<tr>'."\n";  #        'onchange="document.Statistics.submit()">'."\n";
     #  #    foreach (sort(keys(%$reports))) {
     $Str .= '<td align="center">'.  #        $Str .= '<option value="'.$_.'"';
         '<input type="submit" name="Refresh" value="Update Display" />'.  #        if($current eq $_) {
             "</td>\n";  #            $Str .= ' selected';
     #  #        }
     $Str .= '<td align="center">';  #        $Str .= '>'.$reports->{$_}.'</option>'."\n";
     $Str .= '<select name="reportSelected" >'."\n";  #    }
     foreach (sort(keys(%$reports))) {  #    $Str .= '</select></td>'."\n";
         $Str .= '<option value="'.$_.'"';  #    #
         if($current eq $_) {  #    $Str .= '<td>'.('&nbsp;'x30).'</td>';
             $Str .= ' selected';  #    $Str .= '<td align="center">'.
         }  #        '<input type="submit" name="ClearCache" value="Clear Caches" />'.
         $Str .= '>'.$reports->{$_}.'</option>'."\n";  #            "</td>\n";
     }  #    $Str .= '</tr></tbody></table>'."\n";
     $Str .= '</select></td>'."\n";  #    $Str .= '<hr>'."\n";
     #  
     $Str .= '<td>'.('&nbsp;'x30).'</td>';  
     $Str .= '<td align="center">'.  
         '<input type="submit" name="ClearCache" value="Clear Caches" />'.  
             "</td>\n";  
     $Str .= '</tr></tbody></table>'."\n";  
     $Str .= '<hr>'."\n";  
     #      #
     return $Str;      return $Str;
 }  }
Line 987  END Line 1165  END
 #        &Apache::lonproblemstatistics::Activity();  #        &Apache::lonproblemstatistics::Activity();
     } elsif($GoToPage eq 'problem_statistics') {      } elsif($GoToPage eq 'problem_statistics') {
         &Apache::lonproblemstatistics::BuildProblemStatisticsPage($r,$c);          &Apache::lonproblemstatistics::BuildProblemStatisticsPage($r,$c);
     } elsif($GoToPage eq 'option_response') {      } elsif($GoToPage eq 'problem_analysis') {
 #        &Apache::lonproblemanalysis::BuildProblemAnalysisPage($r,$c);          &Apache::lonproblemanalysis::BuildProblemAnalysisPage($r,$c);
     } elsif($GoToPage eq 'student_assessment') {      } elsif($GoToPage eq 'student_assessment') {
         &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.75  
changed lines
  Added in v.1.84


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