Diff for /loncom/xml/lonplot.pm between versions 1.38 and 1.40

version 1.38, 2002/01/10 19:45:51 version 1.40, 2002/01/15 16:21:39
Line 330  sub start_plot { Line 330  sub start_plot {
     ($token,$parstack,$safeeval,keys(%plot_defaults));      ($token,$parstack,$safeeval,keys(%plot_defaults));
  if ($constructtag) {   if ($constructtag) {
     $result = &Apache::edit::rebuild_tag($token);      $result = &Apache::edit::rebuild_tag($token);
 #    $result.= &Apache::edit::handle_insert();  
  }   }
     }      }
     return $result;      return $result;
Line 351  sub end_plot { Line 350  sub end_plot {
  my $filename = $ENV{'user.name'}.'_'.$ENV{'user.domain'}.   my $filename = $ENV{'user.name'}.'_'.$ENV{'user.domain'}.
     '_'.time.'_'.$$.int(rand(1000)).'_plot.data';      '_'.time.'_'.$$.int(rand(1000)).'_plot.data';
  ## Write the plot description to the file   ## Write the plot description to the file
  my $fh=Apache::File->new(">$tmpdir$filename");   &write_gnuplot_file($tmpdir,$filename);
  print $fh &write_gnuplot_file();  
  close($fh);  
  ## return image tag for the plot   ## return image tag for the plot
  $result .= <<"ENDIMAGE";   $result .= <<"ENDIMAGE";
 <img src    = "/cgi-bin/plot.gif?$filename"   <img src    = "/cgi-bin/plot.gif?$filename" 
Line 411  sub start_title { Line 408  sub start_title {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token,'Plot Title');   $result.=&Apache::edit::tag_start($target,$token,'Plot Title');
  my $text=&Apache::lonxml::get_all_text("/title",$$parser[-1]);   my $text=&Apache::lonxml::get_all_text("/title",$$parser[-1]);
  $result.='</td></tr><tr><td colspan="3">'.   $result.=&Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $text=$$parser[-1]->get_text("/title");   my $text=$$parser[-1]->get_text("/title");
Line 441  sub start_xlabel { Line 439  sub start_xlabel {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel');   $result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel');
  my $text=&Apache::lonxml::get_all_text("/xlabel",$$parser[-1]);   my $text=&Apache::lonxml::get_all_text("/xlabel",$$parser[-1]);
  $result.='</td></tr><tr><td colspan="3">'.   $result.=&Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $text=$$parser[-1]->get_text("/xlabel");   my $text=$$parser[-1]->get_text("/xlabel");
Line 472  sub start_ylabel { Line 471  sub start_ylabel {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel');   $result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel');
  my $text = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]);   my $text = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]);
  $result .= '</td></tr><tr><td colspan="3">'.   $result .= &Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $text=$$parser[-1]->get_text("/ylabel");   my $text=$$parser[-1]->get_text("/ylabel");
Line 507  sub start_label { Line 507  sub start_label {
  $result .= &Apache::edit::tag_start($target,$token,'Plot Label');   $result .= &Apache::edit::tag_start($target,$token,'Plot Label');
  $result .= &edit_attributes($target,$token,\%label_defaults);   $result .= &edit_attributes($target,$token,\%label_defaults);
  my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]);   my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]);
  $result .= '</td></tr><tr><td colspan="3">'.   $result .= &Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag=&Apache::edit::get_new_args   my $constructtag=&Apache::edit::get_new_args
