[LON-CAPA-cvs] cvs: loncom /interface lonstatistics.pm /interface/statistics lonstudentassessment.pm

stredwic lon-capa-cvs@mail.lon-capa.org
Fri, 26 Jul 2002 19:49:26 -0000


This is a MIME encoded message

--stredwic1027712966
Content-Type: text/plain

stredwic		Fri Jul 26 15:49:26 2002 EDT

  Modified files:              
    /loncom/interface	lonstatistics.pm 
    /loncom/interface/statistics	lonstudentassessment.pm 
  Log:
  Finished combining the chart and student assessment reports, except for
  documentation.  The grade information is displayed like the chart, but
  has more of an interface like student assessment.  Currently, all the
  controls change onchange, except for student section and column 
  reselection multiselects.  These will be updated whenever another 
  interface button submits a form.
  
  
--stredwic1027712966
Content-Type: text/plain
Content-Disposition: attachment; filename="stredwic-20020726154926.txt"

Index: loncom/interface/lonstatistics.pm
diff -u loncom/interface/lonstatistics.pm:1.33 loncom/interface/lonstatistics.pm:1.34
--- loncom/interface/lonstatistics.pm:1.33	Fri Jul 26 12:22:09 2002
+++ loncom/interface/lonstatistics.pm	Fri Jul 26 15:49:26 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # (Publication Handler
 #
-# $Id: lonstatistics.pm,v 1.33 2002/07/26 16:22:09 stredwic Exp $
+# $Id: lonstatistics.pm,v 1.34 2002/07/26 19:49:26 stredwic Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -51,6 +51,7 @@
 use HTML::TokeParser;
 use GDBM_File;
 
+#my $jr;
 
 sub CheckFormElement {
     my ($cache, $ENVName, $cacheName, $default)=@_;
@@ -70,7 +71,8 @@
     $cache->{'reportKey'} = 'false';
 
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
-                                            ['sort','download','reportSelected',
+                                            ['sort','download',
+                                             'reportSelected',
                                              'StudentAssessmentStudent']);
     &CheckFormElement($cache, 'Status', 'Status', 'Active');
     &CheckFormElement($cache, 'postdata', 'reportSelected', 'Class list');
@@ -98,6 +100,7 @@
                       'StudentAssessmentStudent', 'All Students');
     $cache->{'StudentAssessmentStudent'} = 
         &Apache::lonnet::unescape($cache->{'StudentAssessmentStudent'});
