--- loncom/interface/statistics/lonsurveyreports.pm 2005/03/01 22:04:55 1.3 +++ loncom/interface/statistics/lonsurveyreports.pm 2005/03/17 19:02:45 1.6 @@ -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.6 2005/03/17 19:02:45 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,6 +34,7 @@ use Apache::loncoursedata(); use Apache::lonstatistics; use Apache::lonlocal; use Apache::lonstathelpers; +use Spreadsheet::WriteExcel; use HTML::Entities(); use Time::Local(); @@ -90,6 +91,9 @@ sub BuildSurveyReportsPage { } # $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; +} + +######################################################### +######################################################### +## ## make_HTML_report ## ######################################################### ######################################################### 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 +469,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 +546,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).'