version 1.30, 2005/04/07 06:56:23
|
version 1.32, 2005/05/15 03:06:59
|
Line 101 sub initialize_sequence_cache {
|
Line 101 sub initialize_sequence_cache {
|
for my $sequence ($navmap->getById('0.0'), @all_sequences) { |
for my $sequence ($navmap->getById('0.0'), @all_sequences) { |
if ($navmap->hasResource($sequence,sub { shift->is_problem(); }, 0)){ |
if ($navmap->hasResource($sequence,sub { shift->is_problem(); }, 0)){ |
push(@Sequences,$sequence); |
push(@Sequences,$sequence); |
|
&get_resources($sequence); |
} |
} |
} |
} |
} |
} |
|
|
|
my %res_memoize; |
sub get_resources { |
sub get_resources { |
my ($seq) = @_; |
my ($seq) = @_; |
|
if (exists($res_memoize{$seq->symb()})) { |
|
return @{$res_memoize{$seq->symb()}}; |
|
} |
return () if (! defined($navmap) || ! ref($navmap)); |
return () if (! defined($navmap) || ! ref($navmap)); |
my @resources = $navmap->retrieveResources($seq, |
my @resources = $navmap->retrieveResources($seq, |
sub { shift->is_problem(); }, |
sub { shift->is_problem(); }, |
0,0,0); |
0,0,0); |
|
$res_memoize{$seq->symb()}=\@resources; |
return @resources; |
return @resources; |
} |
} |
|
|
sub clear_package { |
sub clear_package { |
undef(@Sequences); |
undef(@Sequences); |
undef(%Exportrows); |
undef(%Exportrows); |
|
undef(%res_memoize); |
&Apache::assesscalc::clear_package(); |
&Apache::assesscalc::clear_package(); |
} |
} |
|
|
Line 496 END
|
Line 503 END
|
sub compute { |
sub compute { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
my $connection = $r->connection(); |
|
if ($connection->aborted()) { $self->cleanup; return; } |
|
if (! defined($current_course) || |
if (! defined($current_course) || |
$current_course ne $env{'request.course.id'} || |
$current_course ne $env{'request.course.id'} || |
! @Sequences ) { |
! @Sequences ) { |
Line 515 sub compute {
|
Line 520 sub compute {
|
my %c = $self->constants(); |
my %c = $self->constants(); |
foreach my $seq (@Sequences) { |
foreach my $seq (@Sequences) { |
foreach my $resource (&get_resources($seq)) { |
foreach my $resource (&get_resources($seq)) { |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $rownum = $self->get_row_number_from_key($resource->symb); |
my $cell = 'A'.$rownum; |
my $cell = 'A'.$rownum; |
my $assess_filename = 'Default'; |
my $assess_filename = 'Default'; |
Line 525 sub compute {
|
Line 529 sub compute {
|
$self->{'row_source'}->{$rownum} = $assess_filename; |
$self->{'row_source'}->{$rownum} = $assess_filename; |
} |
} |
$f{$cell} = $resource->symb.'__&&&__'.$assess_filename; |
$f{$cell} = $resource->symb.'__&&&__'.$assess_filename; |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
my $assessSheet; |
my $assessSheet; |
$assessSheet = Apache::assesscalc->new($self->{'name'}, |
$assessSheet = Apache::assesscalc->new($self->{'name'}, |
$self->{'domain'}, |
$self->{'domain'}, |
Line 539 sub compute {
|
Line 542 sub compute {
|
$assessSheet->get_title(),$rownum,$assessSheet->calcerror())); |
$assessSheet->get_title(),$rownum,$assessSheet->calcerror())); |
} |
} |
# |
# |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
if ($assessSheet->blackout()) { |
if ($assessSheet->blackout()) { |
$self->blackout(1); |
$self->blackout(1); |
$self->{'blackout_rows'}->{$rownum} = 1; |
$self->{'blackout_rows'}->{$rownum} = 1; |