version 1.8, 2004/03/01 16:39:19
|
version 1.9, 2004/03/07 20:53:41
|
Line 103 sub BuildCorrectProblemsPage {
|
Line 103 sub BuildCorrectProblemsPage {
|
# Determine which problem symbs we are to sum over |
# Determine which problem symbs we are to sum over |
if (exists($ENV{'form.CreatePlot'})) { |
if (exists($ENV{'form.CreatePlot'})) { |
my @ProblemSymbs; |
my @ProblemSymbs; |
|
my $total_parts = 0; |
|
my $title = ''; |
if ($Apache::lonstatistics::SelectedMaps[0] ne 'all') { |
if ($Apache::lonstatistics::SelectedMaps[0] ne 'all') { |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()){ |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()){ |
|
if ($title eq '') { |
|
$title = $seq->{'title'}; |
|
} else { |
|
$title = 'Multiple Sequences'; |
|
} |
foreach my $res (@{$seq->{'contents'}}) { |
foreach my $res (@{$seq->{'contents'}}) { |
next if ($res->{'type'} ne 'assessment'); |
next if ($res->{'type'} ne 'assessment'); |
foreach my $part (@{$res->{'parts'}}) { |
foreach my $part (@{$res->{'parts'}}) { |
|
$total_parts++; |
push(@ProblemSymbs,{symb=>$res->{'symb'}, |
push(@ProblemSymbs,{symb=>$res->{'symb'}, |
part=>$part}); |
part=>$part}); |
} |
} |
} |
} |
} |
} |
} |
} |
|
my ($starttime,$endtime) = &Apache::lonstathelpers::get_time_limits(); |
my $score_data = &Apache::loncoursedata::get_student_scores |
my $score_data = &Apache::loncoursedata::get_student_scores |
(\@Apache::lonstatistics::SelectedSections, |
(\@Apache::lonstatistics::SelectedSections, |
\@ProblemSymbs, |
\@ProblemSymbs, |
$Apache::lonstatistics::enrollment_status); |
$Apache::lonstatistics::enrollment_status,undef, |
$r->print(&AnalyzeScoreData($score_data)); |
$starttime,$endtime); |
|
$r->print(&AnalyzeScoreData($score_data,$title,$total_parts)); |
} |
} |
return; |
return; |
} |
} |
Line 138 return html with a plot of the data and
|
Line 148 return html with a plot of the data and
|
######################################################### |
######################################################### |
######################################################### |
######################################################### |
sub AnalyzeScoreData { |
sub AnalyzeScoreData { |
my ($score_data) = @_; |
my ($score_data,$title,$total_parts) = @_; |
# |
# |
# Basic check first |
# Basic check first |
if (@$score_data < 1) { |
if (@$score_data < 1) { |
Line 149 sub AnalyzeScoreData {
|
Line 159 sub AnalyzeScoreData {
|
my $lowest = $score_data->[0]->[0]; |
my $lowest = $score_data->[0]->[0]; |
$lowest = 0; |
$lowest = 0; |
my $highest = $score_data->[-1]->[0]; |
my $highest = $score_data->[-1]->[0]; |
|
&Apache::lonnet::logthis('highest = '.$highest); |
my $binsize = 1; |
my $binsize = 1; |
if ($highest > 50) { $binsize = 2; } |
if ($highest > 50) { $binsize = 2; } |
if ($highest > 100) { $binsize = 5; } |
if ($highest > 100) { $binsize = 5; } |
Line 161 sub AnalyzeScoreData {
|
Line 172 sub AnalyzeScoreData {
|
my @Bins = &bin_data($score_data,$binsize,$lowest,$highest); |
my @Bins = &bin_data($score_data,$binsize,$lowest,$highest); |
my @Xdata; my @Ydata; my $max; |
my @Xdata; my @Ydata; my $max; |
my $Str = '<table border="1">'."\n".'<tr><th>Range</th><th>Count</th></tr>'."\n"; |
my $Str = '<table border="1">'."\n".'<tr><th>Range</th><th>Count</th></tr>'."\n"; |
|
my $sum = 0; |
while (my $bin = shift(@Bins)) { |
while (my $bin = shift(@Bins)) { |
push (@Xdata,$bin->{'start'}); |
push (@Xdata,$bin->{'start'}); |
push (@Ydata,$bin->{'count'}); |
push (@Ydata,$bin->{'count'}); |
|
$sum += $bin->{'count'}; |
if ($bin->{'count'} > $max) { |
if ($bin->{'count'} > $max) { |
$max = $bin->{'count'}; |
$max = $bin->{'count'}; |
} |
} |
Line 172 sub AnalyzeScoreData {
|
Line 185 sub AnalyzeScoreData {
|
} |
} |
# scale max to an integer. |
# scale max to an integer. |
$max = 5*(int($max/5)+1); |
$max = 5*(int($max/5)+1); |
my $title = 'Correct Problems Plot'; |
|
$Str .= "</table><br />\n"; |
$Str .= "</table><br />\n"; |
$Str = "<br />\n".&Apache::loncommon::DrawBarGraph($title, |
$title = &HTML::Entities::decode($title); |
'Num Correct Problems', |
$Str = "<br />\n".&Apache::loncommon::DrawBarGraph($title.' N = '.$sum, |
|
'Num Correct Problems (max:'.$total_parts.')', |
'Number of students', |
'Number of students', |
$max, |
$max, |
undef, # colors |
undef, # colors |
Line 218 sub bin_data {
|
Line 231 sub bin_data {
|
my @Bins; |
my @Bins; |
my $count=0; |
my $count=0; |
my $idx=0; |
my $idx=0; |
while ($idx < scalar(@$data) && ($binend-$endbin)<$binsize) { |
while ($idx < scalar(@$data) && ($endbin-$binend + $binsize)>0) { |
my $dataset = $data->[$idx++]; |
my $dataset = $data->[$idx++]; |
my ($x,$y) = @{$dataset}; |
my ($x,$y) = @{$dataset}; |
while ($x > $binend) { |
while ($x > ($binend-.001)) { |
# store the old data |
# store the old data |
push (@Bins,{ start => $binstart, |
push (@Bins,{ start => $binstart, |
count => $count, |
count => $count, |
Line 233 sub bin_data {
|
Line 246 sub bin_data {
|
} |
} |
$count+=$y; |
$count+=$y; |
} |
} |
|
if ($count > 0) { |
|
push (@Bins,{ start => $binstart, |
|
count => $count, |
|
end => $binend }); |
|
} |
return @Bins; |
return @Bins; |
} |
} |
|
|
Line 262 sub CreateInterface {
|
Line 280 sub CreateInterface {
|
$Str .= '<td align="center"><b>'.&mt('Sections').'</b></td>'; |
$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('Enrollment Status').'</b></td>'; |
$Str .= '<td align="center"><b>'.&mt('Sequences and Folders').'</b></td>'; |
$Str .= '<td align="center"><b>'.&mt('Sequences and Folders').'</b></td>'; |
|
$Str .= '<td rowspan="2">'. |
|
&Apache::lonstathelpers::limit_by_time_form().'</td>'; |
$Str .= '</tr>'."\n"; |
$Str .= '</tr>'."\n"; |
## |
## |
## |
## |
Line 283 sub CreateInterface {
|
Line 303 sub CreateInterface {
|
}; |
}; |
$Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, |
$Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, |
$only_seq_with_assessments); |
$only_seq_with_assessments); |
$Str .= '</td><td>'."\n"; |
$Str .= '</td>'; |
|
# |
## |
## |
$Str .= '</tr>'."\n"; |
$Str .= '</tr>'."\n"; |
$Str .= '</table>'."\n"; |
$Str .= '</table>'."\n"; |