--- loncom/interface/statistics/lonproblemstatistics.pm 2003/07/28 15:30:46 1.55 +++ loncom/interface/statistics/lonproblemstatistics.pm 2003/09/03 16:07:06 1.58 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.55 2003/07/28 15:30:46 matthew Exp $ +# $Id: lonproblemstatistics.pm,v 1.58 2003/09/03 16:07:06 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -174,6 +174,29 @@ select sections, maps, and output. ############################################### ############################################### +my @OutputOptions = + ( + { name => 'problem statistics grouped by sequence', + value => 'HTML problem statistics grouped', + description => 'Output statistics for the problem parts.', + mode => 'html', + show => 'grouped', + }, + { name => 'problem statistics ungrouped', + value => 'HTML problem statistics ungrouped', + description => 'Output statistics for the problem parts.', + mode => 'html', + show => 'ungrouped', + }, + { name => 'problem statistics, Excel', + value => 'Excel problem statistics', + description => 'Output statistics for the problem parts '. + 'in an Excel workbook', + mode => 'excel', + show => 'all', + }, + ); + sub CreateInterface { my $Str = ''; $Str .= ''."\n"; @@ -201,146 +224,19 @@ sub CreateInterface { $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, $only_seq_with_assessments); $Str .= ''."\n"; $Str .= '
'."\n"; - $Str .= &CreateAndParseOutputSelector(); + my ($html,$outputmode,$show) = + &Apache::lonstatistics::CreateAndParseOutputSelector( + 'statsoutputmode', + 'HTML problem statistics grouped', + @OutputOptions); + $Str .= $html; $Str .= '
'."\n"; $Str .= ''; $Str .= ' 'x5; $Str .= ''; $Str .= ' 'x5; - return $Str; -} - -####################################################### -####################################################### - -=pod - -=item &CreateAndParseOutputSelector() - -Construct a selection list of options for output and parse output selections. -The current output selected is indicated by the values of the two package -variables $output_mode and $show. @OutputOptions holds the descriptions of -the output options and the values for $output_mode and $show. - -Based on code from lonstudentassessment.pm. - -=cut - -####################################################### -####################################################### -my $output_mode; -my $show; - -my @OutputOptions = - ( - { name => 'problem statistics grouped by sequence', - value => 'HTML problem statistics grouped', - description => 'Output statistics for the problem parts.', - mode => 'html', - show => 'grouped', - }, - { name => 'problem statistics ungrouped', - value => 'HTML problem statistics ungrouped', - description => 'Output statistics for the problem parts.', - mode => 'html', - show => 'ungrouped', - }, - { name => 'problem statistics, Excel', - value => 'Excel problem statistics', - description => 'Output statistics for the problem parts '. - 'in an Excel workbook', - mode => 'excel', - show => 'all', - }, - ); - -sub OutputDescriptions { - my $Str = ''; - $Str .= "

Output Modes

\n"; - $Str .= "
\n"; - foreach my $outputmode (@OutputOptions) { - $Str .="
".$outputmode->{'name'}."
\n"; - $Str .="
".$outputmode->{'description'}."
\n"; - } - $Str .= "
\n"; - return $Str; -} - -sub CreateAndParseOutputSelector { - my $Str = ''; - my $elementname = 'statsoutputmode'; - # - # Format for output options is 'mode, restrictions'; - my $selected = 'HTML problem statistics grouped'; - if (exists($ENV{'form.'.$elementname})) { - if (ref($ENV{'form.'.$elementname} eq 'ARRAY')) { - $selected = $ENV{'form.'.$elementname}->[0]; - } else { - $selected = $ENV{'form.'.$elementname}; - } - } - # - # Set package variables describing output mode - $output_mode = 'html'; - $show = 'all'; - foreach my $option (@OutputOptions) { - next if ($option->{'value'} ne $selected); - $output_mode = $option->{'mode'}; - $show = $option->{'show'}; - } - # - # Build the form element - $Str = qq/"; - return $Str; -} - -############################################### -############################################### - -=pod - -=item &Gather_Student_Data() - -Ensures all student data is up to date. - -=cut - -############################################### -############################################### -sub Gather_Student_Data { - my ($r) = @_; - my $c = $r->connection(); - # - my @Sequences = &Apache::lonstatistics::Sequences_with_Assess(); - # - my @Students = @Apache::lonstatistics::Students; - # - # Open the progress window - my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin - ($r,'Statistics Compilation Status', - 'Statistics Compilation Progress', scalar(@Students)); - # - while (my $student = shift @Students) { - return if ($c->aborted()); - my ($status,undef) = &Apache::loncoursedata::ensure_current_data - ($student->{'username'},$student->{'domain'}, - $ENV{'request.course.id'}); - &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, - 'last student'); - } - &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); - $r->rflush(); + return ($Str,$outputmode,$show); } ############################################### @@ -359,10 +255,8 @@ Main interface to problem statistics. sub BuildProblemStatisticsPage { my ($r,$c)=@_; # - $output_mode = 'html'; - $show = 'grouped'; - # - $r->print(&CreateInterface()); + my ($interface,$output_mode,$show) = &CreateInterface(); + $r->print($interface); $r->print(''); $r->print(''); @@ -371,7 +265,7 @@ sub BuildProblemStatisticsPage { return; } # - &Gather_Student_Data($r); + &Apache::lonstatistics::Gather_Student_Data($r); # # if ($output_mode eq 'html') { @@ -869,6 +763,9 @@ sub DrawGraph { $title = '' if (! defined($title)); $xaxis = '' if (! defined($xaxis)); $yaxis = '' if (! defined($yaxis)); + $title = &Apache::lonnet::escape($title); + $xaxis = &Apache::lonnet::escape($xaxis); + $yaxis = &Apache::lonnet::escape($yaxis); # my $sendValues = join(',', @$values); my $sendCount = scalar(@$values);