--- loncom/interface/statistics/lonproblemstatistics.pm 2013/12/30 14:05:21 1.122.2.2 +++ loncom/interface/statistics/lonproblemstatistics.pm 2018/03/07 12:24:27 1.128 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.122.2.2 2013/12/30 14:05:21 raeburn Exp $ +# $Id: lonproblemstatistics.pm,v 1.128 2018/03/07 12:24:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -52,6 +52,7 @@ package Apache::lonproblemstatistics; use strict; use Apache::lonnet; use Apache::loncommon(); +use Apache::lonquickgrades(); use Apache::lonhtmlcommon; use Apache::loncoursedata; use Apache::lonstatistics; @@ -182,7 +183,7 @@ my @Fields = ( format => '%d', sortable => 'yes', graphable => 'yes', - long_title => 'Minumum Number of Tries', + long_title => 'Minimum Number of Tries', selectable => 'yes', defaultselected => 'yes', }, @@ -438,7 +439,7 @@ my @SeqFields = ( format => '%4.2f', sortable => 'no', graphable => 'no', - long_title => 'Minumum Sequence Score', + long_title => 'Minimum Sequence Score', selectable => 'yes', defaultselected => 'no', }, @@ -493,7 +494,7 @@ my @SeqFields = ( format => '%4.2f', sortable => 'no', graphable => 'no', - long_title => 'Minumum Number of Correct Problems', + long_title => 'Minimum Number of Correct Problems', selectable => 'yes', defaultselected => 'no', }, @@ -586,14 +587,14 @@ sub parse_field_selection { sub field_selection_input { my $Str = '\n"; } @@ -618,7 +619,6 @@ sub CreateInterface { &parse_field_selection(); # my $Str = ''; - $Str .= '

'; $Str .= &Apache::loncommon::start_data_table(); $Str .= &Apache::loncommon::start_data_table_header_row(); $Str .= ''.&mt('Sections').''; @@ -644,14 +644,13 @@ sub CreateInterface { $Str .= &field_selection_input(); $Str .= ''; $Str .= &plot_dropdown(); - $Str .= ''."\n"; + $Str .= "\n"; $Str .= ''; $Str .= &Apache::lonstathelpers::limit_by_time_form(); $Str .= ''."\n"; $Str .= &Apache::loncommon::end_data_table_row(); $Str .= &Apache::loncommon::end_data_table(); # - $Str .= '

'; $Str .= ''; $Str .= (' 'x10); @@ -706,6 +705,7 @@ sub BuildProblemStatisticsPage { # Finally let the user know we are here $r->print(&Apache::lonhtmlcommon::breadcrumbs('Overall Problem Statistics', 'Statistics_Overall_Key')); + &Apache::lonquickgrades::startGradeScreen($r,'statistics'); my $interface = &CreateInterface($r); $r->print($interface); @@ -759,9 +759,10 @@ sub BuildProblemStatisticsPage { &Apache::lonstatistics::section_and_enrollment_description(). '

'); my $count = 0; + my $include_tools = 1; foreach my $seq (@sequences) { my @resources = - &Apache::lonstathelpers::get_resources($navmap,$seq); + &Apache::lonstathelpers::get_resources($navmap,$seq,$include_tools); $count += scalar(@resources); } if ($count > 10) { @@ -801,9 +802,8 @@ sub output_sequence_statistics { $r->print('

'.&mt('Sequence Statistics'). &Apache::loncommon::help_open_topic('Statistics_Sequence'). '

