--- loncom/interface/lonstatistics.pm	2004/01/15 03:18:19	1.93
+++ loncom/interface/lonstatistics.pm	2004/04/01 18:49:39	1.101
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstatistics.pm,v 1.93 2004/01/15 03:18:19 www Exp $
+# $Id: lonstatistics.pm,v 1.101 2004/04/01 18:49:39 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -38,21 +38,6 @@ lonstatistics
 
 Main handler for statistics and chart.
 
-=head1 PACKAGES USED
-
-    use strict;
-    use Apache::Constants qw(:common :http);
-    use Apache::lonnet();
-    use Apache::lonhomework;
-    use Apache::loncommon;
-    use Apache::loncoursedata;
-    use Apache::lonhtmlcommon;
-    use Apache::lonproblemanalysis;
-    use Apache::lonsubmissiontimeanalysis;
-    use Apache::lonproblemstatistics;
-    use Apache::lonstudentassessment;
-    use Apache::lonpercentage;
-    use Apache::lonmysql;
 =over 4
 
 =cut
@@ -72,21 +57,26 @@ use vars qw(
     $top_map 
     @Sequences 
     @SelectedMaps
-    @Assessments);
+    @Assessments
+    $enrollment_status);
 
 use Apache::lonnet();
 use Apache::lonhomework;
 use Apache::loncommon;
 use Apache::loncoursedata;
 use Apache::lonhtmlcommon;
+use Apache::lonmysql;
+use Apache::lonlocal;
+use Time::HiRes;
+#
+# Statistics Packages
 use Apache::lonproblemanalysis();
 use Apache::lonsubmissiontimeanalysis();
+use Apache::loncorrectproblemplot();
 use Apache::lonproblemstatistics();
 use Apache::lonstudentassessment();
 use Apache::lonpercentage;
-use Apache::lonmysql;
-use Apache::lonlocal;
-use Time::HiRes;
+use Apache::lonstudentsubmissions();
 
 #######################################################
 #######################################################
@@ -247,8 +237,8 @@ sub PrepareClasslist {
     }
     #
     # get the status requested
