--- loncom/interface/statistics/lonsurveyreports.pm 2005/03/01 22:04:55 1.3
+++ loncom/interface/statistics/lonsurveyreports.pm 2005/03/18 00:20:44 1.7
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonsurveyreports.pm,v 1.3 2005/03/01 22:04:55 matthew Exp $
+# $Id: lonsurveyreports.pm,v 1.7 2005/03/18 00:20:44 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -34,16 +34,19 @@ use Apache::loncoursedata();
use Apache::lonstatistics;
use Apache::lonlocal;
use Apache::lonstathelpers;
+use Spreadsheet::WriteExcel;
use HTML::Entities();
use Time::Local();
-my @SubmitButtons = ({ name => 'PrevProblem',
+my @SubmitButtons = (
+ { name => 'break'},
+ { name => 'PrevProblem',
text => 'Previous Survey' },
{ name => 'NextProblem',
text => 'Next Survey' },
- { name => 'break'},
{ name => 'SelectAnother',
- text => 'Choose a different Survey Problem' },
+ text => 'Choose a different Survey' },
+ { name => 'break'},
{ name => 'Generate',
text => 'Generate Report'},
);
@@ -76,6 +79,7 @@ sub BuildSurveyReportsPage {
#
if (exists($ENV{'form.problemchoice'}) &&
! exists($ENV{'form.SelectAnother'})) {
+ $r->print(' 'x3);
foreach my $button (@SubmitButtons) {
if ($button->{'name'} eq 'break') {
$r->print("
\n");
@@ -90,6 +94,10 @@ sub BuildSurveyReportsPage {
}
#
$r->print('
'. + &mt('Your text file.'). + '
'."\n"); + $r->print(''); + } else { + $r->print(''. + &mt('[_1]:[_2] responses to [_3] may be too long to fit Excel spreadsheet.', + $resource->compTitle, + $resource->part_display($partid), + $respid). + '
'); + $r->rflush(); + $warned_about_size=1; + } + $worksheet->write($rows_output++,0,$data); + } + } elsif (exists($data->{'foil_count'}) && + exists($data->{'foil_responses'})) { + my $respdata = $problem_data->{$partid.'.'.$respid}; + my @rowdata = ('Foil Name','Foil Text','Option', + 'Frequency'); + $worksheet->write_row($rows_output++,0, + \@rowdata,$format->{'h4'}); + # + my @foils = sort(keys(%{$data->{'foil_responses'}})); + foreach my $foilid (@foils) { + my $foil_count = $data->{'foil_count'}->{$foilid}; + my $foiltext = $respdata->{'_Foils'}->{$foilid}->{'text'}; + my $foilname = $respdata->{'_Foils'}->{$foilid}->{'name'}; + $foiltext = &HTML::Entities::decode($foilname); + my $cols_output=0; + $worksheet->write($rows_output,$cols_output++,$foilname); + $worksheet->write($rows_output,$cols_output++,$foiltext); + my $option_start_col = $cols_output; + # + foreach my $option (sort(@{$respdata->{'_Options'}})){ + $cols_output= $option_start_col; + $worksheet->write($rows_output,$cols_output++, + $option); + my $count= + $data->{'foil_responses'}->{$foilid}->{$option}; + $worksheet->write($rows_output,$cols_output++,$count); + $rows_output++; + } + } + } elsif (exists($data->{'_count'}) && + exists($data->{'foil_values'}) && + exists($data->{'map'})) { + my $respdata = $problem_data->{$partid.'.'.$respid}; + my @rowdata = ('Foil Name','Foil Text','Frequency'); + $worksheet->write_row($rows_output++,0, + \@rowdata,$format->{'h4'}); + foreach my $value (sort(keys(%{$data->{'foil_values'}}))) { + undef(@rowdata); + my $foilid = $data->{'map'}->{$value}; + push(@rowdata,$respdata->{'_Foils'}->{$foilid}->{'name'}); + push(@rowdata,$respdata->{'_Foils'}->{$foilid}->{'text'}); + push(@rowdata,$data->{'foil_values'}->{$value}); + $worksheet->write_row($rows_output++,0,\@rowdata); + } + } + $rows_output++; + } #response ids + } # partids + $workbook->close(); + $r->print(''. + &mt('Your Excel spreadsheet.'). + '
'."\n"); + $r->print(''); + $r->rflush(); return; } @@ -259,8 +462,6 @@ sub Compile_Student_Answers { ######################################################### sub make_HTML_report { my ($r,$problem,$ProblemData,$Students) = @_; - &Compile_Student_Answers($problem,$ProblemData,$Students); - # &output_hash('',$ProblemData); my $resource = $problem->{'resource'}; foreach my $partid (@{$resource->parts}) { my @response_ids = $resource->responseIds($partid); @@ -344,7 +545,6 @@ sub make_HTML_report { my $foilid = $data->{'map'}->{$value}; my $foiltext = $ProblemData->{$partid.'.'.$respid}->{'_Foils'}->{$foilid}->{'text'}; my $foilname = $ProblemData->{$partid.'.'.$respid}->{'_Foils'}->{$foilid}->{'name'}; - $sum = $value * $data->{'foil_values'}->{$value}; $tmp .= ''; $Str .= '
'.&mt('Sections').' | '; - $Str .= ''.&mt('Enrollment Status').' | '; + $Str .= ''.&mt('Sections').' | '; + $Str .= ''.&mt('Enrollment Status').' | '; + $Str .= ''.&mt('Output Format').' | '; + $Str .= ''.' '.' | '; $Str .= '
---|---|---|---|---|---|
'."\n"; @@ -407,6 +624,20 @@ sub CreateInterface { $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); $Str .= ' | '; # + $Str .= ''.$output_selector.' | '; + # + # Render problem checkbox + my $prob_checkbox = ''. + &mt('Show problem [_1]',$prob_checkbox).'