--- loncom/interface/lonquickgrades.pm	2002/11/22 20:07:11	1.5
+++ loncom/interface/lonquickgrades.pm	2002/12/02 10:14:57	1.8
@@ -68,6 +68,12 @@ sub real_handler {
                         $ENV{"request.course.fn"}.".db",
                         $ENV{"request.course.fn"}."_parms.db", 1, 0);
 
+    if (!defined($navmap)) {
+        my $requrl = $r->uri;
+        $ENV{'user.error.msg'} = "$requrl:bre:0:0:Navamp initialization failed.";
+        return HTTP_NOT_ACCEPTABLE;
+    }
+
     # Keep this hash in sync with %statusIconMap in lonnavmaps; they
     # should match color/icon
     my $res = $navmap->firstResource(); # temp resource to access constants
@@ -82,6 +88,12 @@ sub real_handler {
     $r->print(&Apache::loncommon::bodytag('Quick Score Display','',
                                           ''));
 
+    $r->print(<<HEADER);
+<p>This screen shows how many problems (or problem parts) you have completed, and
+how many you have not yet done. You can also look at <a href="/adm/studentcalc">a detailed
+score sheet</a>.</p>
+HEADER
+
     $navmap->init();
 
     # End navmap using boilerplate
@@ -107,7 +119,7 @@ sub real_handler {
         if ($curRes == $iterator->BEGIN_MAP()) {$depth++;}
         if ($curRes == $iterator->END_MAP()) { $depth--; }
 
-        if (ref($curRes) && $curRes->is_problem())
+        if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout)
         {
             # Get number of correct, incorrect parts
             my $parts = $curRes->parts();
@@ -151,11 +163,14 @@ sub real_handler {
     $iterator->next(); # ignore first BEGIN_MAP
     my $curRes = $iterator->next();
 
-    my @start = (255, 255, 0);
+    my @start = (255, 255, 192);
     my @end   = (0, 192, 0);
 
     my $indentString = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 
+    my $unaccountedTotal = $totalParts;
+    my $unaccountedCorrect = $totalRight;
+
     # Second pass: Print the maps.
     $r->print('<table cellspacing="3" border="2"><tr><td align="center"><b>Sequence</b></td>');
     $r->print('<td align="center">Correct / Total</td><tr>' . "\n\n");
@@ -176,25 +191,38 @@ sub real_handler {
             my $correct = $curRes->{DATA}->{CHILD_CORRECT};
             my $total = $curRes->{DATA}->{CHILD_PARTS};
 
-            my $ratio;
-            $ratio = $total==0 ? 1 : $correct / $total;
-            my $color = mixColors(\@start, \@end, $ratio);
-            $r->print("<tr><td bgcolor='$color'>");
-            
-            for (my $i = 1; $i < $depth; $i++) { $r->print($indentString); }
+            $unaccountedTotal -= $total;
+            $unaccountedCorrect -= $correct;
 
-            $r->print("<a href='$link'>$title</a></td>");
-            $r->print("<td>$correct / $total</td></tr>\n");
+            if ($total > 0) {
+                my $ratio;
+                $ratio = $correct / $total;
+                my $color = mixColors(\@start, \@end, $ratio);
+                $r->print("<tr><td bgcolor='$color'>");
+                
+                for (my $i = 1; $i < $depth; $i++) { $r->print($indentString); }
+                
+                $r->print("<a href='$link'>$title</a></td>");
+                $r->print("<td align='center'>$correct / $total</td></tr>\n");
+            }
         }
 
         $curRes = $iterator->next();
     }
 
+    # If there were any problems at the top level, print an extra "catchall"
+    if ($unaccountedTotal > 0) {
+        my $ratio = $unaccountedCorrect / $unaccountedTotal;
+        my $color = mixColors(\@start, \@end, $ratio);
+        $r->print("<tr><td bgcolor='$color'>");
+        $r->print("Problems Not Contained In Sequences</td><td align='center'>");
+        $r->print("$unaccountedCorrect / $unaccountedTotal</td></tr>");
+    }
 
-    $r->print("\n</tr>\n\n");
+    my $maxHelpLink = Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct");
 
     $r->print("<tr><td colspan='2' align='right'>Total Parts Correct: <b>$totalRight</b><br>");
-    $r->print("Number Of Parts Possibly Correct: <b>$totalPossible</b><br>");
+    $r->print("Max Possible To Date $maxHelpLink: <b>$totalPossible</b><br>");
     $r->print("Total Parts In Course: <b>$totalParts</b></td></tr>\n\n");