--- loncom/homework/functionplotresponse.pm 2012/02/28 22:42:31 1.93 +++ loncom/homework/functionplotresponse.pm 2012/02/29 01:46:52 1.95 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # Functionplot responses # -# $Id: functionplotresponse.pm,v 1.93 2012/02/28 22:42:31 www Exp $ +# $Id: functionplotresponse.pm,v 1.95 2012/02/29 01:46:52 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -551,6 +551,10 @@ sub start_plotvector { $label=~s/\W//gs; $label=ucfirst($label); unless ($label) { $label="NewVector"; } + if ($Apache::functionplotresponse::vectorlabels{$label}) { + &Apache::lonxml::warning(&mt('Vector labels must be unique: [_1]',$label)); + } + $Apache::functionplotresponse::vectorlabels{$label}=1; if ($target eq 'web') { my ($xmin,$xmax,$ymin,$ymax)=&boundaries($parstack,$safeeval,-3); unless (defined($tailx)) { $tailx=$xmin; } @@ -602,6 +606,7 @@ sub start_drawvectorsum { my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; my $tailx=&Apache::lonxml::get_param('tailx',$parstack,$safeeval); my $taily=&Apache::lonxml::get_param('taily',$parstack,$safeeval); + my $showvalue=&Apache::lonxml::get_param('showvalue',$parstack,$safeeval); my $vectorlist=&Apache::lonxml::get_param('vectorlist',$parstack,$safeeval); my $label=&Apache::lonxml::get_param('label',$parstack,$safeeval); $label=~s/\W//gs; @@ -620,6 +625,10 @@ sub start_drawvectorsum { $thisvector=~s/\W//gs; $thisvector=ucfirst($thisvector); unless ($thisvector) { next; } + unless ($Apache::functionplotresponse::vectorlabels{$thisvector}) { + &Apache::lonxml::warning(&mt('Vectors must be defined before using them for drawing vector sums: [_1]',$thisvector)); + next; + } my $vectorx=$thisvector.'X'; my $vectory=$thisvector.'Y'; $result.=(<'. + $token,'8'). + &Apache::edit::select_arg('Show Value:','showvalue', + ['yes','no'],$token).'
'. &Apache::edit::text_arg('Vector List:','vectorlist', $token,'40'). &Apache::edit::end_row(); } elsif ($target eq 'modified') { $env{'form.'.&Apache::edit::html_element_name('label')}=ucfirst($env{'form.'.&Apache::edit::html_element_name('label')}); - my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'label','tailx','taily','vectorlist'); + my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'label','tailx','taily','showvalue','vectorlist'); if ($constructtag) { $result=&Apache::edit::rebuild_tag($token); } } return $result; @@ -1296,6 +1312,8 @@ sub start_functionplotresponse { undef %Apache::functionplotresponse::previous; $Apache::functionplotresponse::inputfields=''; $Apache::functionplotresponse::counter=0; +# Remember vectors + undef %Apache::functionplotresponse::vectorlabels; # Remember rules undef @Apache::functionplotresponse::functionplotrules; undef @Apache::functionplotresponse::functionplotvectorrules;