Diff for /loncom/interface/statistics/lonsubmissiontimeanalysis.pm between versions 1.9 and 1.13

version 1.9, 2004/01/08 19:20:12 version 1.13, 2004/02/20 16:38:49
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 44  my $plotcolors = ['#33ff00', Line 45  my $plotcolors = ['#33ff00',
                   ];                     ]; 
   
 my @SubmitButtons = (  my @SubmitButtons = (
                      { name => 'ProblemAnalyis',                       { name => 'PrevProblemAnalysis',
                          text => 'Previous Problem' },
                        { name => 'ProblemAnalysis',
                        text => 'Analyze Problem Again' },                         text => 'Analyze Problem Again' },
                        { name => 'NextProblemAnalysis',
                          text => 'Next Problem' },
                      { name => 'SelectAnother',                       { name => 'SelectAnother',
                        text => 'Choose a different resource' },                         text => 'Choose a different Problem' },
                      );                       );
   
 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)=@_;
     #      #
Line 79  sub BuildSubmissionTimePage { Line 67  sub BuildSubmissionTimePage {
     #      #
     &Apache::lonstatistics::PrepareClasslist();          &Apache::lonstatistics::PrepareClasslist();    
     #      #
     $r->print('<h2>'.&mt('Submission Time Plots').'</h2>');  
     $r->print(&CreateInterface());      $r->print(&CreateInterface());
     #      #
     my @Students = @Apache::lonstatistics::Students;      my @Students = @Apache::lonstatistics::Students;
Line 108  sub BuildSubmissionTimePage { Line 95  sub BuildSubmissionTimePage {
                   &mt('Graph Problem Submission Times').'" />');                    &mt('Graph Problem Submission Times').'" />');
         $r->print('&nbsp;'x5);          $r->print('&nbsp;'x5);
         $r->print('<h3>'.&mt('Please select a problem to analyze').'</h3>');          $r->print('<h3>'.&mt('Please select a problem to analyze').'</h3>');
         $r->print(&ProblemSelector());          $r->print(&Apache::lonstathelpers::ProblemSelector('.'));
     } else {      } else {
         foreach my $button (@SubmitButtons) {          foreach my $button (@SubmitButtons) {
             $r->print('<input type="submit" name="'.$button->{'name'}.'" '.              $r->print('<input type="submit" name="'.$button->{'name'}.'" '.
                       'value="'.&mt($button->{'text'}).'" />');                        'value="'.&mt($button->{'text'}).'" />');
             $r->print('&nbsp;'x5);              $r->print('&nbsp;'x5);
         }          }
           #
           # Determine which problem we are to analyze
           my $current_problem = &Apache::lonstathelpers::get_target_from_id
               ($ENV{'form.problemchoice'});
           #
           my ($prev,$curr,$next) = 
               &Apache::lonstathelpers::get_prev_curr_next($current_problem,
                                                           '.',
                                                           'part');
           if (exists($ENV{'form.PrevProblemAnalysis'}) && defined($prev)) {
               $current_problem = $prev;
           } elsif (exists($ENV{'form.NextProblemAnalysis'}) && defined($next)) {
               $current_problem = $next;
           } else {
               $current_problem = $curr;
           }
           #
           # Store the current problem choice and send it out in the form
           $ENV{'form.problemchoice'} = 
               &Apache::lonstathelpers::make_target_id($current_problem);
         $r->print('<input type="hidden" name="problemchoice" value="'.          $r->print('<input type="hidden" name="problemchoice" value="'.
                   $ENV{'form.problemchoice'}.'" />');                    $ENV{'form.problemchoice'}.'" />');
         #          #
         $r->print('<hr />');          $r->print('<hr />');
         #  
         my ($symb,$part) = &get_problem_symb(  
                   &Apache::lonnet::unescape($ENV{'form.problemchoice'}));  
         $r->rflush();          $r->rflush();
         #          #
         my $resource = &get_resource_from_symb($symb);          my $resource = $current_problem->{'resource'};
         if (! defined($resource)) {          if (! defined($resource)) {
             $r->print('resource is undefined');              $r->print('resource is undefined');
         } else {          } else {
             $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,
                                        $current_problem->{'part'}));
         }          }
         $r->print('<hr />');          $r->print('<hr />');
     }      }
