--- loncom/interface/spreadsheet/classcalc.pm 2003/05/16 20:55:11 1.1
+++ loncom/interface/spreadsheet/classcalc.pm 2003/05/27 14:52:45 1.5
@@ -1,5 +1,5 @@
#
-# $Id: classcalc.pm,v 1.1 2003/05/16 20:55:11 matthew Exp $
+# $Id: classcalc.pm,v 1.5 2003/05/27 14:52:45 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,6 +51,7 @@ use Apache::loncoursedata();
use Apache::lonhtmlcommon();
use Apache::Spreadsheet;
use Apache::studentcalc;
+use Apache::lonstatistics();
use HTML::Entities();
use Spreadsheet::WriteExcel;
use Apache::lonnet;
@@ -58,30 +59,40 @@ use Time::HiRes;
@Apache::classcalc::ISA = ('Apache::Spreadsheet');
-sub get_classlist {
+sub html_header {
my $self = shift;
- # Retrieve the classlist
- my @Students = ();
- my ($classlist,$field_names) = &Apache::loncoursedata::get_classlist
- ($self->{'cid'},$self->{'cdom'},$self->{'cnum'});
- while (my ($student,$student_data) = each (%$classlist)) {
- my $studenthash = ();
- for (my $i=0; $i< scalar(@$field_names);$i++) {
- my $field = $field_names->[$i];
- $studenthash->{$field}=$student_data->[$i];
- }
- # This is where we can skip students because they are in
- # the wrong section, have expired or pending roles, whatever...
- push (@Students,$studenthash);
+ my ($toprow,$bottomrow);
+ &Apache::lonstatistics::clear_classlist_variables();
+ foreach (['Sections',&Apache::lonstatistics::SectionSelect('Section','multpile',3)],
+ ['Enrollment Status',&Apache::lonhtmlcommon::StatusOptions(undef,undef,3)],
+ ['Output Format',&Apache::Spreadsheet::output_selector()]) {
+ my ($name,$selector) = @{$_};
+ $toprow .= '
'.$name.' | ';
+ $bottomrow .= ''.$selector.' | ';
}
- my @SortedStudents = sort { $a->{'fullname'} cmp $b->{'fullname'} } @Students;
- return @SortedStudents;
+ return "\n
\n".
+ "".$toprow."
\n".
+ "".$bottomrow."
\n".
+ "
\n";
+}
+
+sub get_classlist {
+ my $self = shift;
+ # Retrieve the classlist and return it
+ return &Apache::lonstatistics::get_students();
}
sub get_title {
my $self = shift;
- my $title = ''.$self->{'coursedesc'}."
\n";
# Section info should be included
+ my @title = ($self->{'coursedesc'}, scalar(localtime(time)) );
+ return @title;
+}
+
+sub get_html_title {
+ my $self = shift;
+ my ($classcalc_title,$time) = $self->get_title();
+ my $title = ''.$classcalc_title."
\n".''.$time."
\n";
return $title;
}
@@ -98,6 +109,7 @@ sub outsheet_html {
my $num_uneditable = 26;
my $num_left = 52-$num_uneditable;
my $tableheader =<<"END";
+
Course |
@@ -131,6 +143,7 @@ END
#
# Prepare to output rows
$tableheader =<<"END";
+
Row |
student | username | domain |
@@ -163,18 +176,64 @@ END
''.$student->{'status'} .' | '.
$self->html_row($num_uneditable,$rownum)."
\n");
}
- $r->print("
\n");
+ $r->print("
\n");
return;
}
-sub outsheet_csv {
+sub excel_rows {
+ # writes the meat of the spreadsheet to an excel worksheet. Called
+ # by Spreadsheet::outsheet_excel;
my $self = shift;
- my ($r) = @_;
+ my ($worksheet,$cols_output,$rows_output) = @_;
+ #
+ # Write a header row
+ $cols_output = 0;
+ foreach my $value ('fullname','username','domain','section','status') {
+ $worksheet->write($rows_output,$cols_output++,$value);
+ }
+ $rows_output++;
+ #
+ # Write each students row
+ foreach my $student ($self->get_classlist()) {
+ $cols_output = 0;
+ my $rownum = $self->get_row_number_from_key
+ ($student->{'username'}.':'.$student->{'domain'});
+ $student->{'section'} = 'none' if ($student->{'section'} eq '-1');
+ my @studentdata = ($student->{'fullname'},
+ $student->{'username'},
+ $student->{'domain'},
+ $student->{'section'},
+ $student->{'status'});
+ $self->excel_output_row($worksheet,$rownum,$rows_output++,
+ @studentdata);
+ }
+ return;
}
-sub outsheet_excel {
+sub csv_rows {
+ # writes the meat of the spreadsheet to an excel worksheet. Called
+ # by Spreadsheet::outsheet_excel;
my $self = shift;
- my ($r) = @_;
+ my ($filehandle) = @_;
+ #
+ # Write a header row
+
+ $self->csv_output_row($filehandle,undef,
+ ('fullname','username','domain','section','status'));
+ #
+ # Write each students row
+ foreach my $student ($self->get_classlist()) {
+ my $rownum = $self->get_row_number_from_key
+ ($student->{'username'}.':'.$student->{'domain'});
+ $student->{'section'} = 'none' if ($student->{'section'} eq '-1');
+ my @studentdata = ($student->{'fullname'},
+ $student->{'username'},
+ $student->{'domain'},
+ $student->{'section'},
+ $student->{'status'});
+ $self->csv_output_row($filehandle,$rownum,@studentdata);
+ }
+ return;
}
sub outsheet_recursive_excel {
@@ -182,15 +241,6 @@ sub outsheet_recursive_excel {
my ($r) = @_;
}
-sub display {
- my $self = shift;
- my ($r) = @_;
- $self->compute($r);
- # display as html/csv/excel/etc....
- $self->outsheet_html($r);
- return;
-}
-
sub compute {
my $self = shift;
my ($r) = @_;