Diff for /loncom/homework/functionplotresponse.pm between versions 1.97 and 1.98

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') {

Removed from v.1.97  
changed lines
  Added in v.1.98


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>