[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemstatistics.pm
minaeibi
lon-capa-cvs@mail.lon-capa.org
Tue, 06 Aug 2002 02:01:05 -0000
This is a MIME encoded message
--minaeibi1028599265
Content-Type: text/plain
minaeibi Mon Aug 5 22:01:05 2002 EDT
Modified files:
/loncom/interface/statistics lonproblemstatistics.pm
Log:
Sorting the statistics table works properly
--minaeibi1028599265
Content-Type: text/plain
Content-Disposition: attachment; filename="minaeibi-20020805220105.txt"
Index: loncom/interface/statistics/lonproblemstatistics.pm
diff -u loncom/interface/statistics/lonproblemstatistics.pm:1.13 loncom/interface/statistics/lonproblemstatistics.pm:1.14
--- loncom/interface/statistics/lonproblemstatistics.pm:1.13 Mon Aug 5 16:53:38 2002
+++ loncom/interface/statistics/lonproblemstatistics.pm Mon Aug 5 22:01:05 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonproblemstatistics.pm,v 1.13 2002/08/05 20:53:38 stredwic Exp $
+# $Id: lonproblemstatistics.pm,v 1.14 2002/08/06 02:01:05 minaeibi Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -105,7 +105,7 @@
# 'ProblemStatisticsHeading',
# 'ProblemStatisticsHeading',
# 'Homework Sets Order');
- $r->print("<br>state=".$state);
+# $r->print("<br>state=".$state);
my $TempCache;
@@ -146,12 +146,6 @@
#---- Problem Statistics Web Page ---------------------------------------
-
-sub NumericSort {
- $a <=> $b;
-}
-
-
sub CreateProblemStatisticsTableHeading {
my ($displayFormat,$sequenceSource,$sequenceTitle,$headings,$r)=@_;
if($displayFormat eq 'Display CSV Format') {
@@ -159,10 +153,12 @@
$r->print($sequenceSource.'"');
return;
}
-
- $r->print('<br><a href="'.$sequenceSource.
- '" target="_blank">'.$sequenceTitle.'</a>');
-
+ if ($sequenceSource eq 'Sorted by: ') {
+ $r->print('<br><b>'.$sequenceSource.$sequenceTitle.'</b>');
+ } else {
+ $r->print('<br><a href="'.$sequenceSource.
+ '" target="_blank">'.$sequenceTitle.'</a>');
+ }
my $Result = "\n".'<table border=2><tr><th>P#</th>'."\n";
for(my $nIndex=0; $nIndex < (scalar (keys %$headings)); $nIndex++) {
$Result .= '<th>'.'<input type="submit" name="';
@@ -218,6 +214,7 @@
$r->print('<script>popwin.close()</script>');
$r->rflush();
}
+
# ------ Dump the Student's DB file and handling the data for statistics table
sub ExtractStudentData {
@@ -417,18 +414,15 @@
}
}
+sub NumericSort {
+ $a <=> $b;
+}
-
-sub MySort {
- my $pos=shift;
- if ( $pos > 0 ) {
- if ($ENV{'form.order'} eq 'Descending') {$b <=> $a;}
- else { $a <=> $b; }
- }
- else {
-# if ($ENV{'form.order'} eq 'Descending') {$b cmp $a;}
-# else { $a cmp $b; }
- $a cmp $b;
+sub OrderedSort {
+ if ($ENV{'form.order'} eq 'Descending') {
+ $b <=> $a;
+ } else {
+ $a <=> $b;
}
}
@@ -598,7 +592,7 @@
$urlres=~/^(\w+)\/(\w+)/;
if ($StdNo) {
&Apache::lonnet::put('resevaldata',\%storestats,$1,$2);
- }
+ }
#-------------------------------- Row of statistical table
&TableRow($cache,$join,$cIdx,($p_count-1),$r,$color,
\%TempCache);
@@ -607,7 +601,7 @@
&CloseTable($cache,$r);
}
### &Close_PrgWin();
-#666666
+#6666666
# close( OUT );
#666666
return \%TempCache;
@@ -615,12 +609,10 @@
sub CacheStatisticsTable {
- my ($state,$cache,$Header,$r,$color)=@_;
- my @list = ();
- my $Useful;
- my $UnUseful;
+ my ($state,$cache,$headings,$r,$color)=@_;
+ my @list = ();
my %TempCache;
- my %myHeader = reverse( %$Header );
+ my %myHeader = reverse( %$headings );
my $pos = $myHeader{$state};
if ($pos > 0) {$pos++;}
my $p_count = $cache->{'ProblemCount'};
@@ -628,71 +620,62 @@
for ( my $k=0; $k<$p_count;$k++) {
my $key=$cache->{'CacheTable:'.$k};
my @Temp=split(/\&/,$key);
- if ( $pos == 0 ) {
- ($UnUseful,$Useful)=split(/\>/,$Temp[$pos]);
- }
- else {
- $Useful = $Temp[$pos];
- }
- $list[$k]=$Useful.'@'.$key;
- $r->print('<br>'.$list[$k]);
+ $list[$k]=$Temp[$pos].'+'.$key;
}
+
+ if ($pos>0) {
+# $r->print('<br>pos1='.$pos);
+# @list = sort OrderedSort (@list);
+ @list = sort NumericSort (@list);
+ } else {
+ @list = sort (@list);
+ }
+ my $cIdx=0;
-
- @list = sort MySort (@list);
-
- my $nIndex=0;
-
- return \%TempCache;
-}
-
-
-=pod
-
- if ( $Pos == 0 ) {
+ if ( $pos == 0 ) {
foreach my $sequence (split(':', $cache->{'orderedSequences'})) {
if($cache->{'ProblemStatisticsMaps'} ne 'All Maps' &&
$cache->{'ProblemStatisticsMaps'} ne $cache->{$sequence.':title'}) {
next;
}
+ if ($cIdx==$p_count) {
+ return \%TempCache;
+ }
&CreateProblemStatisticsTableHeading($cache->{'DisplayFormat'},
$cache->{$sequence.':source'},
$cache->{$sequence.':title'},
$headings,$r);
- my ($tar,$Tries,$Wrongs,$Code,$Disc)=split(/\&/,
- $list[$cIdx]);
- my ($SqOrd,$PrOrd,$Prob)=split(/\:/,$tar);
+ my ($tar)=split(/\&/,$list[$cIdx]);
+ $tar=~s/\+//eg;
+ my ($SqOrd)=split(/\@/,$tar);
$sequence+=100;
- while ($SqOrd==$sequence && $cIdx<$NoElements) {
- my %storestats=();
- my @lpr=split(/\&/,$pr);
- for (my $i=1; $i<=$#lpr; $i++) {
- my($Pre, $Post) = split(/\@/,$list[$nIndex]);
- #$r->print('<br>'.$Pre.'---'.$Post);
- &TableRow($cache,$Post,$i,$nIndex,$color,\%GraphDat);
- $nIndex++;
+ while ($SqOrd==$sequence && $cIdx<$p_count) {
+ my($Pre, $Post) = split(/\+/,$list[$cIdx]);
+ &TableRow($cache,$Post,$cIdx,$cIdx,$r,$color,\%TempCache);
+ $cIdx++;
+ my ($tar)=split(/\&/,$list[$cIdx]);
+ $tar=~s/\+//eg;
+ ($SqOrd)=split(/\@/,$tar);
}
- &CloseTable($cache);
+ &CloseTable($cache,$r);
}
}
else {
&CreateProblemStatisticsTableHeading($cache->{'DisplayFormat'},
- $cache->{$sequence.':source'},
- $cache->{$sequence.':title'},
+ 'Sorted by: ',
+ $headings->{$pos-1},
$headings,$r);
for ( my $nIndex = 0; $nIndex < $p_count; $nIndex++ ) {
- my($Pre, $Post) = split(/\@/,$list[$nIndex]);
- &TableRow($cache,$Post,$nIndex,$nIndex,$color,\%GraphDat);
+ my($Pre, $Post) = split(/\+/,$list[$nIndex]);
+ &TableRow($cache,$Post,$nIndex,$nIndex,$r,$color,\%TempCache);
}
- &CloseTable($cache);
+ &CloseTable($cache,$r);
}
return \%TempCache;
}
-=cut
-
sub TableRow {
my ($cache,$Str,$Idx,$RealIdx,$r,$color,$GraphDat)=@_;
@@ -723,7 +706,6 @@
} else {
$Ptr="\n".'<tr>'.
"\n".'<td>'.($RealIdx+1).'</td>'.
- # "\n".'<td>'.$PrOrd.$Temp.'</td>'.
"\n".'<td>'.$Temp.'</td>'.
"\n".'<td bgcolor='.$color->{"yellow"}.'> '.$StdNo.'</td>'.
"\n".'<td bgcolor='.$color->{"yellow"}.'>'.$TotalTries.'</td>'.
@@ -740,7 +722,7 @@
"\n".'<td bgcolor='.$color->{"yellow"}.'> '.$DiscNo.'</td>';
$r->print("\n".$Ptr.'</tr>' );
}
- $GraphDat->{'graph_gif:'.$RealIdx}=$DoD.':'.$Wrng;
+ $GraphDat->{'GraphGif:'.$RealIdx}=$DoD.':'.$Wrng;
}
@@ -940,47 +922,48 @@
sub GetGraphData {
- my ($ylab,$r,%GraphDat)=@_;
+ my ($ylab,$r,$cache)=@_;
my $Col;
my $data='';
my $count = 0;
my $Max = 0;
my $cid=$ENV{'request.course.id'};
- my $GraphDB = "/home/httpd/perl/tmp/$ENV{'user.name'}".
- "_$ENV{'user.domain'}_$cid\_graph.db";
- foreach (keys %GraphDat) {delete $GraphDat{$_};}
- if (-e "$GraphDB") {
- if (tie(%GraphDat,'GDBM_File',"$GraphDB",&GDBM_READER,0640)) {
- if ( $ylab eq 'DoDiff Graph' ) {
- $ylab = 'Degree-of-Difficulty';
- $Col = 0;
- }
- else {
- $ylab = 'Wrong-Percentage';
- $Col = 1;
- }
- 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 $Course = $ENV{'course.'.$cid.'.description'};
- $Course =~ s/\ /"_"/eg;
- my $GData=$Course.'&'.'Problems'.'&'.$ylab.'&'.
- $Max.'&'.$count.'&'.$data;
- }
- else {
- $r->print("Unable to tie hash to db file");
- }
+
+ if ( $ylab eq 'DoDiff Graph' ) {
+ $ylab = 'Degree-of-Difficulty';
+ $Col = 0;
}
+ else {
+ $ylab = 'Wrong-Percentage';
+ $Col = 1;
+ }
+
+ 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;
+ }
+
+ # 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 $Course = $ENV{'course.'.$cid.'.description'};
+ $Course =~ s/\ /"_"/eg;
+ my $GData=$Course.'&'.'Problems'.'&'.$ylab.'&'.
+ $Max.'&'.$count.'&'.$data;
}
--minaeibi1028599265--