--- loncom/xml/lonplot.pm 2003/05/16 15:12:49 1.84
+++ loncom/xml/lonplot.pm 2003/08/28 20:38:25 1.87
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Dynamic plot
#
-# $Id: lonplot.pm,v 1.84 2003/05/16 15:12:49 sakharuk Exp $
+# $Id: lonplot.pm,v 1.87 2003/08/28 20:38:25 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -113,7 +113,7 @@ my $words_test = sub {$_[0]=~s/\s+/
###################################################################
my @gnuplot_edit_order =
qw/alttag bgcolor fgcolor height width font transparent grid samples
- border align texwidth/;
+ border align texwidth plottype/;
my $gnuplot_help_text = <<"ENDPLOTHELP";
@@ -230,6 +230,13 @@ my %gnuplot_defaults =
edit_type => 'entry',
size => '5'
},
+ plottype => {
+ default => 'Cartesian',
+ test => sub {$_[0]=~/^(Polar|Cartesian)$/},
+ description => 'Plot type:',
+ edit_type => 'choice',
+ choices => ['Polar','Cartesian']
+ },
);
my %key_defaults =
@@ -807,7 +814,11 @@ sub start_function {
my $result='';
if ($target eq 'web' || $target eq 'tex') {
if (exists($curves[-1]->{'data'})) {
- &Apache::lonxml::warning('Use of precludes use of . The will be omitted in favor of the declaration.');
+ &Apache::lonxml::warning
+ ('Use of the curve function tag precludes use of '.
+ ' the curve data tag. '.
+ 'The curve data tag will be omitted in favor of the '.
+ 'curve function declaration.');
delete $curves[-1]->{'data'} ;
}
my $function = &Apache::lonxml::get_all_text("/function",$parser);
@@ -843,9 +854,11 @@ sub start_data {
my $result='';
if ($target eq 'web' || $target eq 'tex') {
if (exists($curves[-1]->{'function'})) {
- &Apache::lonxml::warning('Use of precludes use of .'.
- '. The will be omitted in favor of '.
- 'the declaration.');
+ &Apache::lonxml::warning
+ ('Use of the curve function tag precludes use of '.
+ ' the curve data tag. '.
+ 'The curve function tag will be omitted in favor of the '.
+ 'curve data declaration.');
delete($curves[-1]->{'function'});
}
my $datatext = &Apache::lonxml::get_all_text("/data",$parser);
@@ -869,14 +882,14 @@ sub start_data {
# Check that it's non-empty
if (! defined($data[$i])) {
&Apache::lonxml::warning(
- 'undefined value. Replacing with '.
+ 'undefined curve data value. Replacing with '.
' pi/e = 1.15572734979092');
$data[$i] = 1.15572734979092;
}
# Check that it's a number
if (! &$real_test($data[$i]) & ! &$int_test($data[$i])) {
&Apache::lonxml::warning(
- 'Bad value of '.$data[$i].' Replacing with '.
+ 'Bad curve data value of '.$data[$i].' Replacing with '.
' pi/e = 1.15572734979092');
$data[$i] = 1.15572734979092;
}
@@ -964,8 +977,13 @@ sub set_defaults {
sub get_attributes{
my ($values,$defaults,$parstack,$safeeval,$tag) = @_;
foreach my $attr (keys(%{$defaults})) {
- $values->{$attr} =
- &Apache::lonxml::get_param($attr,$parstack,$safeeval);
+ if ($attr eq 'texwidth') {
+ $values->{$attr} =
+ &Apache::lonxml::get_param($attr,$parstack,$safeeval,undef,1);
+ } else {
+ $values->{$attr} =
+ &Apache::lonxml::get_param($attr,$parstack,$safeeval);
+ }
if ($values->{$attr} eq '' | !defined($values->{$attr})) {
$values->{$attr} = $defaults->{$attr}->{'default'};
next;
@@ -1010,6 +1028,12 @@ sub write_gnuplot_file {
$gnuplot_input .= "set output \"/home/httpd/perl/tmp/".
&Apache::lonnet::unescape($filename).".eps\"\n";
}
+ # cartesian or polar?
+ if (lc($plot{'plottype'}) eq 'polar') {
+ $gnuplot_input .= 'set polar'.$/;
+ } else {
+ # Assume Cartesian
+ }
# grid
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on');
# border
@@ -1144,7 +1168,7 @@ sub check_inputs {
my $curve;
foreach $curve (@curves) {
if (!defined($curve->{'function'})&&!defined($curve->{'data'})){
- &Apache::lonxml::warning("One of the curves specified did not contain any or declarations\n");
+ &Apache::lonxml::warning("One of the curves specified did not contain any curve data or curve function declarations\n");
return '';
}
}