version 1.142, 2002/11/19 19:20:50
|
version 1.143, 2002/11/19 22:36:09
|
Line 1149 sub exportdata {
|
Line 1149 sub exportdata {
|
|
|
|
|
sub update_student_sheet{ |
sub update_student_sheet{ |
my ($sheet,$c) = @_; |
my ($sheet,$r,$c) = @_; |
# Load in the studentcalc sheet |
# Load in the studentcalc sheet |
&readsheet($sheet,'default_studentcalc'); |
&readsheet($sheet,'default_studentcalc'); |
# Determine the structure (contained assessments, etc) of the sheet |
# Determine the structure (contained assessments, etc) of the sheet |
Line 1157 sub update_student_sheet{
|
Line 1157 sub update_student_sheet{
|
# Load in the cached sheets for this student |
# Load in the cached sheets for this student |
&cachedssheets($sheet); |
&cachedssheets($sheet); |
# Load in the (possibly cached) data from the assessment sheets |
# Load in the (possibly cached) data from the assessment sheets |
&loadstudent($sheet,$c); |
&loadstudent($sheet,$r,$c); |
# Compute the sheet |
# Compute the sheet |
&calcsheet($sheet); |
&calcsheet($sheet); |
} |
} |
Line 1189 sub sort_indicies {
|
Line 1189 sub sort_indicies {
|
my @sortidx=(); |
my @sortidx=(); |
# |
# |
if ($sheet->{'sheettype'} eq 'classcalc') { |
if ($sheet->{'sheettype'} eq 'classcalc') { |
my @sortby=(); |
my @sortby=(undef); |
# Skip row 0 |
# Skip row 0 |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
my (undef,$sname,$sdom,$fullname,$section,$id) = |
my (undef,$sname,$sdom,$fullname,$section,$id) = |
Line 1199 sub sort_indicies {
|
Line 1199 sub sort_indicies {
|
} |
} |
@sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; |
@sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; |
} elsif ($sheet->{'sheettype'} eq 'studentcalc') { |
} elsif ($sheet->{'sheettype'} eq 'studentcalc') { |
my @sortby=(); |
my @sortby1=(undef); |
|
my @sortby2=(undef); |
# Skip row 0 |
# Skip row 0 |
&Apache::lonnet::logthis('starting sort for studentcalc'); |
|
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
my (undef,$symb,$uname,$udom,$mapid,$resid,$title) = |
my (undef,$symb,$uname,$udom,$mapid,$resid,$title) = |
split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}}); |
split(':',$sheet->{'rowlabel'}->{$sheet->{'f'}->{'A'.$row}}); |
Line 1210 sub sort_indicies {
|
Line 1210 sub sort_indicies {
|
if ($sequence eq '') { |
if ($sequence eq '') { |
$sequence = $symb; |
$sequence = $symb; |
} |
} |
push (@sortby, $sequence); |
push (@sortby1, $sequence); |
|
push (@sortby2, $title); |
push (@sortidx, $row); |
push (@sortidx, $row); |
} |
} |
@sortidx = sort { $sortby[$a] cmp $sortby[$b]; } @sortidx; |
@sortidx = sort { $sortby1[$a] cmp $sortby1[$b] || |
|
$sortby2[$a] cmp $sortby2[$b] } @sortidx; |
} else { |
} else { |
my @sortby=(); |
my @sortby=(undef); |
# Skip row 0 |
# Skip row 0 |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
for (my $row=1;$row<=$sheet->{'maxrow'};$row++) { |
push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}')); |
push (@sortby, $sheet->{'safe'}->reval('$f{"A'.$row.'"}')); |
Line 1361 END
|
Line 1363 END
|
next if (($sheet->{'sheettype'} eq 'assesscalc') && |
next if (($sheet->{'sheettype'} eq 'assesscalc') && |
(! $ENV{'form.showall'}) && |
(! $ENV{'form.showall'}) && |
($rowdata[0]->{'value'} =~ /^\s*$/)); |
($rowdata[0]->{'value'} =~ /^\s*$/)); |
if ($sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) { |
if (! $ENV{'form.showall'} && |
|
$sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) { |
my $row_is_empty = 1; |
my $row_is_empty = 1; |
foreach my $cell (@rowdata) { |
foreach my $cell (@rowdata) { |
if ($cell->{'value'} !~ /^\s*$/) { |
if ($cell->{'value'} !~ /^\s*$/) { |
Line 1369 END
|
Line 1372 END
|
last; |
last; |
} |
} |
} |
} |
next if $row_is_empty; |
next if ($row_is_empty); |
} |
} |
# |
# |
my $defaultbg='#E0FF'; |
my $defaultbg='#E0FF'; |
Line 1535 END
|
Line 1538 END
|
# Create a new spreadsheet |
# Create a new spreadsheet |
my $studentsheet = &makenewsheet($sname,$sdom,'studentcalc',undef); |
my $studentsheet = &makenewsheet($sname,$sdom,'studentcalc',undef); |
# Read in the spreadsheet definition |
# Read in the spreadsheet definition |
&update_student_sheet($studentsheet,$c); |
&update_student_sheet($studentsheet,$r,$c); |
# Stuff the sheet into excel |
# Stuff the sheet into excel |
&export_sheet_as_excel($studentsheet,$student_excel_worksheet); |
&export_sheet_as_excel($studentsheet,$student_excel_worksheet); |
my $totaltime = int((time - $starttime) / $count * $sheet->{'maxrow'}); |
my $totaltime = int((time - $starttime) / $count * $sheet->{'maxrow'}); |
Line 1651 sub export_sheet_as_excel {
|
Line 1654 sub export_sheet_as_excel {
|
# Loop through the rows and output them one at a time |
# Loop through the rows and output them one at a time |
foreach my $rownum (@Rows) { |
foreach my $rownum (@Rows) { |
my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); |
my ($rowlabel,@rowdata) = &get_row($sheet,$rownum); |
next if ($rowlabel =~ /^\s*$/); |
next if ($rowlabel =~ /^[\s]*$/); |
$cols_output = 0; |
$cols_output = 0; |
my $label = &format_excel_rowlabel($rowlabel); |
my $label = &format_excel_rowlabel($rowlabel); |
|
if ( ! $ENV{'form.showall'} && |
|
$sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) { |
|
my $row_is_empty = 1; |
|
foreach my $cell (@rowdata) { |
|
if ($cell->{'value'} !~ /^\s*$/) { |
|
$row_is_empty = 0; |
|
last; |
|
} |
|
} |
|
next if ($row_is_empty); |
|
} |
$worksheet->write($rows_output,$cols_output++,$label); |
$worksheet->write($rows_output,$cols_output++,$label); |
if (ref($label)) { |
if (ref($label)) { |
$cols_output = (scalar(@$label)); |
$cols_output = (scalar(@$label)); |
Line 1680 sub outsheet_xml {
|
Line 1694 sub outsheet_xml {
|
## Outsheet - calls other outsheet_* functions |
## Outsheet - calls other outsheet_* functions |
## |
## |
sub outsheet { |
sub outsheet { |
my ($r,$sheet)=@_; |
my ($sheet,$r)=@_; |
if (! exists($ENV{'form.output'})) { |
if (! exists($ENV{'form.output'})) { |
$ENV{'form.output'} = 'HTML'; |
$ENV{'form.output'} = 'HTML'; |
} |
} |
Line 3211 ENDSCRIPT
|
Line 3225 ENDSCRIPT
|
#value='Insert Row Bottom'><br> |
#value='Insert Row Bottom'><br> |
#ENDINSERTBUTTONS |
#ENDINSERTBUTTONS |
# Print out sheet |
# Print out sheet |
&outsheet($r,$sheet); |
&outsheet($sheet,$r); |
$r->print('</form></body></html>'); |
$r->print('</form></body></html>'); |
# Done |
# Done |
return OK; |
return OK; |