--- loncom/interface/statistics/lonproblemstatistics.pm 2002/08/01 20:49:06 1.9 +++ loncom/interface/statistics/lonproblemstatistics.pm 2002/08/14 13:13:37 1.24 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: lonproblemstatistics.pm,v 1.9 2002/08/01 20:49:06 stredwic Exp $ +# $Id: lonproblemstatistics.pm,v 1.24 2002/08/14 13:13:37 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,7 +31,7 @@ # 11/1,11/4,11/16,12/14,12/16,12/18,12/20,12/31 Behrouz Minaei # YEAR=2002 # 1/22,2/1,2/6,2/25,3/2,3/6,3/17,3/21,3/22,3/26,4/7,5/6 Behrouz Minaei -# 5/12,5/14,5/15,5/19,5/26,7/16,7/25,7/29 Behrouz Minaei +# 5/12,5/14,5/15,5/19,5/26,7/16,7/25,7/29,8/5 Behrouz Minaei # ### @@ -43,13 +43,17 @@ use Apache::lonhtmlcommon; use Apache::loncoursedata; use GDBM_File; +my $jr; sub BuildProblemStatisticsPage { my ($cacheDB, $students, $courseID, $c, $r)=@_; my %cache; - #my %DoDiff; - unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) { - return '
Unable to tie database.'; + + $jr = $r; + + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) { + $r->print('Unable to tie database.'); + return; } my $Ptr = ''; @@ -66,307 +70,146 @@ sub BuildProblemStatisticsPage { 'ProblemStatistics', 'Statistics'); $Ptr .= ''."\n"; - $Ptr .= &ProblemStatisticsButtons($cache{'DisplayFormat'}); + $Ptr .= &ProblemStatisticsButtons($cache{'DisplayFormat'}, + $cache{'DisplayLegend'}); $Ptr .= ''; - $Ptr .= &ProblemStatisticsLegend(); + if($cache{'DisplayLegend'} eq 'Show Legend') { + $Ptr .= &ProblemStatisticsLegend(); + } $r->print($Ptr); + $r->rflush(); - untie(%cache); - foreach (@$students) { - my $courseData = - &Apache::loncoursedata::DownloadCourseInformation($_, $courseID); - last if ($c->aborted()); - if(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT,0640)) { - &Apache::loncoursedata::ProcessStudentData(\%cache, - $courseData, $_); + my @Header = ("Homework Sets Order","#Stdnts","Tries","Mod", + "Mean","#YES","#yes","%Wrng","DoDiff", + "S.D.","Skew.","D.F.1st","D.F.2nd","Disc."); + my $color=&setbgcolor(0); + +# my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID); +# my ($upper, $lower) = &Discriminant(\%discriminant,$r); + if(!defined($cache{'StatisticsCached'})) { + if(defined($cache{'StatisticsCached'})) { untie(%cache); + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { + $r->print('Unable to tie database.'); + return; + } + my @statkeys = split(':::', $cache{'StatisticsKeys'}); + delete $cache{'StatisticsKeys'}; + delete $cache{'StatisticsCached'}; + foreach(@statkeys) { + delete $cache{$_}; + } + } + untie(%cache); + &Apache::loncoursedata::DownloadStudentCourseDataSeparate($students, + 'true', + $cacheDB, + 'true', + 'true', + $courseID, + $r, $c); + if($c->aborted()) { return; } + + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) { + $r->print('Unable to tie database.'); + return; + } + my ($problemData) = &ExtractStudentData(\%cache, $students); + &CalculateStatistics($problemData, \%cache); + untie(%cache); + + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { + $r->print('Unable to tie database.'); + return; + } + foreach(keys(%$problemData)) { + $cache{$_} = $problemData->{$_}; + } + $cache{'StatisticsKeys'} = join(':::', keys(%$problemData)); + $cache{'StatisticsCached'} = 'true'; + untie(%cache); + + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) { + $r->print('Unable to tie database.'); + return; } } - if($c->aborted()) { return; } - - unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) { - return 'Unable to tie database.'; - } - my %discriminant=(); - my @list=(); - my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID); - 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); - my %Header = (0,"Homework Sets Order",1,"#Stdnts",2,"Tries",3,"Mod", - 4,"Mean",5,"#YES",6,"#yes",7,"%Wrng",8,"DoDiff", - 9,"S.D.",10,"Skew.",11,"D.F.1st",12,"D.F.2nd", 13, "Disc."); - my $color=&setbgcolor(0); - my %GraphDat= &BuildStatisticsTable(\%cache, $upper, $lower, \@list, - \%Header, $students, $r, $color); + my $orderedProblems = &SortProblems(\%cache, + $cache{'ProblemStatisticsSort'}, + $cache{'ProblemStatisticsAscend'}); + &BuildStatisticsTable(\%cache, $cache{'DisplayFormat'}, $orderedProblems, + \@Header, $r, $color); untie(%cache); -} - - -#---- Problem Statistics Web Page --------------------------------------- - -sub NumericSort { - $a <=> $b; + return; } +sub BuildGraphicChart { + my ($graph,$cacheDB,$courseDescription,$r)=@_; + my %cache; + my $max = 0; -sub CreateProblemStatisticsTableHeading { - my ($displayFormat,$sequenceSource,$sequenceTitle,$headings,$r)=@_; - if($displayFormat eq 'Display CSV Format') { - $r->print('P# | '."\n"; - for(my $nIndex=0; $nIndex < (scalar (keys %$headings)); $nIndex++) { - $Result .= ''.''.' | '."\n"; + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) { + return 'Unable to tie database.'; } - $Result .= "\n".'
---|