version 1.96, 2004/03/08 17:31:37
|
version 1.97, 2004/03/10 18:41:37
|
Line 715 sub html_outputstudent {
|
Line 715 sub html_outputstudent {
|
$seq,$show_links); |
$seq,$show_links); |
} |
} |
my $ratio=''; |
my $ratio=''; |
if ($chosen_output->{'sequence_sum'}) { |
if ($chosen_output->{'sequence_sum'} && $score ne ' ') { |
$ratio .= sprintf("%3d",$score); |
$ratio .= sprintf("%3d",$score); |
|
} else { |
|
$ratio .= ' 'x3; |
} |
} |
if ($chosen_output->{'sequence_max'}) { |
if ($chosen_output->{'sequence_max'}) { |
if ($chosen_output->{'sequence_sum'}) { |
if ($chosen_output->{'sequence_sum'}) { |
Line 739 sub html_outputstudent {
|
Line 741 sub html_outputstudent {
|
} |
} |
# |
# |
# Total it up and store the statistics info. |
# Total it up and store the statistics info. |
my ($score,$max) = (0,0); |
my ($score,$max); |
while (my ($symb,$seq_stats) = each (%{$studentstats})) { |
while (my ($symb,$seq_stats) = each (%{$studentstats})) { |
$Statistics->{$symb}->{'score'} += $seq_stats->{'score'}; |
$Statistics->{$symb}->{'score'} += $seq_stats->{'score'}; |
if ($Statistics->{$symb}->{'max'} < $seq_stats->{'max'}) { |
if ($Statistics->{$symb}->{'max'} < $seq_stats->{'max'}) { |
$Statistics->{$symb}->{'max'} = $seq_stats->{'max'}; |
$Statistics->{$symb}->{'max'} = $seq_stats->{'max'}; |
} |
} |
$score += $seq_stats->{'score'}; |
if ($seq_stats->{'score'} ne ' ') { |
|
$score += $seq_stats->{'score'}; |
|
$Statistics->{$symb}->{'num_students'}++; |
|
} |
$max += $seq_stats->{'max'}; |
$max += $seq_stats->{'max'}; |
} |
} |
|
if (! defined($score)) { |
|
$score = ' 'x3; |
|
} |
$Str .= ' '.' 'x(length($max)-length($score)).$score.'/'.$max; |
$Str .= ' '.' 'x(length($max)-length($score)).$score.'/'.$max; |
$Str .= " \n"; |
$Str .= " \n"; |
# |
# |
Line 775 sub html_finish {
|
Line 783 sub html_finish {
|
|
|
sub StudentAverageTotal { |
sub StudentAverageTotal { |
my $Str = "<h3>Summary Tables</h3>\n"; |
my $Str = "<h3>Summary Tables</h3>\n"; |
my $num_students = scalar(@Apache::lonstatistics::Students); |
# my $max_students; |
my $total_ave = 0; |
# my $total_ave = 0; |
my $total_max = 0; |
# my $total_max = 0; |
$Str .= '<table border=2 cellspacing="1">'."\n"; |
$Str .= '<table border=2 cellspacing="1">'."\n"; |
$Str .= "<tr><th>Title</th><th>Average</th><th>Maximum</th></tr>\n"; |
$Str .= "<tr><th>Title</th><th>Average</th><th>Maximum</th></tr>\n"; |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
my $ave; |
my $ave; |
if ($num_students > $nodata_count) { |
my $num_students = $Statistics->{$seq->{'symb'}}->{'num_students'}; |
$ave = int(100*($Statistics->{$seq->{'symb'}}->{'score'}/ |
# if ($num_students > $max_students) { |
($num_students-$nodata_count)))/100; |
# $max_students = $num_students; |
|
# } |
|
if ($num_students > 0) { |
|
$ave = int(100* |
|
($Statistics->{$seq->{'symb'}}->{'score'}/$num_students) |
|
)/100; |
} else { |
} else { |
$ave = 0; |
$ave = 0; |
} |
} |
$total_ave += $ave; |
# $total_ave += $ave; |
my $max = $Statistics->{$seq->{'symb'}}->{'max'}; |
my $max = $Statistics->{$seq->{'symb'}}->{'max'}; |
$total_max += $max; |
# $total_max += $max; |
$ave = sprintf("%.2f",$ave); |
$ave = sprintf("%.2f",$ave); |
$Str .= '<tr><td>'.$seq->{'title'}.'</td>'. |
$Str .= '<tr><td>'.$seq->{'title'}.'</td>'. |
'<td align="right">'.$ave.' </td>'. |
'<td align="right">'.$ave.' </td>'. |
'<td align="right">'.$max.' '.'</td></tr>'."\n"; |
'<td align="right">'.$max.' '.'</td></tr>'."\n"; |
} |
} |
$total_ave = sprintf('%.2f',$total_ave); # only two digit |
# $total_ave = sprintf('%.2f',$total_ave); # only two digit |
$Str .= "</table>\n"; |
|
$Str .= '<table border=2 cellspacing="1">'."\n"; |
|
$Str .= '<tr><th>Number of Students</th><th>Average</th>'. |
|
"<th>Maximum</th></tr>\n"; |
|
$Str .= '<tr>'. |
|
'<td align="right">'.($num_students-$nodata_count).'</td>'. |
|
'<td align="right">'.$total_ave.' '.'</td>'. |
|
'<td align="right">'.$total_max.' '.'</td>'; |
|
$Str .= "</table>\n"; |
$Str .= "</table>\n"; |
|
# $Str .= '<table border=2 cellspacing="1">'."\n"; |
|
# $Str .= '<tr><th>Number of Students</th><th>Average</th>'. |
|
# "<th>Maximum</th></tr>\n"; |
|
# $Str .= '<tr>'. |
|
# '<td align="right">'.$max_students.'</td>'. |
|
# '<td align="right">'.$total_ave.' '.'</td>'. |
|
# '<td align="right">'.$total_max.' '.'</td>'; |
|
# $Str .= "</table>\n"; |
return $Str; |
return $Str; |
} |
} |
|
|
Line 1311 sub excel_outputstudent {
|
Line 1324 sub excel_outputstudent {
|
} |
} |
} else { |
} else { |
foreach my $value (@$rawdata) { |
foreach my $value (@$rawdata) { |
$excel_sheet->write($rows_output,$cols_output++,$value); |
if ($score eq ' ' || !defined($value)) { |
|
$cols_output++; |
|
} else { |
|
$excel_sheet->write($rows_output,$cols_output++, |
|
$value); |
|
} |
} |
} |
} |
} |
} |
} |
Line 1336 sub excel_outputstudent {
|
Line 1354 sub excel_outputstudent {
|
%replaceCells); |
%replaceCells); |
} |
} |
} elsif ($chosen_output->{'sequence_sum'}) { |
} elsif ($chosen_output->{'sequence_sum'}) { |
$excel_sheet->write($rows_output,$cols_output++,$score); |
if ($score eq ' ') { |
|
$cols_output++; |
|
} else { |
|
$excel_sheet->write($rows_output,$cols_output++,$score); |
|
} |
} |
} |
if ($chosen_output->{'sequence_max'}) { |
if ($chosen_output->{'sequence_max'}) { |
$excel_sheet->write($rows_output,$cols_output++,$seq_max); |
$excel_sheet->write($rows_output,$cols_output++,$seq_max); |
Line 1627 sub StudentTriesOnSequence {
|
Line 1649 sub StudentTriesOnSequence {
|
my $performance_length = 0; |
my $performance_length = 0; |
my @TriesData = (); |
my @TriesData = (); |
my $tries; |
my $tries; |
|
my $hasdata = 0; # flag - true if the student has any data on the sequence |
foreach my $resource (@{$seq->{'contents'}}) { |
foreach my $resource (@{$seq->{'contents'}}) { |
next if ($resource->{'type'} ne 'assessment'); |
next if ($resource->{'type'} ne 'assessment'); |
my $resource_data = $studentdata->{$resource->{'symb'}}; |
my $resource_data = $studentdata->{$resource->{'symb'}}; |
Line 1651 sub StudentTriesOnSequence {
|
Line 1674 sub StudentTriesOnSequence {
|
my $tries = 0; |
my $tries = 0; |
if(exists($resource_data->{'resource.'.$partnum.'.tries'})) { |
if(exists($resource_data->{'resource.'.$partnum.'.tries'})) { |
$tries = $resource_data->{'resource.'.$partnum.'.tries'}; |
$tries = $resource_data->{'resource.'.$partnum.'.tries'}; |
|
$hasdata =1; |
} |
} |
# |
# |
if ($awarded > 0) { |
if ($awarded > 0) { |
Line 1713 sub StudentTriesOnSequence {
|
Line 1737 sub StudentTriesOnSequence {
|
if ($seq->{'randompick'}) { |
if ($seq->{'randompick'}) { |
$max = $seq->{'randompick'}; |
$max = $seq->{'randompick'}; |
} |
} |
|
if (! $hasdata && $sum == 0) { |
|
$sum = ' '; |
|
} |
return ($Str,$performance_length,$sum,$max,\@TriesData); |
return ($Str,$performance_length,$sum,$max,\@TriesData); |
} |
} |
|
|
Line 1750 sub StudentPerformanceOnSequence {
|
Line 1777 sub StudentPerformanceOnSequence {
|
my $symbol; |
my $symbol; |
my @ScoreData = (); |
my @ScoreData = (); |
my $partscore; |
my $partscore; |
|
my $hasdata = 0; # flag, 0 if there were no submissions on the sequence |
foreach my $resource (@{$seq->{'contents'}}) { |
foreach my $resource (@{$seq->{'contents'}}) { |
next if ($resource->{'type'} ne 'assessment'); |
next if ($resource->{'type'} ne 'assessment'); |
my $resource_data = $studentdata->{$resource->{'symb'}}; |
my $resource_data = $studentdata->{$resource->{'symb'}}; |
Line 1768 sub StudentPerformanceOnSequence {
|
Line 1796 sub StudentPerformanceOnSequence {
|
$performance_length++; # one character per part |
$performance_length++; # one character per part |
$symbol = ' '; # default to space |
$symbol = ' '; # default to space |
# |
# |
my $awarded = 0; |
my $awarded; |
if (exists($resource_data->{'resource.'.$part.'.awarded'})) { |
if (exists($resource_data->{'resource.'.$part.'.awarded'})) { |
$awarded = $resource_data->{'resource.'.$part.'.awarded'}; |
$awarded = $resource_data->{'resource.'.$part.'.awarded'}; |
$awarded = 0 if (! $awarded); |
$awarded = 0 if (! $awarded); |
|
$hasdata = 1; |
} |
} |
# |
# |
$partscore = $weight*$awarded; |
$partscore = $weight*$awarded; |
|
if (! defined($awarded)) { |
|
$partscore = undef; |
|
} |
$score += $partscore; |
$score += $partscore; |
$symbol = $partscore; |
$symbol = $partscore; |
if (abs($symbol - sprintf("%.0f",$symbol)) < 0.001) { |
if (abs($symbol - sprintf("%.0f",$symbol)) < 0.001) { |
Line 1789 sub StudentPerformanceOnSequence {
|
Line 1821 sub StudentPerformanceOnSequence {
|
$symbol = 'x'; |
$symbol = 'x'; |
$max -= $weight; # Do not count 'excused' problems. |
$max -= $weight; # Do not count 'excused' problems. |
} |
} |
|
$hasdata = 1; |
} else { |
} else { |
# Unsolved. Did they try? |
# Unsolved. Did they try? |
if (exists($resource_data->{'resource.'.$part.'.tries'})){ |
if (exists($resource_data->{'resource.'.$part.'.tries'})){ |
$symbol = '.'; |
$symbol = '.'; |
|
$hasdata = 1; |
} else { |
} else { |
$symbol = ' '; |
$symbol = ' '; |
} |
} |
Line 1813 sub StudentPerformanceOnSequence {
|
Line 1847 sub StudentPerformanceOnSequence {
|
$Str .= $symbol; |
$Str .= $symbol; |
} |
} |
} |
} |
|
if (! $hasdata && $score == 0) { |
|
$score = ' '; |
|
} |
return ($Str,$performance_length,$score,$max,\@ScoreData); |
return ($Str,$performance_length,$score,$max,\@ScoreData); |
} |
} |
|
|