--- loncom/interface/lonmeta.pm 2004/04/14 20:45:14 1.70
+++ loncom/interface/lonmeta.pm 2004/04/16 21:43:56 1.73
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Metadata display handler
#
-# $Id: lonmeta.pm,v 1.70 2004/04/14 20:45:14 matthew Exp $
+# $Id: lonmeta.pm,v 1.73 2004/04/16 21:43:56 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -114,21 +114,21 @@ sub evalgraph {
return '';
}
my $val=int($value*10.+0.5)-10;
- my $output='
';
+ my $output='';
if ($val>=20) {
- $output.='  | ';
+ $output.='  | ';
} else {
- $output.=' | '.
- ' | ';
+ $output.=' | '.
+ ' | ';
}
$output.=' | ';
if ($val>20) {
- $output.=' | '.
- ' | ';
+ $output.=' | '.
+ ' | ';
} else {
- $output.='  | ';
+ $output.='  | ';
}
- $output.=' ('.$value.') |
';
+ $output.=' ('.sprintf("%5.2f",$value).') |
';
return $output;
}
@@ -140,15 +140,15 @@ sub diffgraph {
my $val=int(40.0*$value+0.5);
my @colors=('#FF9933','#EEAA33','#DDBB33','#CCCC33',
'#BBDD33','#CCCC33','#DDBB33','#EEAA33');
- my $output='';
+ my $output='';
for (my $i=0;$i<8;$i++) {
if ($val>$i*5) {
- $output.=' | ';
+ $output.=' | ';
} else {
- $output.=' | ';
+ $output.=' | ';
}
}
- $output.=' ('.$value.') |
';
+ $output.=' ('.sprintf("%3.2f",$value).') |
';
return $output;
}
@@ -193,7 +193,8 @@ sub fieldnames {
'technical' => 'Resource is technically correct',
'avetries' => 'Average number of tries till solved',
'stdno' => 'Total number of students who have worked on this problem',
- 'difficulty' => 'Degree of difficulty'
+ 'difficulty' => 'Degree of difficulty',
+ 'disc' => 'Degree of discrimination',
);
}
@@ -253,7 +254,22 @@ sub prettyprint {
($type eq 'sequsage_list')) {
return join('
',map {
my $url = &Apache::lonnet::clutter($_);
- $_ = ''.&Apache::lonnet::gettitle($url).' '.
+ my $title = &Apache::lonnet::gettitle($url);
+ if ($title eq '') {
+ $title = 'Untitled';
+ if ($url =~ /\.sequence$/) {
+ $title .= ' Sequence';
+ } elsif ($url =~ /\.page$/) {
+ $title .= ' Page';
+ } elsif ($url =~ /\.problem$/) {
+ $title .= ' Problem';
+ } elsif ($url =~ /\.html$/) {
+ $title .= ' HTML document';
+ } elsif ($url =~ m:/syllabus$:) {
+ $title .= ' Syllabus';
+ }
+ }
+ $_ = ''.$title.' '.
''.
''.$url.''.
''
@@ -268,17 +284,24 @@ sub prettyprint {
return &evalgraph($value);
}
# Difficulty
- if ($type eq 'difficulty') {
+ if ($type eq 'difficulty' || $type eq 'disc') {
return &diffgraph($value);
}
# List of courses
if ($type=~/\_list/) {
- return join('
',map {
- my %courseinfo=&Apache::lonnet::coursedescription($_);
- ''.
- $courseinfo{'description'}.'';
- } split(/\s*\,\s*/,$value));
+ my @Courses = split(/\s*\,\s*/,$value);
+ my $Str;
+ foreach my $course (@Courses) {
+ my %courseinfo = &Apache::lonnet::coursedescription($course);
+ if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
+ next;
+ }
+ if ($Str ne '') { $Str .= '
'; }
+ $Str .= ''.
+ $courseinfo{'description'}.'';
+ }
+ return $Str;
}
# No pretty print found
return $value;
@@ -496,8 +519,9 @@ sub present_uneditable_metadata {
} else {
$versiondisplay='Version: '.$currentversion;
}
- # crumbify displayed URL
- $disuri=&Apache::lonhtmlcommon::crumbs($disuri);
+ # crumbify displayed URL uri target prefix form size
+ $disuri=&Apache::lonhtmlcommon::crumbs($disuri,undef, undef, undef,'+1');
+ $disuri =~ s:
::g;
# obsolete
my $obsolete=$content{'obsolete'};
my $obsoletewarning='';
@@ -509,6 +533,10 @@ sub present_uneditable_metadata {
#
my %lt=&fieldnames();
my $table='';
+ my $title = $content{'title'};
+ if (! defined($title)) {
+ $title = 'Untitled Resource';
+ }
foreach ('title',
'author',
'subject',
@@ -534,10 +562,12 @@ sub present_uneditable_metadata {
}
#
$r->print(<$content{'title'}
-$disuri
+$title
+
+$disuri
$obsoletewarning
-$versiondisplay
+$versiondisplay
+
@@ -560,6 +590,8 @@ sub print_dynamic_metadata {
$r->rflush();
my %items=&fieldnames();
my %dynmeta=&dynamicmeta($uri);
+ &Apache::lonnet::logthis('dynamic metadata keys:'.$/.
+ join("\n",keys(%dynmeta)));
#
# General Access and Usage Statistics
if (exists($dynmeta{'count'}) ||
@@ -584,23 +616,88 @@ sub print_dynamic_metadata {
}
#
# Assessment statistics
- if ($uri=~/\.(problem|exam|quiz|assess|survey|form)$/ &&
- (exists($dynmeta{'stdno'}) ||
- exists($dynmeta{'avetries'}) ||
- exists($dynmeta{'difficulty'}))) {
- # This is an assessment, print assessment data
- $r->print(
- ''.&mt('Assessment Statistical Data').'
'.
- '');
- foreach ('stdno','avetries','difficulty') {
- $r->print(''.$lt{$_}.' | '.
+ if ($uri=~/\.(problem|exam|quiz|assess|survey|form)$/) {
+ if (exists($dynmeta{'stdno'}) ||
+ exists($dynmeta{'avetries'}) ||
+ exists($dynmeta{'difficulty'}) ||
+ exists($dynmeta{'disc'})) {
+ # This is an assessment, print assessment data
+ $r->print(''.
+ &mt('Overall Assessment Statistical Data').
+ '
'.
+ '');
+ $r->print(''.$lt{'stdno'}.' | '.
''.
- &prettyprint($_,$dynmeta{$_})." |
\n");
+ &prettyprint('stdno',$dynmeta{'stdno'}).
+ ''."\n");
+ foreach ('avetries','difficulty','disc') {
+ $r->print(''.$lt{$_}.' | '.
+ ''.
+ &prettyprint($_,sprintf('%5.2f',$dynmeta{$_})).
+ ' | '."
\n");
+ }
+ $r->print('
');
+ }
+ if (exists($dynmeta{'stats'})) {
+ #
+ # New assessment statistics
+ $r->print(''.
+ &mt('Detailed Assessment Statistical Data').
+ '
');
+ my $table = ''.
+ ''.
+ 'Course | '.
+ 'Section(s) | '.
+ 'Num Students | '.
+ 'Mean Tries | '.
+ 'Degree of Difficulty | '.
+ 'Degree of Discrimination | '.
+ 'Time of computation | '.
+ '
'.$/;
+ foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) {
+ my $data = $dynmeta{'stats'}->{$identifier};
+ my $course = $data->{'course'};
+ my %courseinfo = &Apache::lonnet::coursedescription($course);
+ if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
+ &Apache::lonnet::logthis('lookup for '.$course.' failed');
+ next;
+ }
+ $table .= '';
+ $table .=
+ ''.$courseinfo{'description'}.' | ';
+ $table .=
+ ''.$data->{'sections'}.' | ';
+ $table .=
+ ''.$data->{'stdno'}.' | ';
+ foreach ('avetries','difficulty','disc') {
+ $table .= '';
+ if (exists($data->{$_})) {
+ $table .= sprintf('%.2f',$data->{$_}).' ';
+ } else {
+ $table .= '';
+ }
+ $table .= ' | ';
+ }
+ $table .=
+ ''.
+ &Apache::lonlocal::locallocaltime($data->{'timestamp'}).
+ ' | ';
+ $table .=
+ '
'.$/;
+ }
+ $table .= '
'.$/;
+ $r->print($table);
+ } else {
+ $r->print('No new dynamic data found.');
}
- $r->print('
');
} else {
- $r->print(''.&mt('No Assessment Statistical Data is available for this resource').'
');
+ $r->print(''.
+ &mt('No Assessment Statistical Data is available for this resource').
+ '
');
}
+
+ #
+ #
if (exists($dynmeta{'clear'}) ||
exists($dynmeta{'depth'}) ||
exists($dynmeta{'helpful'}) ||