version 1.2, 2002/07/25 19:29:23
|
version 1.3, 2002/07/26 21:50:12
|
Line 43 use Apache::lonhtmlcommon;
|
Line 43 use Apache::lonhtmlcommon;
|
use Apache::loncoursedata; |
use Apache::loncoursedata; |
use GDBM_File; |
use GDBM_File; |
|
|
my %mapsort; |
#my %mapsort; |
|
|
sub BuildProblemStatisticsPage { |
sub BuildProblemStatisticsPage { |
my ($cacheDB, $students, $courseID, $c, $r,%color)=@_; |
my ($cacheDB, $students, $courseID, $c, $r,%color)=@_; |
Line 86 sub BuildProblemStatisticsPage {
|
Line 86 sub BuildProblemStatisticsPage {
|
my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID); |
my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID); |
my $index=0; |
my $index=0; |
foreach (@$students) { |
foreach (@$students) { |
|
$index++; |
#&Apache::lonstatistics::Update_PrgWin(++$index,$r); |
#&Apache::lonstatistics::Update_PrgWin(++$index,$r); |
$discriminantFactor = &ExtractStudentData(\%cache, $_, \@list,\%Discuss); |
$discriminantFactor = &ExtractStudentData(\%cache, $_, \@list, |
|
\%Discuss, $r); |
} |
} |
#&Apache::lonstatistics::Close_PrgWin($r); |
#&Apache::lonstatistics::Close_PrgWin($r); |
|
|
return $Ptr; |
|
my ($upper, $lower) = &Discriminant($discriminantFactor); |
my ($upper, $lower) = &Discriminant($discriminantFactor); |
my %Header = (0,"Homework Sets Order",1,"#Stdnts",2,"Tries",3,"Mod", |
my %Header = (0,"Homework Sets Order",1,"#Stdnts",2,"Tries",3,"Mod", |
4,"Mean",5,"#YES",6,"#yes",7,"%Wrng",8,"DoDiff", |
4,"Mean",5,"#YES",6,"#yes",7,"%Wrng",8,"DoDiff", |
Line 427 sub CloseTable {
|
Line 428 sub CloseTable {
|
|
|
# ------ Dump the Student's DB file and handling the data for statistics table |
# ------ Dump the Student's DB file and handling the data for statistics table |
sub ExtractStudentData { |
sub ExtractStudentData { |
my ($cache,$name,$list,%Discuss)=@_; |
my ($cache,$name,$list,$Discuss,$r)=@_; |
my %discriminantFactor; |
my %discriminantFactor; |
|
|
my $totalTries = 0; |
my $totalTries = 0; |
Line 443 sub ExtractStudentData {
|
Line 444 sub ExtractStudentData {
|
my $TimeTot = 0; |
my $TimeTot = 0; |
my $Discussed=0; |
my $Discussed=0; |
|
|
|
$Apache::lonxml::debug=1; |
|
#&Apache::lonhomework::showhash(%$cache); |
|
$Apache::lonxml::debug=0; |
|
|
foreach my $sequence (split(':', $cache->{'orderedSequences'})) { |
foreach my $sequence (split(':', $cache->{'orderedSequences'})) { |
if($cache->{'ProblemStatisticsMap'} ne 'All Maps' && |
# if($cache->{'ProblemStatisticsMap'} ne 'All Maps' && |
$cache->{'ProblemStatisticsMap'} ne $cache->{$sequence.':title'}) { |
# $cache->{'ProblemStatisticsMap'} ne $cache->{$sequence.':title'}) { |
next; |
$r->print("<br>$name --- $sequence"); |
} |
$r->print("<br>".$cache->{$sequence.':title'}); |
|
# next; |
|
# } |
|
|
my $Dis = ''; |
my $Dis = ''; |
foreach my $problemID (split(':', $cache->{$sequence.':problems'})) { |
foreach my $problemID (split(':', $cache->{$sequence.':problems'})) { |
my $problem = $cache->{$problemID.':problem'}; |
my $problem = $cache->{$problemID.':problem'}; |
|
$r->print("<br>$problemID === $problem"); |
my $LatestVersion = $cache->{$name.':version:'.$problem}; |
my $LatestVersion = $cache->{$name.':version:'.$problem}; |
|
# Output dashes for all the parts of this problem if there |
# Output dashes for all the parts of this problem if there |
|
# is no version information about the current problem. |
# is no version information about the current problem. |
#if(!$LatestVersion) { |
#if(!$LatestVersion) { |
# foreach my $part (split(/\:/,$cache->{$sequence.':'. |
# foreach my $part (split(/\:/,$cache->{$sequence.':'. |
Line 481 sub ExtractStudentData {
|
Line 488 sub ExtractStudentData {
|
# oldest version. Basically, it gets the most recent |
# oldest version. Basically, it gets the most recent |
# set of grade data for each part. |
# set of grade data for each part. |
for(my $Version=1; $Version<=$LatestVersion; $Version++) { |
for(my $Version=1; $Version<=$LatestVersion; $Version++) { |
foreach my $part (split(/\:/,$cache->{$sequence.':'. |
foreach my $part (split(/\:/,$cache->{$sequence.':'. |
$problemID. |
$problemID. |
':parts'})) { |
':parts'})) { |
|
|
Line 517 sub ExtractStudentData {
|
Line 524 sub ExtractStudentData {
|
elsif ($val eq 'incorrect_by_override'){$code = 'I';} |
elsif ($val eq 'incorrect_by_override'){$code = 'I';} |
elsif ($val eq 'excused') {$code = 'x';} |
elsif ($val eq 'excused') {$code = 'x';} |
$partData{$part.':code'}=$code; |
$partData{$part.':code'}=$code; |
|
|
if($partData{$part.':wrong'} ne 0 && |
if($partData{$part.':wrong'} ne 0 && |
($code eq 'C' || $code eq 'O')) { |
($code eq 'C' || $code eq 'O')) { |
$partData{$part.':wrong'}--; |
$partData{$part.':wrong'}--; |
Line 554 sub ExtractStudentData {
|
Line 560 sub ExtractStudentData {
|
$DisF = $Fac; |
$DisF = $Fac; |
} |
} |
|
|
if ($Discuss{"$name:$problem"}) { |
if ($Discuss->{"$name:$problem"}) { |
$TotDiscuss++; |
$TotDiscuss++; |
$Discussed=1; |
$Discussed=1; |
} |
} |
my $time = $cache->{"$name:$LatestVersion:$problem:timestamp"}; |
my $time = $cache->{"$name:$LatestVersion:$problem:timestamp"}; |
$Dis .= $tempProblemOrder.'='.$DisF.'+'.$Yes; |
$Dis .= $tempProblemOrder.'='.$DisF.'+'.$Yes; |
$ptr .= '&'.$partData{$_.'.Tries'}. |
$ptr .= '&'.$partData{$_.'.tries'}. |
'&'.$partData{$_.'.Wrongs'}. |
'&'.$partData{$_.'.wrongs'}. |
'&'.$partData{$_.'.Code'}; |
'&'.$partData{$_.'.code'}; |
push (@$list, $ptr."&$Discussed"); |
push (@$list, $ptr."&$Discussed"); |
|
$r->print('<br>'.$name.'---'.$ptr); |
|
|
#### if ($DoDiff>0.85) { |
#### if ($DoDiff>0.85) { |
|
|
$TimeTot += $time; |
$TimeTot += $time; |
Line 619 sub MySort {
|
Line 626 sub MySort {
|
} |
} |
=cut |
=cut |
|
|
|
|
sub BuildStatisticsTable { |
sub BuildStatisticsTable { |
my ($cache,$discriminantFactor,$list,$headings,$students,$r,%color)=@_; |
my ($cache,$discriminantFactor,$list,$headings,$students,$r,%color)=@_; |
|
|
Line 641 sub BuildStatisticsTable {
|
Line 649 sub BuildStatisticsTable {
|
my %GraphDat; |
my %GraphDat; |
my $NoElements = scalar @$list; |
my $NoElements = scalar @$list; |
|
|
|
|
foreach my $sequence (split(':', $cache->{'orderedSequences'})) { |
foreach my $sequence (split(':', $cache->{'orderedSequences'})) { |
if($cache->{'ProblemStatisticsMap'} ne 'All Maps' && |
|
$cache->{'ProblemStatisticsMap'} ne $cache->{$sequence.':title'}) { |
|
next; |
|
} |
|
|
|
&CreateProblemStatisticsTableHeading($cache->{'DisplayFormat'}, |
&CreateProblemStatisticsTableHeading($cache->{'DisplayFormat'}, |
$cache->{$sequence.':source'}, |
$cache->{$sequence.':source'}, |
$cache->{$sequence.':title'}, |
$cache->{$sequence.':title'}, |
$headings,$r); |
$headings,$r); |
|
|
|
foreach my $problemID (split(':', $cache->{$sequence.':problems'})) { |
|
my $problem = $cache->{$problemID.':problem'}; |
|
$r->print("<br>$problem"); |
|
|
|
} |
|
} |
|
} |
|
=pod |
##777777 |
##777777 |
## $Str .= &Classify($discriminantFactor, $students); |
## $Str .= &Classify($discriminantFactor, $students); |
|
|
Line 783 sub BuildStatisticsTable {
|
Line 796 sub BuildStatisticsTable {
|
# close( OUT ); |
# close( OUT ); |
#666666 |
#666666 |
} |
} |
|
=cut |
|
|
=pod |
=pod |
sub Cache_Statistics { |
sub Cache_Statistics { |
Line 1051 sub GetGraphData {
|
Line 1065 sub GetGraphData {
|
untie(%GraphDat); |
untie(%GraphDat); |
my $Course = $ENV{'course.'.$cid.'.description'}; |
my $Course = $ENV{'course.'.$cid.'.description'}; |
$Course =~ s/\ /"_"/eg; |
$Course =~ s/\ /"_"/eg; |
my $GData=$Course.'&'.'Problems'.'&'.$ylab.'&'.$Max.'&'.$count.'&'.$data; |
my $GData=$Course.'&'.'Problems'.'&'.$ylab.'&'. |
|
$Max.'&'.$count.'&'.$data; |
} |
} |
else { |
else { |
$r->print("Unable to tie hash to db file"); |
$r->print("Unable to tie hash to db file"); |