version 1.21, 2001/12/28 15:49:38
|
version 1.24, 2001/12/28 21:09:57
|
Line 26
|
Line 26
|
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# 12/15/01 Matthew |
# 12/15/01 Matthew |
# 12/17 12/18 12/19 12/20 12/21 12/27 Matthew |
# 12/17 12/18 12/19 12/20 12/21 12/27 12/28 Matthew |
package Apache::lonplot; |
package Apache::lonplot; |
|
|
use strict; |
use strict; |
Line 263 my %curve_defaults =
|
Line 263 my %curve_defaults =
|
my (%plot,%key,%axis,$title,$xlabel,$ylabel,@labels,@curves); |
my (%plot,%key,%axis,$title,$xlabel,$ylabel,@labels,@curves); |
|
|
sub start_plot { |
sub start_plot { |
%plot = undef; %key = undef; %axis = undef; |
%plot = (); %key = (); %axis = (); |
$title = undef; $xlabel = undef; $ylabel = undef; |
$title = undef; $xlabel = undef; $ylabel = undef; |
$#labels = -1; $#curves = -1; |
$#labels = -1; $#curves = -1; |
# |
# |
Line 285 sub start_plot {
|
Line 285 sub start_plot {
|
$result .= &edit_attributes($target,$token,\%plot_defaults); |
$result .= &edit_attributes($target,$token,\%plot_defaults); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args |
my $constructtag=&Apache::edit::get_new_args |
($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(); |
$result.= &Apache::edit::handle_insert(); |
Line 337 sub start_key {
|
Line 337 sub start_key {
|
$result .= &edit_attributes($target,$token,\%key_defaults); |
$result .= &edit_attributes($target,$token,\%key_defaults); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args |
my $constructtag=&Apache::edit::get_new_args |
($token,$parstack,$safeeval,keys %key_defaults); |
($token,$parstack,$safeeval,keys(%key_defaults)); |
if ($constructtag) { |
if ($constructtag) { |
$result = &Apache::edit::rebuild_tag($token); |
$result = &Apache::edit::rebuild_tag($token); |
$result.= &Apache::edit::handle_insert(); |
$result.= &Apache::edit::handle_insert(); |
Line 363 sub start_title {
|
Line 363 sub start_title {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$title = &Apache::lonxml::get_all_text("/title",$$parser[-1]); |
$title = &Apache::lonxml::get_all_text("/title",$$parser[-1]); |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
|
$result.=&Apache::edit::tag_start($target,$token); |
|
my $text=&Apache::lonxml::get_all_text("/title",$$parser[-1]); |
|
$result.='</td></tr><tr><td colspan="3">'. |
|
&Apache::edit::editfield('',$text,'',20,1). |
|
&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $text=$$parser[-1]->get_text("/function"); |
my $text=$$parser[-1]->get_text("/function"); |
$result.=&Apache::edit::modifiedfield($token); |
$result.=&Apache::edit::modifiedfield($token); |
Line 385 sub start_xlabel {
|
Line 390 sub start_xlabel {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$xlabel = &Apache::lonxml::get_all_text("/xlabel",$$parser[-1]); |
$xlabel = &Apache::lonxml::get_all_text("/xlabel",$$parser[-1]); |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
|
$result.=&Apache::edit::tag_start($target,$token); |
|
my $text=&Apache::lonxml::get_all_text("/xlabel",$$parser[-1]); |
|
$result.='</td></tr><tr><td colspan="3">'. |
|
&Apache::edit::editfield('',$text,'',20,1). |
|
&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $text=$$parser[-1]->get_text("/function"); |
my $text=$$parser[-1]->get_text("/function"); |
$result.=&Apache::edit::modifiedfield($token); |
$result.=&Apache::edit::modifiedfield($token); |
Line 408 sub start_ylabel {
|
Line 418 sub start_ylabel {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$ylabel = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]); |
$ylabel = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]); |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
|
$result .= &Apache::edit::tag_start($target,$token); |
|
my $text = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]); |
|
$result .= '</td></tr><tr><td colspan="3">'. |
|
&Apache::edit::editfield('',$text,'',20,1). |
|
&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $text=$$parser[-1]->get_text("/function"); |
my $text=$$parser[-1]->get_text("/function"); |
$result.=&Apache::edit::modifiedfield($token); |
$result.=&Apache::edit::modifiedfield($token); |
Line 441 sub start_label {
|
Line 456 sub start_label {
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result .= &Apache::edit::tag_start($target,$token); |
$result .= &Apache::edit::tag_start($target,$token); |
$result .= &edit_attributes($target,$token,\%label_defaults); |
$result .= &edit_attributes($target,$token,\%label_defaults); |
|
my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]); |
|
$result .= '</td></tr><tr><td colspan="3">'. |
|
&Apache::edit::editfield('',$text,'',20,1). |
|
&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args |
my $constructtag=&Apache::edit::get_new_args |
($token,$parstack,$safeeval,keys %label_defaults); |
($token,$parstack,$safeeval,keys(%label_defaults)); |
if ($constructtag) { |
if ($constructtag) { |
$result = &Apache::edit::rebuild_tag($token); |
$result = &Apache::edit::rebuild_tag($token); |
$result.= &Apache::edit::handle_insert(); |
$result.= &Apache::edit::handle_insert(); |
} |
} |
my $text=$$parser[-1]->get_text("/function"); |
my $text=$$parser[-1]->get_text("/label"); |
$result.=&Apache::edit::modifiedfield($token); |
$result.=&Apache::edit::modifiedfield($token); |
} |
} |
return $result; |
return $result; |
Line 480 sub start_curve {
|
Line 499 sub start_curve {
|
$result .= &edit_attributes($target,$token,\%curve_defaults); |
$result .= &edit_attributes($target,$token,\%curve_defaults); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args |
my $constructtag=&Apache::edit::get_new_args |
($token,$parstack,$safeeval,keys %label_defaults); |
($token,$parstack,$safeeval,keys(%label_defaults)); |
if ($constructtag) { |
if ($constructtag) { |
$result = &Apache::edit::rebuild_tag($token); |
$result = &Apache::edit::rebuild_tag($token); |
$result.= &Apache::edit::handle_insert(); |
$result.= &Apache::edit::handle_insert(); |
Line 513 sub start_function {
|
Line 532 sub start_function {
|
$curves[-1]->{'function'} = |
$curves[-1]->{'function'} = |
&Apache::lonxml::get_all_text("/function",$$parser[-1]); |
&Apache::lonxml::get_all_text("/function",$$parser[-1]); |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::tag_start($target,$token); |
$result .= &Apache::edit::tag_start($target,$token); |
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 .= '</td></tr><tr><td colspan="3">'. |
&Apache::edit::editfield('',$text,'',20,1). |
&Apache::edit::editfield('',$text,'',20,1). |
&Apache::edit::end_table(); |
&Apache::edit::end_table(); |
|
|
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
# Why do I do this? |
# Why do I do this? |
my $text=$$parser[-1]->get_text("/function"); |
my $text=$$parser[-1]->get_text("/function"); |
Line 575 sub start_data {
|
Line 595 sub start_data {
|
} |
} |
push @{$curves[-1]->{'data'}},\@data; |
push @{$curves[-1]->{'data'}},\@data; |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
|
$result .= &Apache::edit::tag_start($target,$token); |
|
my $text = &Apache::lonxml::get_all_text("/data",$$parser[-1]); |
|
$result .= '</td></tr><tr><td colspan="3">'. |
|
&Apache::edit::editfield('',$text,'',20,1). |
|
&Apache::edit::end_table(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $text=$$parser[-1]->get_text("/data"); |
my $text=$$parser[-1]->get_text("/data"); |
$result.=&Apache::edit::modifiedfield($token); |
$result.=&Apache::edit::modifiedfield($token); |
Line 614 sub end_axis {
|
Line 639 sub end_axis {
|
$result.=&Apache::edit::tag_end($target,$token); |
$result.=&Apache::edit::tag_end($target,$token); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args |
my $constructtag=&Apache::edit::get_new_args |
($token,$parstack,$safeeval,keys %axis_defaults); |
($token,$parstack,$safeeval,keys(%axis_defaults)); |
if ($constructtag) { |
if ($constructtag) { |
$result = &Apache::edit::rebuild_tag($token); |
$result = &Apache::edit::rebuild_tag($token); |
$result.= &Apache::edit::handle_insert(); |
$result.= &Apache::edit::handle_insert(); |
Line 633 sub end_axis {
|
Line 658 sub end_axis {
|
sub set_defaults { |
sub set_defaults { |
my ($var,$defaults) = @_; |
my ($var,$defaults) = @_; |
my $key; |
my $key; |
foreach $key (keys %$defaults) { |
foreach $key (keys(%$defaults)) { |
$var->{$key} = $defaults->{$key}->{'default'}; |
$var->{$key} = $defaults->{$key}->{'default'}; |
} |
} |
} |
} |
Line 641 sub set_defaults {
|
Line 666 sub set_defaults {
|
##------------------------------------------------------------------- misc |
##------------------------------------------------------------------- misc |
sub get_attributes{ |
sub get_attributes{ |
my ($values,$defaults,$parstack,$safeeval,$tag) = @_; |
my ($values,$defaults,$parstack,$safeeval,$tag) = @_; |
foreach my $attr (keys %{$defaults}) { |
foreach my $attr (keys(%{$defaults})) { |
$values->{$attr} = |
$values->{$attr} = |
&Apache::lonxml::get_param($attr,$parstack,$safeeval); |
&Apache::lonxml::get_param($attr,$parstack,$safeeval); |
if ($values->{$attr} eq '' | !defined($values->{$attr})) { |
if ($values->{$attr} eq '' | !defined($values->{$attr})) { |
Line 688 sub write_gnuplot_file {
|
Line 713 sub write_gnuplot_file {
|
$gnuplot_input .= "set title \"$title\"\n" if (defined($title)) ; |
$gnuplot_input .= "set title \"$title\"\n" if (defined($title)) ; |
$gnuplot_input .= "set xlabel \"$xlabel\"\n" if (defined($xlabel)); |
$gnuplot_input .= "set xlabel \"$xlabel\"\n" if (defined($xlabel)); |
$gnuplot_input .= "set ylabel \"$ylabel\"\n" if (defined($ylabel)); |
$gnuplot_input .= "set ylabel \"$ylabel\"\n" if (defined($ylabel)); |
if (defined(%axis)) { |
if (%axis) { |
$gnuplot_input .= "set xrange \[$axis{'xmin'}:$axis{'xmax'}\]\n"; |
$gnuplot_input .= "set xrange \[$axis{'xmin'}:$axis{'xmax'}\]\n"; |
$gnuplot_input .= "set yrange \[$axis{'ymin'}:$axis{'ymax'}\]\n"; |
$gnuplot_input .= "set yrange \[$axis{'ymin'}:$axis{'ymax'}\]\n"; |
} |
} |
# Key |
# Key |
if (defined(%key)) { |
if (%key) { |
$gnuplot_input .= 'set key '.$key{'pos'}.' '; |
$gnuplot_input .= 'set key '.$key{'pos'}.' '; |
if ($key{'title'} ne '') { |
if ($key{'title'} ne '') { |
$gnuplot_input .= 'title "'.$key{'title'}.'" '; |
$gnuplot_input .= 'title "'.$key{'title'}.'" '; |
Line 743 sub write_gnuplot_file {
|
Line 768 sub write_gnuplot_file {
|
sub check_inputs { |
sub check_inputs { |
## Note: no inputs, no outputs - this acts only on global variables. |
## Note: no inputs, no outputs - this acts only on global variables. |
## Make sure we have all the input we need: |
## Make sure we have all the input we need: |
if (! defined(%plot )) { &set_defaults(\%plot,\%plot_defaults); } |
if (! %plot) { &set_defaults(\%plot,\%plot_defaults); } |
if (! defined(%key )) {} # No key for this plot, thats okay |
if (! %key ) {} # No key for this plot, thats okay |
if (! defined(%axis )) { &set_defaults(\%axis,\%axis_defaults); } |
if (! %axis) { &set_defaults(\%axis,\%axis_defaults); } |
if (! defined($title )) {} # No title for this plot, thats okay |
if (! defined($title )) {} # No title for this plot, thats okay |
if (! defined($xlabel)) {} # No xlabel for this plot, thats okay |
if (! defined($xlabel)) {} # No xlabel for this plot, thats okay |
if (! defined($ylabel)) {} # No ylabel for this plot, thats okay |
if (! defined($ylabel)) {} # No ylabel for this plot, thats okay |