version 1.97, 2012/08/16 23:03:01
|
version 1.98, 2012/08/17 13:08:11
|
Line 52 sub useHTML5 {
|
Line 52 sub useHTML5 {
|
return 1; |
return 1; |
} |
} |
|
|
|
# |
|
# HTML5 version does not understand "_" in IDs |
|
# |
|
sub appid { |
|
my ($id)=@_; |
|
$id=~s/\_/rid/gs; |
|
$id=~s/\W//gs; |
|
return $id; |
|
} |
|
|
|
# |
# Routines to start the applet (Java) or the HTML5/JavaScript |
# Routines to start the applet (Java) or the HTML5/JavaScript |
# |
# |
# There can be a number of applets on a page, each called ggbApplet_$id, |
# There can be a number of applets on a page, each called ggbApplet_$id, |
Line 88 sub geogebra_default_parameters {
|
Line 99 sub geogebra_default_parameters {
|
|
|
sub java_geogebra_startcode { |
sub java_geogebra_startcode { |
my ($id,$width,$height)=@_; |
my ($id,$width,$height)=@_; |
|
my $appid=&appid($id); |
$width=int(1.*$width); |
$width=int(1.*$width); |
$height=int(1.*$height); |
$height=int(1.*$height); |
unless ($width) { $width=700; } |
unless ($width) { $width=700; } |
unless ($height) { $height=400; } |
unless ($height) { $height=400; } |
return (<<ENDSTARTCODE); |
return (<<ENDSTARTCODE); |
<applet name="ggbApplet_$id" code="geogebra.GeoGebraApplet" archive="geogebra.jar" |
<applet name="ggbApplet$appid" code="geogebra.GeoGebraApplet" archive="geogebra.jar" |
codebase="/adm/geogebra/" width="$width" height="$height" MAYSCRIPT> |
codebase="/adm/geogebra/" width="$width" height="$height" MAYSCRIPT> |
<param name="java_arguments" value="-Xmx512m -Djnlp.packEnabled=true"/> |
<param name="java_arguments" value="-Xmx512m -Djnlp.packEnabled=true"/> |
ENDSTARTCODE |
ENDSTARTCODE |
Line 111 sub java_geogebra_code_param {
|
Line 123 sub java_geogebra_code_param {
|
|
|
sub html5_geogebra_startcode { |
sub html5_geogebra_startcode { |
my ($id,$width,$height)=@_; |
my ($id,$width,$height)=@_; |
|
my $appid=&appid($id); |
$width=int(1.*$width); |
$width=int(1.*$width); |
$height=int(1.*$height); |
$height=int(1.*$height); |
unless ($width) { $width=700; } |
unless ($width) { $width=700; } |
Line 118 sub html5_geogebra_startcode {
|
Line 131 sub html5_geogebra_startcode {
|
my $code=&geogebra_internal_program(); |
my $code=&geogebra_internal_program(); |
return (<<ENDSTARTCODE); |
return (<<ENDSTARTCODE); |
<article class="geogebraweb" data-param-enableLabelDrags="false" data-param-enableShiftDragZoom="false" |
<article class="geogebraweb" data-param-enableLabelDrags="false" data-param-enableShiftDragZoom="false" |
data-param-width="$width" data-param-height="$height" data-param-id="ggbApplet_$id" |
data-param-width="$width" data-param-height="$height" data-param-id="ggbApplet$appid" |
data-param-ggbbase64="$code"></article> |
data-param-ggbbase64="$code"></article> |
ENDSTARTCODE |
ENDSTARTCODE |
} |
} |
Line 136 sub geogebra_internal_program {
|
Line 149 sub geogebra_internal_program {
|
# |
# |
sub java_geogebra_default_parameters { |
sub java_geogebra_default_parameters { |
my ($id)=@_; |
my ($id)=@_; |
|
my $appid=&appid($id); |
return(<<ENDDEFAULTPARAMETERS); |
return(<<ENDDEFAULTPARAMETERS); |
<param name="image" value="/adm/lonIcons/lonanim.gif" /> |
<param name="image" value="/adm/lonIcons/lonanim.gif" /> |
<param name="boxborder" value="false" /> |
<param name="boxborder" value="false" /> |
Line 156 sub java_geogebra_default_parameters {
|
Line 170 sub java_geogebra_default_parameters {
|
<param name="enableShiftDragZoom" value="false" /> |
<param name="enableShiftDragZoom" value="false" /> |
<param name="allowRescaling" value="false" /> |
<param name="allowRescaling" value="false" /> |
<param name="enableLabelDrags" value="false" /> |
<param name="enableLabelDrags" value="false" /> |
<param name="ggbOnInitParam" value="applet_$id" /> |
<param name="ggbOnInitParam" value="ggbApplet$appid" /> |
ENDDEFAULTPARAMETERS |
ENDDEFAULTPARAMETERS |
} |
} |
|
|
Line 171 sub init_script {
|
Line 185 sub init_script {
|
if ($#Apache::functionplotresponse::callscripts>=0) { |
if ($#Apache::functionplotresponse::callscripts>=0) { |
my $script=''; |
my $script=''; |
foreach my $id (@Apache::functionplotresponse::callscripts) { |
foreach my $id (@Apache::functionplotresponse::callscripts) { |
$script.="if (param=='applet_$id') { loaded_$id=true; }\n"; |
$script.="if (param=='ggbApplet".&appid($id)."') { loaded_$id=true; }\n"; |
} |
} |
$script.="if (".join(' && ',map { "loaded_$_" } (@Apache::functionplotresponse::callscripts)). |
$script.="if (".join(' && ',map { "loaded_$_" } (@Apache::functionplotresponse::callscripts)). |
") { setTimeout('ggbInitAll()',200) }"; |
") { setTimeout('ggbInitAll()',200) }"; |
Line 206 ENDGGBINIT
|
Line 220 ENDGGBINIT
|
# |
# |
sub update_script { |
sub update_script { |
my ($id)=@_; |
my ($id)=@_; |
|
my $appid=&appid($id); |
return (<<ENDUPDATESCRIPT); |
return (<<ENDUPDATESCRIPT); |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function updatePointCoordinates_$id(coordinateName) { |
function updatePointCoordinates_$id(coordinateName) { |
var x = document.ggbApplet_$id.getXcoord(coordinateName); |
var x = document.ggbApplet$appid.getXcoord(coordinateName); |
var y = document.ggbApplet_$id.getYcoord(coordinateName); |
var y = document.ggbApplet$appid.getYcoord(coordinateName); |
document.lonhomework.elements["HWVAL_$id\_" + coordinateName + "_x"].value = x; |
document.lonhomework.elements["HWVAL_$id\_" + coordinateName + "_x"].value = x; |
document.lonhomework.elements["HWVAL_$id\_" + coordinateName + "_y"].value = y; |
document.lonhomework.elements["HWVAL_$id\_" + coordinateName + "_y"].value = y; |
} |
} |
Line 226 ENDUPDATESCRIPT
|
Line 241 ENDUPDATESCRIPT
|
|
|
sub update_register { |
sub update_register { |
my ($id,$variable)=@_; |
my ($id,$variable)=@_; |
return "document.ggbApplet_$id.registerObjectUpdateListener('$variable','updatePointCoordinates_$id');\n"; |
my $appid=&appid($id); |
|
return "document.ggbApplet$appid.registerObjectUpdateListener('$variable','updatePointCoordinates_$id');\n"; |
} |
} |
|
|
# |
# |
Line 234 sub update_register {
|
Line 250 sub update_register {
|
# |
# |
sub set_point_coordinate { |
sub set_point_coordinate { |
my ($id,$variable,$x,$y,$fixed)=@_; |
my ($id,$variable,$x,$y,$fixed)=@_; |
|
my $appid=&appid($id); |
my $mult=($fixed?'a*':''); |
my $mult=($fixed?'a*':''); |
# Get rid of wild exponents, make sure it's a number |
# Get rid of wild exponents, make sure it's a number |
$x=1.*$x; |
$x=1.*$x; |
Line 244 sub set_point_coordinate {
|
Line 261 sub set_point_coordinate {
|
$y=~s/[e|E]/\*10\^/; |
$y=~s/[e|E]/\*10\^/; |
$y=~s/\+//; |
$y=~s/\+//; |
return (<<ENDSETVARIABLE); |
return (<<ENDSETVARIABLE); |
document.ggbApplet_$id.evalCommand("a=1"); |
document.ggbApplet$appid.evalCommand("a=1"); |
document.ggbApplet_$id.evalCommand("$variable=$mult($x,$y)"); |
document.ggbApplet$appid.evalCommand("$variable=$mult($x,$y)"); |
document.ggbApplet_$id.setLabelVisible("$variable",false); |
document.ggbApplet$appid.setLabelVisible("$variable",false); |
ENDSETVARIABLE |
ENDSETVARIABLE |
} |
} |
|
|
Line 255 ENDSETVARIABLE
|
Line 272 ENDSETVARIABLE
|
# |
# |
sub set_slope_coordinate { |
sub set_slope_coordinate { |
my ($id,$variable,$xrel,$yrel,$xmin,$xmax,$ymin,$ymax,$pointname,$fixed)=@_; |
my ($id,$variable,$xrel,$yrel,$xmin,$xmax,$ymin,$ymax,$pointname,$fixed)=@_; |
|
my $appid=&appid($id); |
my $xvariable=$variable.'x'; |
my $xvariable=$variable.'x'; |
my $yvariable=$variable.'y'; |
my $yvariable=$variable.'y'; |
my $domain=$xmax-$xmin; |
my $domain=$xmax-$xmin; |
Line 263 sub set_slope_coordinate {
|
Line 281 sub set_slope_coordinate {
|
my $yinterval=$range/200.; |
my $yinterval=$range/200.; |
my $mult=($fixed?'a*':''); |
my $mult=($fixed?'a*':''); |
return (<<ENDSETSVARIABLE); |
return (<<ENDSETSVARIABLE); |
document.ggbApplet_$id.evalCommand("a=1"); |
document.ggbApplet$appid.evalCommand("a=1"); |
document.ggbApplet_$id.evalCommand("$xvariable=Slider[$xinterval,$domain,$xinterval]"); |
document.ggbApplet$appid.evalCommand("$xvariable=Slider[$xinterval,$domain,$xinterval]"); |
document.ggbApplet_$id.setVisible("$xvariable", false); |
document.ggbApplet$appid.setVisible("$xvariable", false); |
document.ggbApplet_$id.evalCommand("$xvariable=$xrel"); |
document.ggbApplet$appid.evalCommand("$xvariable=$xrel"); |
document.ggbApplet_$id.evalCommand("$yvariable=Slider[-$range,$range,$yinterval]"); |
document.ggbApplet$appid.evalCommand("$yvariable=Slider[-$range,$range,$yinterval]"); |
document.ggbApplet_$id.setVisible("$yvariable", false); |
document.ggbApplet$appid.setVisible("$yvariable", false); |
document.ggbApplet_$id.evalCommand("$yvariable=$yrel"); |
document.ggbApplet$appid.evalCommand("$yvariable=$yrel"); |
document.ggbApplet_$id.evalCommand("$variable=$mult($xvariable+x($pointname),$yvariable+y($pointname))"); |
document.ggbApplet$appid.evalCommand("$variable=$mult($xvariable+x($pointname),$yvariable+y($pointname))"); |
document.ggbApplet_$id.setLabelVisible("$variable", false); |
document.ggbApplet$appid.setLabelVisible("$variable", false); |
ENDSETSVARIABLE |
ENDSETSVARIABLE |
} |
} |
|
|
Line 367 ENDSTARTINIT
|
Line 385 ENDSTARTINIT
|
|
|
sub axes_script { |
sub axes_script { |
my ($id,$xmin,$xmax,$ymin,$ymax,$xvisible,$yvisible,$gvisible)=@_; |
my ($id,$xmin,$xmax,$ymin,$ymax,$xvisible,$yvisible,$gvisible)=@_; |
|
my $appid=&appid($id); |
return (<<ENDAXESSCRIPT); |
return (<<ENDAXESSCRIPT); |
// changes (xmin, xmax, ymin, ymax) |
// changes (xmin, xmax, ymin, ymax) |
document.ggbApplet_$id.setCoordSystem($xmin,$xmax,$ymin,$ymax); |
document.ggbApplet$appid.setCoordSystem($xmin,$xmax,$ymin,$ymax); |
|
|
// makes the (x,y) axis (in)visible |
// makes the (x,y) axis (in)visible |
document.ggbApplet_$id.setAxesVisible($xvisible,$yvisible); |
document.ggbApplet$appid.setAxesVisible($xvisible,$yvisible); |
// makes the grid (in)visible |
// makes the grid (in)visible |
document.ggbApplet_$id.setGridVisible($gvisible); |
document.ggbApplet$appid.setGridVisible($gvisible); |
ENDAXESSCRIPT |
ENDAXESSCRIPT |
} |
} |
|
|
sub axes_label { |
sub axes_label { |
my ($id,$xmin,$xmax,$ymin,$ymax,$xlabel,$ylabel)=@_; |
my ($id,$xmin,$xmax,$ymin,$ymax,$xlabel,$ylabel)=@_; |
|
my $appid=&appid($id); |
unless ($xlabel || $ylabel) { return ''; } |
unless ($xlabel || $ylabel) { return ''; } |
my $return='document.ggbApplet_'.$id.'.evalCommand("topRight=Corner[3]");'; |
my $return='document.ggbApplet'.$appid.'.evalCommand("topRight=Corner[3]");'; |
if ($xlabel) { |
if ($xlabel) { |
if (($ymin<0) && ($ymax>0)) { |
if (($ymin<0) && ($ymax>0)) { |
$return.=(<<ENDXAXISLABELSCRIPT); |
$return.=(<<ENDXAXISLABELSCRIPT); |
document.ggbApplet_$id.evalCommand("Xlabel=(x(topRight)-AxisStepX[],AxisStepY[]/6)"); |
document.ggbApplet$appid.evalCommand("Xlabel=(x(topRight)-AxisStepX[],AxisStepY[]/6)"); |
document.ggbApplet_$id.setVisible("Xlabel",false); |
document.ggbApplet$appid.setVisible("Xlabel",false); |
document.ggbApplet_$id.evalCommand("Text[\\"$xlabel\\", Xlabel]"); |
document.ggbApplet$appid.evalCommand("Text[\\"$xlabel\\", Xlabel]"); |
ENDXAXISLABELSCRIPT |
ENDXAXISLABELSCRIPT |
} else { |
} else { |
$return.=(<<ENDXOFFAXISLABEL); |
$return.=(<<ENDXOFFAXISLABEL); |
document.ggbApplet_$id.evalCommand("LowerRight=Corner[2]"); |
document.ggbApplet$appid.evalCommand("LowerRight=Corner[2]"); |
document.ggbApplet_$id.evalCommand("Text[\\"$xlabel\\", (x(LowerRight) - AxisStepX[], y(LowerRight) + AxisStepY[] / 2)]"); |
document.ggbApplet$appid.evalCommand("Text[\\"$xlabel\\", (x(LowerRight) - AxisStepX[], y(LowerRight) + AxisStepY[] / 2)]"); |
ENDXOFFAXISLABEL |
ENDXOFFAXISLABEL |
} |
} |
} |
} |
if ($ylabel) { |
if ($ylabel) { |
if (($xmin<0) && ($xmax>0)) { |
if (($xmin<0) && ($xmax>0)) { |
$return.=(<<ENDYAXISLABELSCRIPT); |
$return.=(<<ENDYAXISLABELSCRIPT); |
document.ggbApplet_$id.evalCommand("Ylabel=(AxisStepX[]/6,y(topRight)-AxisStepY[]/3)"); |
document.ggbApplet$appid.evalCommand("Ylabel=(AxisStepX[]/6,y(topRight)-AxisStepY[]/3)"); |
document.ggbApplet_$id.setVisible("Ylabel",false); |
document.ggbApplet$appid.setVisible("Ylabel",false); |
document.ggbApplet_$id.evalCommand("Text[\\"$ylabel\\", Ylabel]"); |
document.ggbApplet$appid.evalCommand("Text[\\"$ylabel\\", Ylabel]"); |
ENDYAXISLABELSCRIPT |
ENDYAXISLABELSCRIPT |
} else { |
} else { |
$return.=(<<ENDYOFFAXISLABEL); |
$return.=(<<ENDYOFFAXISLABEL); |
document.ggbApplet_$id.evalCommand("UpperLeft=Corner[4]"); |
document.ggbApplet$appid.evalCommand("UpperLeft=Corner[4]"); |
document.ggbApplet_$id.evalCommand("Text[\\"$ylabel\\", (x(UpperLeft) + AxisStepX[] / 5, y(UpperLeft) - AxisStepY[] / 1.8)]"); |
document.ggbApplet$appid.evalCommand("Text[\\"$ylabel\\", (x(UpperLeft) + AxisStepX[] / 5, y(UpperLeft) - AxisStepY[] / 1.8)]"); |
ENDYOFFAXISLABEL |
ENDYOFFAXISLABEL |
} |
} |
} |
} |
Line 419 ENDYOFFAXISLABEL
|
Line 439 ENDYOFFAXISLABEL
|
|
|
sub plot_script { |
sub plot_script { |
my ($id,$function,$fixed,$label,$color,$xmin,$xmax,$thickness)=@_; |
my ($id,$function,$fixed,$label,$color,$xmin,$xmax,$thickness)=@_; |
|
my $appid=&appid($id); |
$label=~s/\W//g; |
$label=~s/\W//g; |
if (($label) && ($label!~/^[A-Za-z]/)) { |
if (($label) && ($label!~/^[A-Za-z]/)) { |
$label='C'.$label; |
$label='C'.$label; |
Line 440 sub plot_script {
|
Line 461 sub plot_script {
|
$bc=hex($bh); |
$bc=hex($bh); |
} |
} |
if ($fixed) { |
if ($fixed) { |
return "document.ggbApplet_$id.evalCommand('$label=Function[$function,$xmin,$xmax]');\n". |
return "document.ggbApplet$appid.evalCommand('$label=Function[$function,$xmin,$xmax]');\n". |
($visible?'':"document.ggbApplet_$id.setLabelVisible('$label', false);\n"). |
($visible?'':"document.ggbApplet$appid.setLabelVisible('$label', false);\n"). |
($color?"document.ggbApplet_$id.setColor('$label',$rc,$gc,$bc);\n":''). |
($color?"document.ggbApplet$appid.setColor('$label',$rc,$gc,$bc);\n":''). |
($thickness?"document.ggbApplet_$id.setLineThickness('$label',$thickness);\n":''); |
($thickness?"document.ggbApplet$appid.setLineThickness('$label',$thickness);\n":''); |
} else { |
} else { |
return "document.ggbApplet_$id.evalCommand('y=$function');\n"; |
return "document.ggbApplet$appid.evalCommand('y=$function');\n"; |
} |
} |
} |
} |
|
|
Line 455 sub plot_script {
|
Line 476 sub plot_script {
|
|
|
sub plotobject_script { |
sub plotobject_script { |
my ($id,$label,$x,$y)=@_; |
my ($id,$label,$x,$y)=@_; |
|
my $appid=&appid($id); |
unless ($label) { |
unless ($label) { |
$Apache::functionplotresponse::counter++; |
$Apache::functionplotresponse::counter++; |
$label='O'.$Apache::functionplotresponse::counter; |
$label='O'.$Apache::functionplotresponse::counter; |
} |
} |
&generate_input_field($id,$label,$x,$y); |
&generate_input_field($id,$label,$x,$y); |
return "document.ggbApplet_$id.evalCommand('a=1');\n". |
return "document.ggbApplet$appid.evalCommand('a=1');\n". |
"document.ggbApplet_$id.setVisible('a', false);\n". |
"document.ggbApplet$appid.setVisible('a', false);\n". |
"document.ggbApplet_$id.setLabelVisible('a', false);\n". |
"document.ggbApplet$appid.setLabelVisible('a', false);\n". |
"document.ggbApplet_$id.evalCommand('$label=a*($x,$y)');\n". |
"document.ggbApplet$appid.evalCommand('$label=a*($x,$y)');\n". |
"document.ggbApplet_$id.setVisible('$label', true);\n". |
"document.ggbApplet$appid.setVisible('$label', true);\n". |
"document.ggbApplet_$id.setLabelVisible('$label', true);\n"; |
"document.ggbApplet$appid.setLabelVisible('$label', true);\n"; |
} |
} |
|
|
# |
# |
Line 474 sub plotobject_script {
|
Line 496 sub plotobject_script {
|
|
|
sub plotvector_script { |
sub plotvector_script { |
my ($id,$label,$xs,$ys,$xe,$ye,$xmin,$xmax,$fixed)=@_; |
my ($id,$label,$xs,$ys,$xe,$ye,$xmin,$xmax,$fixed)=@_; |
|
my $appid=&appid($id); |
unless ($label) { |
unless ($label) { |
$Apache::functionplotresponse::counter++; |
$Apache::functionplotresponse::counter++; |
$label='V'.$Apache::functionplotresponse::counter; |
$label='V'.$Apache::functionplotresponse::counter; |
Line 487 sub plotvector_script {
|
Line 510 sub plotvector_script {
|
&new_point_coordinate($id,$startlabel,$xs,$ys,$fixed). |
&new_point_coordinate($id,$startlabel,$xs,$ys,$fixed). |
&new_point_coordinate($id,$endlabel,$xe,$ye,$fixed). |
&new_point_coordinate($id,$endlabel,$xe,$ye,$fixed). |
(<<ENDVECTOR); |
(<<ENDVECTOR); |
document.ggbApplet_$id.evalCommand("$label=Vector[$startlabel,$endlabel]"); |
document.ggbApplet$appid.evalCommand("$label=Vector[$startlabel,$endlabel]"); |
document.ggbApplet_$id.setLabelVisible("$label",true); |
document.ggbApplet$appid.setLabelVisible("$label",true); |
document.ggbApplet_$id.setLineThickness("$label",8); |
document.ggbApplet$appid.setLineThickness("$label",8); |
document.ggbApplet_$id.evalCommand("$pointlabel=($pointx,y($startlabel))"); |
document.ggbApplet$appid.evalCommand("$pointlabel=($pointx,y($startlabel))"); |
document.ggbApplet_$id.evalCommand("$anglelabel=Angle[$pointlabel,$startlabel,$endlabel]"); |
document.ggbApplet$appid.evalCommand("$anglelabel=Angle[$pointlabel,$startlabel,$endlabel]"); |
document.ggbApplet_$id.setLabelVisible("$anglelabel",true); |
document.ggbApplet$appid.setLabelVisible("$anglelabel",true); |
document.ggbApplet_$id.setLabelStyle("$anglelabel",VALUE=2); |
document.ggbApplet$appid.setLabelStyle("$anglelabel",VALUE=2); |
ENDVECTOR |
ENDVECTOR |
} |
} |
|
|
Line 504 ENDVECTOR
|
Line 527 ENDVECTOR
|
|
|
sub answer_spline_script { |
sub answer_spline_script { |
my ($id,@points)=@_; |
my ($id,@points)=@_; |
|
my $appid=&appid($id); |
my $order=int(($#points+1)/4); |
my $order=int(($#points+1)/4); |
if ($order<2) { $order=2; } |
if ($order<2) { $order=2; } |
if ($order>8) { $order=8; } |
if ($order>8) { $order=8; } |
$Apache::functionplotresponse::counter++; |
$Apache::functionplotresponse::counter++; |
my $label='CSpline'.$Apache::functionplotresponse::counter; |
my $label='CSpline'.$Apache::functionplotresponse::counter; |
my $output='document.ggbApplet_'.$id.'.evalCommand("'.$label.'=Spline'.$order.'['; |
my $output='document.ggbApplet'.$appid.'.evalCommand("'.$label.'=Spline'.$order.'['; |
for (my $i=0;$i<=$#points;$i+=4) { |
for (my $i=0;$i<=$#points;$i+=4) { |
$output.="($points[$i],$points[$i+1]),($points[$i+2],$points[$i+3]),"; |
$output.="($points[$i],$points[$i+1]),($points[$i+2],$points[$i+3]),"; |
} |
} |
$output=~s/\,$//; |
$output=~s/\,$//; |
$output.=']");'."\n"; |
$output.=']");'."\n"; |
for (my $i=2; $i<2*$order; $i+=2) { |
for (my $i=2; $i<2*$order; $i+=2) { |
$output.='document.ggbApplet_'.$id.'.setColor("'.$label.'_'.($i>=10?'{':'').$i.($i>=10?'}':'').'",0,170,0);'."\n"; |
$output.='document.ggbApplet'.$appid.'.setColor("'.$label.'_'.($i>=10?'{':'').$i.($i>=10?'}':'').'",0,170,0);'."\n"; |
} |
} |
for (my $i=1; $i<2*$order; $i+=2) { |
for (my $i=1; $i<2*$order; $i+=2) { |
$output.='document.ggbApplet_'.$id.'.setVisible("'.$label.'_'.($i>=10?'{':'').$i.($i>=10?'}':'').'",false);'."\n"; |
$output.='document.ggbApplet'.$appid.'.setVisible("'.$label.'_'.($i>=10?'{':'').$i.($i>=10?'}':'').'",false);'."\n"; |
} |
} |
|
|
return $output; |
return $output; |
Line 531 sub answer_spline_script {
|
Line 555 sub answer_spline_script {
|
|
|
sub generate_spline { |
sub generate_spline { |
my ($id,$label,$xmin,$xmax,$ymin,$ymax,$fixed)=@_; |
my ($id,$label,$xmin,$xmax,$ymin,$ymax,$fixed)=@_; |
|
my $appid=&appid($id); |
my $result=''; |
my $result=''; |
my $order=$Apache::functionplotresponse::splineorder{$label}; |
my $order=$Apache::functionplotresponse::splineorder{$label}; |
my $x=$Apache::functionplotresponse::splineinitx{$label}; |
my $x=$Apache::functionplotresponse::splineinitx{$label}; |
Line 547 sub generate_spline {
|
Line 572 sub generate_spline {
|
$x+=$sx/(2.*($order-1)); |
$x+=$sx/(2.*($order-1)); |
push(@coords,$label.'S'.$i); |
push(@coords,$label.'S'.$i); |
} |
} |
$result.='document.ggbApplet_'.$id.'.evalCommand("Spline'.$order.'['.join(',',@coords).']");'."\n"; |
$result.='document.ggbApplet'.$appid.'.evalCommand("Spline'.$order.'['.join(',',@coords).']");'."\n"; |
return $result; |
return $result; |
} |
} |
|
|
Line 666 sub start_drawvectorsum {
|
Line 691 sub start_drawvectorsum {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result=''; |
my $result=''; |
my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; |
my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; |
|
my $internalappid=&appid($internalid); |
my $tailx=&Apache::lonxml::get_param('tailx',$parstack,$safeeval); |
my $tailx=&Apache::lonxml::get_param('tailx',$parstack,$safeeval); |
my $taily=&Apache::lonxml::get_param('taily',$parstack,$safeeval); |
my $taily=&Apache::lonxml::get_param('taily',$parstack,$safeeval); |
my $showvalue=&Apache::lonxml::get_param('showvalue',$parstack,$safeeval); |
my $showvalue=&Apache::lonxml::get_param('showvalue',$parstack,$safeeval); |
Line 694 sub start_drawvectorsum {
|
Line 720 sub start_drawvectorsum {
|
my $vectorx=$thisvector.'X'; |
my $vectorx=$thisvector.'X'; |
my $vectory=$thisvector.'Y'; |
my $vectory=$thisvector.'Y'; |
$result.=(<<ENDADDVEC); |
$result.=(<<ENDADDVEC); |
document.ggbApplet_$internalid.evalCommand("$vectorx=x($thisvector)"); |
document.ggbApplet$internalappid.evalCommand("$vectorx=x($thisvector)"); |
document.ggbApplet_$internalid.evalCommand("$vectory=y($thisvector)"); |
document.ggbApplet$internalappid.evalCommand("$vectory=y($thisvector)"); |
document.ggbApplet_$internalid.evalCommand("Include$thisvector$label=Checkbox[]"); |
document.ggbApplet$internalappid.evalCommand("Include$thisvector$label=Checkbox[]"); |
ENDADDVEC |
ENDADDVEC |
push(@sumx,"If[Include$thisvector$label,$vectorx,0]"); |
push(@sumx,"If[Include$thisvector$label,$vectorx,0]"); |
push(@sumy,"If[Include$thisvector$label,$vectory,0]"); |
push(@sumy,"If[Include$thisvector$label,$vectory,0]"); |
} |
} |
$result.="document.ggbApplet_$internalid.evalCommand(".'"'."xTot$label=".join('+',@sumx).'");'."\n"; |
$result.="document.ggbApplet$internalappid.evalCommand(".'"'."xTot$label=".join('+',@sumx).'");'."\n"; |
$result.="document.ggbApplet_$internalid.evalCommand(".'"'."yTot$label=".join('+',@sumy).'");'."\n"; |
$result.="document.ggbApplet$internalappid.evalCommand(".'"'."yTot$label=".join('+',@sumy).'");'."\n"; |
my $show=0; |
my $show=0; |
if ($showvalue=~/yes/i) { |
if ($showvalue=~/yes/i) { |
$show=1; |
$show=1; |
} |
} |
$result.=(<<ENDMAKEVECTOR); |
$result.=(<<ENDMAKEVECTOR); |
document.ggbApplet_$internalid.evalCommand("$label=Vector[($tailx,$taily),($tailx+xTot$label,$taily+yTot$label)]"); |
document.ggbApplet$internalappid.evalCommand("$label=Vector[($tailx,$taily),($tailx+xTot$label,$taily+yTot$label)]"); |
document.ggbApplet_$internalid.setLabelVisible("$label",true); |
document.ggbApplet$internalappid.setLabelVisible("$label",true); |
document.ggbApplet_$internalid.setLineThickness("$label",8); |
document.ggbApplet$internalappid.setLineThickness("$label",8); |
document.ggbApplet_$internalid.setColor("$label",255,0,0); |
document.ggbApplet$internalappid.setColor("$label",255,0,0); |
document.ggbApplet_$internalid.setLabelStyle("$label",VALUE=$show); |
document.ggbApplet$internalappid.setLabelStyle("$label",VALUE=$show); |
ENDMAKEVECTOR |
ENDMAKEVECTOR |
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |