[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemstatistics.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Mon, 29 Mar 2004 19:41:24 -0000
This is a MIME encoded message
--matthew1080589284
Content-Type: text/plain
matthew Mon Mar 29 14:41:24 2004 EDT
Modified files:
/loncom/interface/statistics lonproblemstatistics.pm
Log:
Added ability to select which statistics will be printed out.
--matthew1080589284
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20040329144124.txt"
Index: loncom/interface/statistics/lonproblemstatistics.pm
diff -u loncom/interface/statistics/lonproblemstatistics.pm:1.75 loncom/interface/statistics/lonproblemstatistics.pm:1.76
--- loncom/interface/statistics/lonproblemstatistics.pm:1.75 Mon Mar 29 13:22:28 2004
+++ loncom/interface/statistics/lonproblemstatistics.pm Mon Mar 29 14:41:24 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemstatistics.pm,v 1.75 2004/03/29 18:22:28 matthew Exp $
+# $Id: lonproblemstatistics.pm,v 1.76 2004/03/29 19:41:24 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -73,23 +73,34 @@
{ name => 'problem_num',
title => 'P#',
align => 'right',
- color => '#FFFFE6' },
+ color => '#FFFFE6',
+ selectable => 'no',
+ selected => 'yes',
+ },
{ name => 'container',
title => 'Sequence or Folder',
align => 'left',
color => '#FFFFE6',
- sortable => 'yes' },
+ sortable => 'yes',
+ selectable => 'no',
+ selected => 'yes',
+ },
{ name => 'title',
title => 'Title',
align => 'left',
color => '#FFFFE6',
special => 'link',
- sortable => 'yes', },
+ sortable => 'yes',
+ selectable => 'no',
+ selected => 'yes',
+ },
{ name => 'part',
title => 'Part',
align => 'left',
color => '#FFFFE6',
- },
+ selectable => 'no',
+ selected => 'yes',
+ },
{ name => 'num_students',
title => '#Stdnts',
align => 'right',
@@ -97,7 +108,10 @@
format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Number of Students Attempting Problem' },
+ long_title => 'Number of Students Attempting Problem',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'tries',
title => 'Tries',
align => 'right',
@@ -105,7 +119,10 @@
format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Total Number of Tries' },
+ long_title => 'Total Number of Tries',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'max_tries',
title => 'Max Tries',
align => 'right',
@@ -113,7 +130,10 @@
format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Maximum Number of Tries' },
+ long_title => 'Maximum Number of Tries',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'min_tries',
title => 'Min Tries',
align => 'right',
@@ -121,7 +141,10 @@
format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Minumum Number of Tries' },
+ long_title => 'Minumum Number of Tries',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'mean_tries',
title => 'Mean Tries',
align => 'right',
@@ -129,7 +152,10 @@
format => '%5.2f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Average Number of Tries' },
+ long_title => 'Average Number of Tries',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'std_tries',
title => 'S.D. tries',
align => 'right',
@@ -137,7 +163,10 @@
format => '%5.2f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Standard Deviation of Number of Tries' },
+ long_title => 'Standard Deviation of Number of Tries',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'skew_tries',
title => 'Skew Tries',
align => 'right',
@@ -145,7 +174,10 @@
format => '%5.2f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Skew of Number of Tries' },
+ long_title => 'Skew of Number of Tries',
+ selectable => 'yes',
+ selected => 'no',
+ },
{ name => 'num_solved',
title => '#YES',
align => 'right',
@@ -153,7 +185,10 @@
format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Number of Students able to Solve' },
+ long_title => 'Number of Students able to Solve',
+ selectable => 'no',
+ selected => 'yes',
+ },
{ name => 'num_override',
title => '#yes',
align => 'right',
@@ -161,7 +196,10 @@
format => '%4.1f',# format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Number of Students given Override' },
+ long_title => 'Number of Students given Override',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'num_wrong',
title => '#Wrng',
align => 'right',
@@ -169,7 +207,10 @@
format => '%4.1f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Percent of students whose final answer is wrong' },
+ long_title => 'Percent of students whose final answer is wrong',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'deg_of_diff',
title => 'DoDiff',
align => 'right',
@@ -178,7 +219,10 @@
sortable => 'yes',
graphable => 'yes',
long_title => 'Degree of Difficulty'.
- '[ 1 - ((#YES+#yes) / Tries) ]'},
+ '[ 1 - ((#YES+#yes) / Tries) ]',
+ selectable => 'yes',
+ selected => 'yes',
+ },
{ name => 'deg_of_disc',
title => 'DoDisc',
align => 'right',
@@ -186,9 +230,61 @@
format => '%4.2f',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Degree of Discrimination' },
+ long_title => 'Degree of Discrimination',
+ selectable => 'yes',
+ selected => 'no',
+ },
);
+my %SelectedFields;
+
+sub parse_field_selection {
+ #
+ # Pull out the defaults
+ if (! defined($ENV{'form.fieldselections'})) {
+ $ENV{'form.fieldselections'} = [];
+ foreach my $field (@Fields) {
+ next if ($field->{'selectable'} ne 'yes');
+ if ($field->{'selected'} eq 'yes') {
+ push(@{$ENV{'form.fieldselections'}},$field->{'name'});
+ }
+ }
+ }
+ #
+ # This should not happen, but in case it does...
+ if (ref($ENV{'form.fieldselections'}) ne 'ARRAY') {
+ $ENV{'form.fieldselections'} = [$ENV{'form.fieldselections'}];
+ }
+ #
+ # Set the field data and the selected fields (for easier checking)
+ undef(%SelectedFields);
+ foreach my $field (@Fields) {
+ next if ($field->{'selectable'} ne 'yes');
+ $field->{'selected'} = 'no';
+ foreach my $selection (@{$ENV{'form.fieldselections'}}) {
+ if ($selection eq $field->{'name'} || $selection eq 'all') {
+ $field->{'selected'} = 'yes';
+ $SelectedFields{$field->{'name'}}++;
+ }
+ }
+ }
+ return;
+}
+
+sub field_selection_input {
+ my $Str = '<select name="fieldselections" multiple size="5">'."\n";
+ $Str .= '<option value="all">all</option>'."\n";
+ foreach my $field (@Fields) {
+ next if ($field->{'selectable'} ne 'yes');
+ $Str .= ' <option value="'.$field->{'name'}.'" ';
+ if ($field->{'selected'} eq 'yes') {
+ $Str .= 'selected ';
+ }
+ $Str .= '>'.$field->{'title'}.'</option>'."\n";
+ }
+ $Str .= "</select>\n";
+}
+
###############################################
###############################################
@@ -204,6 +300,7 @@
###############################################
###############################################
sub CreateInterface {
+ &parse_field_selection();
my $Str = '';
$Str .= &Apache::lonhtmlcommon::breadcrumbs
(undef,'Overall Problem Statistics','Statistics_Overall_Key');
@@ -212,6 +309,7 @@
$Str .= '<td align="center"><b>'.&mt('Sections').'</b></td>';
$Str .= '<td align="center"><b>'.&mt('Enrollment Status').'</b></td>';
$Str .= '<td align="center"><b>'.&mt('Sequences and Folders').'</b></td>';
+ $Str .= '<td align="center"><b>'.&mt('Statistics').'</b></td>';
$Str .= '<td rowspan="2">'.
&Apache::lonstathelpers::limit_by_time_form().'</td>';
$Str .= '</tr>'."\n";
@@ -232,6 +330,7 @@
};
$Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,
$only_seq_with_assessments);
+ $Str .= '</td><td>'.&field_selection_input();
$Str .= '</td></tr>'."\n";
$Str .= '</table>'."\n";
$Str .= '<input type="submit" name="GenerateStatistics" value="'.
@@ -432,6 +531,7 @@
my $row = '';
foreach my $field (@Fields) {
next if ($options =~ /no $field->{'name'}/);
+ next if ($field->{'selected'} ne 'yes');
$row .= '<td bgcolor="'.$field->{'color'}.'"';
if (exists($field->{'align'})) {
$row .= ' align="'.$field->{'align'}.'"';
@@ -458,6 +558,7 @@
my $header_row;
foreach my $field (@Fields) {
next if ($options =~ /no $field->{'name'}/);
+ next if ($field->{'selected'} ne 'yes');
$header_row .= '<th>';
if (exists($field->{'sortable'}) && $field->{'sortable'} eq 'yes') {
$header_row .= '<a href="javascript:'.
@@ -867,6 +968,7 @@
# Long Headers
foreach my $field (@Fields) {
next if ($field->{'name'} eq 'problem_num');
+ next if ($field->{'selected'} ne 'yes');
if (exists($field->{'long_title'})) {
$excel_sheet->write($rows_output,$cols_output++,
$field->{'long_title'});
@@ -878,6 +980,7 @@
$cols_output=0;
# Brief headers
foreach my $field (@Fields) {
+ next if ($field->{'selected'} ne 'yes');
next if ($field->{'name'} eq 'problem_num');
# Use english for excel as I am not sure how well excel handles
# other character sets....
@@ -887,6 +990,7 @@
foreach my $data (@StatsArray) {
$cols_output=0;
foreach my $field (@Fields) {
+ next if ($field->{'selected'} ne 'yes');
next if ($field->{'name'} eq 'problem_num');
$excel_sheet->write($rows_output,$cols_output++,
$data->{$field->{'name'}});
@@ -1036,7 +1140,10 @@
$data->{'title.link'} = $resource->{'src'}.'?symb='.
&Apache::lonnet::escape($resource->{'symb'});
#
- $data->{'deg_of_disc'} = &compute_discrimination_factor($resource,$part,$sequence);
+ if ($SelectedFields{'deg_of_disc'}) {
+ $data->{'deg_of_disc'} =
+ &compute_discrimination_factor($resource,$part,$sequence);
+ }
return $data;
}
--matthew1080589284--