Diff for /loncom/interface/statistics/lonproblemstatistics.pm between versions 1.97 and 1.102

version 1.97, 2005/03/01 00:07:21 version 1.102, 2005/03/14 20:28:22
Line 353  my @Fields = ( Line 353  my @Fields = (
 #             selectable => 'no',  #             selectable => 'no',
 #             defaultselected => 'yes',  #             defaultselected => 'yes',
 #            },  #            },
 ##   weight included for research purposes.  Commented out most of the time.  #
 #           { name => 'weight',  ##   problem weight for instructor
 #             title => 'weight',             { name => 'weight',
 #             align => 'right',               title => 'weight',
 #             color => '#FFFFFF',               align => 'right',
 #             sortable => 'no',               color => '#FFFFFF',
 #             graphable => 'no',               sortable => 'no',
 #             long_title => 'Problem weight (for instructor)',               graphable => 'no',
 #             selectable => 'no',               long_title => 'Problem weight (for instructor)',
 #             defaultselected => 'yes',               selectable => 'yes',
 #            },               defaultselected => 'yes',
               },
 );  );
   
 my @SeqFields = (  my @SeqFields = (
Line 712  sub BuildProblemStatisticsPage { Line 713  sub BuildProblemStatisticsPage {
     # it does not slow things down noticably.      # it does not slow things down noticably.
     &Apache::loncoursedata::populate_weight_table();      &Apache::loncoursedata::populate_weight_table();
     #      #
       ($navmap,@sequences) = 
           &Apache::lonstatistics::selected_sequences_with_assessments();
       if (! ref($navmap)) {
           $r->print('<h1>'.&mt('A course-wide error occured.').'</h1>'.
                     '<h3>'.$navmap.'</h3>');
           return;
       }
     if (exists($ENV{'form.Excel'})) {      if (exists($ENV{'form.Excel'})) {
           $r->print('<h4>'.
                     &Apache::lonstatistics::section_and_enrollment_description().
                     '</h4>');
         &Excel_output($r);          &Excel_output($r);
     } else {       } else { 
         $r->print('<input type="submit" name="Excel" value="'.          $r->print('<input type="submit" name="Excel" value="'.
                   &mt('Produce Excel Output').'" />'.'&nbsp;'x5);                    &mt('Produce Excel Output').'" />'.'&nbsp;'x5);
         $r->rflush();          $r->rflush();
           $r->print('<h4>'.
                     &Apache::lonstatistics::section_and_enrollment_description().
                     '</h4>');
         my $count = 0;          my $count = 0;
         ($navmap,@sequences) =   
             &Apache::lonstatistics::selected_sequences_with_assessments();  
         if (! ref($navmap)) {  
             $r->print('<h1>'.&mt('A course-wide error occured.').'</h1>'.  
                       '<h3>'.$navmap.'</h3>');  
             return;  
         }  
         foreach my $seq (@sequences) {          foreach my $seq (@sequences) {
             my @resources =               my @resources = 
                 &Apache::lonstathelpers::get_resources($navmap,$seq);                  &Apache::lonstathelpers::get_resources($navmap,$seq);
Line 1263  sub Excel_output { Line 1270  sub Excel_output {
     &compute_all_statistics($r);      &compute_all_statistics($r);
     my $c = $r->connection;      my $c = $r->connection;
     return if ($c->aborted());      return if ($c->aborted());
       #
       my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();
     ##      ##
     ## Create the excel workbook      ## Create the excel workbook
     my $filename = '/prtspool/'.      my ($excel_workbook,$filename,$format) =
         $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.          &Apache::loncommon::create_workbook($r);
         time.'_'.rand(1000000000).'.xls';      return if (! defined($excel_workbook));
     my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();  
     #  
     # Create sheet  
     my $excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename);  
     #  
     # Check for errors  
     if (! defined($excel_workbook)) {  
         $r->log_error("Error creating excel spreadsheet $filename: $!");  
         $r->print(&mt("Problems creating new Excel file.  ".  
                   "This error has been logged.  ".  
                   "Please alert your LON-CAPA administrator."));  
         return 0;  
     }  
     #  
     # The excel spreadsheet stores temporary data in files, then put them  
     # together.  If needed we should be able to disable this (memory only).  
     # The temporary directory must be specified before calling 'addworksheet'.  
     # File::Temp is used to determine the temporary directory.  
     $excel_workbook->set_tempdir($Apache::lonnet::tmpdir);  
     #      #
     # Add a worksheet      # Add a worksheet
     my $sheetname = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};      my $sheetname = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
Line 1295  sub Excel_output { Line 1285  sub Excel_output {
     }      }
     my $excel_sheet = $excel_workbook->addworksheet(      my $excel_sheet = $excel_workbook->addworksheet(
         &Apache::loncommon::clean_excel_name($sheetname));          &Apache::loncommon::clean_excel_name($sheetname));
     #  
     my $format = &Apache::loncommon::define_excel_formats($excel_workbook);  
     ##      ##
     ## Begin creating excel sheet      ## Begin creating excel sheet
     ##      ##
Line 1312  sub Excel_output { Line 1300  sub Excel_output {
     my $sectionstring = '';      my $sectionstring = '';
     $excel_sheet->write($rows_output,$cols_output++,      $excel_sheet->write($rows_output,$cols_output++,
                         &Apache::lonstathelpers::sections_description                          &Apache::lonstathelpers::sections_description
                             (@Apache::lonstatistics::SelectedSections),                              (&Apache::lonstatistics::get_selected_sections()),
                         $format->{'h3'});                          $format->{'h3'});
     $cols_output += scalar(@Apache::lonstatistics::SelectedSections);      $cols_output += scalar(&Apache::lonstatistics::get_selected_sections());
     #      #
     # Time restrictions      # Time restrictions
     my $time_string;      my $time_string;
Line 1555  sub get_statistics { Line 1543  sub get_statistics {
     my $courseid = $ENV{'request.course.id'};      my $courseid = $ENV{'request.course.id'};
     #      #
     my $data = &Apache::loncoursedata::get_problem_statistics      my $data = &Apache::loncoursedata::get_problem_statistics
                         (\@Apache::lonstatistics::SelectedSections,                          ([&Apache::lonstatistics::get_selected_sections()],
                          $Apache::lonstatistics::enrollment_status,                           $Apache::lonstatistics::enrollment_status,
                          $symb,$part,$courseid,$starttime,$endtime);                           $symb,$part,$courseid,$starttime,$endtime);
     $data->{'symb'}        = $symb;      $data->{'symb'}        = $symb;
Line 1573  sub get_statistics { Line 1561  sub get_statistics {
     #      #
     # Store in metadata if computations were done for all students      # Store in metadata if computations were done for all students
     if ($data->{'num_students'} > 1) {      if ($data->{'num_students'} > 1) {
         my @Sections = @Apache::lonstatistics::SelectedSections;          my @Sections = &Apache::lonstatistics::get_selected_sections();
         my $sections = '"'.join(' ',@Sections).'"';          my $sections = '"'.join(' ',@Sections).'"';
         $sections =~ s/&+/_/g;  # Ensure no special characters          $sections =~ s/&+/_/g;  # Ensure no special characters
         $data->{'sections'}=$sections;          $data->{'sections'}=$sections;
Line 1598  sub get_statistics { Line 1586  sub get_statistics {
 #        &Apache::lonnet::EXT('resource.'.$part.'.maxtries',$symb);  #        &Apache::lonnet::EXT('resource.'.$part.'.maxtries',$symb);
 #    $data->{'hinttries'} =  #    $data->{'hinttries'} =
 #        &Apache::lonnet::EXT('resource.'.$part.'.hinttries',$symb);  #        &Apache::lonnet::EXT('resource.'.$part.'.hinttries',$symb);
 #    $data->{'weight'} =      $data->{'weight'} =
 #        &Apache::lonnet::EXT('resource.'.$part.'.weight',$symb);          &Apache::lonnet::EXT('resource.'.$part.'.weight',$symb);
 #    $data->{'resptypes'} = join(',',@{$resource->{'partdata'}->{$part}->{'ResponseTypes'}});  #    $data->{'resptypes'} = join(',',@{$resource->{'partdata'}->{$part}->{'ResponseTypes'}});
     return $data;      return $data;
 }  }
Line 1633  sub compute_discrimination_factor { Line 1621  sub compute_discrimination_factor {
     my $ranking =       my $ranking = 
         &Apache::loncoursedata::rank_students_by_scores_on_resources          &Apache::loncoursedata::rank_students_by_scores_on_resources
         (\@Resources,          (\@Resources,
          \@Apache::lonstatistics::SelectedSections,           [&Apache::lonstatistics::get_selected_sections()],
          $Apache::lonstatistics::enrollment_status,undef,           $Apache::lonstatistics::enrollment_status,undef,
          $starttime,$endtime);           $starttime,$endtime);
     #      #
Line 1698  sub compute_sequence_statistics { Line 1686  sub compute_sequence_statistics {
     # First compute statistics based on student scores      # First compute statistics based on student scores
     my ($smin,$smax,$sMean,$sSTD,$scount,$sMAX) =       my ($smin,$smax,$sMean,$sSTD,$scount,$sMAX) = 
         &Apache::loncoursedata::score_stats          &Apache::loncoursedata::score_stats
                     (\@Apache::lonstatistics::SelectedSections,                      ([&Apache::lonstatistics::get_selected_sections()],
                      $Apache::lonstatistics::enrollment_status,                       $Apache::lonstatistics::enrollment_status,
                      \@Resources,$starttime,$endtime,undef);                       \@Resources,$starttime,$endtime,undef);
     $SeqStat{$symb}->{'title'}  = $seq->compTitle;      $SeqStat{$symb}->{'title'}  = $seq->compTitle;
Line 1713  sub compute_sequence_statistics { Line 1701  sub compute_sequence_statistics {
     # 'correct' is taken to mean       # 'correct' is taken to mean 
     my ($cmin,$cmax,$cMean,$cSTD,$ccount)=      my ($cmin,$cmax,$cMean,$cSTD,$ccount)=
         &Apache::loncoursedata::count_stats          &Apache::loncoursedata::count_stats
         (\@Apache::lonstatistics::SelectedSections,          ([&Apache::lonstatistics::get_selected_sections()],
          $Apache::lonstatistics::enrollment_status,           $Apache::lonstatistics::enrollment_status,
          \@Resources,$starttime,$endtime,undef);           \@Resources,$starttime,$endtime,undef);
     my $K = $part_count;      my $K = $part_count;

Removed from v.1.97  
changed lines
  Added in v.1.102


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