+    &CheckFormElement($cache, 'DefaultColumns', 'DefaultColumns', 'false');
 
     if(defined($ENV{'form.Section'})) {
         my @sectionsSelected = (ref($ENV{'form.Section'}) ?
@@ -108,6 +111,24 @@
         $cache->{'sectionsSelected'} = $cache->{'sectionList'};
     }
 
+    my @headingColumns=();
+    my @sequenceColumns=();
+    my $foundColumn = 0;
+    if(defined($ENV{'form.ReselectColumns'})) {
+        my @reselected = (ref($ENV{'form.ReselectColumns'}) ? 
+                          @{$ENV{'form.ReselectColumns'}}
+                          : ($ENV{'form.ReselectColumns'}));
+        foreach (@reselected) {
+            if(/HeadingColumn/) {
+                push(@headingColumns, $_);
+                $foundColumn = 1;
+            } elsif(/SequenceColumn/) {
+                push(@sequenceColumns, $_);
+                $foundColumn = 1;
+            }
+        }
+    }
+
     foreach (keys(%ENV)) {
         if(/form\.Analyze:::/) {
 #            $cache->{'reportSelected'} = 'Analyze';
@@ -120,9 +141,33 @@
             $cache->{'AnalyzeProblem'} = $problem;
             
             &CheckFormElement($cache, 'Interval', 'Interval', '1');
+        } elsif(/form\.HeadingColumn/) {
+            my $value = $_;
+            $value =~ s/form\.//;
+            push(@headingColumns, $value);
+            $foundColumn=1;
+        } elsif(/form\.SequenceColumn/) {
+            my $value = $_;
+            $value =~ s/form\.//;
+            push(@sequenceColumns, $value);
+            $foundColumn=1;
         }
     }
 
+    if($foundColumn) {
+        $cache->{'HeadingsFound'} = join(':', @headingColumns);
+        $cache->{'SequencesFound'} = join(':', @sequenceColumns);;
+    }
+    if(!defined($cache->{'HeadingsFound'}) || 
+       $cache->{'DefaultColumns'} ne 'false') {
+        $cache->{'HeadingsFound'}='HeadingColumnFull Name';
+    }
+    if(!defined($cache->{'SequencesFound'}) ||
+       $cache->{'DefaultColumns'} ne 'false') {
+        $cache->{'SequencesFound'}='All Sequences';
+    }
+    $cache->{'DefaultColumns'} = 'false';
+
     return;
 
     # Select page to display
@@ -602,6 +647,8 @@
 
 sub handler {
     my $r=shift;
+
+#    $jr = $r;
 
     unless(&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) {
         $ENV{'user.error.msg'}=
Index: loncom/interface/statistics/lonstudentassessment.pm
diff -u loncom/interface/statistics/lonstudentassessment.pm:1.3 loncom/interface/statistics/lonstudentassessment.pm:1.4
--- loncom/interface/statistics/lonstudentassessment.pm:1.3	Fri Jul 26 12:22:09 2002
+++ loncom/interface/statistics/lonstudentassessment.pm	Fri Jul 26 15:49:26 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # (Publication Handler
 #
-# $Id: lonstudentassessment.pm,v 1.3 2002/07/26 16:22:09 stredwic Exp $
+# $Id: lonstudentassessment.pm,v 1.4 2002/07/26 19:49:26 stredwic Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -42,10 +42,12 @@
 use Apache::loncoursedata;
 use GDBM_File;
 
+#my $jr;
+
 sub BuildStudentAssessmentPage {
     my ($cacheDB,$students,$courseID,$formName,$headings,$spacing,
         $studentInformation,$r,$c)=@_;
-
+#    $jr = $r;
     my %cache;
     unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
         $r->print('<html><body>Unable to tie database.</body></html>');
@@ -75,23 +77,24 @@
             splice(@$students, $studentIndex, 1);
         }
     }
+    my ($infoHeadings, $infoKeys, $sequenceHeadings, $sequenceKeys,
+        $doNotShow) = 
+        &ShouldShowColumns(\%cache, $headings, $studentInformation);
 
     my $selectedName = &FindSelectedStudent(\%cache, 
                                             $cache{'StudentAssessmentStudent'},
                                             $students);
-    $r->print(&CreateInterface(\%cache, $selectedName, $students, $formName));
+    $r->print(&CreateInterface(\%cache, $selectedName, $students, $formName,
+                               $doNotShow));
 
-    my $Ptr = '';
+    my $Str = '';
     if($selectedName eq 'No Student Selected') {
-	$Ptr .= '<h3><font color=blue>WARNING: ';
-        $Ptr .= 'Please select a student</font></h3>';
-        $r->print($Ptr);
+	$Str .= '<h3><font color=blue>WARNING: ';
+        $Str .= 'Please select a student</font></h3>';
+        $r->print($Str);
         return;
     }
 
-    my ($infoHeadings, $infoKeys, $sequenceHeadings, $sequenceKeys) = 
-        &ShouldShowColumns(\%cache, $headings, $studentInformation);
-
     $r->print(&CreateTableHeadings(\%cache, $spacing, $infoKeys, $infoHeadings,
                                    $sequenceKeys, $sequenceHeadings));
     untie(%cache);
@@ -141,9 +144,9 @@
     }
     $r->print('</pre>'."\n");
     if($selected == 0) {
-	$Ptr .= '<h3><font color=blue>WARNING: ';
-        $Ptr .= 'Please select a student</font></h3>';
-        $r->print($Ptr);
+	$Str .= '<h3><font color=blue>WARNING: ';
+        $Str .= 'Please select a student</font></h3>';
+        $r->print($Str);
     }
 
     return;
@@ -152,33 +155,42 @@
 #---- Student Assessment Web Page --------------------------------------------
 
 sub CreateInterface {
-    my($cache,$selectedName,$students,$formName)=@_;
-    my $Ptr = '';
-    $Ptr .= &CreateLegend();
-    $Ptr .= '<table><tr><td>'."\n";
-    $Ptr .= '<input type="submit" name="PreviousStudent" ';
-    $Ptr .= 'value="Previous Student" />'."\n";
-    $Ptr .= '&nbsp&nbsp&nbsp'."\n";
-    $Ptr .= &Apache::lonhtmlcommon::StudentOptions($cache, $students, 
+    my($cache,$selectedName,$students,$formName,$doNotShow)=@_;
+
+    my $Str = '';
+    $Str .= &CreateLegend();
+    $Str .= '<table><tr><td>'."\n";
+    $Str .= '<input type="submit" name="PreviousStudent" ';
+    $Str .= 'value="Previous Student" />'."\n";
+    $Str .= '&nbsp&nbsp&nbsp'."\n";
+    $Str .= &Apache::lonhtmlcommon::StudentOptions($cache, $students, 
                                                    $selectedName, 
                                                    'StudentAssessment', 
                                                    $formName);
-    $Ptr .= "\n".'&nbsp&nbsp&nbsp'."\n";
-    $Ptr .= '<input type="submit" name="NextStudent" ';
-    $Ptr .= 'value="Next Student" />'."\n";
-    $Ptr .= '</td></tr></table>'."\n";
-    $Ptr .= '<table><tr><td align="center"><b>Select Sections</b>';
-    $Ptr .= '</td></tr>'."\n";
+    $Str .= "\n".'&nbsp&nbsp&nbsp'."\n";
+    $Str .= '<input type="submit" name="NextStudent" ';
+    $Str .= 'value="Next Student" />'."\n";
+    $Str .= '</td></tr></table>'."\n";
+    $Str .= '<table cellspacing="5"><tr>'."\n";
+    $Str .= '<td align="center"><b>Select Sections</b>'."\n";
+    $Str .= '</td>'."\n";
+    $Str .= '<td align="center"><b>Select column to view:</b></td>'."\n";
+    $Str .= '<td></td></tr>'."\n";
 
-    $Ptr .= '<tr><td align="center">'."\n";
+    $Str .= '<tr><td align="center">'."\n";
     my @sections = split(':',$cache->{'sectionList'});
     my @selectedSections = split(':',$cache->{'sectionsSelected'});
-    $Ptr .= &Apache::lonhtmlcommon::MultipleSectionSelect(\@sections,
+    $Str .= &Apache::lonhtmlcommon::MultipleSectionSelect(\@sections,
                                                           \@selectedSections,
                                                           'Statistics');
-    $Ptr .= '</td></tr></table>'."\n";
+    $Str .= '</td><td align="center">';
+    $Str .= &CreateColumnSelectionBox($doNotShow);
+    $Str .= '</td><td>'."\n";
+    $Str .= '<input type="submit" name="DefaultColumns" ';
+    $Str .= 'value="Default Column Display" />'."\n";
+    $Str .= '</td></tr></table>'."\n";
 
-    return $Ptr;
+    return $Str;
 }
 
 sub CreateTableHeadings {
@@ -186,8 +198,14 @@
        $sequenceHeadings)=@_;
 
     my $Str = '';
-    $Str .= '<table border="0" cellpadding="0" cellspacing="0"><tr>'."\n";
+    $Str .= '<table border="0" cellpadding="0" cellspacing="0">'."\n";
+
+    $Str .= '<tr>'."\n";
+    $Str .= &CreateColumnSelectors($infoHeadings, $sequenceHeadings,
+                                   $sequenceKeys);
+    $Str .= '<td></td></tr>'."\n";
 
+    $Str .= '<tr>'."\n";
     my $displayString = '<td align="left"><pre><a href="/adm/statistics?';
     $displayString .= 'sort=LINKDATA">DISPLAYDATA</a>FORMATTING';
     $displayString .= $spacing.'</pre></td>'."\n";
@@ -433,41 +451,22 @@
 =cut
 
 sub CreateColumnSelectionBox {
-    my ($CacheData,$headings)=@_;
-
-    my $missing=0;
-    my $notThere='<tr><td align="right"><b>Select column to view:</b>';
-    my $name;
-    $notThere .= '<td align="left">';
-    $notThere .= '<select name="ChartReselect" size="4" multiple="true">'."\n";
-
-    for(my $index=0; $index<(scalar @$headings); $index++) {
-        if(&ShouldShowColumn($CacheData, 'ChartHeading'.$index)) {
-            next;
-        }
-        $name = $headings->[$index];
-        $notThere .= '<option value="ChartHeading'.$index.'">';
-        $notThere .= $name.'</option>'."\n";
-        $missing++;
-    }
+    my ($doNotShow)=@_;
 
-    foreach my $sequence (split(/\:/,$CacheData->{'orderedSequences'})) {
-        if(&ShouldShowColumn($CacheData, 'ChartSequence'.$sequence)) {
-            next;
-        }
-        $name = $CacheData->{$sequence.':title'};
-        $notThere .= '<option value="ChartSequence'.$sequence.'">';
+    my $notThere = '';
+    $notThere .= '<select name="ReselectColumns" size="4" ';
+    $notThere .= 'multiple="true">'."\n";
+
+    for(my $index=0; $index<$doNotShow->{'count'}; $index++) {
+        my $name = $doNotShow->{$index.':name'};
+        $notThere .= '<option value="';
+        $notThere .= $doNotShow->{$index.':id'}.'">';
         $notThere .= $name.'</option>'."\n";
-        $missing++;
     }
 
-    if($missing) {
-        $notThere .= '</select>';
-    } else {
-        $notThere='<tr><td>';
-    }
+    $notThere .= '</select>';
 
-    return $notThere.'</td></tr>';
+    return $notThere;
 }
 
 =pod
@@ -497,37 +496,24 @@
 =cut
 
 sub CreateColumnSelectors {
-    my ($headings)=@_;
-=pod
-    my $found=0;
-    my ($name, $length, $position);
+    my ($infoHeadings, $sequenceHeadings, $sequenceKeys)=@_;
 
-    my $present = '<tr>';
-    for(my $index=0; $index<(scalar @$headings); $index++) {
+    my $present = '';
+    for(my $index=0; $index<(scalar @$infoHeadings); $index++) {
         $present .= '<td align="left">';
         $present .= '<input type="checkbox" checked="on" ';
-        $present .= 'name="ChartHeading'.$index.'" />';
-        $present .= '</td>';
-        $found++;
+        $present .= 'name="HeadingColumn'.$infoHeadings->[$index].'" />';
+        $present .= '</td>'."\n";
     }
 
-    foreach my $sequence (split(/\:/,$CacheData->{'orderedSequences'})) {
-        if(!&ShouldShowColumn($CacheData, 'ChartSequence'.$sequence)) {
-            next;
-        }
+    for(my $index=0; $index<(scalar @$sequenceHeadings); $index++) {
         $present .= '<td align="left">';
         $present .= '<input type="checkbox" checked="on" ';
-        $present .= 'name="ChartSequence'.$sequence.'" />';
-        $present .= '</td>';
-        $found++;
+        $present .= 'name="SequenceColumn'.$sequenceKeys->[$index].'" />';
+        $present .= '</td>'."\n";
     }
 
-    if(!$found) {
-        $present = '';
-    }
-
-    return $present.'<td></td></tr></form>'."\n";;
-=cut
+    return $present;
 }
 
 #---- END Student Assessment Web Page ----------------------------------------
@@ -602,26 +588,40 @@
     my @sequenceKeys=();
     my @sequenceHeadings=();
 
+    my %doNotShow;
+
     my $index;
+    my $count = 0;
+    my $check = '';
     for($index=0; $index < scalar @$headings; $index++) {
-        push(@infoHeadings, $headings->[$index]);
-        push(@infoKeys, $cacheKey->[$index]);
+        $check = 'HeadingColumn'.$headings->[$index];
+        if($cache->{'HeadingsFound'} =~ /$check/) {
+            push(@infoHeadings, $headings->[$index]);
+            push(@infoKeys, $cacheKey->[$index]);
+        } else {
+            $doNotShow{$count.':name'} = $headings->[$index];
+            $doNotShow{$count.':id'} = 'HeadingColumn'.$headings->[$index];
+            $count++;
+        }
     }
 
     foreach my $sequence (split(/\:/,$cache->{'orderedSequences'})) {
-        push(@sequenceHeadings, $cache->{$sequence.':title'});
-        push(@sequenceKeys, $sequence);
+        $check = 'SequenceColumn'.$sequence;
+        if($cache->{'SequencesFound'} eq 'All Sequences' || 
+           $cache->{'SequencesFound'} =~ /$check/) {
+            push(@sequenceHeadings, $cache->{$sequence.':title'});
+            push(@sequenceKeys, $sequence);
+        } else {
+            $doNotShow{$count.':name'} = $cache->{$sequence.':title'};
+            $doNotShow{$count.':id'} = 'SequenceColumn'.$sequence;
+            $count++;
+        }
     }
 
-#    my $headings=$cache->{'form.ChartHeadings'};
-#    my $sequences=$cache->{'form.ChartSequences'};
-#    if($headings eq 'ALLHEADINGS' || $sequences eq 'ALLSEQUENCES' ||
-#       $headings=~/$test/ || $sequences=~/$test/) {
-#        return 1;
-#    }
+    $doNotShow{'count'} = $count;
 
     return (\@infoHeadings, \@infoKeys, \@sequenceHeadings, 
-            \@sequenceKeys);
+            \@sequenceKeys, \%doNotShow);
 }
 
 #---- END Student Assessment Worker Functions --------------------------------

--stredwic1027712966--