-    my $requested_status = 'Active';
-    $requested_status = $ENV{'form.Status'} if (exists($ENV{'form.Status'}));
+    $enrollment_status = 'Active';
+    $enrollment_status = $ENV{'form.Status'} if (exists($ENV{'form.Status'}));
     #
     # Process the classlist
     while (my ($student,$student_data) = each (%$classlist)) {
@@ -278,8 +268,8 @@ sub PrepareClasslist {
         foreach my $sect (@SelectedSections) {
             if ( (($sect eq 'all') || 
                   ($section eq $sect)) &&
-                 (($studenthash->{'status'} eq $requested_status) || 
-                  ($requested_status eq 'Any')) 
+                 (($studenthash->{'status'} eq $enrollment_status) || 
+                  ($enrollment_status eq 'Any')) 
                  ){
                 push (@Students,$studenthash);
                 last;
@@ -516,20 +506,6 @@ sub PrepareCourseData {
     $top_map = $top if (ref($top));
     @Sequences = @{$sequences} if (ref($sequences) eq 'ARRAY');
     @Assessments = @{$assessments} if (ref($assessments) eq 'ARRAY');
-    #
-    # Compute column widths
-    foreach my $seq (@Sequences) {
-        my $name_length = length($seq->{'title'});
-        my $num_parts = $seq->{'num_assess_parts'};
-        #
-        # Use 3 digits for each the sum and total, which means 7 total...
-        my $num_col = $num_parts+7;
-        if ($num_col < $name_length) {
-            $num_col = $name_length;
-        }
-        $seq->{'base_width'} = $name_length;
-        $seq->{'width'} = $num_col;
-    }
     return;
 }
 
@@ -995,7 +971,10 @@ sub DisplayClasslist {
     $Str .= '<table border="0"><tr><td bgcolor="#777777">'."\n";
     $Str .= '<table border="0" cellpadding="3"><tr bgcolor="#e6ffff">'."\n";
     foreach my $field (@Fields) {
-        $Str .= '<th><a href="/adm/statistics?reportSelected=classlist&sort='.$field.'">'.$field.
+        $Str .= '<th><a href="/adm/statistics?'.
+            'reportSelected=student_assessment&'.
+            'selectstudent=1&'.
+            'sort='.$field.'">'.$field.
             '</a></th>';
     }
     $Str .= '</tr>'."\n";
@@ -1051,10 +1030,20 @@ sub CreateMainMenu {
     &mt('Detailed statistics and graphs of student performance on problems.'),
                  },
                    { internal_name => 'submissiontime_analysis',
-                     name => &mt('Submission Time Analysis'),
+                     name => &mt('Submission Time Plots'),
                      short_description => 
     &mt('Display and analysis of submission times on assessments.'),
                  },
+                   { internal_name => 'student_submission_reports',
+                     name => &mt('Student Submission Reports'),
+                     short_description => 
+    &mt('Prepare Excel spreadsheets of student submissions.'),
+                 },
+                   { internal_name => 'correct_problems_plot',
+                     name => &mt('Correct Problems Plot'),
+                     short_description => 
+    &mt('Display a histogram of student performance in the course.'),
+                 },
 #                   { internal_name => 'student_assessment',
 #                     name => &mt('Problem Status Chart'),
 #                     short_description => 
@@ -1066,7 +1055,7 @@ sub CreateMainMenu {
     #
     # Create the menu
     my $Str;
-    $Str .= '<h1>'.&mt('Please select a report to generate').'</h1>';
+    $Str .= '<h2>'.&mt('Please select a report to generate').'</h2>';
     foreach my $reportdata (@reports) {
         $Str .='    <h3><a href="/adm/statistics?reportSelected='.
             $reportdata->{'internal_name'}.'" >'.
@@ -1117,15 +1106,24 @@ sub handler {
                                              'SelectedStudent']);
     #
     # Give the LON-CAPA page header
-    $r->print(&Apache::lonhtmlcommon::Title('Course Statistics and Charts').
-	      &Apache::loncommon::help_open_faq(139).
-	      &Apache::loncommon::help_open_bug('Statistics and Charts'));
+    $r->print('<html><head><title>'.
+              &mt('Course Statistics and Charts').
+              "</title></head>\n".
+              &Apache::loncommon::bodytag('Course Statistics and Charts'));
     $r->rflush();
     # 
     # Either print out a menu for them or send them to a report
+    &Apache::lonhtmlcommon::clear_breadcrumbs();
+    &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/statistics',
+                                            title=>'Statistics',
+                                            text =>'Statistics',
+                                            faq=>139,
+                                            bug=>'Statistics and Charts'});
     if (! exists($ENV{'form.reportSelected'}) || 
         $ENV{'form.reportSelected'} eq '') {
-        $r->print(&CreateMainMenu());
+        $r->print(&Apache::lonhtmlcommon::breadcrumbs
+                  (undef,&mt('Statistics Main Page')).
+                  &CreateMainMenu());
     } else {
     #
         if (! &Apache::lonmysql::verify_sql_connection()) {
@@ -1165,17 +1163,38 @@ sub handler {
         if($GoToPage eq 'activitylog') {
 #        &Apache::lonproblemstatistics::Activity();
         } elsif($GoToPage eq 'problem_statistics') {
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>'/adm/statistics?reportselected=problem_statistics',
+                  text=>'Overall Problem Statistics'});
             &Apache::lonproblemstatistics::BuildProblemStatisticsPage($r,$c);
         } elsif($GoToPage eq 'problem_analysis') {
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>'/adm/statistics?reportselected=problem_analysis',
+                  text=>'Detailed Problem Analysis'});
             &Apache::lonproblemanalysis::BuildProblemAnalysisPage($r,$c);
         } elsif($GoToPage eq 'submissiontime_analysis') {
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>
+                      '/adm/statistics?reportselected=submissiontime_analysis',
+                      text=>'Submission Time Plots'});
             &Apache::lonsubmissiontimeanalysis::BuildSubmissionTimePage($r,$c);
+        } elsif($GoToPage eq 'student_submission_reports') {
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>
+                  '/adm/statistics?reportselected=student_submission_reports',
+                  text=>'Student Submission Reports'});
+            &Apache::lonstudentsubmissions::BuildStudentSubmissionsPage($r,$c);
+        } elsif($GoToPage eq 'correct_problems_plot') {
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>'/adm/statistics?reportselected=correct_problems_plot',
+                  text=>'Correct Problems Plot'});
+            &Apache::loncorrectproblemplot::BuildCorrectProblemsPage($r,$c);
         } elsif($GoToPage eq 'student_assessment') {
+            &Apache::lonhtmlcommon::clear_breadcrumbs();
+            &Apache::lonhtmlcommon::add_breadcrumb
+                ({href=>'/adm/statistics?reportselected=student_assessment',
+                  text=>'Chart'});
             &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);
-        } elsif($GoToPage eq 'DoDiffGraph' || $GoToPage eq 'PercentWrongGraph') {
-#        &Apache::lonproblemstatistics::BuildGraphicChart($r,$c);
-        } elsif($GoToPage eq 'Correct-problems Plot') {
-            #	&Apache::lonpercentage::BuildPercentageGraph($r,$c);
         }
         #
         $r->print("</form>\n");