[LON-CAPA-cvs] cvs: loncom /interface/statistics lonstudentassessment.pm
raeburn
raeburn at source.lon-capa.org
Wed Oct 5 14:56:00 EDT 2011
raeburn Wed Oct 5 18:56:00 2011 EDT
Modified files:
/loncom/interface/statistics lonstudentassessment.pm
Log:
- CHART now shows correct total possible points where folder is using
randompick and all items included in folder carry equal points.
Index: loncom/interface/statistics/lonstudentassessment.pm
diff -u loncom/interface/statistics/lonstudentassessment.pm:1.163 loncom/interface/statistics/lonstudentassessment.pm:1.164
--- loncom/interface/statistics/lonstudentassessment.pm:1.163 Sat Dec 4 14:41:13 2010
+++ loncom/interface/statistics/lonstudentassessment.pm Wed Oct 5 18:56:00 2011
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstudentassessment.pm,v 1.163 2010/12/04 14:41:13 www Exp $
+# $Id: lonstudentassessment.pm,v 1.164 2011/10/05 18:56:00 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -877,16 +877,18 @@
my $PerformanceStr = '';
foreach my $seq (@sequences) {
my $symb = $seq->symb;
+ my $randompick = $seq->randompick();
my ($performance,$performance_length,$score,$seq_max,$rawdata);
if ($chosen_output->{'tries'}) {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,$show_links);
+ $navmap,$seq,$show_links,$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,$show_links,
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
my $ratio='';
if ($chosen_output->{'every_problem'} &&
@@ -1498,6 +1500,7 @@
my %maximum_cell_translation;
foreach my $seq (@sequences) {
my $symb = $seq->symb;
+ my $randompick = $seq->randompick();
$cols_output = $formula_data{$symb}->{'Excel:startcol'};
# Keep track of cells to translate in total cell
$total_cell_translation{$formula_data{$symb}->{'Excel:scorecell'}} =
@@ -1512,12 +1515,13 @@
if ($chosen_output->{'tries'} || $chosen_output->{'correct'}){
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,'no');
+ $navmap,$seq,'no',$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,'no',
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
if ($chosen_output->{'every_problem'}) {
if ($chosen_output->{'correct'}) {
@@ -1779,16 +1783,18 @@
my $total = 0;
my $maximum = 0;
foreach my $seq (@sequences) {
+ my $randompick = $seq->randompick();
my ($performance,$performance_length,$score,$seq_max,$rawdata);
if ($chosen_output->{'tries'}){
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,'no');
+ $navmap,$seq,'no',$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,'no',
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
if ($chosen_output->{'every_problem'}) {
if ($chosen_output->{'correct'}) {
@@ -1889,7 +1895,7 @@
#######################################################
#######################################################
sub student_tries_on_sequence {
- my ($student,$studentdata,$navmap,$seq,$links) = @_;
+ my ($student,$studentdata,$navmap,$seq,$links,$randompick) = @_;
$links = 'no' if (! defined($links));
my $Str = '';
my ($sum,$max) = (0,0);
@@ -1984,8 +1990,8 @@
}
$Str .= $value;
}
- if ($seq->randompick()) {
- $max = $seq->randompick();
+ if ($randompick) {
+ $max = $randompick;
}
if (! $hasdata && $sum == 0) {
$sum = ' ';
@@ -2050,7 +2056,7 @@
#######################################################
#######################################################
sub student_performance_on_sequence {
- my ($student,$studentdata,$navmap,$seq,$links,$awarded_only) = @_;
+ my ($student,$studentdata,$navmap,$seq,$links,$awarded_only,$randompick) = @_;
$links = 'no' if (! defined($links));
my $Str = ''; # final result string
my ($score,$max) = (0,0);
@@ -2059,9 +2065,11 @@
my @ScoreData = ();
my $partscore;
my $hasdata = 0; # flag, 0 if there were no submissions on the sequence
+ my %ptsfreq;
foreach my $resource (&get_resources($navmap,$seq)) {
my $symb = $resource->symb;
my $resource_data = $studentdata->{$symb};
+ my $resmax = 0;
foreach my $part (@{$resource->parts()}) {
$partscore = undef;
my $weight;
@@ -2077,6 +2085,7 @@
}
#
$max += $weight; # see the 'excused' branch below...
+ $resmax += $weight;
$performance_length++; # one character per part
$symbol = ' '; # default to space
#
@@ -2137,6 +2146,17 @@
}
$Str .= $symbol;
}
+ if ($ptsfreq{$resmax}) {
+ $ptsfreq{$resmax} ++;
+ } else {
+ $ptsfreq{$resmax} = 1;
+ }
+ }
+ if ($randompick) {
+ my @uniquetotals = keys(%ptsfreq);
+ if ((@uniquetotals = 1) && ($ptsfreq{$uniquetotals[0]} > 0)) {
+ $max = $max * $randompick/$ptsfreq{$uniquetotals[0]};
+ }
}
if (! $hasdata && $score == 0) {
$score = ' ';
More information about the LON-CAPA-cvs
mailing list