--- loncom/interface/statistics/lonproblemanalysis.pm 2006/12/21 19:52:28 1.129 +++ loncom/interface/statistics/lonproblemanalysis.pm 2012/05/03 11:21:33 1.142 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemanalysis.pm,v 1.129 2006/12/21 19:52:28 albertel Exp $ +# $Id: lonproblemanalysis.pm,v 1.142 2012/05/03 11:21:33 goltermann Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,6 +31,7 @@ use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::loncoursedata(); +use Apache::lonquickgrades(); use Apache::lonstatistics; use Apache::lonlocal; use Apache::lonstathelpers(); @@ -73,12 +74,18 @@ sub BuildProblemAnalysisPage { # &Apache::lonstatistics::PrepareClasslist(); # + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis')); + &Apache::lonquickgrades::startGradeScreen($r,'statistics'); + $r->print(&CreateInterface()); # my @Students = @Apache::lonstatistics::Students; # if (@Students < 1 && exists($env{'form.firstrun'})) { - $r->print('
'.&Apache::lonstatistics::section_and_enrollment_description().'
'); if ($env{'form.show_prob'} eq 'true') { - $r->print(&Apache::lonstathelpers::render_resource($resource)); + $r->print(''.
+ ' '.
&mt($no_data_message,$plot_num,@extra_data).
- ' | |||||||||||||||||||||||||||||||||
'.
@@ -615,10 +630,7 @@ sub numerical_determine_answers {
my ($r,$resource,$partid,$respid,$students)=@_;
my $c = $r->connection();
#
- my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
- ($r,'Student Answer Compilation Status',
- 'Student Answer Compilation Progress', scalar(@$students),
- 'inline',undef,'Statistics','stats_status');
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$students));
#
# Read in the cache (if it exists) before we start timing things.
&Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});
@@ -636,13 +648,23 @@ sub numerical_determine_answers {
$sdom);
# make the key
my $key = $partid.'.'.$respid;
+ # pick one of the possible answers
+ my $which = 'INTERNAL';
+ if (!exists($analysis->{$key}{$which})) {
+ $which = (sort(keys(%{ $analysis->{$key} })))[0];
+ }
foreach my $item ('answer','unit','ans_high','ans_low') {
- $correct->{$sname.':'.$sdom}->{$item} =
- $analysis->{$key.'.'.$item}->[0];
+ if (ref($analysis->{$key.'.'.$item}) eq 'ARRAY') {
+ $correct->{$sname.':'.$sdom}->{$item} =
+ $analysis->{$key.'.'.$item}[0];
+ } else {
+ $correct->{$sname.':'.$sdom}->{$item} =
+ $analysis->{$key.'.'.$item}{$which}[0][0];
+ }
}
- $answers{$analysis->{$key.'.answer'}->[0]}++;
+ $answers{$correct->{$sname.':'.$sdom}{'answer'}}++;
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
- &mt('last student'));
+ 'last student');
}
&Apache::lonstathelpers::write_analysis_cache();
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
@@ -820,9 +842,9 @@ sub radio_response_analysis {
}
#
if (! defined($response_data) || ref($response_data) ne 'ARRAY' ) {
- $analysis_html = ''. - &mt('There is no submission data for this resource'). - ''; + $analysis_html = ''
+ .&mt('There is no submission data for this resource.')
+ .' ';
$r->print($analysis_html);
return;
}
@@ -853,7 +875,9 @@ sub radio_response_analysis {
&get_time_from_row($response_data->[-1]),
$plot_num);
$pre_graph_text =
- 'Data from [_6] to [_7][_2] submissions from [_5] students, [_3] correct, [_4] incorrect'; + 'Data from [_6] to [_7]' + .' ' + .'[_2] submissions from [_5] students, [_3] correct, [_4] incorrect'; $extra_data[0] = &Apache::lonlocal::locallocaltime($starttime); $extra_data[1] = &Apache::lonlocal::locallocaltime($endtime); # @@ -941,11 +965,13 @@ sub radio_response_analysis { } } elsif ($no_data_text ne '') { $analysis_html.=' '.
+ ' | '.
&mt($no_data_text,
$plot_num,$foil_choice_data->{'_count'},
$correct,
$foil_choice_data->{'_count'}-$correct,
- @extra_data);
+ @extra_data).
+ ' ';
if (defined($post_graph_text)) {
$analysis_html.=''.$post_graph_text; } @@ -1207,9 +1233,10 @@ sub OptionResponseAnalysis { $resource->symb,$respid); if (! defined($PerformanceData) || ref($PerformanceData) ne 'ARRAY' ) { - $r->print(' '. - &mt('There is no student data for this problem.'). - ''); + $r->print(''
+ .&mt('There is no student data for this problem.')
+ .' '
+ );
} else {
$r->rflush();
if ($env{'form.AnalyzeOver'} eq 'tries') {
@@ -1224,10 +1251,10 @@ sub OptionResponseAnalysis {
$r->print($analysis_html);
$r->rflush();
} else {
- $r->print(''. - &mt('The analysis you have selected is '. - 'not supported at this time'). - ''); + $r->print('div class="LC_warning"' + .&mt('The analysis you have selected is not supported at this time.') + .'' + ); } } } @@ -1304,12 +1331,18 @@ sub OR_tries_analysis { if (! defined($response_data{'_total'}->[$try]) || $response_data{'_total'}->[$try] == 0) { if ($try > 1) { - $analysis_html.= ''.
- &mt('None of the selected students attempted the problem more than [_1] times.',$try-1).
- ' | '
+ .' | '
+ .&mt('None of the selected students attempted the problem more than [quant,_1,time].'
+ ,$try-1)
+ .' '
+ .''.
- &mt('None of the selected students have attempted the problem').' | '
+ .' | '
+ .&mt('None of the selected students have attempted the problem.')
+ .' '
+ .''.
&mt('Start time: [_1]',$startdateform).' | '. &mt('End time: [_1]',$enddateform).'   | | |
'.&mt('Concept Number').' | '. ''.&mt('Concept').' | '. ''.&mt('Foil Number').' | '. ''.&mt('Foil Name').' | '. ''.&mt('Foil Text').' | '. ''.&mt('Correct Value').' | '. - "
---|---|---|---|---|---|
'.&mt('Foil Number').' | '. ''.&mt('Foil Name').' | '. ''.&mt('Foil Text').' | '. ''.&mt('Correct Value').' | '. - "||
'.$conceptindex.' | '. ''.&HTML::Entities::encode($concept->{'name'},'<>&"').' | '. ''.$foilindex++.' | '. ''.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').' | '. ''.$Foildata{$firstfoil}->{'text'}.' | '. ''.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').' | '. - "
'.$foilindex++.' | '. ''.&HTML::Entities::encode($Foildata{$firstfoil}->{'name'},'<>&"').' | '. ''.$Foildata{$firstfoil}->{'text'}.' | '. ''.&HTML::Entities::encode($Foildata{$firstfoil}->{'value'},'<>&"').' | '. - "||
'. ' | '. ' | '.$foilindex.' | '. ''.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').' | '. ''.$Foildata{$foilid}->{'text'}.' | '. ''.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').' | '. - "
'.$foilindex.' | '. ''.&HTML::Entities::encode($Foildata{$foilid}->{'name'},'<>&"').' | '. ''.$Foildata{$foilid}->{'text'}.' | '. ''.&HTML::Entities::encode($Foildata{$foilid}->{'value'},'<>&"').' | '. - "
'.&mt('Sections').' | '; - $Str .= ''.&mt('Groups').' | '; - $Str .= ''.&mt('Access Status').' | '; - $Str .= ''; - $Str .= ' | '.&mt('Sections').' | '; + $Str .= ''.&mt('Groups').' | '; + $Str .= ''.&mt('Access Status').' | '; + $Str .= ''.&mt('Options').' | '; + $Str .= &Apache::loncommon::end_data_table_header_row(); ## ## - $Str .= '
---|---|---|---|
'."\n"; + $Str .= &Apache::loncommon::start_data_table_row(); + $Str .= ' | '."\n"; $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); $Str .= ' | '; # @@ -1863,35 +1901,35 @@ sub CreateInterface { # ## ## - $Str .= ''; + $Str .= ' | ';
##
my $showprob_checkbox =
- '';
- $Str.= ' '; + $Str.= ' '; ## my $analyze_selector = ''; - $Str .= ' '.$/; + ' '.$/; ## my $numplots_selector = ' '; - $Str .= ' '; ## - $Str .= ' | ';
##
##
- $Str .= '