Diff for /loncom/interface/statistics/lonproblemstatistics.pm between versions 1.55 and 1.58

version 1.55, 2003/07/28 15:30:46 version 1.58, 2003/09/03 16:07:06
Line 174  select sections, maps, and output. Line 174  select sections, maps, and output.
   
 ###############################################  ###############################################
 ###############################################  ###############################################
   my @OutputOptions = 
       (
        { name  => 'problem statistics grouped by sequence',
          value => 'HTML problem statistics grouped',
          description => 'Output statistics for the problem parts.',
          mode => 'html',
          show => 'grouped',
        },
        { name  => 'problem statistics ungrouped',
          value => 'HTML problem statistics ungrouped',
          description => 'Output statistics for the problem parts.',
          mode => 'html',
          show => 'ungrouped',
        },
        { name  => 'problem statistics, Excel',
          value => 'Excel problem statistics',
          description => 'Output statistics for the problem parts '.
              'in an Excel workbook',
          mode => 'excel',
          show => 'all',
        },
        );
   
 sub CreateInterface {  sub CreateInterface {
     my $Str = '';      my $Str = '';
     $Str .= '<table cellspacing="5">'."\n";      $Str .= '<table cellspacing="5">'."\n";
Line 201  sub CreateInterface { Line 224  sub CreateInterface {
     $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,      $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,
                                               $only_seq_with_assessments);                                                $only_seq_with_assessments);
     $Str .= '</td><td>'."\n";      $Str .= '</td><td>'."\n";
     $Str .= &CreateAndParseOutputSelector();      my ($html,$outputmode,$show) = 
           &Apache::lonstatistics::CreateAndParseOutputSelector(
                                               'statsoutputmode',
                                               'HTML problem statistics grouped',
                                               @OutputOptions);
       $Str .= $html;
     $Str .= '</td></tr>'."\n";      $Str .= '</td></tr>'."\n";
     $Str .= '</table>'."\n";      $Str .= '</table>'."\n";
     $Str .= '<input type="submit" value="Generate Statistics" />';      $Str .= '<input type="submit" value="Generate Statistics" />';
     $Str .= '&nbsp;'x5;      $Str .= '&nbsp;'x5;
     $Str .= '<input type="submit" name="ClearCache" value="Clear Caches" />';      $Str .= '<input type="submit" name="ClearCache" value="Clear Caches" />';
     $Str .= '&nbsp;'x5;      $Str .= '&nbsp;'x5;
     return $Str;      return ($Str,$outputmode,$show);
 }  
   
 #######################################################  
 #######################################################  
   
 =pod  
   
 =item &CreateAndParseOutputSelector()  
   
 Construct a selection list of options for output and parse output selections.  
 The current output selected is indicated by the values of the two package  
 variables $output_mode and $show.  @OutputOptions holds the descriptions of  
 the output options and the values for $output_mode and $show.  
   
 Based on code from lonstudentassessment.pm.  
   
 =cut  
   
 #######################################################  
 #######################################################  
 my $output_mode;  
 my $show;  
   
 my @OutputOptions =   
     (  
      { name  => 'problem statistics grouped by sequence',  
        value => 'HTML problem statistics grouped',  
        description => 'Output statistics for the problem parts.',  
        mode => 'html',  
        show => 'grouped',  
      },  
      { name  => 'problem statistics ungrouped',  
        value => 'HTML problem statistics ungrouped',  
        description => 'Output statistics for the problem parts.',  
        mode => 'html',  
        show => 'ungrouped',  
      },  
      { name  => 'problem statistics, Excel',  
        value => 'Excel problem statistics',  
        description => 'Output statistics for the problem parts '.  
            'in an Excel workbook',  
        mode => 'excel',  
        show => 'all',  
      },  
      );  
   
 sub OutputDescriptions {  
     my $Str = '';  
     $Str .= "<h2>Output Modes</h2>\n";  
     $Str .= "<dl>\n";  
     foreach my $outputmode (@OutputOptions) {  
  $Str .="    <dt>".$outputmode->{'name'}."</dt>\n";  
  $Str .="        <dd>".$outputmode->{'description'}."</dd>\n";  
     }  
     $Str .= "</dl>\n";  
     return $Str;  
 }  
   
 sub CreateAndParseOutputSelector {  
     my $Str = '';  
     my $elementname = 'statsoutputmode';  
     #  
     # Format for output options is 'mode, restrictions';  
     my $selected = 'HTML problem statistics grouped';  
     if (exists($ENV{'form.'.$elementname})) {  
         if (ref($ENV{'form.'.$elementname} eq 'ARRAY')) {  
             $selected = $ENV{'form.'.$elementname}->[0];  
         } else {  
             $selected = $ENV{'form.'.$elementname};  
         }  
     }  
     #  
     # Set package variables describing output mode  
     $output_mode = 'html';  
     $show        = 'all';  
     foreach my $option (@OutputOptions) {  
         next if ($option->{'value'} ne $selected);  
         $output_mode = $option->{'mode'};  
         $show        = $option->{'show'};  
     }  
     #  
     # Build the form element  
     $Str = qq/<select size="5" name="$elementname">/;  
     foreach my $option (@OutputOptions) {  
         if (exists($option->{'special'}) &&   
             $option->{'special'} =~ /do not show/) {  
             next;  
         }  
         $Str .= "\n".'    <option value="'.$option->{'value'}.'"';  
         $Str .= " selected " if ($option->{'value'} eq $selected);  
         $Str .= ">".$option->{'name'}."<\/option>";  
     }  
     $Str .= "\n</select>";  
     return $Str;  
 }  
   
 ###############################################  
 ###############################################  
   
 =pod   
   
 =item &Gather_Student_Data()  
   
 Ensures all student data is up to date.  
   
 =cut  
   
 ###############################################  
 ###############################################  
 sub Gather_Student_Data {  
     my ($r) = @_;  
     my $c = $r->connection();  
     #  
     my @Sequences = &Apache::lonstatistics::Sequences_with_Assess();  
     #  
     my @Students = @Apache::lonstatistics::Students;  
     #  
     # Open the progress window  
     my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin  
         ($r,'Statistics Compilation Status',  
          'Statistics Compilation Progress', scalar(@Students));  
     #  
     while (my $student = shift @Students) {  
         return if ($c->aborted());  
         my ($status,undef) = &Apache::loncoursedata::ensure_current_data  
             ($student->{'username'},$student->{'domain'},  
              $ENV{'request.course.id'});  
         &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,  
                                                  'last student');  
     }  
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);  
     $r->rflush();  
 }  }
   
 ###############################################  ###############################################
