--- loncom/interface/statistics/lonproblemanalysis.pm 2003/06/18 17:34:02 1.22
+++ loncom/interface/statistics/lonproblemanalysis.pm 2003/09/29 21:09:27 1.23
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.22 2003/06/18 17:34:02 albertel Exp $
+# $Id: lonproblemanalysis.pm,v 1.23 2003/09/29 21:09:27 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,567 +35,192 @@ package Apache::lonproblemanalysis;
use strict;
use Apache::lonnet();
use Apache::lonhtmlcommon();
-use GDBM_File;
-
-my $jr;
+use Apache::loncoursedata();
+use Apache::lonstatistics;
+use Apache::lonlocal;
sub BuildProblemAnalysisPage {
- my ($cacheDB, $r)=@_;
-
- my %cache;
- unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {
- $r->print('Unable to tie database.');
- return;
- }
-
- my $Ptr = '';
- $Ptr .= '
';
- $Ptr .= 'Select Sections ';
- $Ptr .= ' '."\n";
- $Ptr .= ''."\n";
- my @sectionsSelected = split(':',$cache{'sectionsSelected'});
- my @sections = split(':',$cache{'sectionList'});
- $Ptr .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);
- $Ptr .= ' '."\n";
- $Ptr .= 'Intervals '."\n";
- $Ptr .= '';
- $Ptr .= &IntervalOptions($cache{'Interval'});
- $Ptr .= '
';
- $r->print($Ptr);
- $r->rflush();
-# $r->print($cache{'OptionResponses'}.' ');
- $r->print(&OptionResponseTable($cache{'OptionResponses'}, \%cache, $r));
-
- untie(%cache);
-
- return;
-}
-
-sub BuildAnalyzePage {
- my ($cacheDB, $students, $courseID,$r)=@_;
-
- $jr = $r;
- my $c = $r->connection;
-
- my $Str = '';
- my %cache;
-
- unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {
- $Str .= 'Unable to tie database.';
- $r->print($Str);
- return;
- }
-
- # Remove students who don't have the proper section.
- my @sectionsSelected = split(':',$cache{'sectionsSelected'});
-
- my $studentCount = scalar @$students;
- for(my $studentIndex=$studentCount-1; $studentIndex>=0;
- $studentIndex--) {
- my $value = $cache{$students->[$studentIndex].':section'};
- my $found = 0;
- foreach (@sectionsSelected) {
- if($_ eq 'none') {
- if($value eq '' || !defined($value) || $value eq ' ') {
- $found = 1;
- last;
- }
- } else {
- if($value eq $_) {
- $found = 1;
- last;
- }
- }
- }
- if($found == 0) {
- splice(@$students, $studentIndex, 1);
+ my ($r,$c)=@_;
+ $r->print(&mt('Option Response Problem Analysis '));
+ if (exists($ENV{'form.problemchoice'})) {
+ # This is me getting around my own cleverness:
+ &Apache::lonstatistics::MapSelect('Maps','multiple,all',5,
+ undef);
+ #
+ my ($symb,$id) = &get_problem_symb(
+ &Apache::lonnet::unescape($ENV{'form.problemchoice'})
+ );
+ $r->print(' ');
+ my $resource = &get_resource_from_symb($symb);
+ if (defined($resource)) {
+ $r->print(''.
+ # Oh this is dumb! Need to rewrite relative links
+ # otherwise images (for example) will not show.
+ &Apache::lonnet::ssi_body($resource->{'src'}).
+ '
');
+ } else {
+ $r->print('resource is undefined');
}
- }
- unless(untie(%cache)) {
- $r->print('Can not untie hash.');
- $r->rflush();
- }
-
- &Apache::lonhtmlcommon::Close_PrgWin($r);
-
-### jason code for checing is there data in cache
-# my $error =
-# &Apache::loncoursedata::DownloadStudentCourseDataSeparate($students,
-# 'true',
-# $cacheDB,
-# 'true',
-# 'true',
-# $courseID,
-# $r, $c);
-# if($error ne 'OK') {
-# $r->print($error.' Error downloading course data ');
-# return;
-# }
-
- unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {
- $Str .= 'Unable to tie database.';
- $r->print($Str);
+ $r->print('');
+ $r->print(" render problem\n");
+ $r->print(" image tag for plot\n");
+ $r->print(" plot key\n");
+ $r->print(' ');
+ $r->print("\nProblem choice = $symb $id\n \n");
+ $r->print(' ');
+ }
+ $r->print(' ');
+ $r->print(&CreateInterface());
+ if (! exists($ENV{'form.analysisfirstcall'})) {
return;
}
-
- my ($problemId, $part, $responseId)=split(':',$cache{'AnalyzeInfo'});
- my $uri = $cache{$problemId.':source'};
- my $problem = $cache{$problemId.':problem'};
- my $title = $cache{$problemId.':title'};
- my $interval = $cache{'Interval'};
- my $heading = 'Restore this particular Option Response Problem '.
- 'Results, Please wait...';
-
- my %ConceptData;
- $ConceptData{"Interval"} = $interval;
-
- #Initialize the option response true answers
- my ($analyzeData) = &InitAnalysis($uri, $part, $responseId, $problem,
- $students->[0], $courseID);
- if(defined($analyzeData->{'error'})) {
- $Str .= $analyzeData->{'error'}.' Incorrect part requested. ';
- $r->print($Str);
- return;
- }
-
- $r->print($Str);
- $Str = '';
- if($c->aborted()) { untie(%cache); return; }
-
- #compute the intervals
- &Interval($part, $problem, $interval, $analyzeData->{'concepts'},
- \%ConceptData);
-
- $title =~ s/\ /"_"/eg;
- $Str .= ''.$uri.' ';
-
- $r->print($Str);
- $Str = '';
- if($c->aborted()) { untie(%cache); return; }
-
-
- my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title,
- $heading,$#$students+1);
-
- #Java script Progress window
- for(my $index=0; $index<(scalar @$students); $index++) {
- if($c->aborted()) { untie(%cache); return; }
- &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
- 'last student '.$students->[$index]);
- &OpStatus($problemId, $students->[$index], \%ConceptData,
- $analyzeData->{'foil_to_concept'}, $analyzeData,
- \%cache, $courseID);
- }
- &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
-
- $Str .= ' ';
- for (my $k=0; $k<$interval; $k++ ) {
- if($c->aborted()) { untie(%cache); return $Str; }
- $Str .= &DrawGraph($k, $title, $analyzeData->{'concepts'},
- \%ConceptData);
- $r->print($Str);
- $Str = '';
- }
- for (my $k=0; $k<$interval; $k++ ) {
- if($c->aborted()) { untie(%cache); return $Str; }
- $Str .= &DrawTable($k, $analyzeData->{'concepts'}, \%ConceptData);
- $r->print($Str);
- $Str = '';
- }
- my $Answ=&Apache::lonnet::ssi_body($uri);
- $Str .= 'Here you can see the Problem: '.$Answ;
- $Str .= '