--- loncom/interface/lonhtmlcommon.pm	2002/07/22 21:21:32	1.2
+++ loncom/interface/lonhtmlcommon.pm	2002/08/30 15:35:08	1.9
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common html routines
 #
-# $Id: lonhtmlcommon.pm,v 1.2 2002/07/22 21:21:32 www Exp $
+# $Id: lonhtmlcommon.pm,v 1.9 2002/08/30 15:35:08 stredwic Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -30,16 +30,45 @@ package Apache::lonhtmlcommon;
 
 use strict;
 
+sub AscendOrderOptions {
+    my ($order, $page, $formName)=@_;
+
+    my $OpSel1 = '';
+    my $OpSel2 = '';
+
+    if($order eq 'Ascending') {
+        $OpSel1 = ' selected';
+    } else {
+        $OpSel2 = ' selected';
+    }
+
+    my $Str = '';
+    $Str .= '<select name="'.(($page)?$page:'').'Ascend"';
+    if($formName) {
+        $Str .= ' onchange="document.'.$formName.'.submit()"';
+    }
+    $Str .= '>'."\n";
+    $Str .= '<option'.$OpSel1.'>Ascending</option>'."\n".
+	    '<option'.$OpSel2.'>Descending</option>'."\n";
+    $Str .= '</select>'."\n";
+
+    return $Str;
+}
+
 sub MapOptions {
-    my ($data, $page)=@_;
+    my ($data, $page, $formName)=@_;
     my $Str = '';
     $Str .= '<select name="';
-    $Str .= (($page)?$page:'').'Map">'."\n";
+    $Str .= (($page)?$page:'').'Maps"';
+    if($formName) {
+        $Str .= ' onchange="document.'.$formName.'.submit()"';
+    }
+    $Str .= '>'."\n";
 
     my $selected = 0;
     foreach my $sequence (split(':',$data->{'orderedSequences'})) {
 	$Str .= '<option';
-        if($data->{$page.'Map'} eq $data->{$sequence.':title'}) {
+        if($data->{$page.'Maps'} eq $data->{$sequence.':title'}) {
             $Str .= ' selected';
             $selected = 1;
         }
@@ -56,19 +85,87 @@ sub MapOptions {
     return $Str;
 }
 
-sub StudentOptions {
-    my ($cache, $students, $selectedName, $page)=@_;
+sub ProblemOptions {
+    my ($data, $page, $map, $formName)=@_;
+    my $Str = '';
+    $Str .= '<select name="';
+    $Str .= (($page)?$page:'').'ProblemSelect"';
+    if($formName) {
+        $Str .= ' onchange="document.'.$formName.'.submit()"';
+    }
+    $Str .= '>'."\n";
+
+    my $selected = 0;
+    foreach my $sequence (split(':',$data->{'orderedSequences'})) {
+	if($data->{$sequence.':title'} eq $map || $map eq 'All Maps') {
+	    foreach my $problem (split(':', $data->{$sequence.':problems'})) {
+		$Str .= '<option';
+		if($data->{$page.'ProblemSelect'} eq 
+		   $data->{$problem.':title'}) {
+		    $Str .= ' selected';
+		    $selected = 1;
+		}
+		$Str .= '>'.$data->{$problem.':title'}.'</option>'."\n";
+	    }
+	}
+    }
+    $Str .= '<option';
+    if(!$selected) {
+        $Str .= ' selected';
+    }
+    $Str .= '>All Problems</option>'."\n";
 
+    $Str .= '</select>'."\n";
+
+    return $Str;
+}
+
+sub PartOptions {
+    my ($data, $page, $parts, $formName)=@_;
     my $Str = '';
-    $Str = '<select name="'.(($page)?$page:'').'Student">'."\n";
 
-    my $selected=0;
+    if(!defined($parts)) {
+	return '';
+    }
+
+    $Str .= '<select name="';
+    $Str .= (($page)?$page:'').'PartSelect"';
+    if($formName) {
+        $Str .= ' onchange="document.'.$formName.'.submit()"';
+    }
+    $Str .= '>'."\n";
+
+    my $selected = 0;
+    foreach my $part (@$parts) {
+	$Str .= '<option';
+	if($data->{$page.'PartSelect'} eq $part) {
+	    $Str .= ' selected';
+	    $selected = 1;
+	}
+	$Str .= '>'.$part.'</option>'."\n";	     
+    }
     $Str .= '<option';
-    if($selectedName eq 'All Students') {
+    if(!$selected) {
         $Str .= ' selected';
-        $selected = 1;
     }
-    $Str .= '>All Students</option>'."\n";
+    $Str .= '>All Parts</option>'."\n";
+
+    $Str .= '</select>'."\n";
+
+    return $Str;
+}
+
+sub StudentOptions {
+    my ($cache, $students, $selectedName, $page, $formName)=@_;
+
+    my $Str = '';
+    $Str .= '<select name="'.(($page)?$page:'').'Student"';
+    if($formName) {
+        $Str .= ' onchange="document.'.$formName.'.submit()"';
+    }
+    $Str .= '>'."\n";
+
+    my $selected=0;
 
     foreach (@$students) {
 	$Str .= '<option';
@@ -82,11 +179,18 @@ sub StudentOptions {
     }
 
     $Str .= '<option';
-    if(!$selected) {
+    if($selectedName eq 'No Student Selected') {
         $Str .= ' selected';
+        $selected = 1;
     }
     $Str .= '>No Student Selected</option>'."\n";
 
+    $Str .= '<option';
+    if(!$selected) {
+        $Str .= ' selected';
+    }
+    $Str .= '>All Students</option>'."\n";
+
     $Str .= '</select>'."\n";
 
     return $Str;
@@ -115,60 +219,35 @@ sub StatusOptions {
     $Str .= '</select>'."\n";
 }
 
-sub Title {
-    my ($pageName)=@_;
+sub MultipleSectionSelect {
+    my ($sections,$selectedSections)=@_;
 
     my $Str = '';
+    $Str .= '<select name="Section" multiple="true" size="4">'."\n";
 
-    $Str .= '<html><head><title>'.$pageName.'</title></head>'."\n";
-    $Str .= '<body bgcolor="#FFFFFF">'."\n";
-    $Str .= '<script>window.focus(); window.width=500;window.height=500;';
-    $Str .= '</script>'."\n";
-    $Str .= '<table width="100%"><tr><td valign="top">';
-    $Str .= '<h1> Course: ';
-    $Str .= $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
-    $Str .= '</h1></td><td align="right">'."\n";
-    $Str .= '<img align="right" src=/adm/lonIcons/lonlogos.gif>';
-    $Str .= '</td></tr></table>'."\n";
-#    $Str .= '<h3>Current Time: '.localtime(time).'</h3><br><br><br>'."\n";
+    foreach (@$sections) {
+        $Str .= '<option';
+        foreach my $selected (@$selectedSections) {
+            if($_ eq $selected) {
+                $Str .= ' selected=""';
+            }
+        }
+        $Str .= '>'.$_.'</option>'."\n";
+    }
+    $Str .= '</select>'."\n";
 
     return $Str;
 }
 
-sub CreateStatisticsMainMenu {
-    my ($status, $reports)=@_;
+sub Title {
+    my ($pageName)=@_;
 
     my $Str = '';
 
-    $Str .= '<table border="0"><tbody><tr>'."\n";
-    $Str .= '<td></td><td></td>'."\n";
-    $Str .= '<td align="center"><b>Analysis Reports:</b></td>'."\n";
-    $Str .= '<td align="center"><b>Student Status:</b></td></tr>'."\n";
-    $Str .= '<tr>'."\n";
-    $Str .= '<td align="center"><input type="submit" name="Refresh" ';
-    $Str .= 'value="Refresh" /></td>'."\n";
-    $Str .= '<td align="center"><input type="submit" name="DownloadAll" ';
-    $Str .= 'value="Update All Student Data" /></td>'."\n";
-    $Str .= '<td align="center">';
-    $Str .= '<select name="reportSelected" onchange="document.';
-    $Str .= 'Statistics.submit()">'."\n";
-
-    foreach (sort(keys(%$reports))) {
-        next if($_ eq 'reportSelected');
-        $Str .= '<option name="'.$_.'"';
-        if($reports->{'reportSelected'} eq $reports->{$_}) {
-            $Str .= ' selected=""';
-        }
-        $Str .= '>'.$reports->{$_}.'</option>'."\n";
-    }
-    $Str .= '</select></td>'."\n";
-
-    $Str .= '<td align="center">';
-    $Str .= &StatusOptions($status, 'Statistics');
-    $Str .= '</td>'."\n";
-
-    $Str .= '</tr></tbody></table>'."\n";
-    $Str .= '<hr>'."\n";
+    $Str .= '<html><head><title>'.$pageName.'</title></head>'."\n";
+    $Str .= &Apache::loncommon::bodytag($pageName)."\n";
+    $Str .= '<script>window.focus(); window.width=500;window.height=500;';
+    $Str .= '</script>'."\n";
 
     return $Str;
 }
@@ -181,11 +260,11 @@ This function generates the column headi
 
 =over 4
 
-Inputs: $CacheData, $studentInformation, $headings, $spacePadding
+Inputs: $CacheData, $keyID, $headings, $spacePadding
 
 $CacheData: pointer to a hash tied to the cached data database
 
-$studentInformation: a pointer to an array containing the names of the data 
+$keyID: a pointer to an array containing the names of the data 
 held in a column and is used as part of a key into $CacheData
 
 $headings: The names of the headings for the student information
@@ -200,19 +279,26 @@ $Str: A formatted string of the table co
 
 =cut
 
-sub CreateStudentInformationHeadings {
-    my ($data,$studentInformation,$headings,$displayString)=@_;
+sub CreateHeadings {
+    my ($data,$keyID,$headings,$displayString,$format)=@_;
     my $Str='';
+    my $formatting = '';
 
     for(my $index=0; $index<(scalar @$headings); $index++) {
-#        if(!&ShouldShowColumn($data, 'ChartHeading'.$index)) {
-#            next;
-#        }
- 	my $data=$headings->[$index];
-        my $linkdata=$studentInformation->[$index];
+ 	my $currentHeading=$headings->[$index];
+        if($format eq 'preformatted') {
+            my @dataLength=split(//,$currentHeading);
+            my $length=scalar @dataLength;
+            $formatting = (' 'x
+                      ($data->{$keyID->[$index].':columnWidth'}-$length));
+        }
+        my $linkdata=$keyID->[$index];
+
         my $tempString = $displayString;
         $tempString =~ s/LINKDATA/$linkdata/;
-        $tempString =~ s/DISPLAYDATA/$data/;
+        $tempString =~ s/DISPLAYDATA/$currentHeading/;
+        $tempString =~ s/FORMATTING/$formatting/;
+
         $Str .= $tempString;
     }
 
@@ -228,13 +314,13 @@ username, domain, section, full name, an
 
 =over 4
 
-Input: $cache, $name, $studentInformation, $spacePadding
+Input: $cache, $name, $keyID, $spacePadding
 
 $cache: This is a pointer to a hash that is tied to the cached data
 
 $name:  The name and domain of the current student in name:domain format
 
-$studentInformation: A pointer to an array holding the names used to
+$keyID: A pointer to an array holding the names used to
 
 remove data from the hash.  They represent the name of the data to be removed.
 
@@ -249,26 +335,60 @@ $Str: Formatted string.
 =cut
 
 sub FormatStudentInformation {
-    my ($cache,$name,$studentInformation,$spacePadding)=@_;
+    my ($data,$name,$keyID,$displayString,$format)=@_;
     my $Str='';
-    my $data;
+    my $currentColumn;
 
-    for(my $index=0; $index<(scalar @$studentInformation); $index++) {
-        if(!&ShouldShowColumn($cache, 'ChartHeading'.$index)) {
-            next;
+    for(my $index=0; $index<(scalar @$keyID); $index++) {
+        $currentColumn=$data->{$name.':'.$keyID->[$index]};
+
+        if($format eq 'preformatted') {
+            my @dataLength=split(//,$currentColumn);
+            my $length=scalar @dataLength;
+            $currentColumn.= (' 'x
+                     ($data->{$keyID->[$index].':columnWidth'}-$length));
         }
-        $data=$cache->{$name.':'.$studentInformation->[$index]};
-	$Str .= $data;
 
-	my @dataLength=split(//,$data);
-	my $length=scalar @dataLength;
-	$Str .= (' 'x($cache->{$studentInformation->[$index].'Length'}-
-                      $length));
-	$Str .= $spacePadding;
+        my $tempString = $displayString;
+        $tempString =~ s/DISPLAYDATA/$currentColumn/;
+
+        $Str .= $tempString;
     }
 
     return $Str;
 }
 
+# Create progress
+sub Create_PrgWin {
+    my ($r, $title, $heading)=@_;
+    $r->print('<script>'.
+    "popwin=open(\'\',\'popwin\',\'width=400,height=100\');".
+    "popwin.document.writeln(\'<html><body bgcolor=\"#88DDFF\">".
+              "<title>$title</title>".
+              "<h4>$heading</h4>".
+              "<form name=popremain>".
+              "<input type=text size=35 name=remaining value=Starting></form>".
+              "</body></html>\');".
+    "popwin.document.close();".
+    "</script>");
+
+    $r->rflush();
+}
+
+# update progress
+sub Update_PrgWin {
+    my ($displayString,$r)=@_;
+    $r->print('<script>popwin.document.popremain.remaining.value="'.
+              $displayString.'";</script>');
+    $r->rflush();
+}
+
+# close Progress Line
+sub Close_PrgWin {
+    my ($r)=@_;
+    $r->print('<script>popwin.close()</script>'."\n");
+    $r->rflush(); 
+}
+
 1;
 __END__