Diff for /loncom/interface/statistics/lonstudentassessment.pm between versions 1.56 and 1.57

version 1.56, 2003/06/11 14:41:59 version 1.57, 2003/06/11 15:04:55
Line 366  my @OutputOptions = Line 366  my @OutputOptions =
        mode => 'excel',         mode => 'excel',
        show_links => 'no',         show_links => 'no',
    },     },
 #     { name  => 'multi-sheet Excel',  
 #       value => 'multi-sheet excel',  
 #       description => 'Output an Excel file (compatable with Excel 95), '.  
 #   'with a seperate worksheet for each sequence you have selected '.  
 #           'the data for each problem part '.  
 #           '(number of tries, status, points awarded) will be listed.',  
 #       mode => 'multi-sheet excel',  
 #       show_links => 'no',  
 #           },  
 #     { name  => 'multi-sheet Excel, by section',  
 #       value => 'multi-sheet excel, by section',  
 #       description => 'Output an Excel file (compatable with Excel 95), '.  
 #   'with a seperate worksheet for each sequence you have selected '.  
 #           'the data for each problem part '.  
 #           '(number of tries, status, points awarded) will be listed.  '.  
 #           'There will be one Excel workbook for each section selected.',  
 #       mode => 'multi-sheet excel',  
 #       show_links => 'no',  
 #           },  
      { name  => 'CSV',       { name  => 'CSV',
        value => 'csv',         value => 'csv',
        description => 'Output a comma seperated values file suitable for '.         description => 'Output a comma seperated values file suitable for '.
            'import into a spreadsheet.',             'import into a spreadsheet program.  Using this method as opposed '.
              'to Excel output allows you to organize your data before importing'.
              ' it into a spreadsheet program.',
        mode => 'csv',         mode => 'csv',
        show_links => 'no',         show_links => 'no',
            },             },
