--- loncom/homework/functionplotresponse.pm 2010/10/04 14:34:43 1.2 +++ loncom/homework/functionplotresponse.pm 2010/10/04 19:26:39 1.4 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: functionplotresponse.pm,v 1.2 2010/10/04 14:34:43 www Exp $ +# $Id: functionplotresponse.pm,v 1.4 2010/10/04 19:26:39 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -33,12 +33,13 @@ use Apache::lonlocal; use Apache::lonnet; BEGIN { - &Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse')); + &Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot')); } sub geogebra_startcode { + my ($id)=@_; return (< ENDSTARTCODE @@ -55,6 +56,7 @@ ENDSPLINEPROGRAM } sub geogebra_default_parameters { + my ($id)=@_; return(< @@ -76,18 +78,97 @@ sub geogebra_default_parameters { - + ENDDEFAULTPARAMETERS } +sub init_script { + if ($Apache::functionplotresponse::callscripts) { + return (< +// + +ENDGGBINIT + } +} + +sub start_init_script { + my ($id)=@_; + $Apache::functionplotresponse::callscripts.="if (param=='applet_$id') { ggbInit_$id(); }\n"; + return (< +// + +ENDENDINIT +} + sub start_functionplotresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; - my $id = &Apache::response::start_response($parstack,$safeeval); + my $internalid = $Apache::inputtags::part.'_'.&Apache::response::start_response($parstack,$safeeval); + my $xmin=&Apache::lonxml::get_param('xmin',$parstack,$safeeval); + $xmin=($xmin?$xmin:-10); + my $xmax=&Apache::lonxml::get_param('xmax',$parstack,$safeeval); + $xmax=($xmax?$xmax:10); + my $ymin=&Apache::lonxml::get_param('ymin',$parstack,$safeeval); + $ymin=($ymin?$ymin:-10); + my $ymax=&Apache::lonxml::get_param('ymax',$parstack,$safeeval); + $ymax=($ymax?$ymax:10); + my $xaxisvisible=(&Apache::lonxml::get_param('xaxisvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); + my $yaxisvisible=(&Apache::lonxml::get_param('yaxisvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); + my $gridvisible=(&Apache::lonxml::get_param('gridvisible',$parstack,$safeeval)=~/on|true|1/i?'true':'false'); + + if ($target eq 'web') { - $result.=&geogebra_startcode(); - $result.=&geogebra_spline_program(); - $result.=&geogebra_default_parameters(); + $result.=&start_init_script($internalid); + $result.=&axes_script($internalid,$xmin,$xmax,$ymin,$ymax,$xaxisvisible,$yaxisvisible,$gridvisible); } return $result; } @@ -95,9 +176,16 @@ sub start_functionplotresponse { sub end_functionplotresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; &Apache::response::end_response; + my $result; + my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; + # if ($target eq 'edit') { $result=&Apache::edit::end_table(); } if ($target eq 'web') { + $result.=&end_init_script(); + $result.=&geogebra_startcode($internalid); + $result.=&geogebra_spline_program(); + $result.=&geogebra_default_parameters($internalid); $result.=&geogebra_endcode(); } return $result;