--- loncom/interface/spreadsheet/classcalc.pm	2003/05/27 14:52:45	1.5
+++ loncom/interface/spreadsheet/classcalc.pm	2003/05/29 18:31:27	1.7
@@ -1,5 +1,5 @@
 #
-# $Id: classcalc.pm,v 1.5 2003/05/27 14:52:45 matthew Exp $
+# $Id: classcalc.pm,v 1.7 2003/05/29 18:31:27 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -59,6 +59,18 @@ use Time::HiRes;
 
 @Apache::classcalc::ISA = ('Apache::Spreadsheet');
 
+##
+## Package variable
+##
+
+my @Students;
+
+sub initialize {
+    &Apache::lonstatistics::clear_classlist_variables();
+    @Students = &Apache::lonstatistics::get_students();
+    return;
+}
+
 sub html_header {
     my $self = shift;
     my ($toprow,$bottomrow);
@@ -76,12 +88,6 @@ sub html_header {
         "</table>\n</p>";
 }
 
-sub get_classlist {
-    my $self = shift;
-    # Retrieve the classlist and return it 
-    return &Apache::lonstatistics::get_students();
-}
-
 sub get_title {
     my $self = shift;
     # Section info should be included
@@ -159,7 +165,7 @@ END
     }
     #
     my $num_output = 0;
-    foreach my $student ($self->get_classlist()) {
+    foreach my $student (@Students) {
 	if ($num_output++ % 50 == 0) {
 	    $r->print("</table>\n".$tableheader);
 	}
@@ -194,7 +200,7 @@ sub excel_rows {
     $rows_output++;    
     #
     # Write each students row
-    foreach my $student ($self->get_classlist()) {
+    foreach my $student (@Students) {
         $cols_output = 0;
 	my $rownum = $self->get_row_number_from_key
 	    ($student->{'username'}.':'.$student->{'domain'});
@@ -222,7 +228,7 @@ sub csv_rows {
                           ('fullname','username','domain','section','status'));
     #
     # Write each students row
-    foreach my $student ($self->get_classlist()) {
+    foreach my $student (@Students) {
 	my $rownum = $self->get_row_number_from_key
 	    ($student->{'username'}.':'.$student->{'domain'});
         $student->{'section'} = 'none' if ($student->{'section'} eq '-1');
@@ -247,12 +253,11 @@ sub compute {
     $self->initialize_safe_space();
     my %c = $self->constants();
     my %f = $self->formulas();
-    my @Students = $self->get_classlist();
     my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
         ($r,'Spreadsheet Computation Status',
          'Spreadsheet Computation', scalar(@Students));
     &Apache::studentcalc::initialize_package();
-    foreach my $student ($self->get_classlist()) {
+    foreach my $student (@Students) {
         my $sname = $student->{'username'}.':'.$student->{'domain'};
 	my $studentsheet = Apache::studentcalc->new
 	    ($student->{'username'},$student->{'domain'},undef);
@@ -277,6 +282,7 @@ sub compute {
     $self->constants(\%c);
     $self->formulas(\%f);
     $self->calcsheet();
+    $self->save() if ($self->need_to_save());
 }
 
 1;