Line 445  sub CreateAndParseOutputSelector { Line 428  sub CreateAndParseOutputSelector {
 ## Data selector stuff  ## Data selector stuff
 ##  ##
 my @OutputDataOptions =  my @OutputDataOptions =
     ( { name  =>'Tries',      (
         base  =>'tries',       { name  => 'Scores',
         value => 'tries',         base  => 'scores',
         shortdesc => 'Number of Tries before success on each Problem Part',         value => 'scores',
         longdesc =>'The number of tries before success on each problem part.',         shortdesc => 'Score on each Problem Part',
         },         longdesc =>'The students score on each problem part, computed as'.
       { name  =>'Parts Correct',             'the part weight * part awarded',
         base  =>'tries',         },
         value => 'parts correct',       { name  => 'Scores Sum',
         shortdesc => 'Number of Problem Parts completed successfully.',         base  => 'scores',
         longdesc => 'The Number of Problem Parts completed successfully.',         value => 'sum only',
         },         shortdesc => 'Sum of Scores on each Problem Part',
       { name  =>'Parts Correct & Maximums',         longdesc =>'The total of the scores of the student on each problem'.
         base  =>'tries',             ' part in the sequences or folders selected.',
         value => 'parts correct total',         },
         shortdesc => 'Number of Problem Parts completed successfully.',       { name  => 'Scores Sum & Maximums',
         longdesc => 'The Number of Problem Parts completed successfully and '.         base  => 'scores',
             'the maximum possible for each student',         value => 'sum and total',
         },         shortdesc => 'Total Score and Maximum Possible for each '.
       { name  => 'Scores',             'Sequence or Folder',
         base  => 'scores',         longdesc => 'The score of each student as well as the '.
         value => 'scores',             ' maximum possible on each Sequence or Folder.',
         shortdesc => 'Score on each Problem Part',         },
         longdesc =>'The students score on each problem part, computed as'.       { name  => 'Scores Summary Table Only',
             'the part weight * part awarded',         base  => 'scores',
         },         value => 'final table scores',
       { name  => 'Scores Sum',         shortdesc => 'Summary of Scores',
         base  => 'scores',         longdesc  => 'The average score on each sequence or folder for the '.
         value => 'sum only',             'selected students.',
         shortdesc => 'Sum of Scores on each Problem Part',         },
         longdesc =>'The total of the scores of the student on each problem'.       { name  =>'Tries',
             ' part in the sequences or folders selected.',         base  =>'tries',
         },         value => 'tries',
       { name  => 'Scores Sum & Maximums',         shortdesc => 'Number of Tries before success on each Problem Part',
         base  => 'scores',         longdesc =>'The number of tries before success on each problem part.',
         value => 'sum and total',         },
         shortdesc => 'Total Score and Maximum Possible for each '.       { name  =>'Parts Correct',
             'Sequence or Folder',         base  =>'tries',
         longdesc => 'The total of the scores of the student on each problem'.         value => 'parts correct',
             ' and the maximum possible for that student on each Sequence or '.         shortdesc => 'Number of Problem Parts completed successfully.',
             ' Folder.',         longdesc => 'The Number of Problem Parts completed successfully'.
         },             ' on each sequence or folder.',
       { name  => 'Summary Table (Scores)',         },
         base  => 'scores',       { name  =>'Parts Correct & Maximums',
         value => 'final table scores',         base  =>'tries',
         shortdesc => 'Summary of Scores',         value => 'parts correct total',
         longdesc  => '',         shortdesc => 'Number of Problem Parts completed successfully.',
         },         longdesc => 'The Number of Problem Parts completed successfully and '.
       { name  => 'Summary Table (Parts)',             'the maximum possible for each student',
         base  => 'tries',         },
         value => 'final table parts',       { name  => 'Parts Summary Table Only',
         shortdesc => 'Summary of Parts Correct',         base  => 'tries',
         longdesc  => '',         value => 'final table parts',
         }         shortdesc => 'Summary of Parts Correct',
       );         longdesc  => 'A summary table of the average number of problem parts '.
              'students were able to get correct on each sequence.',
          },
        );
   
   sub HTMLifyOutputDataDescriptions {
       my $Str = '';
       $Str .= "<dl>\n";
       foreach my $option (@OutputDataOptions) {
           $Str .= '    <dt>'.$option->{'name'}.'</dt>';
           $Str .= '<dd>'.$option->{'longdesc'}.'</dd>'."\n";
       }
       $Str .= "</dl>\n";
       return $Str;
   }
   
 sub CreateAndParseOutputDataSelector {  sub CreateAndParseOutputDataSelector {
     my $Str = '';      my $Str = '';
Line 791  sub SingleStudentTotal { Line 788  sub SingleStudentTotal {
 #######################################################  #######################################################
 #######################################################  #######################################################
   
 =pod  
   
 =head2 Multi-Sheet EXCEL subroutines  
   
 =item &multi_sheet_excel_initialize($r)  
   
 =item &multi_sheet_excel_outputstudent($r,$student)  
   
 =item &multi_sheet_excel_finish($r)  
   
 =cut  
   
 #######################################################  
 #######################################################  
 {  
   
 sub multi_sheet_excel_initialize {  
     my ($r)=@_;  
     $r->print("<h1>Not yet implemented</h1>");  
     #   
     # Estimate the size of the file.  We would like to have < 5 megs of data.  
     my $max_size = 5000000;  
     my $num_students  = scalar(@Apache::lonstatistics::Students);  
     my $num_sequences = 0;  
     my $num_data_per_part  = 2; # 'status' and 'numtries'  
     my $fields_per_student = scalar(&get_student_fields_to_show());  
     my $bytes_per_field    = 20; # Back of the envelope calculation  
     foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) {  
         $num_sequences++ if ($seq->{'num_assess'} > 0);  
         $fields_per_student += $num_data_per_part * $seq->{'num_assess_parts'};  
     }  
     my $size_estimate = $fields_per_student*$num_students*$bytes_per_field;  
     #  
     # Compute number of workbooks  
     my $num_workbooks = 1;  
     if ($size_estimate > $max_size) { # try to stay under 5 megs  
         $num_workbooks += int($size_estimate / $max_size);  
     }  
 #    if ($data eq ) {  
 #        if (@Apache::lonstatistics::SelectedSections > 1 &&   
 #            $Apache::lonstatistics::SelectedSections[0] ne 'all') {  
 #            $num_workbooks = scalar(@Apache::lonstatistics::SelectedSections);  
 #        } else {  
 #            # @Apache::lonstatistics::Sections contains 'all' as well.  
 #            $num_workbooks = scalar(@Apache::lonstatistics::Sections) - 1;  
 #        }  
 #    }  
       
     $r->print("Maximum allowed size: ".$max_size." bytes<br />");  
     $r->print("Number of students: ".$num_students."<br />");  
     $r->print("Number of fields per student: ".$fields_per_student."<br />");  
     $r->print("Total number of fields: ".($fields_per_student*$num_students).  
               "<br />");  
     $r->print("Bytes per field: ".$bytes_per_field." (estimated)"."<br />");  
     $r->print("Estimated size: ".$size_estimate." bytes<br />");  
     $r->print("Number of workbooks: ".$num_workbooks."<br />");  
     $r->rflush();  
     return;  
 }  
   
 sub multi_sheet_excel_outputstudent {  
     my ($r,$student) = @_;  
 }  
   
 sub multi_sheet_excel_finish {  
     my ($r) = @_;  
 }  
   
 }  
 #######################################################  
 #######################################################  
   
 =pod  =pod
   
 =head2 EXCEL subroutines  =head2 EXCEL subroutines

Removed from v.1.56  
changed lines
  Added in v.1.57


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