Diff for /loncom/interface/statistics/longradinganalysis.pm between versions 1.1 and 1.9

version 1.1, 2006/02/14 16:05:46 version 1.9, 2008/10/23 09:07:51
Line 34  use Apache::loncoursedata(); Line 34  use Apache::loncoursedata();
 use Apache::lonstatistics;  use Apache::lonstatistics;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonstathelpers();  use Apache::lonstathelpers();
 use Apache::lonstudentsubmissions();  use Spreadsheet::WriteExcel;
   use Spreadsheet::WriteExcel::Utility();
 use HTML::Entities();  use HTML::Entities();
 use Time::Local();  use Time::Local();
 use Data::Dumper;  use Data::Dumper;
Line 54  sub build_grading_analysis_page { Line 55  sub build_grading_analysis_page {
     #      #
     my %saveable_parameters = ('Status' => 'scalar',      my %saveable_parameters = ('Status' => 'scalar',
                                'Section' => 'array',                                 'Section' => 'array',
                                  'Group' => 'array',
                                );                                 );
     &Apache::loncommon::store_course_settings('grading_analysis',      &Apache::loncommon::store_course_settings('grading_analysis',
                                               \%saveable_parameters);                                                \%saveable_parameters);
Line 67  sub build_grading_analysis_page { Line 69  sub build_grading_analysis_page {
     my @students = @Apache::lonstatistics::Students;      my @students = @Apache::lonstatistics::Students;
     #      #
     if (@students < 1 && exists($env{'form.firstrun'})) {      if (@students < 1 && exists($env{'form.firstrun'})) {
         $r->print('<h2>There are no students in the sections selected</h2>');          $r->print('<h2>There are no students in the sections/groups selected</h2>');
     }      }
     #      #
     #my @cache_button_HTML =       #my @cache_button_HTML = 
Line 158  sub task_analysis { Line 160  sub task_analysis {
  my %data =  &Apache::lonnet::restore($problem->symb(),   my %data =  &Apache::lonnet::restore($problem->symb(),
      $env{'request.course.id'},       $env{'request.course.id'},
      $sdom,$sname);       $sdom,$sname);
    my $last_grader;
  foreach my $ver (0..$data{'version'}) {   foreach my $ver (0..$data{'version'}) {
     if (exists($data{"$ver:resource.0.regrader"})      if (exists($data{"$ver:resource.0.regrader"})
  && $data{"$ver:resource.0.regrader"} =~ /\S/) {   && $data{"$ver:resource.0.regrader"} =~ /\S/) {
  $graders{$data{"$ver:resource.0.regrader"}}++;   $last_grader=$data{"$ver:resource.0.regrader"};
     }      }
       if (exists($data{"$ver:resource.0.version"})
    && $last_grader =~ /\S/) {
    $graders{$last_grader}++;
       }
    }
    if ($last_grader =~ /\S/) {
       $graders{$last_grader}++;
  }   }
   
  &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,   &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
                                                  &mt('last student'));                                                   &mt('last student'));
   
     }      }
   
       my @output;
       foreach my $grader (sort(keys(%graders))) {
    my ($gname,$gdom) = split(/(?:\:|\@)/,$grader,2);
    my $name = &Apache::loncommon::plainname($gname,$gdom);
    push(@output,[$name,$gname."@".$gdom,$graders{$grader}]);
       }
   
     if ($env{'form.output'} eq 'csv') {      if ($env{'form.output'} eq 'csv') {
    my ($outputfile,$filename) = &init_csv_output($r);
    foreach my $line (@output) {
       print $outputfile 
    ('"'.join(q{","},
     map {&Apache::loncommon::csv_translate($_)} @{$line})
    .'"'."\n");
    }
    close($outputfile);
    $r->print('<br />'.
     '<a href="'.$filename.'">'.&mt('Your CSV file.')."</a>\n");
     } elsif ($env{'form.output'} eq 'excel') {      } elsif ($env{'form.output'} eq 'excel') {
    my ($excel_workbook,$excel_sheet,$filename,$format,$rows_output) = 
       &init_excel_output($r);
    foreach my $line (@output) {
       my $cols_output = 0;
       foreach my $item (@{ $line }) {
    $excel_sheet->write($rows_output,$cols_output++,$item);
       }
       $rows_output++;
    }
    # Write the excel file
    $excel_workbook->close();
   
    # Tell the user where to get their excel file
    $r->print('<br />'.
     '<a href="'.$filename.'">'.
     &mt('Your Excel spreadsheet.').'</a>'."\n");
     } else {      } else {
  $r->print('<table class="thinborder">');   $r->print(&Apache::loncommon::start_data_table());
  foreach my $grader (sort(keys(%graders))) {   $r->print(&Apache::loncommon::start_data_table_header_row().
     my ($gname,$gdom) = split('@',$grader,2);    '<th>'.&mt('Name (username)').'</th><th>'.&mt('Grades Assigned').'</th>'.
     my $name = &Apache::loncommon::plainname($gname,$gdom);    &Apache::loncommon::end_data_table_header_row() );
     my $link = &Apache::loncommon::aboutmewrapper($name,$gname,$gdom);   foreach my $line (@output) {
     $r->print("<tr><td>$link (<tt>$grader</tt>)</td><td>$graders{$grader}</td></tr>");      $r->print(&Apache::loncommon::start_data_table_row().
         sprintf("<td>%s (<tt>%s</tt>)</td><td>%s</td></tr>",
         @{$line}).
         &Apache::loncommon::end_data_table_row());
  }   }
  $r->print('</table>');   $r->print(&Apache::loncommon::end_data_table());
     }      }
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);      &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
 }  }
   
   sub init_csv_output {
       my ($r) = @_;
       my ($outputfile,$filename) = 
    &Apache::loncommon::create_text_file($r,'csv');
       my $description = $env{'course.'.$env{'request.course.id'}.'.description'};
       print $outputfile ('"'.&Apache::loncommon::csv_translate($description).
          '","'.&Apache::loncommon::csv_translate(scalar(localtime(time))).
          '"'."\n");
       print $outputfile ('"'.
          &Apache::loncommon::csv_translate(&Apache::lonstatistics::section_and_enrollment_description()).
          '"'."\n");
       print $outputfile ('"'  .&Apache::loncommon::csv_translate('Grader Name'));
       print $outputfile ('","'.&Apache::loncommon::csv_translate('Username'));
       print $outputfile ('","'.&Apache::loncommon::csv_translate('Grades Assigned').
          '"'."\n");
       return ($outputfile,$filename);
   }
   
   sub init_excel_output {
       my ($r) = @_;
       my ($excel_workbook,$filename,$format)=
    &Apache::loncommon::create_workbook($r);
       return if (! defined($excel_workbook));
       my $rows_output = 0;
       my $cols_output = 0;
       my $header_row = $rows_output++;
       my $description_row = $rows_output++;
       $rows_output++;        # blank row
       
       my $sheetname = $env{'course.'.$env{'request.course.id'}.'.description'};
       $sheetname = &Apache::loncommon::clean_excel_name($sheetname);
       my $excel_sheet = $excel_workbook->addworksheet($sheetname);
       $excel_sheet->write($header_row,$cols_output++,
    $env{'course.'.$env{'request.course.id'}.'.description'},
    $format->{'h1'});
       $cols_output += 3;
       my $sectionstring = '';
   #    my @Sections = &Apache::lonstatistics::get_selected_sections(); #This is never used
       $excel_sheet->write($header_row,$cols_output++,
    &Apache::lonstatistics::section_and_enrollment_description('plaintext'),
    $format->{'h3'});
       
       $excel_sheet->write($header_row,$cols_output++,
    'Compiled on '.localtime(time),$format->{'h3'});
       $cols_output = 0;
       foreach my $field ('Grader Name','Username','Grades Assigned') {
    $excel_sheet->write($description_row,$cols_output++,$field,
       $format->{'bold'});
       }
       return ($excel_workbook,$excel_sheet,$filename,$format,$rows_output);
   }
   
 #########################################################  #########################################################
 #########################################################  #########################################################
 ##  ##
