--- loncom/interface/statistics/lonproblemanalysis.pm 2004/02/20 16:24:20 1.72 +++ loncom/interface/statistics/lonproblemanalysis.pm 2004/03/11 20:11:18 1.77 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemanalysis.pm,v 1.72 2004/02/20 16:24:20 matthew Exp $ +# $Id: lonproblemanalysis.pm,v 1.77 2004/03/11 20:11:18 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -99,7 +99,7 @@ sub BuildProblemAnalysisPage { } $r->rflush(); # - my $problem_types = '(option|radiobutton|numerical)'; + my $problem_types = '(option|radiobutton)'; if (exists($ENV{'form.problemchoice'}) && ! exists($ENV{'form.SelectAnother'})) { foreach my $button (@SubmitButtons) { @@ -552,7 +552,7 @@ sub OR_tries_analysis { $mintries,$maxtries); my $analysis = ''; if ($ENV{'form.AnalyzeAs'} eq 'Foils') { - $analysis = &OR_Tries_Foil_Analysis($mintries,$maxtries,$Foils, + $analysis = &OR_Tries_Foil_Analysis($mintries,$maxtries,$Concepts, \%ResponseData,$ORdata); } else { $analysis = &OR_Tries_Concept_Analysis($mintries,$maxtries, @@ -563,82 +563,100 @@ sub OR_tries_analysis { } sub OR_Tries_Foil_Analysis { - my ($mintries,$maxtries,$Foils,$respdat,$ORdata) = @_; + my ($mintries,$maxtries,$Concepts,$respdat,$ORdata) = @_; my %ResponseData = %$respdat; # # Compute the data neccessary to make the plots my @PlotData; - foreach my $foilid (@$Foils) { - for (my $i=$mintries;$i<=$maxtries;$i++) { - if ($ResponseData{$foilid}->[$i]->{'_total'} == 0) { - push(@{$PlotData[$i]->{'_correct'}},0); - } else { - push(@{$PlotData[$i]->{'_correct'}}, - 100*$ResponseData{$foilid}->[$i]->{'_correct'}/ - $ResponseData{$foilid}->[$i]->{'_total'}); - } - foreach my $option (@{$ORdata->{'_Options'}}) { - push(@{$PlotData[$i]->{'_total'}}, - $ResponseData{$foilid}->[$i]->{'_total'}); - if ($ResponseData{$foilid}->[$i]->{'_total'} == 0) { - push (@{$PlotData[$i]->{$option}},0); + foreach my $concept (@$Concepts) { + foreach my $foilid (@{$concept->{'foils'}}) { + for (my $try=$mintries;$try<=$maxtries;$try++) { + if ($ResponseData{$foilid}->[$try]->{'_total'} == 0) { + push(@{$PlotData[$try]->{'_correct'}},0); } else { - if ($ResponseData{$foilid}->[$i]->{'_total'} == - $ResponseData{$foilid}->[$i]->{'_correct'}) { - push(@{$PlotData[$i]->{$option}},0); + push(@{$PlotData[$try]->{'_correct'}}, + 100*$ResponseData{$foilid}->[$try]->{'_correct'}/ + $ResponseData{$foilid}->[$try]->{'_total'}); + } + foreach my $option (@{$ORdata->{'_Options'}}) { + push(@{$PlotData[$try]->{'_total'}}, + $ResponseData{$foilid}->[$try]->{'_total'}); + if ($ResponseData{$foilid}->[$try]->{'_total'} == 0) { + push (@{$PlotData[$try]->{$option}},0); } else { - push (@{$PlotData[$i]->{$option}}, - 100 * $ResponseData{$foilid}->[$i]->{$option} / - ($ResponseData{$foilid}->[$i]->{'_total'} - - $ResponseData{$foilid}->[$i]->{'_correct'})); + if ($ResponseData{$foilid}->[$try]->{'_total'} == + $ResponseData{$foilid}->[$try]->{'_correct'}) { + push(@{$PlotData[$try]->{$option}},0); + } else { + push (@{$PlotData[$try]->{$option}}, + 100 * + $ResponseData{$foilid}->[$try]->{$option} / + ($ResponseData{$foilid}->[$try]->{'_total'} + - + $ResponseData{$foilid}->[$try]->{'_correct'} + )); + } } - } + } # End of foreach my $option } - } - } + } # End of foreach my $foilid + } # End of foreach my $concept # # Build a table for the plots my $analysis_html = "
'.$correctgraph.' | '; - ## - ## + + # + # next if (! defined($Datasets[0])); for (my $i=0; $i< scalar(@{$Datasets[0]});$i++) { $Datasets[0]->[$i]=0; } - $count = $ResponseData{'_total'}->[$i]-$ResponseData{'_correct'}->[$i]; - if ($count == 0) { - $count = 'no submissions'; - } elsif ($count == 1) { - $count = '1 submission'; - } else { - $count = $count.' submissions'; - } - $title = 'Attempt '.$i.', '.$count; + $count = $ResponseData{'_total'}->[$try] - + $ResponseData{'_correct'}->[$try]; + $title = 'Submission '.$try.' (N='.$count.')'; my $incorrectgraph = &Apache::loncommon::DrawBarGraph ($title,'Foil Number','% Option Chosen Incorrectly', - 100,$plotcolors,undef,@Datasets); + 100,$plotcolors,\@Labels,@Datasets); $analysis_html.= ''.$incorrectgraph.' | '; - $analysis_html.= ''.$foilkey." | '.$optionkey." | \n"; } $analysis_html .= " |