Diff for /loncom/interface/statistics/lonstudentassessment.pm between versions 1.129 and 1.133

version 1.129, 2006/01/29 19:39:03 version 1.133, 2006/03/05 19:43:12
Line 56  use Apache::loncommon(); Line 56  use Apache::loncommon();
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonnet; # for logging porpoises  use Apache::lonnet; # for logging porpoises
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::grades;
 use Time::HiRes;  use Time::HiRes;
 use Spreadsheet::WriteExcel;  use Spreadsheet::WriteExcel;
 use Spreadsheet::WriteExcel::Utility();  use Spreadsheet::WriteExcel::Utility();
Line 718  sub html_initialize { Line 719  sub html_initialize {
     $Str .= "<pre>";      $Str .= "<pre>";
     $r->print($Str);      $r->print($Str);
     $r->rflush();      $r->rflush();
   
       $r->print(<<JS);
   <script>
   // get the left offset of a given widget as an absolute position
   function getLeftOffset (element) {
       return collect(element, "offsetLeft");
   }
   
   // get the top offset of a given widget as an absolute position
   function getTopOffset (element) {
       return collect(element, "offsetTop");
   }
   
   function collect(element, att) {
       var val = 0;
       while(element) {
           val += element[att];
           element = element.offsetParent;
       }
       return val;
   }
   
   var currentDiv;
   var oldBorder;
   var currentElement;
   function popup_score(element, score) {
       popdown_score();
       var left = getLeftOffset(element);
       var top = getTopOffset(element);
       var div = document.createElement("div");
       div.style.border = "1px solid #8888FF";
       div.style.backgroundColor = "#CCCCFF";
       div.appendChild(document.createTextNode(score));
       div.style.position = "absolute";
       div.style.top = (top - 25) + "px";
       div.style.left = (left - 10) + "px";
       currentDiv = div;
       document.body.insertBefore(div, document.body.childNodes[0]);
       oldBorder = element.style.border;
       element.style.border = "1px solid yellow";
       currentElement = element;
   }
   
   function popdown_score() {
       if (currentDiv) {
           document.body.removeChild(currentDiv);
       }
       if (currentElement) {
           currentElement.style.border = oldBorder;
       }
       currentDiv = undefined;
   }
   </script>
   JS
   
     #      #
     # Let the user know what we are doing      # Let the user know what we are doing
     my $studentcount = scalar(@Apache::lonstatistics::Students);       my $studentcount = scalar(@Apache::lonstatistics::Students); 
Line 1747  sub csv_finish { Line 1803  sub csv_finish {
   
 }  }
   
   # This function will return an HTML string including a star, with
   # a mouseover popup showing the "real" value. An optional second
   # argument lets you show something other than a star.
   sub show_star {
       my $popup = shift;
       my $symbol = shift || '*';
       # Escape the popup for JS.
       $popup =~ s/([^-a-zA-Z0-9:;,._ ()|!\/?=&*])/'\\' . sprintf("%lo", ord($1))/ge;
       
       return "<span onmouseover='popup_score(this, \"$popup\");return false;' onmouseout='popdown_score();return false;' style='border: 1px solid #339933; margin: -1px;'>$symbol</span>";
   }
   
 #######################################################  #######################################################
 #######################################################  #######################################################
   
Line 1817  sub student_tries_on_sequence { Line 1885  sub student_tries_on_sequence {
                     $sum++;                      $sum++;
                 } elsif ($tries > 0) {                  } elsif ($tries > 0) {
                     if ($tries > 9) {                      if ($tries > 9) {
                         $symbol = '*';                          $symbol = show_star($tries);
                     } else {                      } else {
                         $symbol = $tries;                          $symbol = $tries;
                     }                      }
Line 1942  sub student_performance_on_sequence { Line 2010  sub student_performance_on_sequence {
                 $hasdata = 1;                  $hasdata = 1;
             }              }
             #              #
             $partscore = $weight*$awarded;              $partscore = &Apache::grades::compute_points($weight,$awarded);
             if (! defined($awarded)) {              if (! defined($awarded)) {
                 $partscore = undef;                  $partscore = undef;
             }              }
Line 1952  sub student_performance_on_sequence { Line 2020  sub student_performance_on_sequence {
                 $symbol = sprintf("%.0f",$symbol);                  $symbol = sprintf("%.0f",$symbol);
             }              }
             if (length($symbol) > 1) {              if (length($symbol) > 1) {
                 $symbol = '*';                  $symbol = show_star($symbol);
             }              }
             if (exists($resource_data->{'resource.'.$part.'.solved'}) &&              if (exists($resource_data->{'resource.'.$part.'.solved'}) &&
                 $resource_data->{'resource.'.$part.'.solved'} ne '') {                  $resource_data->{'resource.'.$part.'.solved'} ne '') {

Removed from v.1.129  
changed lines
  Added in v.1.133


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