--- loncom/homework/functionplotresponse.pm 2010/10/10 00:14:15 1.13 +++ loncom/homework/functionplotresponse.pm 2010/10/29 19:18:48 1.17 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: functionplotresponse.pm,v 1.13 2010/10/10 00:14:15 www Exp $ +# $Id: functionplotresponse.pm,v 1.17 2010/10/29 19:18:48 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -101,12 +101,25 @@ ENDDEFAULTPARAMETERS # sub init_script { - if ($Apache::functionplotresponse::callscripts) { + if ($#Apache::functionplotresponse::callscripts>=0) { + my $script=''; + foreach my $id (@Apache::functionplotresponse::callscripts) { + $script.="if (param=='applet_$id') { loaded_$id=true; }\n"; + } + $script.="if (".join(' && ',map { "loaded_$_" } (@Apache::functionplotresponse::callscripts)). + ") { setTimeout('ggbInitAll()',20) }"; + my $calls=join("\n",map { "ggbInit_$_();" } (@Apache::functionplotresponse::callscripts)); return (< // @@ -194,14 +207,16 @@ sub new_coordinate { # sub start_init_script { my ($id)=@_; -# Add a line to ggbOnInit-function which calls the right function based on parameter passed from GeoGebra - $Apache::functionplotresponse::callscripts.="if (param=='applet_$id') { ggbInit_$id(); }\n"; +# Add id to the list of ggbInit_$id functions that need to be called + push(@Apache::functionplotresponse::callscripts,$id); # ... and open this function return (< // +# + sub start_functionplotresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; @@ -463,6 +535,8 @@ sub start_functionplotresponse { my $xaxisvisible=(&Apache::lonxml::get_param('xaxisvisible',$parstack,$safeeval)=~/on|true|yes|1/i?'true':'false'); my $yaxisvisible=(&Apache::lonxml::get_param('yaxisvisible',$parstack,$safeeval)=~/on|true|yes|1/i?'true':'false'); my $gridvisible=(&Apache::lonxml::get_param('gridvisible',$parstack,$safeeval)=~/on|true|yes|1/i?'true':'false'); + my $xlabel=&Apache::lonxml::get_param('xlabel',$parstack,$safeeval); + my $ylabel=&Apache::lonxml::get_param('ylabel',$parstack,$safeeval); if ($target eq 'edit') { $result.=&Apache::edit::start_table($token) .''.&mt('Function Plot Question').'' @@ -473,24 +547,28 @@ sub start_functionplotresponse { .&Apache::edit::end_row() .&Apache::edit::start_spanning_row() ."\n"; - $result.=&Apache::edit::text_arg('Minimum x-value:','xmin', - $token,'4'). + $result.=&Apache::edit::text_arg('Label x-axis:','xlabel', + $token,'6').' '. + &Apache::edit::text_arg('Minimum x-value:','xmin', + $token,'4').' '. &Apache::edit::text_arg('Maximum x-value:','xmax', - $token,'4'). + $token,'4').' '. &Apache::edit::select_arg('x-axis visible:','xaxisvisible', - ['yes','no'],$token). + ['yes','no'],$token).'  '. + &Apache::edit::text_arg('Label y-axis:','ylabel', + $token,'6').' '. &Apache::edit::text_arg('Minimum y-value:','ymin', - $token,'4'). + $token,'4').' '. &Apache::edit::text_arg('Maximum y-value:','ymax', - $token,'4'). + $token,'4').' '. &Apache::edit::select_arg('y-axis visible:','yaxisvisible', - ['yes','no'],$token). + ['yes','no'],$token).'  '. &Apache::edit::select_arg('Grid visible:','gridvisible', ['yes','no'],$token). &Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, - $safeeval,'xmin','xmax','ymin','ymax', + $safeeval,'xlabel','xmin','xmax','ylabel','ymin','ymax', 'xaxisvisible','yaxisvisible','gridvisible'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } @@ -503,6 +581,7 @@ sub start_functionplotresponse { $result.=&start_init_script($internalid); # put the axis commands inside $result.=&axes_script($internalid,$xmin,$xmax,$ymin,$ymax,$xaxisvisible,$yaxisvisible,$gridvisible); + $result.=&axes_label($internalid,$xlabel,$ylabel); # init script is left open } return $result; @@ -546,6 +625,13 @@ sub end_functionplotresponse { } # close the init script $result.=&end_init_script(); +# register all splines in this response + $result.=''."\n"; + foreach my $label (keys(%Apache::functionplotresponse::splineorder)) { + $result.=''."\n"; + } # generate the input fields $result.=$Apache::functionplotresponse::inputfields; # actually start the -tag