version 1.31, 2002/07/25 19:30:24
|
version 1.32, 2002/07/25 21:23:51
|
Line 94 sub ProcessFormData{
|
Line 94 sub ProcessFormData{
|
} else { |
} else { |
$cache->{'StudentAssessmentMove'} = 'selected'; |
$cache->{'StudentAssessmentMove'} = 'selected'; |
} |
} |
&CheckFormElement($cache, 'StudentAssessmentMap', 'StudentAssessmentMap', |
|
'All Maps'); |
|
&CheckFormElement($cache, 'StudentAssessmentStudent', |
&CheckFormElement($cache, 'StudentAssessmentStudent', |
'StudentAssessmentStudent', 'All Students'); |
'StudentAssessmentStudent', 'All Students'); |
$cache->{'StudentAssessmentStudent'} = |
$cache->{'StudentAssessmentStudent'} = |
Line 195 sub SortStudents {
|
Line 193 sub SortStudents {
|
return \@order; |
return \@order; |
} |
} |
|
|
|
=pod |
|
|
|
=item &SpaceColumns() |
|
|
|
Determines the width of all the columns in the chart. It is based on |
|
the max of the data for that column and its header. |
|
|
|
=over 4 |
|
|
|
Input: $students, $studentInformation, $headings, $ChartDB |
|
|
|
$students: An array pointer to a list of students (username:domain) |
|
|
|
$studentInformatin: The type of data for the student information. It is |
|
used as part of the key in $CacheData. |
|
|
|
$headings: The name of the student information columns. |
|
|
|
$ChartDB: The name of the cache database which is opened for read/write. |
|
|
|
Output: None - All data stored in cache. |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub SpaceColumns { |
|
my ($students,$studentInformation,$headings,$cache)=@_; |
|
|
|
# Initialize Lengths |
|
for(my $index=0; $index<(scalar @$headings); $index++) { |
|
my @titleLength=split(//,$headings->[$index]); |
|
$cache->{$studentInformation->[$index].':columnWidth'}= |
|
scalar @titleLength; |
|
} |
|
|
|
foreach my $name (@$students) { |
|
foreach (@$studentInformation) { |
|
my @dataLength=split(//,$cache->{$name.':'.$_}); |
|
my $length=(scalar @dataLength); |
|
if($length > $cache->{$_.':columnWidth'}) { |
|
$cache->{$_.':columnWidth'}=$length; |
|
} |
|
} |
|
} |
|
|
|
return; |
|
} |
|
|
sub PrepareData { |
sub PrepareData { |
my ($c, $cacheDB)=@_; |
my ($c, $cacheDB, $studentInformation, $headings)=@_; |
|
|
# Test for access to the cache data |
# Test for access to the cache data |
my $courseID=$ENV{'request.course.id'}; |
my $courseID=$ENV{'request.course.id'}; |
Line 255 sub PrepareData {
|
Line 302 sub PrepareData {
|
|
|
&ProcessFormData(\%cache); |
&ProcessFormData(\%cache); |
my $students = &SortStudents(\%cache); |
my $students = &SortStudents(\%cache); |
|
&SpaceColumns($students, $studentInformation, $headings, \%cache); |
|
$cache{'updateTime:columnWidth'}=24; |
|
|
if($cache{'download'} ne 'false') { |
if($cache{'download'} ne 'false') { |
my $who = $cache{'download'}; |
my $who = $cache{'download'}; |
Line 291 sub PrepareData {
|
Line 340 sub PrepareData {
|
return 'aborted'; |
return 'aborted'; |
} |
} |
|
|
if($c->aborted()) { |
|
untie(%cache); |
|
return 'aborted'; |
|
} |
|
|
|
untie(%cache); |
untie(%cache); |
|
|
return ('OK', $students); |
return ('OK', $students); |
Line 359 sub setbgcolor {
|
Line 403 sub setbgcolor {
|
} |
} |
|
|
sub BuildClasslist { |
sub BuildClasslist { |
my ($cacheDB,$students,$studentInformation,$headings,$spacePadding)=@_; |
my ($cacheDB,$students,$studentInformation,$headings)=@_; |
|
|
my %cache; |
my %cache; |
unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) { |
unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) { |
Line 372 sub BuildClasslist {
|
Line 416 sub BuildClasslist {
|
|
|
my $displayString = '<td align="left"><a href="/adm/statistics?'; |
my $displayString = '<td align="left"><a href="/adm/statistics?'; |
$displayString .= 'sort=LINKDATA">DISPLAYDATA </a></td>'."\n"; |
$displayString .= 'sort=LINKDATA">DISPLAYDATA </a></td>'."\n"; |
$Str .= &Apache::lonhtmlcommon::CreateStudentInformationHeadings(\%cache, |
$Str .= &Apache::lonhtmlcommon::CreateHeadings(\%cache, $studentInformation, |
$studentInformation, |
$headings, $displayString); |
$headings, |
|
$displayString); |
|
$Str .= '<td align="left">'; |
|
$Str .= '<a href="/adm/statistics?sort=lastDownloadTime">'; |
|
$Str .= 'Last Updated </a></td>'."\n"; |
|
$Str .= '</tr>'."\n"; |
$Str .= '</tr>'."\n"; |
my $alternate=0; |
my $alternate=0; |
foreach (@$students) { |
foreach (@$students) { |
my ($username, $domain) = split(':', $_); |
my ($username, $domain) = split(':', $_); |
if($alternate) { |
if($alternate) { |
$Str .= '<tr bgcolor="#ffffe6"><td>'; |
$Str .= '<tr bgcolor="#ffffe6">'; |
} else { |
} else { |
$Str .= '<tr bgcolor="#ffffc6"><td>'; |
$Str .= '<tr bgcolor="#ffffc6">'; |
} |
} |
$alternate = ($alternate + 1) % 2; |
$alternate = ($alternate + 1) % 2; |
foreach my $data (@$studentInformation) { |
foreach my $data (@$studentInformation) { |
|
$Str .= '<td>'; |
if($data eq 'fullname') { |
if($data eq 'fullname') { |
$Str .= '<a href="/adm/statistics?reportSelected='; |
$Str .= '<a href="/adm/statistics?reportSelected='; |
$Str .= &Apache::lonnet::escape('Student Assessment'); |
$Str .= &Apache::lonnet::escape('Student Assessment'); |
$Str .= '&StudentAssessmentStudent='; |
$Str .= '&StudentAssessmentStudent='; |
$Str .= &Apache::lonnet::escape($cache{$_.':'.$data}).'">'; |
$Str .= &Apache::lonnet::escape($cache{$_.':'.$data}).'">'; |
#$Str .= 'Student Assessment'.'">'; |
$Str .= $cache{$_.':'.$data}.' '; |
} |
|
|
|
$Str .= $cache{$_.':'.$data}.' '; |
|
|
|
if($data eq 'fullname') { |
|
$Str .= '</a>'; |
$Str .= '</a>'; |
|
} elsif($data eq 'updateTime') { |
|
$Str .= '<a href="/adm/statistics?reportSelected='; |
|
$Str .= &Apache::lonnet::escape('Class list'); |
|
$Str .= '&download='.$_.'">'; |
|
$Str .= $cache{$_.':'.$data}.' '; |
|
$Str .= ' </a>'; |
|
} else { |
|
$Str .= $cache{$_.':'.$data}.' '; |
} |
} |
|
|
$Str .= '</td><td>'; |
$Str .= '</td>'."\n"; |
} |
} |
|
|
$Str .= '<a href="/adm/statistics?download='.$_.'">'; |
|
my $downloadTime = $cache{$_.':lastDownloadTime'}; |
|
if($downloadTime ne 'Not downloaded') { |
|
$downloadTime = localtime($downloadTime); |
|
} |
|
$Str .= $downloadTime; |
|
|
|
$Str .= ' </a></td></tr>'."\n"; |
|
} |
} |
|
|
|
$Str .= '</tr>'."\n"; |
$Str .= '</table></td></tr></table>'."\n"; |
$Str .= '</table></td></tr></table>'."\n"; |
|
|
untie(%cache); |
untie(%cache); |
Line 428 sub BuildStatistics {
|
Line 463 sub BuildStatistics {
|
my ($r)=@_; |
my ($r)=@_; |
|
|
my $c = $r->connection; |
my $c = $r->connection; |
my @studentInformation=('fullname','section','id','domain','username'); |
my @studentInformation=('fullname','section','id','domain','username', |
my @headings=('Full Name', 'Section', 'PID', 'Domain', 'User Name'); |
'updateTime'); |
my $spacePadding = ' '; |
my @headings=('Full Name', 'Section', 'PID', 'Domain', 'User Name', |
|
'Last Updated'); |
|
my $spacing = ' '; |
my %reports = ('classlist' => 'Class list', |
my %reports = ('classlist' => 'Class list', |
'problem_statistics' => 'Problem Statistics', |
'problem_statistics' => 'Problem Statistics', |
'student_assessment' => 'Student Assessment', |
'student_assessment' => 'Student Assessment', |
Line 442 sub BuildStatistics {
|
Line 479 sub BuildStatistics {
|
"_$ENV{'user.domain'}_$courseID\_statistics.db"; |
"_$ENV{'user.domain'}_$courseID\_statistics.db"; |
|
|
my %color=&setbgcolor(0); |
my %color=&setbgcolor(0); |
my ($returnValue, $students) = &PrepareData($c, $cacheDB); |
my ($returnValue, $students) = &PrepareData($c, $cacheDB, |
|
\@studentInformation, |
|
\@headings); |
if($returnValue ne 'OK') { |
if($returnValue ne 'OK') { |
$r->print('<html><body>'.$returnValue."\n".'</body></html>'); |
$r->print('<html><body>'.$returnValue."\n".'</body></html>'); |
return OK; |
return OK; |
Line 487 sub BuildStatistics {
|
Line 526 sub BuildStatistics {
|
} elsif($GoToPage eq 'Student Assessment') { |
} elsif($GoToPage eq 'Student Assessment') { |
$r->print( |
$r->print( |
&Apache::lonstudentassessment::BuildStudentAssessmentPage($cacheDB, |
&Apache::lonstudentassessment::BuildStudentAssessmentPage($cacheDB, |
$students, |
$students, |
$courseID, |
$courseID, |
$c)); |
'Statistics', |
|
\@headings, |
|
$spacing, |
|
\@studentInformation, |
|
$r, $c)); |
} elsif($GoToPage eq 'Analyze') { |
} elsif($GoToPage eq 'Analyze') { |
$r->print(&Apache::lonproblemanalysis::BuildAnalyzePage($cacheDB, |
$r->print(&Apache::lonproblemanalysis::BuildAnalyzePage($cacheDB, |
$students, |
$students, |
Line 500 sub BuildStatistics {
|
Line 543 sub BuildStatistics {
|
&Apache::lonproblemstatistics::BuildWrongGraph($r); |
&Apache::lonproblemstatistics::BuildWrongGraph($r); |
} elsif($GoToPage eq 'Class list') { |
} elsif($GoToPage eq 'Class list') { |
$r->print(&BuildClasslist($cacheDB, $students, \@studentInformation, |
$r->print(&BuildClasslist($cacheDB, $students, \@studentInformation, |
\@headings, $spacePadding)); |
\@headings)); |
} |
} |
|
|
$r->print('</form>'."\n"); |
$r->print('</form>'."\n"); |