--- loncom/interface/statistics/lonproblemstatistics.pm 2003/04/01 17:00:24 1.49
+++ loncom/interface/statistics/lonproblemstatistics.pm 2004/03/23 20:08:58 1.72
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemstatistics.pm,v 1.49 2003/04/01 17:00:24 matthew Exp $
+# $Id: lonproblemstatistics.pm,v 1.72 2004/03/23 20:08:58 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,18 +51,28 @@ package Apache::lonproblemstatistics;
use strict;
use Apache::lonnet();
+use Apache::loncommon();
use Apache::lonhtmlcommon;
use Apache::loncoursedata;
use Apache::lonstatistics;
+use Apache::lonlocal;
use Spreadsheet::WriteExcel;
-
+use Apache::lonstathelpers();
+use Time::HiRes;
+##
+## Localization notes:
+##
+## in @Fields[0]->{'long_title'} is placed in Excel files and is used as the
+## header for plots created with Graph.pm, both of which more than likely do
+## not support localization.
+##
my @Fields = (
{ name => 'problem_num',
title => 'P#',
align => 'right',
color => '#FFFFE6' },
{ name => 'container',
- title => 'Container',
+ title => 'Sequence or Folder',
align => 'left',
color => '#FFFFE6',
sortable => 'yes' },
@@ -75,7 +85,8 @@ my @Fields = (
{ name => 'part',
title => 'Part',
align => 'left',
- color => '#FFFFE6' },
+ color => '#FFFFE6',
+ },
{ name => 'num_students',
title => '#Stdnts',
align => 'right',
@@ -131,12 +142,13 @@ my @Fields = (
format => '%5.2f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Degree of Difficulty' },
+ long_title => 'Degree of Difficulty'.
+ '[ 1 - ((#YES+#yes) / Tries) ]'},
{ name => 'num_solved',
title => '#YES',
align => 'right',
color => '#FFDDDD',
- format => '%d',
+ format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
long_title => 'Number of Students able to Solve' },
@@ -144,7 +156,7 @@ my @Fields = (
title => '#yes',
align => 'right',
color => '#FFDDDD',
- format => '%d',
+ format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
long_title => 'Number of Students given Override' },
@@ -155,7 +167,16 @@ my @Fields = (
format => '%4.1f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Percent Wrong' },
+ long_title => 'Percent of students whose final answer is wrong' },
+ { name => 'deg_of_disc',
+ title => 'Deg of Disc',
+ align => 'right',
+ color => '#FFFFE6',
+ format => '%4.2f',
+ sortable => 'yes',
+ graphable => 'yes',
+ long_title => 'Degree of Discrimination' },
+
);
###############################################
@@ -172,72 +193,21 @@ select sections, maps, and output.
###############################################
###############################################
-sub CreateInterface {
- my $Str = '';
- $Str .= '
'."\n";
- 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',
+ { name => 'grouped by sequence',
value => 'HTML problem statistics grouped',
description => 'Output statistics for the problem parts.',
mode => 'html',
show => 'grouped',
},
- { name => 'problem statistics ungrouped',
+ { name => 'ungrouped',
value => 'HTML problem statistics ungrouped',
description => 'Output statistics for the problem parts.',
mode => 'html',
show => 'ungrouped',
},
- { name => 'problem statistics, Excel',
+ { name => 'Excel',
value => 'Excel problem statistics',
description => 'Output statistics for the problem parts '.
'in an Excel workbook',
@@ -246,92 +216,52 @@ my @OutputOptions =
},
);
-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 {
+sub CreateInterface {
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};
- }
- }
+ $Str .= &Apache::lonhtmlcommon::breadcrumbs
+ (undef,'Overall Problem Statistics','Statistics_Overall_Key');
+ $Str .= '
");
+ my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits();
+ if (defined($starttime) || defined($endtime)) {
+ # Inform the user what the time limits on the data are.
+ $r->print('
'.&mt('Statistics on submissions from [_1] to [_2]',
+ &Apache::lonlocal::locallocaltime($starttime),
+ &Apache::lonlocal::locallocaltime($endtime)).
+ '
');
+ }
+ $r->print("
".&mt('Compiled on [_1]',
+ &Apache::lonlocal::locallocaltime(time))."