--- loncom/xml/lonplot.pm 2002/03/22 15:43:42 1.60 +++ loncom/xml/lonplot.pm 2002/04/09 18:01:09 1.64 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.60 2002/03/22 15:43:42 matthew Exp $ +# $Id: lonplot.pm,v 1.64 2002/04/09 18:01:09 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -97,6 +97,8 @@ my %linestyles = my $int_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^\d+$/}; my $real_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*([eE][+-]\d+)?$/}; +my $pos_real_test = + sub {$_[0]=~s/\s+//g;$_[0]=~/^[+]?\d*\.?\d*([eE][+-]\d+)?$/}; my $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-f]{6}$/}; my $onoff_test = sub {$_[0]=~/^(on|off)$/}; my $key_pos_test = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/}; @@ -110,7 +112,7 @@ my $words_test = sub {$_[0]=~s/\s+/ ## ## ################################################################### my @gnuplot_edit_order = - qw/bgcolor fgcolor height width font transparent grid border align/; + qw/alttag bgcolor fgcolor height width font transparent grid border align/; my $gnuplot_help_text = <<"ENDPLOTHELP";
@@ -146,6 +148,13 @@ ENDPLOTHELP
my %gnuplot_defaults =
(
+ alttag => {
+ default => 'dynamically generated plot',
+ test => $words_test,
+ description => 'brief description of the plot',
+ edit_type => 'entry',
+ size => '40'
+ },
height => {
default => 200,
test => $int_test,
@@ -367,7 +376,7 @@ is an error in your function tag.
ENDCURVEHELP
-my @curve_edit_order = ('color','name','linestyle','pointsize');
+my @curve_edit_order = ('color','name','linestyle','pointtype','pointsize');
my %curve_defaults =
(
@@ -402,10 +411,17 @@ my %curve_defaults =
# },
pointsize => {
default => 1,
- test => $int_test,
+ test => $pos_real_test,
description => 'point size (may not apply to all line styles)',
+ edit_type => 'entry',
+ size => '5'
+ },
+ pointtype => {
+ default => 1,
+ test => $int_test,
+ description => 'point type (may not apply to all line styles)',
edit_type => 'choice',
- choices => [0,1,2,3,4,5,6,7,8,9,10]
+ choices => [0,1,2,3,4,5,6]
}
);
@@ -475,10 +491,10 @@ sub end_gnuplot {
if ($target eq 'web') {
$result .= <<"ENDIMAGE";
+ alt = "$plot{'alttag'}" />
ENDIMAGE
} elsif ($target eq 'tex') {
&Apache::lonnet::ssi('cgi-bin/plot.gif?file=$filename'.
@@ -601,7 +617,7 @@ sub start_title {
my $text=&Apache::lonxml::get_all_text("/title",$$parser[-1]);
$result.=&Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
my $text=$$parser[-1]->get_text("/title");
$result.=&Apache::edit::rebuild_tag($token);
@@ -635,7 +651,7 @@ sub start_xlabel {
my $text=&Apache::lonxml::get_all_text("/xlabel",$$parser[-1]);
$result.=&Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
my $text=$$parser[-1]->get_text("/xlabel");
$result.=&Apache::edit::rebuild_tag($token);
@@ -670,7 +686,7 @@ sub start_ylabel {
my $text = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]);
$result .= &Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
my $text=$$parser[-1]->get_text("/ylabel");
$result.=&Apache::edit::rebuild_tag($token);
@@ -709,7 +725,7 @@ sub start_label {
my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]);
$result .= &Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
&Apache::edit::get_new_args
($token,$parstack,$safeeval,keys(%label_defaults));
@@ -786,7 +802,7 @@ sub start_function {
my $text = &Apache::lonxml::get_all_text("/function",$$parser[-1]);
$result .= &Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
$result.=&Apache::edit::rebuild_tag($token);
my $text=$$parser[-1]->get_text("/function");
@@ -862,7 +878,7 @@ sub start_data {
my $text = &Apache::lonxml::get_all_text("/data",$$parser[-1]);
$result .= &Apache::edit::end_row().
&Apache::edit::start_spanning_row().
- &Apache::edit::textfield('',$text,'',60);
+ &Apache::edit::editline('',$text,'',60);
} elsif ($target eq 'modified') {
$result.=&Apache::edit::rebuild_tag($token);
my $text=$$parser[-1]->get_text("/data");
@@ -1042,6 +1058,7 @@ sub write_gnuplot_file {
($curve->{'linestyle'} eq 'xerrorbars') ||
($curve->{'linestyle'} eq 'yerrorbars') ||
($curve->{'linestyle'} eq 'xyerrorbars')) {
+ $gnuplot_input.=' pointtype '.$curve->{'pointtype'};
$gnuplot_input.=' pointsize '.$curve->{'pointsize'};
}
} elsif (exists($curve->{'data'})) {
@@ -1067,6 +1084,15 @@ sub write_gnuplot_file {
$gnuplot_input.= '"'.$datafilename.'" title "'.
$curve->{'name'}.'" with '.
$curve->{'linestyle'};
+ if (($curve->{'linestyle'} eq 'points') ||
+ ($curve->{'linestyle'} eq 'linespoints') ||
+ ($curve->{'linestyle'} eq 'errorbars') ||
+ ($curve->{'linestyle'} eq 'xerrorbars') ||
+ ($curve->{'linestyle'} eq 'yerrorbars') ||
+ ($curve->{'linestyle'} eq 'xyerrorbars')) {
+ $gnuplot_input.=' pointtype '.$curve->{'pointtype'};
+ $gnuplot_input.=' pointsize '.$curve->{'pointsize'};
+ }
}
}
# Write the output to a file.
@@ -1140,11 +1166,11 @@ sub edit_attributes {
sub insert_gnuplot {
my $result = '';
# plot attributes
- $result .= "