--- loncom/interface/lonstatistics.pm 2002/08/13 12:21:46 1.42
+++ loncom/interface/lonstatistics.pm 2003/01/12 23:45:47 1.58
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonstatistics.pm,v 1.42 2002/08/13 12:21:46 stredwic Exp $
+# $Id: lonstatistics.pm,v 1.58 2003/01/12 23:45:47 minaeibi Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,7 +35,7 @@
#
###
-package Apache::lonstatistics;
+package Apache::lonstatistics;
use strict;
use Apache::Constants qw(:common :http);
@@ -47,6 +47,7 @@ use Apache::lonhtmlcommon;
use Apache::lonproblemanalysis;
use Apache::lonproblemstatistics;
use Apache::lonstudentassessment;
+use Apache::lonpercentage;
use HTML::TokeParser;
use GDBM_File;
@@ -73,15 +74,41 @@ sub ProcessFormData{
'reportSelected',
'StudentAssessmentStudent',
'ProblemStatisticsSort']);
+ &CheckFormElement($cache, 'DownloadAll', 'DownloadAll', 'false');
+ if ($cache->{'DownloadAll'} ne 'false') {
+ # Clean the hell out of that cache!
+ # We cannot untie the hash at this scope (stupid libgd :( )
+ # So, remove every single key. What a waste of time....
+ # Of course, if you are doing this you are probably resigned
+ # to waiting a while.
+ &Apache::lonnet::logthis("Cleaning out the cache file");
+ while (my ($key,undef)=each(%$cache)) {
+ next if ($key eq 'DownloadAll');
+ delete($cache->{$key});
+ }
+ }
&CheckFormElement($cache, 'Status', 'Status', 'Active');
&CheckFormElement($cache, 'postdata', 'reportSelected', 'Class list');
&CheckFormElement($cache, 'reportSelected', 'reportSelected',
'Class list');
$cache->{'reportSelected'} =
&Apache::lonnet::unescape($cache->{'reportSelected'});
- &CheckFormElement($cache, 'DownloadAll', 'DownloadAll', 'false');
&CheckFormElement($cache, 'sort', 'sort', 'fullname');
&CheckFormElement($cache, 'download', 'download', 'false');
+ &CheckFormElement($cache, 'StatisticsMaps',
+ 'StatisticsMaps', 'All Maps');
+ &CheckFormElement($cache, 'StatisticsProblemSelect',
+ 'StatisticsProblemSelect', 'All Problems');
+ &CheckFormElement($cache, 'StatisticsPartSelect',
+ 'StatisticsPartSelect', 'All Parts');
+ if(defined($ENV{'form.Section'})) {
+ my @sectionsSelected = (ref($ENV{'form.Section'}) ?
+ @{$ENV{'form.Section'}} :
+ ($ENV{'form.Section'}));
+ $cache->{'sectionsSelected'} = join(':', @sectionsSelected);
+ } elsif(!defined($cache->{'sectionsSelected'})) {
+ $cache->{'sectionsSelected'} = $cache->{'sectionList'};
+ }
# student assessment
if(defined($ENV{'form.CreateStudentAssessment'}) ||
@@ -102,15 +129,6 @@ sub ProcessFormData{
&Apache::lonnet::unescape($cache->{'StudentAssessmentStudent'});
&CheckFormElement($cache, 'DefaultColumns', 'DefaultColumns', 'false');
- if(defined($ENV{'form.Section'})) {
- my @sectionsSelected = (ref($ENV{'form.Section'}) ?
- @{$ENV{'form.Section'}} :
- ($ENV{'form.Section'}));
- $cache->{'sectionsSelected'} = join(':', @sectionsSelected);
- } elsif(!defined($cache->{'sectionsSelected'})) {
- $cache->{'sectionsSelected'} = $cache->{'sectionList'};
- }
-
# Problem analysis
&CheckFormElement($cache, 'Interval', 'Interval', '1');
@@ -119,11 +137,12 @@ sub ProcessFormData{
'DisplayFormat', 'Display Table Format');
&CheckFormElement($cache, 'ProblemStatisticsAscend',
'ProblemStatisticsAscend', 'Ascending');
- &CheckFormElement($cache, 'ProblemStatisticsMaps',
- 'ProblemStatisticsMaps', 'All Maps');
&CheckFormElement($cache, 'ProblemStatisticsSort',
'ProblemStatisticsSort', 'Homework Sets Order');
- &CheckFormElement($cache, 'DisplayLegend', 'DisplayLegend', 'Hide Legend');
+ &CheckFormElement($cache, 'DisplayLegend', 'DisplayLegend',
+ 'Hide Legend');
+ &CheckFormElement($cache, 'SortProblems', 'SortProblems',
+ 'Sort Within Sequence');
# Search only form elements
my @headingColumns=();
@@ -238,9 +257,11 @@ sub SortStudents {
my $sortBy = '';
if(defined($cache->{'sort'})) {
$sortBy = ':'.$cache->{'sort'};
+ } else {
+ $sortBy = ':fullname';
}
- my @order = sort { $cache->{$a.$sortBy} cmp $cache->{$b.$sortBy} ||
- $cache->{$a.':fullname'} cmp $cache->{$b.':fullname'} }
+ my @order = sort { lc($cache->{$a.$sortBy}) cmp lc($cache->{$b.$sortBy}) ||
+ lc($cache->{$a.':fullname'}) cmp lc($cache->{$b.':fullname'}) }
@sorted1Students;
return \@order;
@@ -305,7 +326,7 @@ sub PrepareData {
$isRecalculate=1;
}
- my $isCached = &Apache::loncoursedata::TestCacheData($cacheDB,
+ my $isCached = &Apache::loncoursedata::TestCacheData($cacheDB,
$isRecalculate);
if($isCached < 0) {
return "Unable to tie hash to db file.";
@@ -317,14 +338,14 @@ sub PrepareData {
return "Unable to tie hash to db file.";
}
- if(!$isCached) {
+# if(!$isCached) {
my $processTopResourceMapReturn=
- &Apache::loncoursedata::ProcessTopResourceMap(\%cache, $c, $r);
+ &Apache::loncoursedata::ProcessTopResourceMap(\%cache, $c);
if($processTopResourceMapReturn ne 'OK') {
untie(%cache);
return $processTopResourceMapReturn;
}
- }
+ # }
if($c->aborted()) {
untie(%cache);
@@ -358,41 +379,40 @@ sub PrepareData {
&SpaceColumns($students, $studentInformation, $headings, \%cache);
$cache{'updateTime:columnWidth'}=24;
- if($cache{'download'} ne 'false') {
- my @who = ($cache{'download'});
+ my $download = $cache{'download'};
+ my $downloadAll = $cache{'DownloadAll'};
+ my @allStudents=();
+ if($download ne 'false') {
$cache{'download'} = 'false';
- if(&Apache::loncoursedata::DownloadStudentCourseData(\@who, 'false',
- $cacheDB, 'true',
- 'false', $courseID,
- $r, $c) ne 'OK') {
- untie(%cache);
- return 'Stop at download individual';
- }
- } elsif($cache{'DownloadAll'} ne 'false') {
+ } elsif($downloadAll ne 'false') {
$cache{'DownloadAll'} = 'false';
- my @allStudents;
- if($cache{'DownloadAll'} eq 'sorted') {
+ if($downloadAll eq 'sorted') {
@allStudents = @$students;
} else {
@allStudents = split(':::', $cache{'NamesOfStudents'});
}
- if(&Apache::loncoursedata::DownloadStudentCourseData(\@allStudents,
- 'false',
- $cacheDB, 'true',
+ }
+
+ untie(%cache);
+
+ if($download ne 'false') {
+ my @who = ($download);
+ if(&Apache::loncoursedata::DownloadStudentCourseData(\@who, 'false',
+ $cacheDB, 'true',
+ 'false', $courseID,
+ $r, $c) ne 'OK') {
+ return 'Stop at download individual';
+ }
+ } elsif($downloadAll ne 'false') {
+ if(&Apache::loncoursedata::DownloadStudentCourseData(\@allStudents,
+ 'false',
+ $cacheDB, 'true',
'true', $courseID,
$r, $c) ne 'OK') {
- untie(%cache);
return 'Stop at download all';
}
}
- if($c->aborted()) {
- untie(%cache);
- return 'aborted';
- }
-
- untie(%cache);
-
return ('OK', $students);
}
@@ -404,19 +424,37 @@ sub BuildClasslist {
return '
Unable to tie database.';
}
+# my $Ptr = '';
+# $Ptr .= '';
+# $Ptr .= 'Select Sections';
+# $Ptr .= ' | '."\n";
+# $Ptr .= ''."\n";
+# my @sectionsSelected = split(':',$cache{'sectionsSelected'});
+# my @sections = split(':',$cache{'sectionList'});
+# $Ptr .= &Apache::lonhtmlcommon::MultipleSectionSelect(\@sections,
+# \@sectionsSelected,
+# 'Statistics');
+# $Ptr .= ' |
';
+# $r->print($Ptr);
+# $r->rflush();
+# my %mySections = ();
+# foreach (@sections) { $mySections{$_} = 'True'; }
+# $r->print("
$cache{'sectionsSelected'}
");
+
my $Str='';
$Str .= ''."\n";
$Str .= ''."\n";
my $displayString = 'DISPLAYDATA  | '."\n";
- $Str .= &Apache::lonhtmlcommon::CreateHeadings(\%cache,
+ $Str .= &Apache::lonhtmlcommon::CreateHeadings(\%cache,
$studentInformation,
$headings, $displayString);
$Str .= ' '."\n";
my $alternate=0;
foreach (@$students) {
+# if ($mySections{$cache{$_.':'.'section'}} ne 'True') {next;}
my ($username, $domain) = split(':', $_);
if($alternate) {
$Str .= '';
@@ -464,8 +502,8 @@ sub CreateMainMenu {
$Str .= ''."\n";
$Str .= ' | | '."\n";
- $Str .= 'Analysis Reports: | '."\n";
- $Str .= 'Student Status: | '."\n";
+ $Str .= 'Select a Report | '."\n";
+ $Str .= 'Student Status | '."\n";
$Str .= ''."\n";
$Str .= ' 'Class list',
'problem_statistics' => 'Problem Statistics',
'student_assessment' => 'Student Assessment',
+ 'percentage' => 'Correct-problems Plot',
# 'activitylog' => 'Activity Log',
'reportSelected' => 'Class list');
@@ -515,17 +555,17 @@ sub BuildStatistics {
my $cacheDB = "/home/httpd/perl/tmp/$ENV{'user.name'}".
"_$ENV{'user.domain'}_$courseID\_statistics.db";
- $r->print(&Apache::lonhtmlcommon::Title('LON-CAPA Statistics'));
+ $r->print(&Apache::lonhtmlcommon::Title('Course Statistics and Charts'));
- my ($returnValue, $students) = &PrepareData($c, $cacheDB,
- \@studentInformation,
+ my ($returnValue, $students) = &PrepareData($c, $cacheDB,
+ \@studentInformation,
\@headings,$r);
if($returnValue ne 'OK') {
$r->print($returnValue."\n".' |
|