[LON-CAPA-cvs] cvs: loncom /homework functionplotresponse.pm

www www@source.lon-capa.org
Sun, 17 Oct 2010 22:32:19 -0000


www		Sun Oct 17 22:32:19 2010 EDT

  Modified files:              
    /loncom/homework	functionplotresponse.pm 
  Log:
  Axis Labels
  
  
Index: loncom/homework/functionplotresponse.pm
diff -u loncom/homework/functionplotresponse.pm:1.13 loncom/homework/functionplotresponse.pm:1.14
--- loncom/homework/functionplotresponse.pm:1.13	Sun Oct 10 00:14:15 2010
+++ loncom/homework/functionplotresponse.pm	Sun Oct 17 22:32:19 2010
@@ -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.14 2010/10/17 22:32:19 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -224,10 +224,33 @@
 ENDAXESSCRIPT
 }
 
+sub axes_label {
+    my ($id,$xlabel,$ylabel)=@_;
+    unless ($xlabel || $ylabel) { return ''; }
+    my $return='document.ggbApplet_'.$id.'.evalCommand("topRight=Corner[3]");';
+    if ($xlabel) {
+       $return.=(<<ENDXAXISLABELSCRIPT);
+document.ggbApplet_$id.evalCommand("Xlabel=(x(topRight)-AxisStepX[],AxisStepY[]/6)");
+document.ggbApplet_$id.setVisible("Xlabel",false);
+document.ggbApplet_$id.evalCommand("Text[\\"$xlabel\\", Xlabel]");
+ENDXAXISLABELSCRIPT
+    }
+    if ($ylabel) {
+       $return.=(<<ENDYAXISLABELSCRIPT);
+document.ggbApplet_$id.evalCommand("Ylabel=(AxisStepX[]/6,y(topRight)-AxisStepY[]/3)");
+document.ggbApplet_$id.setVisible("Ylabel",false);
+document.ggbApplet_$id.evalCommand("Text[\\"$ylabel\\", Ylabel]");
+ENDYAXISLABELSCRIPT
+    }
+    return $return;
+}
+
 sub plot_script {
    my ($id,$function,$fixed)=@_;
    if ($fixed) {
 # Use stupid trick to nail this to a location
+# Oddly, it seems like only one plot cannot be nailed to a location
+# Non-nailed-down plots apparently get overwritten
       return (<<ENDPLOTSCRIPT);
             document.ggbApplet_$id.evalCommand("a=1");
             document.ggbApplet_$id.setVisible("a",false);
@@ -367,15 +390,15 @@
    } elsif ($target eq 'edit') {
         $result=&Apache::edit::tag_start($target,$token,'Spline').
              &Apache::edit::text_arg('Label:','label',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::select_arg('Order:','order',
-                                  ['2','3','4','5','6','7','8','9'],$token).
+                                  ['2','3','4','5','6','7','8','9'],$token).'&nbsp;'.
              &Apache::edit::text_arg('Initial x-value:','initx',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::text_arg('Initial y-value:','inity',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::text_arg('Scale x:','scalex',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::text_arg('Scale y:','scaley',
                                      $token,'4').
              &Apache::edit::end_row();
@@ -463,6 +486,8 @@
   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)
        .'<tr><td><span class="LC_nobreak">'.&mt('Function Plot Question').'</span></td>'
@@ -473,24 +498,28 @@
        .&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').'&nbsp;'.
+             &Apache::edit::text_arg('Minimum x-value:','xmin',
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::text_arg('Maximum x-value:','xmax',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::select_arg('x-axis visible:','xaxisvisible',
-                                  ['yes','no'],$token).
+                                  ['yes','no'],$token).'&nbsp;&nbsp;'.
+             &Apache::edit::text_arg('Label y-axis:','ylabel',
+                                     $token,'6').'&nbsp;'.
              &Apache::edit::text_arg('Minimum y-value:','ymin',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::text_arg('Maximum y-value:','ymax',
-                                     $token,'4').
+                                     $token,'4').'&nbsp;'.
              &Apache::edit::select_arg('y-axis visible:','yaxisvisible',
-                                  ['yes','no'],$token).
+                                  ['yes','no'],$token).'&nbsp;&nbsp;'.
              &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 +532,7 @@
      $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;