Diff for /loncom/interface/statistics/lonsubmissiontimeanalysis.pm between versions 1.3 and 1.10

version 1.3, 2003/10/30 16:20:18 version 1.10, 2004/01/19 21:31:08
Line 33  use Apache::loncommon(); Line 33  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::loncoursedata();  use Apache::loncoursedata();
 use Apache::lonstatistics;  use Apache::lonstatistics;
   use Apache::lonstathelpers;
 use Apache::lonlocal;  use Apache::lonlocal;
 use HTML::Entities();  use HTML::Entities();
 use Time::Local();  use Time::Local();
Line 50  my @SubmitButtons = ( Line 51  my @SubmitButtons = (
                        text => 'Choose a different resource' },                         text => 'Choose a different resource' },
                      );                       );
   
 sub render_resource {  
     my ($resource) = @_;  
     ##  
     ## Render the problem  
     my $base;  
     ($base,undef) = ($resource->{'src'} =~ m|(.*/)[^/]*$|);  
     $base = "http://".$ENV{'SERVER_NAME'}.$base;  
     my $rendered_problem =   
         &Apache::lonnet::ssi_body($resource->{'src'});  
     $rendered_problem =~ s/<\s*form\s*/<nop /g;  
     $rendered_problem =~ s|(<\s*/form\s*>)|<\/nop>|g;  
     return '<table bgcolor="ffffff"><tr><td>'.  
         '<base href="'.$base.'" />'.  
         $rendered_problem.  
         '</td></tr></table>';  
 }  
   
 sub BuildSubmissionTimePage {  sub BuildSubmissionTimePage {
     my ($r,$c)=@_;      my ($r,$c)=@_;
       #
       my %Saveable_Parameters = ('Status' => 'scalar',
                                  'Section' => 'array');
       &Apache::loncommon::store_course_settings('submissiontime_analysis',
                                                 \%Saveable_Parameters);
       &Apache::loncommon::restore_course_settings('submissiontime_analysis',
                                                   \%Saveable_Parameters);
       #
       &Apache::lonstatistics::PrepareClasslist();    
       #
     $r->print('<h2>'.&mt('Submission Time Plots').'</h2>');      $r->print('<h2>'.&mt('Submission Time Plots').'</h2>');
     $r->print(&CreateInterface());      $r->print(&CreateInterface());
     #      #
Line 121  sub BuildSubmissionTimePage { Line 115  sub BuildSubmissionTimePage {
             $r->print('<h1>'.$resource->{'title'}.'</h1>');              $r->print('<h1>'.$resource->{'title'}.'</h1>');
             $r->print('<h3>'.$resource->{'src'}.'</h3>');              $r->print('<h3>'.$resource->{'src'}.'</h3>');
             $r->rflush();              $r->rflush();
             $r->print(&render_resource($resource));              $r->print(&Apache::lonstathelpers::render_resource($resource));
             $r->rflush();              $r->rflush();
             $r->print(&analyze_times($r,$resource,\@Students,$part));              $r->print(&analyze_times($r,$resource,\@Students,$part));
         }          }
Line 161  sub analyze_times { Line 155  sub analyze_times {
     my $SubData = &Apache::loncoursedata::get_response_time_data      my $SubData = &Apache::loncoursedata::get_response_time_data
         ($students,$resource->{'symb'},$part);          ($students,$resource->{'symb'},$part);
     if (! defined($SubData) || ! ref($SubData)) {      if (! defined($SubData) || ! ref($SubData)) {
         $html.= '<h2>There is no submission data for this resource</h2>';          $html.= '<h2>There is no submission data for this problem</h2>';
         return $html;          return $html;
     }      }
     my $NumSub = scalar(@{$SubData});      my $NumSub = scalar(@{$SubData});
     if (! @{$SubData}) {      if (! @{$SubData}) {
         $html.= '<h2>There is no submission data for this resource</h2>';          $html.= '<h2>There is no submission data for this problem</h2>';
         return $html;          return $html;
     }      }
     # Process the data      # Process the data
Line 231  sub analyze_times { Line 225  sub analyze_times {
             $Xlabel[$bincount] = '';              $Xlabel[$bincount] = '';
         }          }
     }      }
       my $numstudents = scalar(@$students);
       for (my $i=0;$i<=$#AnsData;$i++) {
           $AnsData[$i] = int(100*($AnsData[$i]/$numstudents));
       }
     my $title = 'Number of Submissions and Number Correct';      my $title = 'Number of Submissions and Number Correct';
     my $xlabel;      my $xlabel;
     (undef,undef,undef,$mday,$month,$year,$wday) = localtime($day_start);      (undef,undef,undef,$mday,$month,$year,$wday) = localtime($day_start);
Line 240  sub analyze_times { Line 237  sub analyze_times {
     (undef,undef,undef,$mday,$month,$year,$wday) = localtime($endtime);      (undef,undef,undef,$mday,$month,$year,$wday) = localtime($endtime);
     $xlabel .= $FullWeekDay[$wday].' '.      $xlabel .= $FullWeekDay[$wday].' '.
         join(' ',($Month[$month],$mday,1900+$year));          join(' ',($Month[$month],$mday,1900+$year));
       my $width = 50+2*$bincount;
       if ($width < 250) {
           $width = 250;
       }
     $html .= &Apache::loncommon::DrawXYYGraph($title,      $html .= &Apache::loncommon::DrawXYYGraph($title,
                                               $xlabel,                                                $xlabel,
                                               'Number of Submissions per hour',                                                'Submissions vs Time',
                                               $plotcolors,                                                $plotcolors,
                                               \@Xlabel,                                                \@Xlabel,
                                               \@Ydata,                                                \@Ydata,
                                               0,$max,                                                0,$max,
                                               \@AnsData,                                                \@AnsData,
                                               0,scalar(@$students),                                                0,100,
                                               (xskip => $bins_per_day,                                                (xskip => $bins_per_day,
                                                x_ticks => $bins_per_day,                                                 x_ticks => $bins_per_day,
                                                x_tick_offset => $bins_per_day,                                                 x_tick_offset => $bins_per_day,
                                                width => 50+2*$bincount)                                                 width => $width,
                         y1_label=>'Number of Submissions per hour',
                         y2_label=>'Percent of Students answering Correctly',
                        'data.1.label'=>'Submissions per hour',
                        'data.2.label'=>'Percent correct',
                                                  )
                                               );                                                );
     $html .= '<br />';      $html .= '<br />';
     return $html;      return $html;
Line 354  sub ProblemSelector { Line 360  sub ProblemSelector {
                 if ($ENV{'form.problemchoice'} eq $value) {                  if ($ENV{'form.problemchoice'} eq $value) {
                     $checked = 'checked ';                      $checked = 'checked ';
                 }                  }
                   my $title = $res->{'title'};
                   if (! defined($title) || $title eq '') {
                       ($title) = ($res->{'src'} =~ m:/([^/]*)$:);
                   }
   #                &Apache::lonnet::logthis('title = :'.$title.':');
                 $seq_str .= '<tr><td>'.                  $seq_str .= '<tr><td>'.
   '<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'.    '<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'.
   '</td><td>'.    '</td><td>'.
   '<a href="'.$res->{'src'}.'">'.$res->{'title'}.'</a> ';    '<a href="'.$res->{'src'}.'">'.$title.'</a> ';
             } else {              } else {
                   my $title = $res->{'title'};
                   if (! defined($title) || $title eq '') {
                       ($title) = ($res->{'src'} =~ m:/([^/]*)$:);
                   }
                 $seq_str .= '<tr><td>'.                  $seq_str .= '<tr><td>'.
                     '&nbsp;'.'</td><td>'.                      '&nbsp;'.'</td><td>'.
                     '<a href="'.$res->{'src'}.'">'.$res->{'title'}.'</a>'.                      '<a href="'.$res->{'src'}.'">'.$title.'</a>'.
                     "</td></tr>\n";                      "</td></tr>\n";
                 foreach my $part (@{$res->{'parts'}}) {                  foreach my $part (@{$res->{'parts'}}) {
                     my $value = &Apache::lonnet::escape                      my $value = &Apache::lonnet::escape

Removed from v.1.3  
changed lines
  Added in v.1.10


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