[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemanalysis.pm

matthew lon-capa-cvs@mail.lon-capa.org
Mon, 19 Jan 2004 16:33:17 -0000


This is a MIME encoded message

--matthew1074529997
Content-Type: text/plain

matthew		Mon Jan 19 11:33:17 2004 EDT

  Modified files:              
    /loncom/interface/statistics	lonproblemanalysis.pm 
  Log:
  1. Changed most if not all option response related subroutines to begin
  with 'OR'.
  2. Placed code to list the type of the problem before it's chosen.  This will
  be removed (or reworked) soon anyways.
  
  
--matthew1074529997
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20040119113317.txt"

Index: loncom/interface/statistics/lonproblemanalysis.pm
diff -u loncom/interface/statistics/lonproblemanalysis.pm:1.56 loncom/interface/statistics/lonproblemanalysis.pm:1.57
--- loncom/interface/statistics/lonproblemanalysis.pm:1.56	Fri Jan 16 15:19:33 2004
+++ loncom/interface/statistics/lonproblemanalysis.pm	Mon Jan 19 11:33:16 2004
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonproblemanalysis.pm,v 1.56 2004/01/16 20:19:33 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.57 2004/01/19 16:33:16 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -232,7 +232,8 @@
     my $mintries = 1;
     my $maxtries = $ENV{'form.NumPlots'};
     my ($table,$Foils,$Concepts) = &build_foil_index($ProblemData);
-    if ((@$Concepts < 2) && ($ENV{'form.AnalyzeAs'} ne 'Foils')) {
+    if ((! defined($Concepts)) || ((@$Concepts < 2) && 
+                                   ($ENV{'form.AnalyzeAs'} ne 'Foils'))) {
         $table = '<h3>'.
             &mt('Not enough data for concept analysis.  '.
                 'Performing Foil Analysis').
@@ -387,20 +388,20 @@
     }  else {
         $r->rflush();
         if (exists($ENV{'form.ExcelOutput'})) {
-            my $result = &prepare_optionresponse_excel_sheet($r,$resource,
-                                                             $PerformanceData,
-                                                             $ProblemData);
+            my $result = &OR_excel_sheet($r,$resource,
+                                         $PerformanceData,
+                                         $ProblemData);
             $r->print($result);
             $r->rflush();
         } else {
             if ($ENV{'form.AnalyzeOver'} eq 'Tries') {
-                my $analysis_html = &tries_analysis($r,
+                my $analysis_html = &OR_tries_analysis($r,
                                                     $PerformanceData,
                                                     $ProblemData);
                 $r->print($analysis_html);
                 $r->rflush();
             } elsif ($ENV{'form.AnalyzeOver'} eq 'Time') {
-                my $analysis_html = &time_analysis($PerformanceData,
+                my $analysis_html = &OR_time_analysis($PerformanceData,
                                                    $ProblemData);
                 $r->print($analysis_html);
                 $r->rflush();
@@ -419,7 +420,7 @@
 #       Option Response:  Tries Analysis
 #
 #########################################################
-sub tries_analysis {
+sub OR_tries_analysis {
     my ($r,$PerformanceData,$ORdata) = @_;
     my $mintries = 1;
     my $maxtries = $ENV{'form.NumPlots'};
@@ -431,21 +432,21 @@
             '</h3>'.$table;
         $ENV{'form.AnalyzeAs'} = 'Foils';
     }
-    my %ResponseData = &analyze_option_data_by_tries($r,$PerformanceData,
+    my %ResponseData = &OR_analyze_by_tries($r,$PerformanceData,
                                                      $mintries,$maxtries);
     my $analysis = '';
     if ($ENV{'form.AnalyzeAs'} eq 'Foils') {
-        $analysis = &Tries_Foil_Analysis($mintries,$maxtries,$Foils,
+        $analysis = &OR_Tries_Foil_Analysis($mintries,$maxtries,$Foils,
                                          \%ResponseData,$ORdata);
     } else {
-        $analysis = &Tries_Concept_Analysis($mintries,$maxtries,
+        $analysis = &OR_Tries_Concept_Analysis($mintries,$maxtries,
                                             $Concepts,\%ResponseData,$ORdata);
     }
     $table .= $analysis;
     return $table;
 }
 
-sub Tries_Foil_Analysis {
+sub OR_Tries_Foil_Analysis {
     my ($mintries,$maxtries,$Foils,$respdat,$ORdata) = @_;
     my %ResponseData = %$respdat;
     #
@@ -504,6 +505,7 @@
         $analysis_html.= '<tr><td>'.$correctgraph.'</td>';
         ##
         ##
+        next if (! defined($Datasets[0]));
         for (my $i=0; $i< scalar(@{$Datasets[0]});$i++) {
             $Datasets[0]->[$i]=0;
         }
@@ -526,7 +528,7 @@
     return $analysis_html;
 }
 
-sub Tries_Concept_Analysis {
+sub OR_Tries_Concept_Analysis {
     my ($mintries,$maxtries,$Concepts,$respdat,$ORdata) = @_;
     my %ResponseData = %$respdat;
     my $analysis_html = "<table>\n";
@@ -592,7 +594,7 @@
     return $analysis_html;
 }
 
-sub analyze_option_data_by_tries {
+sub OR_analyze_by_tries {
     my ($r,$PerformanceData,$mintries,$maxtries) = @_;
     my %Trydata;
     $mintries = 1         if (! defined($mintries) || $mintries < 1);
@@ -620,7 +622,7 @@
 #     Option Response: Time Analysis
 #
 #########################################################
-sub time_analysis {
+sub OR_time_analysis {
     my ($PerformanceData,$ORdata) = @_;
     my ($table,$Foils,$Concepts) = &build_foil_index($ORdata);
     if ((@$Concepts < 2) && ($ENV{'form.AnalyzeAs'} ne 'Foils')) {
@@ -678,10 +680,10 @@
             enddateform   => $enddateform,
         };
         if ($ENV{'form.AnalyzeAs'} eq 'Foils') {
-            $table .= &Foil_Time_Analysis($PerformanceData,$ORdata,$Foils,
+            $table .= &OR_Foil_Time_Analysis($PerformanceData,$ORdata,$Foils,
                                           $interval);
         } else {
-            $table .= &Concept_Time_Analysis($PerformanceData,$ORdata,
+            $table .= &OR_Concept_Time_Analysis($PerformanceData,$ORdata,
                                              $Concepts,$interval);
         }
     }
@@ -689,7 +691,7 @@
     return $table;
 }
 
-sub Foil_Time_Analysis {
+sub OR_Foil_Time_Analysis {
     my ($PerformanceData,$ORdata,$Foils,$interval) = @_;
     my $analysis_html;
     my $foilkey = &build_option_index($ORdata);
@@ -784,7 +786,7 @@
     return $analysis_html;
 }
 
-sub Concept_Time_Analysis {
+sub OR_Concept_Time_Analysis {
     my ($PerformanceData,$ORdata,$Concepts,$interval) = @_;
     my $analysis_html;
     ##
@@ -852,7 +854,7 @@
 ##
 #########################################################
 #########################################################
-sub prepare_optionresponse_excel_sheet {
+sub OR_excel_sheet {
     my ($r,$resource,$PerformanceData,$ORdata) = @_;
     my $response = '';
     my (undef,$Foils,$Concepts) = &build_foil_index($ORdata);
@@ -924,7 +926,7 @@
     return $result;
 }
 
-sub build_problem_data_worksheet {
+sub OR_build_problem_data_worksheet {
     my ($worksheet,$format,$Concepts,$ORdata) = @_;
     my $rows_output = 3;
     my $cols_output = 0;
@@ -993,7 +995,7 @@
     return 'okay';
 }
 
-sub build_student_data_worksheet {
+sub OR_build_student_data_worksheet {
     my ($worksheet,$format) = @_;
     my $rows_output = 3;
     my $cols_output = 0;
@@ -1019,7 +1021,7 @@
     return;
 }
 
-sub build_response_data_worksheet {
+sub OR_build_response_data_worksheet {
     my ($worksheet,$format,$PerformanceData,$Foils,$ORdata)=@_;
     my $rows_output = 3;
     my $cols_output = 0;
@@ -1249,6 +1251,8 @@
     my @Foils = sort(keys(%Foildata));
     my %Concepts;
     foreach my $foilid (@Foils) {
+        &Apache::lonnet::logthis('foilid = '.$foilid);
+        &Apache::lonnet::logthis('_Concept = '.$Foildata{$foilid}->{'_Concept'});
         push(@{$Concepts{$Foildata{$foilid}->{'_Concept'}}},
              $foilid);
     }
@@ -1269,16 +1273,25 @@
                        ten   => 10,);
         my $a1 = lc($a); 
         my $b1 = lc($b);
-        if (exists($Numbers{$a})) {
-            $a1 = $Numbers{$a};
+        if (exists($Numbers{$a1})) {
+            $a = $Numbers{$a1};
+        }
+        if (exists($Numbers{$b1})) {
+            $b = $Numbers{$b1};
         }
-        if (exists($Numbers{$b})) {
-            $b1 = $Numbers{$b};
+        if (($a =~/^\d+$/) && ($b =~/^\d+$/)) {
+            return $a <=> $b;
+        } else {
+            return $a cmp $b;
         }
-        $a1 cmp $b1;
     };
     my @Concepts;
     foreach my $concept (sort $sortfunction (keys(%Concepts))) {
+        if (! defined($Concepts{$concept})) {
+            $Concepts{$concept}=[];
+            &Apache::lonnet::logthis('concept error: '.$concept.' does not have a value');
+#            next;
+        }
         push(@Concepts,{ name => $concept,
                         foils => [@{$Concepts{$concept}}]});
         push(@Foils,(@{$Concepts{$concept}}));
@@ -1526,7 +1539,7 @@
                         $seq_str .= '<tr><td>'.
   '<input type="radio" name="problemchoice" value="'.$value.'" '.$checked.'/>'.
   '</td><td>'.          
-#.$resptype.'</td><td>'.
+  $resptype.'</td><td>'.
   '<a href="'.$res->{'src'}.'">'.$title.'</a> ';
 #  '<a href="'.$res->{'src'}.'">'.$resptype.' '.$res->{'title'}.'</a> ';
                         if ($partdata->{'option'} > 1) {
@@ -1538,7 +1551,7 @@
             }
         }
         if ($seq_str ne '') {
-            $Str .= '<tr><td>&nbsp</td><td><b>'.$seq->{'title'}.'</b></td>'.
+            $Str .= '<tr><td>&nbsp</td><td colspan="2"><b>'.$seq->{'title'}.'</b></td>'.
                 "</tr>\n".$seq_str;
         }
     }

--matthew1074529997--