--- loncom/interface/lonstatistics.pm	2003/05/13 14:25:37	1.69
+++ loncom/interface/lonstatistics.pm	2003/06/16 15:54:58	1.77
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstatistics.pm,v 1.69 2003/05/13 14:25:37 matthew Exp $
+# $Id: lonstatistics.pm,v 1.77 2003/06/16 15:54:58 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -206,7 +206,6 @@ upon the calling context.
 #######################################################
 #######################################################
 sub PrepareClasslist {
-    my $r = shift;
     my %Sections;
     &clear_classlist_variables();
     #
@@ -231,7 +230,7 @@ sub PrepareClasslist {
     }
     #
     # Deal with instructors with restricted section access
-    if ($ENV{'request.course.sec'} ne '') {
+    if ($ENV{'request.course.sec'} !~ /^\s*$/) {
         @SelectedSections = ($ENV{'request.course.sec'});
     }
     #
@@ -286,7 +285,7 @@ sub PrepareClasslist {
     }
     #
     # Put the consolidated section data in the right place
-    if ($ENV{'request.course.sec'} ne '') {
+    if ($ENV{'request.course.sec'} !~ /^\s*$/) {
         @Sections = ($ENV{'request.course.sec'});
     } else {
         @Sections = sort {$a cmp $b} keys(%Sections);
@@ -301,9 +300,10 @@ sub PrepareClasslist {
     @Students = @TmpStudents;
     # 
     # 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) = 
-            split(':',$ENV{'form.StudentAssessmentStudent'});
+            split(':',$ENV{'form.SelectedStudent'});
         my $i;
         for ($i = 0; $i<=$#Students; $i++) {
             next if (($Students[$i]->{'username'} ne $current_uname) || 
@@ -311,15 +311,17 @@ sub PrepareClasslist {
             $curr_student = $Students[$i];
             last; # If we get here, we have our student.
         }
-        if ($i == 0) {
-            $prev_student = 'none';
-        } else {
-            $prev_student = $Students[$i-1];
-        }
-        if ($i == $#Students) {
-            $next_student = 'none';
-        } else {
-            $next_student = $Students[$i+1];
+        if (defined($curr_student)) {
+            if ($i == 0) {
+                $prev_student = undef;
+            } else {
+                $prev_student = $Students[$i-1];
+            }
+            if ($i == $#Students) {
+                $next_student = undef;
+            } else {
+                $next_student = $Students[$i+1];
+            }
         }
     }
     #
@@ -330,7 +332,7 @@ sub PrepareClasslist {
             @SelectedStudentData = ($ENV{'form.StudentData'});
         }
     } else {
-        @SelectedStudentData = ('fullname');
+        @SelectedStudentData = ('username');
     }
     foreach (@SelectedStudentData) {
         if ($_ eq 'all') {
@@ -342,6 +344,27 @@ sub PrepareClasslist {
     return;
 }
 
+
+#######################################################
+#######################################################
+
+=pod
+
+=item get_students
+
+Returns a list of the selected students
+
+=cut
+
+#######################################################
+#######################################################
+sub get_students {
+    if (! @Students) {
+        &PrepareClasslist()
+    }
+    return @Students;
+}
+
 #######################################################
 #######################################################
 
@@ -357,11 +380,7 @@ selected student.
 #######################################################
 #######################################################
 sub current_student { 
-    if (defined($curr_student)) {
-        return $curr_student;
-    } else {
-        return 'All Students';
-    }
+    return $curr_student;
 }
 
 #######################################################
@@ -379,11 +398,7 @@ in the list of students.  Or something.
 #######################################################
 #######################################################
 sub previous_student { 
-    if (defined($prev_student)) {
-        return $prev_student;
-    } else {
-        return 'No Student Selected';
-    }
+    return $prev_student;
 }
 
 #######################################################
@@ -401,11 +416,7 @@ to be viewed.
 #######################################################
 #######################################################
 sub next_student { 
-    if (defined($next_student)) {
-        return $next_student;
-    } else {
-        return 'No Student Selected';
-    }
+    return $next_student;
 }
 
 #######################################################
@@ -508,10 +519,8 @@ sub PrepareCourseData {
         my $name_length = length($seq->{'title'});
         my $num_parts = $seq->{'num_assess_parts'};
         #
-        # The number of columns needed for the summation text: 
-        #    " 1/5" = 1+3 columns, " 10/99" = 1+5 columns
-        my $sum_length = 1+1+2*(length($num_parts));
-        my $num_col = $num_parts+$sum_length;
+        # Use 3 digits for each the sum and total, which means 7 total...
+        my $num_col = $num_parts+7;
         if ($num_col < $name_length) {
             $num_col = $name_length;
         }
@@ -739,6 +748,7 @@ sub MapSelect {
 Returns html for a selection box allowing the user to choose one (or more) 
 of the sections in the course.  
 
+Uses the package variables @Sections and @SelectedSections
 =over 4
 
 =item $elementname The name of the HTML form element
@@ -747,13 +757,6 @@ of the sections in the course.
 
 =item $numvisible The number of options to be visible
 
-=item $selected Array ref to the names of the already selected sections.
-If undef, $ENV{'form.'.$elementname} is used.  
-If $ENV{'form.'.$elementname} is also empty, none will be selected.
-
-=item $restriction Code reference to subroutine which returns true or 
-false.  The code must expect a reference to a sequence data structure.
-
 =back
 
 =cut
@@ -766,6 +769,11 @@ sub SectionSelect {
         return;
     }
     #
+    # Make sure we have the data we need to continue
+    if (! @Sections) {
+        &PrepareClasslist()
+    }
+    #
     # Build the form element
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
@@ -797,6 +805,8 @@ sub DisplayClasslist {
     my @Fields = ('fullname','username','domain','id','section');
     #
     my $Str='';
+    # "Click" is asinine but it is probably not my place to change the world.
+    $Str .= '<h2>Click on a users name to view their chart</h2>';
     $Str .= '<table border="0"><tr><td bgcolor="#777777">'."\n";
     $Str .= '<table border="0" cellpadding="3"><tr bgcolor="#e6ffff">'."\n";
     foreach my $field (@Fields) {
@@ -820,7 +830,8 @@ sub DisplayClasslist {
             if ($field eq 'fullname') {
                 $Str .= '<a href="/adm/statistics?reportSelected=';
                 $Str .= &Apache::lonnet::escape('student_assessment');
-                $Str .= '&StudentAssessmentStudent=';
+                $Str .= '&sort='.&Apache::lonnet::escape($ENV{'form.sort'});
+                $Str .= '&SelectedStudent=';
                 $Str .= &Apache::lonnet::escape($sname).'">';
                 $Str .= $student->{$field}.'&nbsp';
                 $Str .= '</a>';
@@ -846,32 +857,27 @@ sub CreateMainMenu {
     #
     my $Str = '';
     #
-    $Str .= '<table border="0"><tbody><tr>'."\n";
-    $Str .= '<td></td>'."\n";
-    $Str .= '<td></td>'."\n";
-    $Str .= '<td align="center"><b>Select a Report</b></td>'."\n";
-    $Str .= '<tr>'."\n";
-    #
-    $Str .= '<td align="center">'.
-        '<input type="submit" name="Refresh" value="Update Display" />'.
-            "</td>\n";
-    $Str .= '<td align="center">'.
-        '<input type="submit" name="ClearCache" value="Clear Caches" />'.
-            "</td>\n";
-    #
-    $Str .= '<td align="center">';
-    $Str .= '<select name="reportSelected" >'."\n";
-    foreach (sort(keys(%$reports))) {
-        $Str .= '<option value="'.$_.'"';
-        if($current eq $_) {
-            $Str .= ' selected';
-        }
-        $Str .= '>'.$reports->{$_}.'</option>'."\n";
-    }
-    $Str .= '</select></td>'."\n";
-    #
-    $Str .= '</tr></tbody></table>'."\n";
-    $Str .= '<hr>'."\n";
+    $Str  = '<input type="hidden" name="reportSelected" value="'.$current.'">';
+#    $Str .= '<table border="0"><tbody><tr>'."\n";
+#    $Str .= '<td align="center"><b>Report:</b></td>'."\n";
+#    $Str .= '<td align="center">';
+#    $Str .= '<select name="reportSelected" '.
+#        'onchange="document.Statistics.submit()">'."\n";
+#    foreach (sort(keys(%$reports))) {
+#        $Str .= '<option value="'.$_.'"';
+#        if($current eq $_) {
+#            $Str .= ' selected';
+#        }
+#        $Str .= '>'.$reports->{$_}.'</option>'."\n";
+#    }
+#    $Str .= '</select></td>'."\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;
 }
@@ -921,7 +927,7 @@ sub handler {
     # Extract form elements from query string
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['sort','reportSelected',
-                                             'StudentAssessmentStudent']);
+                                             'SelectedStudent']);
     if (! exists($ENV{'form.reportSelected'})) {
         $ENV{'form.reportSelected'} = 'student_assessment';
     }
@@ -952,7 +958,7 @@ END
     }
     #
     # Set up the statistics and chart environment
-    &PrepareClasslist($r);
+    &PrepareClasslist();
     &PrepareCourseData($r);
     #
     # Begin form output
@@ -963,8 +969,8 @@ END
     my %reports = ('classlist'          => 'Class list',
                    'problem_statistics' => 'Problem Statistics',
                    'student_assessment' => 'Problem Status Chart',
-                   'percentage'         => 'Correct-problems Plot',
-                   'option_response'    => 'Option Response Analysis',
+#                   'percentage'         => 'Correct-problems Plot',
+#                   'option_response'    => 'Option Response Analysis',
 #                   'activitylog'        => 'Activity Log',
                    );
     $r->print(&CreateMainMenu($ENV{'form.status'},
@@ -982,8 +988,6 @@ END
         &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);
     } elsif($GoToPage eq 'DoDiffGraph' || $GoToPage eq 'PercentWrongGraph') {
 #        &Apache::lonproblemstatistics::BuildGraphicChart($r,$c);
-    } elsif($GoToPage eq 'classlist') {
-        &DisplayClasslist($r);
     } elsif($GoToPage eq 'Correct-problems Plot') {
 #	&Apache::lonpercentage::BuildPercentageGraph($r,$c);
     }