Line 204  sub create_interface { Line 304  sub create_interface {
     $output_selector .= '</select>'.$/;      $output_selector .= '</select>'.$/;
   
     my $str = '';      my $str = '';
     $str .= &Apache::lonhtmlcommon::breadcrumbs      $str .= &Apache::lonhtmlcommon::breadcrumbs('Detailed Grading Statistics');
         (undef,'Detailed Grading Statistics');  
     $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>';
     $str .= '<td align="center"><b>'.&mt('Enrollment Status').'</b></td>';      $str .= '<td align="center"><b>'.&mt('Groups').'</b></td>';
       $str .= '<td align="center"><b>'.&mt('Access Status').'</b></td>';
     $str .= '<td>'.&mt('<b>Output as</b> [_1]',$output_selector).'</td>';      $str .= '<td>'.&mt('<b>Output as</b> [_1]',$output_selector).'</td>';
     $str .= '</tr>'."\n";      $str .= '</tr>'."\n";
     ##      ##
Line 218  sub create_interface { Line 318  sub create_interface {
     $str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);      $str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);
     $str .= '</td>';      $str .= '</td>';
     #      #
       $str .= '<td align="center">'."\n";
       $str .= &Apache::lonstatistics::GroupSelect('Group','multiple',5);
       $str .= '</td>';
       #
     $str .= '<td align="center">';      $str .= '<td align="center">';
     $str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5);      $str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5);
     $str .= '</td>';      $str .= '</td>';
     #      #
     $str .= '<td>';      $str .= '<td>';
     ##      ##
     $str .= '<nobr><label>'.&mt('Status: [_1]',      $str .= '<span class="LC_nobreak"><label>'
                                  '<input type="text" '.             .&mt('Status: [_1]',
                                  'name="stats_status" size="60" value="" />'                      '<input type="text" name="stats_status"'
                                  ).                     .' size="60" value="" readonly="readonly" />')
                     '</label></nobr>';             .'</label></span>';
     $str .= '</td>';      $str .= '</td>';
     ##      ##
     ##      ##

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


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