[LON-CAPA-cvs] cvs: loncom /interface lonquickgrades.pm
www
www@source.lon-capa.org
Fri, 03 Jun 2011 00:04:48 -0000
www Fri Jun 3 00:04:48 2011 EDT
Modified files:
/loncom/interface lonquickgrades.pm
Log:
Work on category calculation for spreadsheets
Index: loncom/interface/lonquickgrades.pm
diff -u loncom/interface/lonquickgrades.pm:1.98 loncom/interface/lonquickgrades.pm:1.99
--- loncom/interface/lonquickgrades.pm:1.98 Thu Jun 2 01:34:34 2011
+++ loncom/interface/lonquickgrades.pm Fri Jun 3 00:04:47 2011
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Quick Student Grades Display
#
-# $Id: lonquickgrades.pm,v 1.98 2011/06/02 01:34:34 www Exp $
+# $Id: lonquickgrades.pm,v 1.99 2011/06/03 00:04:47 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,17 +35,6 @@
use Apache::lonlocal;
use Apache::lonnet;
use Apache::grades;
-use Time::HiRes;
-my $time=0;
-
-sub tim {
- my ($label)=@_;
- my $tt=&Time::HiRes::time();
- my $dt=$tt-$time;
- &Apache::lonnet::logthis("qg $label ".$dt);
- $time=$tt;
-}
-
sub handler {
my $r = shift;
@@ -136,11 +125,28 @@
$navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);
}
if ($cangrade) { $r->print("\n</form>\n"); }
+
&endGradeScreen($r);
return OK;
}
+sub getStudentCatGrade {
+ my ($uname,$udom,%categories)=@_;
+ my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=
+ &getData(1,$uname,$udom);
+ return &output_category_table(undef,0,$navmap,0,%categories);
+}
+
+sub getAllStudentData {
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my %categories=&Apache::lonnet::dump('grading_categories',$cdom,$cnum);
+#FIXME: debugging output
+ return &getStudentCatGrade('korte','gerd',%categories);
+}
+
+
sub startGradeScreen {
my ($r,$mode)=@_;
@@ -472,7 +478,7 @@
&Apache::lonnet::put('grading_categories',\%categories,$cdom,$cnum);
}
# new categories loaded now
- &output_category_table($r,$cangrade,$navmap,%categories);
+ &output_category_table($r,$cangrade,$navmap,1,%categories);
#
if ($cangrade) {
$r->print(&Apache::loncommon::resourcebrowser_javascript().
@@ -482,40 +488,6 @@
'<input type="submit" name="storechanges" value="'.&mt("Save changes to grading categories").'" />'.
'<script>function storecmd (cmd) { document.quickform.cmd.value=cmd; document.quickform.submit(); }</script>');
}
-#
-# Debug
-#
-# my %data=&dumpdata($navmap);
-# foreach (keys(%data)) {
-# $r->print("\n<br />".$_.'='.$data{$_});
-# }
-# my @debugarray=('5:1','4:3','1:1','5:5','6:7');
-# $r->print("Array: ".join(',',@debugarray).'<br />');
-# $r->print("0,0,0: ".join(',',&drop(0,0,0,@debugarray)).'<br />');
-# $r->print("1,0,0: ".join(',',&drop(1,0,0,@debugarray)).'<br />');
-# $r->print("0,1,0: ".join(',',&drop(0,1,0,@debugarray)).'<br />');
-# $r->print("1,1,0: ".join(',',&drop(1,1,0,@debugarray)).'<br />');
-#
-# $r->print("0,0,2: ".join(',',&drop(0,0,2,@debugarray)).'<br />');
-# $r->print("1,0,2: ".join(',',&drop(1,0,2,@debugarray)).'<br />');
-# $r->print("0,1,2: ".join(',',&drop(0,1,2,@debugarray)).'<br />');
-# $r->print("1,1,2: ".join(',',&drop(1,1,2,@debugarray)).'<br />');
-#
-# $r->print("0,0,4: ".join(',',&drop(0,0,4,@debugarray)).'<br />');
-# $r->print("1,0,4: ".join(',',&drop(1,0,4,@debugarray)).'<br />');
-# $r->print("0,1,4: ".join(',',&drop(0,1,4,@debugarray)).'<br />');
-# $r->print("1,1,4: ".join(',',&drop(1,1,4,@debugarray)).'<br />');
-#
-# $r->print("0,0,5: ".join(',',&drop(0,0,5,@debugarray)).'<br />');
-# $r->print("1,0,5: ".join(',',&drop(1,0,5,@debugarray)).'<br />');
-# $r->print("0,1,5: ".join(',',&drop(0,1,5,@debugarray)).'<br />');
-# $r->print("1,1,5: ".join(',',&drop(1,1,5,@debugarray)).'<br />');
-#
-# $r->print("0,0,7: ".join(',',&drop(0,0,7,@debugarray)).'<br />');
-# $r->print("1,0,7: ".join(',',&drop(1,0,7,@debugarray)).'<br />');
-# $r->print("0,1,7: ".join(',',&drop(0,1,7,@debugarray)).'<br />');
-# $r->print("1,1,7: ".join(',',&drop(1,1,7,@debugarray)).'<br />');
-
}
#
@@ -598,21 +570,23 @@
#
sub output_category_table {
- my ($r,$cangrade,$navmaps,%categories)=@_;
+ my ($r,$cangrade,$navmaps,$output,%categories)=@_;
my $totalweight=0;
my $totalpoints=0;
- $r->print(&Apache::loncommon::start_data_table());
+ if ($output) {
+ $r->print(&Apache::loncommon::start_data_table());
#
- &output_category_table_header($r,$cangrade);
+ &output_category_table_header($r,$cangrade);
+ }
#
my @order=split(/\,/,$categories{'order'});
#
my %performance=&dumpdata($navmaps);
my $maxpos=$#order;
for (my $i=0;$i<=$maxpos;$i++) {
- my ($correct,$possible,$type,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,\%performance,1,%categories);
+ my ($correct,$possible,$type,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,\%performance,$output,%categories);
unless ($possible) { next; }
$totalpoints+=$weight*$correct/$possible;
$totalweight+=$weight;
@@ -621,9 +595,10 @@
my $perc=0;
if ($totalweight) { $perc=100.*$totalpoints/$totalweight; }
- &bottom_line_category($r,$cangrade,$perc);
-#
- $r->print(&Apache::loncommon::end_data_table());
+ if ($output) {
+ &bottom_line_category($r,$cangrade,$perc);
+ $r->print(&Apache::loncommon::end_data_table());
+ }
return $perc;
}
@@ -649,14 +624,15 @@
sub output_and_calc_category {
my ($r,$cangrade,$navmaps,$id,$currentpos,$maxpos,$performance,$output,%categories)=@_;
+
+ if ($output) { $r->print("\n".&Apache::loncommon::start_data_table_row()); }
- my $iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/");
- my %lt=&Apache::lonlocal::texthash(
+ if ($output && $cangrade) {
+ my $iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/");
+ my %lt=&Apache::lonlocal::texthash(
'up' => 'Move Up',
'dw' => 'Move Down');
- if ($output) { $r->print("\n".&Apache::loncommon::start_data_table_row()); }
- if ($output && $cangrade) {
$r->print(<<ENDMOVE);
<td>
<div class="LC_docs_entry_move">