--- loncom/xml/lonplot.pm 2005/12/01 18:46:17 1.112 +++ loncom/xml/lonplot.pm 2007/02/21 20:34:58 1.115 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.112 2005/12/01 18:46:17 albertel Exp $ +# $Id: lonplot.pm,v 1.115 2007/02/21 20:34:58 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,6 +36,9 @@ use Apache::response; use Apache::lonxml; use Apache::edit; use Apache::lonnet; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; + use vars qw/$weboutputformat $versionstring/; @@ -125,8 +128,8 @@ my $words_test = sub {$_[0]=~s/\s+/ ################################################################### my @gnuplot_edit_order = qw/alttag bgcolor fgcolor height width font transparent grid samples - border align texwidth texfont plotcolor plottype lmargin rmargin tmargin - bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle + border align texwidth texfont plotcolor plottype gridtype lmargin rmargin + tmargin bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle pattern solid/; my $margin_choices = ['default',0..20]; @@ -269,6 +272,13 @@ my %gnuplot_defaults = edit_type => 'choice', choices => ['Cartesian','Polar'] }, + gridtype => { + default => 'Cartesian', + test => sub {$_[0]=~/^(Polar|Cartesian)$/}, + description => 'Grid type:', + edit_type => 'choice', + choices => ['Cartesian','Polar'] + }, lmargin => { default => 'default', test => sub {$_[0]=~/^(default|\d+)$/}, @@ -574,11 +584,11 @@ sub end_gnuplot { '_'.time.'_'.$$.$randnumber.'_plot'; ## Write the plot description to the file &write_gnuplot_file($tmpdir,$filename,$target); - $filename = &Apache::lonnet::escape($filename); + $filename = &escape($filename); ## return image tag for the plot if ($target eq 'web') { $result .= <<"ENDIMAGE"; -<img src = "/cgi-bin/plot.gif?file=$filename.data&output=$weboutputformat" +<img src = "/cgi-bin/plot.$weboutputformat?file=$filename.data" width = "$Apache::lonplot::plot{'width'}" height = "$Apache::lonplot::plot{'height'}" align = "$Apache::lonplot::plot{'align'}" @@ -591,7 +601,7 @@ ENDIMAGE &Apache::lonxml::register_ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps"); $result = "%DYNAMICIMAGE:$Apache::lonplot::plot{'width'}:$Apache::lonplot::plot{'height'}:$Apache::lonplot::plot{'texwidth'}\n"; $result .= '\graphicspath{{/home/httpd/perl/tmp/}}'."\n"; - $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}'; + $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&unescape($filename).'.eps}'; } } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_end($target,$token); @@ -1108,14 +1118,20 @@ sub write_gnuplot_file { } elsif ($target eq 'tex') { $gnuplot_input .= "set term postscript eps $Apache::lonplot::plot{'plotcolor'} solid \"Helvetica\" $pt \n"; $gnuplot_input .= "set output \"/home/httpd/perl/tmp/". - &Apache::lonnet::unescape($filename).".eps\"\n"; + &unescape($filename).".eps\"\n"; } - # cartesian or polar? + # cartesian or polar plot? if (lc($Apache::lonplot::plot{'plottype'}) eq 'polar') { $gnuplot_input .= 'set polar'.$/; } else { # Assume Cartesian } + # cartesian or polar grid? + if (lc($Apache::lonplot::plot{'gridtype'}) eq 'polar') { + $gnuplot_input .= 'set grid polar'.$/; + } else { + # Assume Cartesian + } # solid or pattern for boxes? if (lc($Apache::lonplot::plot{'fillstyle'}) eq 'solid') { $gnuplot_input .= 'set style fill solid '.