Line 583  sub start_function { Line 584  sub start_function {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .= &Apache::edit::tag_start($target,$token,'Gnuplot compatible curve function');   $result .= &Apache::edit::tag_start($target,$token,'Gnuplot compatible curve function');
  my $text = &Apache::lonxml::get_all_text("/function",$$parser[-1]);   my $text = &Apache::lonxml::get_all_text("/function",$$parser[-1]);
  $result .= '</td></tr><tr><td colspan="3">'.   $result .= &Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  # Why do I do this?   # Why do I do this?
Line 615  sub start_data { Line 617  sub start_data {
     delete($curves[-1]->{'function'});      delete($curves[-1]->{'function'});
  }   }
  my $datatext = &Apache::lonxml::get_all_text("/data",$$parser[-1]);   my $datatext = &Apache::lonxml::get_all_text("/data",$$parser[-1]);
    # Deal with cases where we're given an array...
    if ($datatext =~ /^\@/) {
       $datatext = &Apache::run::run('return "'.$datatext.'"',
     $safeeval,1);
    }
  $datatext =~ s/\s+/ /g;     $datatext =~ s/\s+/ /g;  
  # Need to do some error checking on the @data array -    # Need to do some error checking on the @data array - 
  # make sure it's all numbers and make sure each array    # make sure it's all numbers and make sure each array 
Line 652  sub start_data { Line 659  sub start_data {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .= &Apache::edit::tag_start($target,$token,'Comma or space deliminated curve data');   $result .= &Apache::edit::tag_start($target,$token,'Comma or space deliminated curve data');
  my $text = &Apache::lonxml::get_all_text("/data",$$parser[-1]);   my $text = &Apache::lonxml::get_all_text("/data",$$parser[-1]);
  $result .= '</td></tr><tr><td colspan="3">'.   $result .= &Apache::edit::end_row().
       &Apache::edit::start_spanning_row().
     &Apache::edit::editfield('',$text,'',60,1);      &Apache::edit::editfield('',$text,'',60,1);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $text=$$parser[-1]->get_text("/data");   my $text=$$parser[-1]->get_text("/data");
Line 738  sub get_attributes{ Line 746  sub get_attributes{
     }      }
     return ;      return ;
 }  }
   
 ##------------------------------------------------------- write_gnuplot_file  ##------------------------------------------------------- write_gnuplot_file
 sub write_gnuplot_file {  sub write_gnuplot_file {
       my ($tmpdir,$filename)= @_;
     my $gnuplot_input = '';      my $gnuplot_input = '';
     my $curve;      my $curve;
     # Collect all the colors      # Collect all the colors
Line 790  sub write_gnuplot_file { Line 800  sub write_gnuplot_file {
     }      }
     # curves      # curves
     $gnuplot_input .= 'plot ';      $gnuplot_input .= 'plot ';
     my $datatext = '';  
     for (my $i = 0;$i<=$#curves;$i++) {      for (my $i = 0;$i<=$#curves;$i++) {
  $curve = $curves[$i];   $curve = $curves[$i];
  $gnuplot_input.= ', ' if ($i > 0);   $gnuplot_input.= ', ' if ($i > 0);
Line 800  sub write_gnuplot_file { Line 809  sub write_gnuplot_file {
  $curve->{'name'}.'" with '.   $curve->{'name'}.'" with '.
  $curve->{'linestyle'};   $curve->{'linestyle'};
  } elsif (exists($curve->{'data'})) {   } elsif (exists($curve->{'data'})) {
     $gnuplot_input.= '\'-\' title "'.      # Store data values in $datatext
  $curve->{'name'}.'" with '.      my $datatext = '';
  $curve->{'linestyle'};      #   get new filename
       my $datafilename = "$tmpdir/$filename.$i";
       my $fh=Apache::File->new(">$datafilename");
       # Compile data
     my @Data = @{$curve->{'data'}};      my @Data = @{$curve->{'data'}};
     my @Data0 = @{$Data[0]};      my @Data0 = @{$Data[0]};
     for (my $i =0; $i<=$#Data0; $i++) {      for (my $i =0; $i<=$#Data0; $i++) {
Line 812  sub write_gnuplot_file { Line 824  sub write_gnuplot_file {
  }   }
  $datatext .= $/;   $datatext .= $/;
     }      }
     $datatext .=$/;      #   write file
       print $fh $datatext;
       close ($fh);
       #   generate gnuplot text
       $gnuplot_input.= '"'.$datafilename.'" title "'.
    $curve->{'name'}.'" with '.
    $curve->{'linestyle'};
  }   }
     }      }
     $gnuplot_input .= $/.$datatext;      # Write the output to a file.
     return $gnuplot_input;      my $fh=Apache::File->new(">$tmpdir$filename");
       print $fh $gnuplot_input;
       close($fh);
       # That's all folks.
       return ;
 }  }
   
 #---------------------------------------------- check_inputs  #---------------------------------------------- check_inputs

Removed from v.1.38  
changed lines
  Added in v.1.40


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