Line 359  Main interface to problem statistics. Line 255  Main interface to problem statistics.
 sub BuildProblemStatisticsPage {  sub BuildProblemStatisticsPage {
     my ($r,$c)=@_;      my ($r,$c)=@_;
     #      #
     $output_mode = 'html';      my ($interface,$output_mode,$show) = &CreateInterface();
     $show = 'grouped';      $r->print($interface);
     #  
     $r->print(&CreateInterface());  
     $r->print('<input type="hidden" name="statsfirstcall" value="no" />');      $r->print('<input type="hidden" name="statsfirstcall" value="no" />');
     $r->print('<input type="hidden" name="sortby" value="'.$ENV{'form.sortby'}.      $r->print('<input type="hidden" name="sortby" value="'.$ENV{'form.sortby'}.
               '" />');                '" />');
Line 371  sub BuildProblemStatisticsPage { Line 265  sub BuildProblemStatisticsPage {
         return;          return;
     }      }
     #      #
     &Gather_Student_Data($r);      &Apache::lonstatistics::Gather_Student_Data($r);
     #      #
     #      #
     if ($output_mode eq 'html') {      if ($output_mode eq 'html') {
Line 869  sub DrawGraph { Line 763  sub DrawGraph {
     $title = '' if (! defined($title));      $title = '' if (! defined($title));
     $xaxis = '' if (! defined($xaxis));      $xaxis = '' if (! defined($xaxis));
     $yaxis = '' if (! defined($yaxis));      $yaxis = '' if (! defined($yaxis));
       $title = &Apache::lonnet::escape($title);
       $xaxis = &Apache::lonnet::escape($xaxis);
       $yaxis = &Apache::lonnet::escape($yaxis);
     #      #
     my $sendValues = join(',', @$values);      my $sendValues = join(',', @$values);
     my $sendCount = scalar(@$values);      my $sendCount = scalar(@$values);

Removed from v.1.55  
changed lines
  Added in v.1.58


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