--- loncom/interface/spreadsheet/studentcalc.pm 2003/05/23 19:36:04 1.6
+++ loncom/interface/spreadsheet/studentcalc.pm 2003/05/29 18:31:27 1.9
@@ -1,5 +1,5 @@
#
-# $Id: studentcalc.pm,v 1.6 2003/05/23 19:36:04 matthew Exp $
+# $Id: studentcalc.pm,v 1.9 2003/05/29 18:31:27 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -64,12 +64,24 @@ my %Exportrows = ();
my $current_course;
+sub initialize {
+ &initialize_sequence_cache();
+}
+
sub initialize_package {
$current_course = $ENV{'request.course.id'};
&initialize_sequence_cache();
&load_cached_export_rows();
}
+sub ensure_correct_sequence_data {
+ if ($current_course ne $ENV{'request.course.id'}) {
+ &initialize_sequence_cache();
+ $current_course = $ENV{'request.course.id'};
+ }
+ return;
+}
+
sub initialize_sequence_cache {
#
# Set up the sequences and assessments
@@ -312,10 +324,30 @@ sub modify_cell {
return;
}
-sub outsheet_csv {
+sub csv_rows {
+ # writes the meat of the spreadsheet to an excel worksheet. Called
+ # by Spreadsheet::outsheet_excel;
my $self = shift;
- my ($r) = @_;
- $r->print('
csv output is not supported yet
');
+ my ($filehandle) = @_;
+ #
+ # Write a header row
+ $self->csv_output_row($filehandle,undef,
+ ('Container','Assessment title'));
+ #
+ # Write each assessments row
+ if (scalar(@Sequences)< 1) {
+ &initialize_sequence_cache();
+ }
+ foreach my $Sequence (@Sequences) {
+ next if ($Sequence->{'num_assess'} < 1);
+ foreach my $resource (@{$Sequence->{'contents'}}) {
+ my $rownum = $self->get_row_number_from_key($resource->{'symb'});
+ my @assessdata = ($Sequence->{'title'},
+ $resource->{'title'});
+ $self->csv_output_row($filehandle,$rownum,@assessdata);
+ }
+ }
+ return;
}
sub excel_rows {
@@ -353,18 +385,6 @@ sub outsheet_recursive_excel {
my ($r) = @_;
}
-sub set_row_sources {
- my $self = shift;
- while (my ($cell,$value) = each(%{$self->{'formulas'}})) {
- next if ($cell !~ /^A(\d+)/ && $1 > 0);
- my $row = $1;
- (undef,$value) = split('__&&&__',$value);
- $value = 'Default' if (! defined($value));
- $self->{'row_source'}->{$row} = $value;
- }
- return;
-}
-
sub compute {
my $self = shift;
$self->logthis('computing');
@@ -442,6 +462,20 @@ sub compute {
$Exportrows{$student}->{'data'} = \@exportarray;
# save export row
$self->save_export_data();
+ #
+ $self->save() if ($self->need_to_save());
+ return;
+}
+
+sub set_row_sources {
+ my $self = shift;
+ while (my ($cell,$value) = each(%{$self->{'formulas'}})) {
+ next if ($cell !~ /^A(\d+)/ && $1 > 0);
+ my $row = $1;
+ (undef,$value) = split('__&&&__',$value);
+ $value = 'Default' if (! defined($value));
+ $self->{'row_source'}->{$row} = $value;
+ }
return;
}
@@ -453,6 +487,7 @@ sub set_row_numbers {
next if ($row == 0);
my ($symb,undef) = split('__&&&__',$formula);
$self->{'row_numbers'}->{$symb} = $row;
+ $self->{'maxrow'} = $1 if ($1 > $self->{'maxrow'});
}
}