'); - $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row()); + $r->print(&Apache::loncommon::start_data_table()); $r->print(&sequence_html_header()); - $r->print(&Apache::loncommon::end_data_table_header_row()); foreach my $seq (@sequences) { last if ($c->aborted); &compute_sequence_statistics($seq); @@ -825,7 +825,7 @@ sub output_sequence_statistics { sub output_html_by_sequence { my ($r) = @_; my $c = $r->connection(); - $r->print('
'.&html_preamble()); + $r->print('
'.&html_preamble()); # foreach my $seq (@sequences) { last if ($c->aborted); @@ -929,14 +929,16 @@ sub statistics_table_header { next if ($options =~ /no $field->{'name'}/); next if ($field->{'selected'} ne 'yes'); $header_row .= ''; + my $header_row_text = &mt($field->{'title'}); if (exists($field->{'sortable'}) && $field->{'sortable'} eq 'yes') { - $header_row .= '{'name'}."'". - ';document.Statistics.submit();">'; - } - $header_row .= &mt($field->{'title'}); - if ($options =~ /sortable/) { - $header_row.= ''; + ';document.Statistics.submit();">'. + $header_row_text. + ''; + } else { + $header_row .= $header_row_text; } if ($options !~ /no plots/ && exists($field->{'graphable'}) && @@ -953,13 +955,13 @@ sub statistics_table_header { } sub sequence_html_header { - my $Str .= ''; + my $Str .= &Apache::loncommon::start_data_table_header_row(); foreach my $field (@SeqFields) { # next if ($field->{'selected'} ne 'yes'); $Str .= '{'title'}.''; + $Str .= '>'.&mt($field->{'title'}).''; } - $Str .= ''; + $Str .= &Apache::loncommon::end_data_table_header_row(); return $Str; } @@ -967,7 +969,7 @@ sub sequence_html_header { sub sequence_html_output { my ($seq) = @_; my $data = $SeqStat{$seq->symb}; - my $row = ''; + my $row = &Apache::loncommon::start_data_table_row(); foreach my $field (@SeqFields) { next if ($field->{'selected'} ne 'yes'); $row .= 'write($rows_output,$cols_output++,$time_string); @@ -1362,7 +1365,7 @@ sub Excel_output { # # Put the date in there too $excel_sheet->write($rows_output,$cols_output++, - 'Compiled on '.localtime(time)); + &mt('Compiled on [_1]',&Apache::lonlocal::locallocaltime(time))); # $rows_output++; $cols_output=0; @@ -1467,8 +1470,9 @@ sub write_headers { ################################################## sub compute_statistics_on_sequence { my ($seq) = @_; + my $include_tools = 1; my @Data; - foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq)) { + foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq,$include_tools)) { foreach my $part (@{$res->parts}) { next if (($res->is_survey($part)) || ($res->is_anonsurvey($part))) ; # @@ -1646,9 +1650,10 @@ Returns: integer between -1 and 1 ############################################### sub compute_discrimination_factor { my ($resource,$part,$seq) = @_; + my $include_tools = 1; my $symb = $resource->symb; my @Resources; - foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq)){ + foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq,$include_tools)){ next if ($res->symb eq $symb); push (@Resources,$res->symb); } @@ -1667,11 +1672,11 @@ sub compute_discrimination_factor { my $number_to_grab = int(scalar(@{$ranking})/4); my $num_students = scalar(@{$ranking}); my @BottomSet = map { $_->[&Apache::loncoursedata::RNK_student()]; - } @{$ranking}[0..$number_to_grab]; + } @{$ranking}[0..$number_to_grab-1]; my @TopSet = map { $_->[&Apache::loncoursedata::RNK_student()]; - } @{$ranking}[-$number_to_grab..0]; + } @{$ranking}[-$number_to_grab..-1]; if (! @BottomSet || (@BottomSet == 1 && $BottomSet[0] eq '') || ! @TopSet || (@TopSet == 1 && $TopSet[0] eq '')) { return 'nan'; @@ -1712,10 +1717,11 @@ sub compute_discrimination_factor { ############################################### sub compute_sequence_statistics { my ($seq) = @_; + my $include_tools = 1; my $symb = $seq->symb; my @Resources; my $part_count; - foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq)) { + foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq,$include_tools)) { push (@Resources,$res->symb); $part_count += scalar(@{$res->parts}); }