Line 328  sub CreateInterface { Line 333  sub CreateInterface {
     ##      ##
     ## Build the menu      ## Build the menu
     my $Str = '';      my $Str = '';
       $Str .= &Apache::lonhtmlcommon::breadcrumbs
           (undef,&mt('Submission Time Plots'));
     $Str .= '<table cellspacing="5">'."\n";      $Str .= '<table cellspacing="5">'."\n";
     $Str .= '<tr>';      $Str .= '<tr>';
     $Str .= '<td align="center"><b>'.&mt('Sections').'</b></td>';      $Str .= '<td align="center"><b>'.&mt('Sections').'</b></td>';
Line 361  sub CreateInterface { Line 368  sub CreateInterface {
     return $Str;      return $Str;
 }  }
   
 sub ProblemSelector {  
     my $Str;  
     $Str = "<table>\n";  
     foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {  
         next if ($seq->{'num_assess'}<1);  
         my $seq_str = '';  
         foreach my $res (@{$seq->{'contents'}}) {  
             next if ($res->{'type'} ne 'assessment');  
             if (@{$res->{'parts'}} == 1) {  
                 my $value = &Apache::lonnet::escape($res->{'symb'}.':'.  
                                                     $res->{'parts'}->[0]);  
                 my $checked;  
                 if ($ENV{'form.problemchoice'} eq $value) {  
                     $checked = 'checked ';  
                 }  
                 my $title = $res->{'title'};  
                 if (! defined($title) || $title eq '') {  
                     ($title) = ($res->{'src'} =~ m:/([^/]*)$:);  
                 }  
 #                &Apache::lonnet::logthis('title = :'.$title.':');  
                 $seq_str .= '<tr><td>'.  
   '<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'.  
   '</td><td>'.  
   '<a href="'.$res->{'src'}.'">'.$title.'</a> ';  
             } else {  
                 my $title = $res->{'title'};  
                 if (! defined($title) || $title eq '') {  
                     ($title) = ($res->{'src'} =~ m:/([^/]*)$:);  
                 }  
                 $seq_str .= '<tr><td>'.  
                     '&nbsp;'.'</td><td>'.  
                     '<a href="'.$res->{'src'}.'">'.$title.'</a>'.  
                     "</td></tr>\n";  
                 foreach my $part (@{$res->{'parts'}}) {  
                     my $value = &Apache::lonnet::escape  
                                                ($res->{'symb'}.':'.$part);  
                     my $checked;  
                     if ($ENV{'form.problemchoice'} eq $value) {  
                         $checked = 'checked ';  
                     }  
                     $seq_str .= '<tr><td>'.  
   '<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'.  
   '</td><td>'.('&nbsp;'x5).'part '.$part."</td></tr>\n";  
                 }  
             }  
         }  
         if ($seq_str ne '') {  
             $Str .= '<tr><td>&nbsp</td><td><b>'.$seq->{'title'}.'</b></td>'.  
                 "</tr>\n".$seq_str;  
         }  
     }  
     $Str .= "</table>\n";  
     return $Str;  
 }  
   
 #########################################################  
 #########################################################  
 ##  
 ##      Misc functions (ought to be put in a module)  
 ##  
 #########################################################  
 #########################################################  
 sub get_problem_symb {  
     my $problemstring = shift();  
     my ($symb,$partid) = ($problemstring=~ /^(.*):([^:]*)$/);  
     return ($symb,$partid);  
 }  
   
 sub get_resource_from_symb {  
     my ($symb) = @_;  
     foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {  
         foreach my $res (@{$seq->{'contents'}}) {  
             if ($res->{'symb'} eq $symb) {  
                 return $res;  
             }  
         }  
     }  
     return undef;  
 }  
   
 1;  1;
   
 __END__  __END__

Removed from v.1.9  
changed lines
  Added in v.1.13


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