[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemstatistics.pm
minaeibi
lon-capa-cvs@mail.lon-capa.org
Tue, 06 Aug 2002 17:38:26 -0000
This is a MIME encoded message
--minaeibi1028655506
Content-Type: text/plain
minaeibi Tue Aug 6 13:38:26 2002 EDT
Modified files:
/loncom/interface/statistics lonproblemstatistics.pm
Log:
Loading the graphical chart completed
--minaeibi1028655506
Content-Type: text/plain
Content-Disposition: attachment; filename="minaeibi-20020806133826.txt"
Index: loncom/interface/statistics/lonproblemstatistics.pm
diff -u loncom/interface/statistics/lonproblemstatistics.pm:1.15 loncom/interface/statistics/lonproblemstatistics.pm:1.16
--- loncom/interface/statistics/lonproblemstatistics.pm:1.15 Mon Aug 5 22:07:19 2002
+++ loncom/interface/statistics/lonproblemstatistics.pm Tue Aug 6 13:38:26 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonproblemstatistics.pm,v 1.15 2002/08/06 02:07:19 minaeibi Exp $
+# $Id: lonproblemstatistics.pm,v 1.16 2002/08/06 17:38:26 minaeibi Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,7 +47,7 @@
sub BuildProblemStatisticsPage {
my ($cacheDB, $students, $courseID, $c, $r)=@_;
my %cache;
- #my %DoDiff;
+
unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
return '<html><body>Unable to tie database.</body></html>';
}
@@ -101,12 +101,6 @@
my $state=$ENV{'form.ProblemStatisticsHeading'};
-# my $state=&Apache::lonstatistics::CheckFormElement(\%cache,
-# 'ProblemStatisticsHeading',
-# 'ProblemStatisticsHeading',
-# 'Homework Sets Order');
-# $r->print("<br>state=".$state);
-
my $TempCache;
if ($state) {
@@ -119,11 +113,9 @@
my $index=0;
foreach (@$students) {
$index++;
- #&Apache::lonstatistics::Update_PrgWin(++$index,$r);
&ExtractStudentData(\%cache, $_, \@list,\%Discuss, $r,
\%discriminant);
}
- #&Apache::lonstatistics::Close_PrgWin($r);
my ($upper, $lower) = &Discriminant(\%discriminant,$r);
$TempCache= &BuildStatisticsTable(\%cache, $upper, $lower,
\@list, \%Header, $students,
@@ -241,17 +233,12 @@
my $tempProblemOrder=100;
if($cache->{'ProblemStatisticsMaps'} ne 'All Maps' &&
$cache->{'ProblemStatisticsMaps'} ne $cache->{$sequence.':title'}) {
-# $r->print("<br>sequences=$cache->{'orderedSequences'}");
-# $r->print("<br>".$cache->{$sequence.':title'});
next;
}
$tempSequenceOrder++;
- #$discrim .= '&';
foreach my $problemID (split(':', $cache->{$sequence.':problems'})) {
-# $r->print("<br>problems=$cache->{$sequence.':problems'}");
my $problem = $cache->{$problemID.':problem'};
-# $r->print("<br>$problemID === $problem");
my $LatestVersion = $cache->{$name.':version:'.$problem};
# Output dashes for all the parts of this problem if there
# is no version information about the current problem.
@@ -275,7 +262,6 @@
':parts'})) {
$tempProblemOrder++;
$partData{'count'}++;
-# $r->print("<br>parts=$cache->{$sequence.':'.$problemID.':parts'}");
$partData{$part.':order'}=$tempProblemOrder;
$partData{$part.':tries'}=0;
$partData{$part.':code'}='-';
@@ -327,10 +313,6 @@
}
}
-#$Apache::lonxml::debug=1;
-#&Apache::lonhomework::showhash(%partData);
-#$Apache::lonxml::debug=0;
-
# Loop through all the parts for the current problem in the
# correct order and prepare the output
my $partCounter=0;
@@ -348,9 +330,7 @@
if($partData{'count'} > 1) {
$ptr .= "*(part $_)";
}
- #if($partCounter > 1) {
- $discrim .= '&';
- #}
+ $discrim .= '&';
my ($pr_no,$dod)=split('&',$ptr);
# my $DoDiff=$DoDiff->{$dod};
@@ -498,25 +478,13 @@
$p_count++;
my $Dummy;
($ResId,$Dummy)=split(/\*/,$Temp);
-
-######################
$Temp = '<a href="'.$cache->{$ResId.':source'}.
'" target="_blank">'.$cache->{$ResId.':title'}.$Dummy.'</a>';
- #$r->print('<br>rid='.$ResId);
- #$r->print('<br>src='.$cache->{$ResId.':source'});
- #$r->print('<br>tit='.$cache->{$ResId.':title'});
-
- my $res = &Apache::lonnet::declutter($cache->{$ResId.':source'});
- my $urlres=$res;
-
- $ResId=~/(\d+)\.(\d+)/;
- my $Map = &Apache::lonnet::declutter( $cache->{'map_id_'.$1} );
- $urlres=$Map;
-#######################
-
-# $res = '<a href="'.$cache->{$ResId.':source'}.'">'.$res.'</a>';
- #$Map = '<a href="'.$Map.'">'.$res.'</a>';
+# my $urlres = $cache->{$sequence.':source'});
+#check with Gerd
+ #symb of the problem (already decluttered and cleaned)
+ my $urlres = $cache->{$ResId.':problem'};
#------------------------ Compute the Average of Tries about one problem
my $Average = ($StdNo) ? $TotalTries/$StdNo : 0;
@@ -524,7 +492,7 @@
$storestats{$ENV{'request.course.id'}.'___'.$urlres.'___timestamp'}=time;
$storestats{$ENV{'request.course.id'}.'___'.$urlres.'___stdno'}=$StdNo;
$storestats{$ENV{'request.course.id'}.'___'.$urlres.'___avetries'}=$Average;
-
+
#-------------------------------- Compute percentage of Wrong tries
my $Wrong = ( $StdNo ) ? 100 * ( $Incorrect / $StdNo ) : 0;
@@ -581,7 +549,6 @@
$SD.'&'.$Sk.'&'.$_D1.'&'.$_D2.'&'.
$DiscNo.'&'.$Prob;
-#####{$sequence.'@'.$pOrd}
$TempCache{'CacheTable:'.($p_count-1)}=$join;
#6666666
@@ -589,6 +556,7 @@
# print (OUT $out.'@'.$DoD.'&');
#6666666
+#check with Gerd
$urlres=~/^(\w+)\/(\w+)/;
if ($StdNo) {
&Apache::lonnet::put('resevaldata',\%storestats,$1,$2);
@@ -624,7 +592,6 @@
}
if ($pos>0) {
-# $r->print('<br>pos1='.$pos);
@list = sort OrderedSort (@list);
} else {
@list = sort (@list);
@@ -863,9 +830,6 @@
#------- Creating Discimination factor
sub Discriminant {
my ($discriminant,$r)=@_;
-#$Apache::lonxml::debug=1;
-#&Apache::lonhomework::showhash(%$discriminant);
-#$Apache::lonxml::debug=0;
my @discriminantKeys=keys(%$discriminant);
my $Count = scalar @discriminantKeys;
@@ -901,70 +865,53 @@
# ------------------------------------------- Prepare data for Graphical chart
-sub BuildDiffGraph {
- my ($r)=@_;
-
- my $graphData = &GetGraphData('DiffGraph', $r);
- $r->print('<IMG src="/cgi-bin/graph.gif?'.$graphData.'" />');
-
- return;
-}
-
-sub BuildWrongGraph {
- my ($r)=@_;
-
- my $graphData = &GetGraphData('WrongGraph', $r);
- $r->print('<IMG src="/cgi-bin/graph.gif?'.$graphData.'" />');
-
- return;
-}
-
-
-sub GetGraphData {
- my ($ylab,$r,$cache)=@_;
+sub BuildGraphicChart {
+ my ($ylab,$r,$cacheDB)=@_;
+ my %cache;
my $Col;
my $data='';
my $count = 0;
my $Max = 0;
- my $cid=$ENV{'request.course.id'};
- if ( $ylab eq 'DoDiff Graph' ) {
- $ylab = 'Degree-of-Difficulty';
- $Col = 0;
- }
- else {
- $ylab = 'Wrong-Percentage';
- $Col = 1;
+ unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
+ return '<html><body>Unable to tie database.</body></html>';
}
-
- my $p_count = $cache->{'ProblemCount'};
+
+ my $p_count = $cache{'ProblemCount'};
for ( my $k=0; $k<$p_count;$k++) {
- my $key=$cache->{'CacheTable:'.$k};
- my @Temp=split(/\&/,$key);
- # $list[$k]=$key;
+ my @Temp=split(/\:/,$cache{'GraphGif:'.$k});
+ my $inf = $Temp[$Col];
+ if ( $Max < $inf ) {$Max = $inf;}
+ $data .= $inf.',';
+ $count++;
}
+ untie(%cache);
+# $r->print("<br>count=$p_count >>data= $data");
- # foreach (sort NumericSort keys %GraphDat) {
- # my @Temp=split(/\:/,$GraphDat{$_});
- # my $inf = $Temp[$Col];
- # if ( $Max < $inf ) {$Max = $inf;}
- # $data .= $inf.',';
- # $count++;
- # }
if ( $Max > 1 ) {
$Max += (10 - $Max % 10);
$Max = int($Max);
} else { $Max = 1; }
- #untie(%GraphDat);
+ my $cid=$ENV{'request.course.id'};
+ if ( $ylab eq 'DoDiff Graph' ) {
+ $ylab = 'Degree-of-Difficulty';
+ $Col = 0;
+ } else {
+ $ylab = 'Wrong-Percentage';
+ $Col = 1;
+ }
my $Course = $ENV{'course.'.$cid.'.description'};
$Course =~ s/\ /"_"/eg;
- my $GData=$Course.'&'.'Problems'.'&'.$ylab.'&'.
+ my $GData=$Course.'&'.'Problems#'.'&'.$ylab.'&'.
$Max.'&'.$count.'&'.$data;
-}
+ $r->print('<IMG src="/cgi-bin/graph.gif?'.$GData.'" />');
+
+ return;
+}
1;
__END__
--minaeibi1028655506--