version 1.83, 2004/04/06 15:45:13
|
version 1.85, 2004/05/14 20:30:17
|
Line 55 use Apache::loncommon();
|
Line 55 use Apache::loncommon();
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::loncoursedata; |
use Apache::loncoursedata; |
use Apache::lonstatistics; |
use Apache::lonstatistics; |
|
use LONCAPA::lonmetadata(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Spreadsheet::WriteExcel; |
use Spreadsheet::WriteExcel; |
use Apache::lonstathelpers(); |
use Apache::lonstathelpers(); |
Line 95 my %SeqStat; # keys are symbs, values
|
Line 96 my %SeqStat; # keys are symbs, values
|
## statistics display? |
## statistics display? |
## selected yes (yes|no) Is the column selected by default? |
## selected yes (yes|no) Is the column selected by default? |
## |
## |
|
## format no sprintf format string |
|
## |
|
## excel_format no excel format type |
|
## (see &Apache::loncommon::define_excel_formats |
my @Fields = ( |
my @Fields = ( |
{ name => 'problem_num', |
{ name => 'problem_num', |
title => 'P#', |
title => 'P#', |
Line 260 my @Fields = (
|
Line 265 my @Fields = (
|
selectable => 'yes', |
selectable => 'yes', |
defaultselected => 'no', |
defaultselected => 'no', |
}, |
}, |
|
## duedate included for research purposes. Commented out most of the time. |
|
# { name => 'duedate', |
|
# title => 'Due Date', |
|
# align => 'left', |
|
# color => '#FFFFFF', |
|
# sortable => 'yes', |
|
# graphable => 'no', |
|
# long_title => 'Due date of resource for instructor', |
|
# selectable => 'no', |
|
# defaultselected => 'yes', |
|
# }, |
|
## opendate included for research purposes. Commented out most of the time. |
|
# { name => 'opendate', |
|
# title => 'Open Date', |
|
# align => 'left', |
|
# color => '#FFFFFF', |
|
# sortable => 'yes', |
|
# graphable => 'no', |
|
# long_title => 'date resource became answerable', |
|
# selectable => 'no', |
|
# defaultselected => 'yes', |
|
# }, |
|
## symb included for research purposes. Commented out most of the time. |
|
# { name => 'symb', |
|
# title => 'Symb', |
|
# align => 'left', |
|
# color => '#FFFFFF', |
|
# sortable => 'yes', |
|
# graphable => 'no', |
|
# long_title => 'Unique LON-CAPA identifier for problem', |
|
# selectable => 'no', |
|
# defaultselected => 'yes', |
|
# }, |
); |
); |
|
|
my @SeqFields = ( |
my @SeqFields = ( |
Line 1240 sub Excel_output {
|
Line 1278 sub Excel_output {
|
$cols_output=0; |
$cols_output=0; |
foreach my $field (@SeqFields) { |
foreach my $field (@SeqFields) { |
next if ($field->{'selected'} ne 'yes'); |
next if ($field->{'selected'} ne 'yes'); |
|
my $fieldformat = undef; |
|
if (exists($field->{'excel_format'})) { |
|
$fieldformat = $format->{$field->{'excel_format'}}; |
|
} |
$excel_sheet->write($rows_output,$cols_output++, |
$excel_sheet->write($rows_output,$cols_output++, |
$data->{$field->{'name'}}); |
$data->{$field->{'name'}},$fieldformat); |
} |
} |
$rows_output++; |
$rows_output++; |
$cols_output=0; |
$cols_output=0; |
Line 1259 sub Excel_output {
|
Line 1301 sub Excel_output {
|
foreach my $field (@Fields) { |
foreach my $field (@Fields) { |
next if ($field->{'selected'} ne 'yes'); |
next if ($field->{'selected'} ne 'yes'); |
next if ($field->{'name'} eq 'problem_num'); |
next if ($field->{'name'} eq 'problem_num'); |
|
my $fieldformat = undef; |
|
if (exists($field->{'excel_format'})) { |
|
$fieldformat = $format->{$field->{'excel_format'}}; |
|
} |
$excel_sheet->write($rows_output,$cols_output++, |
$excel_sheet->write($rows_output,$cols_output++, |
$data->{$field->{'name'}}); |
$data->{$field->{'name'}},$fieldformat); |
} |
} |
$rows_output++; |
$rows_output++; |
$cols_output=0; |
$cols_output=0; |
Line 1440 sub get_statistics {
|
Line 1486 sub get_statistics {
|
(\@Apache::lonstatistics::SelectedSections, |
(\@Apache::lonstatistics::SelectedSections, |
$Apache::lonstatistics::enrollment_status, |
$Apache::lonstatistics::enrollment_status, |
$symb,$part,$courseid,$starttime,$endtime); |
$symb,$part,$courseid,$starttime,$endtime); |
|
$data->{'symb'} = $symb; |
$data->{'part'} = $part; |
$data->{'part'} = $part; |
$data->{'problem_num'} = $problem_num; |
$data->{'problem_num'} = $problem_num; |
$data->{'container'} = $sequence->{'title'}; |
$data->{'container'} = $sequence->{'title'}; |
Line 1453 sub get_statistics {
|
Line 1500 sub get_statistics {
|
} |
} |
# |
# |
# Store in metadata if computations were done for all students |
# Store in metadata if computations were done for all students |
if ($Apache::lonstatistics::SelectedSections[0] eq 'all' && |
if ($data->{'num_students'} > 1) { |
$data->{'num_students'} > 1) { |
my @Sections = @Apache::lonstatistics::SelectedSections; |
my %storestats; |
my $sections = '"'.join(' ',@Sections).'"'; |
# |
$sections =~ s/&+/_/g; # Ensure no special characters |
|
$data->{'sections'}=$sections; |
|
$data->{'course'} = $ENV{'request.course.id'}; |
my $urlres=(&Apache::lonnet::decode_symb($resource->{'symb'}))[2]; |
my $urlres=(&Apache::lonnet::decode_symb($resource->{'symb'}))[2]; |
|
$data->{'urlres'}=$urlres; |
|
my %storestats = |
|
&LONCAPA::lonmetadata::dynamic_metadata_storage($data); |
my ($dom,$user) = $urlres=~/^(\w+)\/(\w+)/; |
my ($dom,$user) = $urlres=~/^(\w+)\/(\w+)/; |
my $preamble = $courseid.'___'.$urlres.'___'; |
|
# |
|
$storestats{$preamble.'timestamp'} = time; |
|
$storestats{$preamble.'stdno'} = $data->{'num_students'}; |
|
$storestats{$preamble.'avetries'} = $data->{'mean_tries'}; |
|
$storestats{$preamble.'difficulty'} = $data->{'deg_of_diff'}; |
|
if ($SelectedFields{'deg_of_disc'}) { |
|
$storestats{$preamble.'discrimination'} = $data->{'deg_of_disc'}; |
|
} |
|
# |
|
&Apache::lonnet::put('nohist_resevaldata',\%storestats,$dom,$user); |
&Apache::lonnet::put('nohist_resevaldata',\%storestats,$dom,$user); |
} |
} |
|
# |
|
# Get the due date for research purposes (commented out most of the time) |
|
# $data->{'duedate'} = |
|
# &Apache::lonnet::EXT('resource.'.$part.'.duedate',$symb); |
|
# $data->{'opendate'} = |
|
# &Apache::lonnet::EXT('resource.'.$part.'.opendate',$symb); |
return $data; |
return $data; |
} |
} |
|
|