--- loncom/interface/lonquickgrades.pm 2011/05/21 01:29:43 1.87 +++ loncom/interface/lonquickgrades.pm 2011/06/04 19:49:28 1.101 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.87 2011/05/21 01:29:43 www Exp $ +# $Id: lonquickgrades.pm,v 1.101 2011/06/04 19:49:28 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,6 +35,8 @@ use Apache::loncommon; use Apache::lonlocal; use Apache::lonnet; use Apache::grades; +use Apache::loncoursedata; +use Apache::lonstudentassessment; sub handler { my $r = shift; @@ -89,6 +91,39 @@ sub real_handler { my $udom; my $stdid; if ($cangrade) { + $r->print("
'.&mt('Sections').''. + &Apache::loncommon::help_open_topic("Chart_Sections"). + ' | '. + ''.&mt('Groups').''. + ' | '. + ''.&mt('Student Data').''. + &Apache::loncommon::help_open_topic("Chart_Student_Data"). + ' | '. + ''.&mt('Access Status').''. + &Apache::loncommon::help_open_topic("Chart_Enrollment_Status"). + ' | '. + ''.&mt('Output Format').''. + &Apache::loncommon::help_open_topic("Chart_Output_Formats"). + ' | |
'."\n". + &Apache::lonstatistics::SectionSelect('Section','multiple',5). + ' | '. + &Apache::lonstatistics::GroupSelect('Group','multiple',5). + ' | '. + &Apache::lonstatistics::StudentDataSelect('StudentData','multiple',5,undef). + ' | '."\n". + &Apache::lonhtmlcommon::StatusOptions(undef,undef,5). + ' | '."\n". + &Apache::lonstudentassessment::CreateAndParseOutputSelector(). + ' | '. + ''. + ' |
'.&mt('Full Name: [_1]',&Apache::loncommon::plainname($uname,$udom)).'
'); } @@ -130,6 +165,35 @@ sub real_handler { } +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); + + my $classlist = &Apache::loncoursedata::get_classlist(); + + my $statusidx = &Apache::loncoursedata::CL_STATUS(); + my $usernameidx = &Apache::loncoursedata::CL_SNAME(); + my $domainidx = &Apache::loncoursedata::CL_SDOM(); + my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME(); + + foreach my $key (keys(%{$classlist})) { + my $student = $classlist->{$key}; + my $perc=&getStudentCatGrade($classlist->{$student}->[$usernameidx], + $classlist->{$student}->[$domainidx], + %categories); + } +} + + sub startGradeScreen { my ($r,$mode)=@_; @@ -242,39 +306,40 @@ sub getData { my $stack = $iterator->getStack(); for my $part (@{$parts}) { - my $completionStatus = $curRes->getCompletionStatus($part); my $dateStatus = $curRes->getDateStatus($part); - - if ($completionStatus == $curRes->EXCUSED()) { + my $weight = $curRes->weight($part); + my $problemstatus = $curRes->problemstatus($part); + + if ($curRes->solved($part) eq 'excused') { next; } if ($showPoints) { my $score = 0; # If we're not telling status and the answer date isn't passed yet, # it's an "attempted" point - if ((($curRes->problemstatus($part) eq 'no') || - ($curRes->problemstatus($part) eq 'no_feedback_ever')) && + if ((($problemstatus eq 'no') || + ($problemstatus eq 'no_feedback_ever')) && ($dateStatus != $curRes->ANSWER_OPEN)) { my $status = $curRes->simpleStatus($part); if ($status == $curRes->ATTEMPTED) { - $partsAttempted += $curRes->weight($part); + $partsAttempted += $weight; $totalAttempted += $partsAttempted; } } else { - $score = &Apache::grades::compute_points($curRes->weight($part), $curRes->awarded($part)); + $score = &Apache::grades::compute_points($weight, $curRes->awarded($part)); } $partsRight += $score; $totalRight += $score; - $partsCount += $curRes->weight($part); + $partsCount += $weight; $curRes->{DATA}->{PROB_SCORE} += $score; - $curRes->{DATA}->{PROB_WEIGHT} += $curRes->weight($part); + $curRes->{DATA}->{PROB_WEIGHT} += $weight; if ($curRes->opendate($part) < $now) { - $totalPossible += $curRes->weight($part); - $curRes->{DATA}->{PROB_POSSIBLE} += $curRes->weight($part); + $totalPossible += $weight; + $curRes->{DATA}->{PROB_POSSIBLE} += $weight; } - $totalParts += $curRes->weight($part); + $totalParts += $weight; } else { my $status = $curRes->simpleStatus($part); my $thisright = 0; @@ -291,7 +356,6 @@ sub getData { $totalAttempted++; } - my $dateStatus = $curRes->getDateStatus($part); $totalParts++; if ($curRes->opendate($part) < $now) { $totalPossible++; @@ -461,7 +525,7 @@ sub outputCategories { &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(). @@ -471,13 +535,6 @@ sub outputCategories { ''. ''); } -# -# Debug -# -# my %data=&dumpdata($navmap); -# foreach (keys(%data)) { -# $r->print("\n'.&mt('Total raw points: [_1]/[_2]',&numberout($totalcorrect),&numberout($totalpossible)).'
'); + $r->print(''.&mt('Adjusted raw points: [_1]/[_2]',&numberout($totalcorrect),&numberout($totalpossible)).'
'); } # Calculation - $r->print(''.&mt('Calculated points: [_1]/[_2]',&numberout($totalcorrect),&numberout($totalpossible)).'
'); + $r->print('