--- loncom/xml/lonplot.pm 2001/12/28 19:40:47 1.23 +++ loncom/xml/lonplot.pm 2001/12/31 19:02:00 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.23 2001/12/28 19:40:47 matthew Exp $ +# $Id: lonplot.pm,v 1.28 2001/12/31 19:02:00 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,7 +26,7 @@ # http://www.lon-capa.org/ # # 12/15/01 Matthew -# 12/17 12/18 12/19 12/20 12/21 12/27 12/28 Matthew +# 12/17 12/18 12/19 12/20 12/21 12/27 12/28 12/30 Matthew package Apache::lonplot; use strict; @@ -193,7 +193,7 @@ my %label_defaults = my %axis_defaults = ( - color => { + color => { default => 'x000000', test => $color_test, description => 'color of axes (x000000)', @@ -222,13 +222,6 @@ my %axis_defaults = test => $real_test, description => 'maximum y-value shown in plot', edit_type => 'entry' - }, - linestyle => { - default => 'points', - test => $linestyle_test, - description => 'Style of the axis lines', - edit_type => 'choice', - choices => ['lines','linespoints','dots','points'] } ); @@ -269,26 +262,26 @@ sub start_plot { # my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; + &Apache::lonxml::register('Apache::lonplot', + ('title','xlabel','ylabel','key','axis','label','curve')); + push (@Apache::lonxml::namespace,'plot'); + my $inside = &Apache::lonxml::get_all_text("/plot",$$parser[-1]); if ($target eq 'web') { - &Apache::lonxml::register('Apache::lonplot', - ('title','xlabel','ylabel','key','axis','label','curve')); - push (@Apache::lonxml::namespace,'plot'); - ## Always evaluate the insides of the tags - my $inside = &Apache::lonxml::get_all_text("/plot",$$parser[-1]); $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); - &Apache::lonxml::newparser($parser,\$inside); - ##------------------------------------------------------- + } + &Apache::lonxml::newparser($parser,\$inside); + if ($target eq 'web') { &get_attributes(\%plot,\%plot_defaults,$parstack,$safeeval, $tagstack->[-1]); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Plot'); $result .= &edit_attributes($target,$token,\%plot_defaults); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args - ($token,$parstack,$safeeval,keys %plot_defaults); + ($token,$parstack,$safeeval,keys(%plot_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); - $result.= &Apache::edit::handle_insert(); +# $result.= &Apache::edit::handle_insert(); } } return $result; @@ -296,6 +289,7 @@ sub start_plot { sub end_plot { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + pop @Apache::lonxml::namespace; &Apache::lonxml::deregister('Apache::lonplot', ('title','xlabel','ylabel','key','axis','label','curve')); @@ -333,11 +327,11 @@ sub start_key { &get_attributes(\%key,\%key_defaults,$parstack,$safeeval, $tagstack->[-1]); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Plot Key'); $result .= &edit_attributes($target,$token,\%key_defaults); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args - ($token,$parstack,$safeeval,keys %key_defaults); + ($token,$parstack,$safeeval,keys(%key_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result.= &Apache::edit::handle_insert(); @@ -363,11 +357,10 @@ sub start_title { if ($target eq 'web') { $title = &Apache::lonxml::get_all_text("/title",$$parser[-1]); } elsif ($target eq 'edit') { - $result.=&Apache::edit::tag_start($target,$token); + $result.=&Apache::edit::tag_start($target,$token,'Plot Title'); my $text=&Apache::lonxml::get_all_text("/title",$$parser[-1]); $result.=''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { my $text=$$parser[-1]->get_text("/function"); $result.=&Apache::edit::modifiedfield($token); @@ -391,11 +384,10 @@ sub start_xlabel { if ($target eq 'web') { $xlabel = &Apache::lonxml::get_all_text("/xlabel",$$parser[-1]); } elsif ($target eq 'edit') { - $result.=&Apache::edit::tag_start($target,$token); + $result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel'); my $text=&Apache::lonxml::get_all_text("/xlabel",$$parser[-1]); $result.=''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { my $text=$$parser[-1]->get_text("/function"); $result.=&Apache::edit::modifiedfield($token); @@ -420,11 +412,10 @@ sub start_ylabel { if ($target eq 'web') { $ylabel = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel'); my $text = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]); $result .= ''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { my $text=$$parser[-1]->get_text("/function"); $result.=&Apache::edit::modifiedfield($token); @@ -457,15 +448,14 @@ sub start_label { } push(@labels,\%label); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Plot Label'); $result .= &edit_attributes($target,$token,\%label_defaults); my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]); $result .= ''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args - ($token,$parstack,$safeeval,keys %label_defaults); + ($token,$parstack,$safeeval,keys(%label_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result.= &Apache::edit::handle_insert(); @@ -490,19 +480,19 @@ sub end_label { sub start_curve { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; + &Apache::lonxml::register('Apache::lonplot',('function','data')); + push (@Apache::lonxml::namespace,'curve'); if ($target eq 'web') { my %curve; &get_attributes(\%curve,\%curve_defaults,$parstack,$safeeval, $tagstack->[-1]); push (@curves,\%curve); - &Apache::lonxml::register('Apache::lonplot',('function','data')); - push (@Apache::lonxml::namespace,'curve'); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Curve'); $result .= &edit_attributes($target,$token,\%curve_defaults); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args - ($token,$parstack,$safeeval,keys %label_defaults); + ($token,$parstack,$safeeval,keys(%label_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result.= &Apache::edit::handle_insert(); @@ -514,9 +504,9 @@ sub start_curve { sub end_curve { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ''; + pop @Apache::lonxml::namespace; + &Apache::lonxml::deregister('Apache::lonplot',('function','data')); if ($target eq 'web') { - pop @Apache::lonxml::namespace; - &Apache::lonxml::deregister('Apache::lonplot',('function','data')); } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_end($target,$token); } @@ -535,12 +525,10 @@ sub start_function { $curves[-1]->{'function'} = &Apache::lonxml::get_all_text("/function",$$parser[-1]); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Curve Function'); my $text = &Apache::lonxml::get_all_text("/function",$$parser[-1]); $result .= ''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); - + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { # Why do I do this? my $text=$$parser[-1]->get_text("/function"); @@ -554,6 +542,7 @@ sub end_function { my $result = ''; if ($target eq 'web') { } elsif ($target eq 'edit') { + $result .= &Apache::edit::end_table(); } return $result; } @@ -598,11 +587,10 @@ sub start_data { } push @{$curves[-1]->{'data'}},\@data; } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Curve Data'); my $text = &Apache::lonxml::get_all_text("/data",$$parser[-1]); $result .= ''. - &Apache::edit::editfield('',$text,'',20,1). - &Apache::edit::end_table(); + &Apache::edit::editfield('',$text,'',20,1); } elsif ($target eq 'modified') { my $text=$$parser[-1]->get_text("/data"); $result.=&Apache::edit::modifiedfield($token); @@ -615,6 +603,7 @@ sub end_data { my $result = ''; if ($target eq 'web') { } elsif ($target eq 'edit') { + $result .= &Apache::edit::end_table(); } return $result; } @@ -627,7 +616,7 @@ sub start_axis { &get_attributes(\%axis,\%axis_defaults,$parstack,$safeeval, $tagstack->[-1]); } elsif ($target eq 'edit') { - $result .= &Apache::edit::tag_start($target,$token); + $result .= &Apache::edit::tag_start($target,$token,'Plot Axes'); $result .= &edit_attributes($target,$token,\%axis_defaults); } elsif ($target eq 'modified') { } @@ -642,7 +631,7 @@ sub end_axis { $result.=&Apache::edit::tag_end($target,$token); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args - ($token,$parstack,$safeeval,keys %axis_defaults); + ($token,$parstack,$safeeval,keys(%axis_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result.= &Apache::edit::handle_insert(); @@ -661,7 +650,7 @@ sub end_axis { sub set_defaults { my ($var,$defaults) = @_; my $key; - foreach $key (keys %$defaults) { + foreach $key (keys(%$defaults)) { $var->{$key} = $defaults->{$key}->{'default'}; } } @@ -669,7 +658,7 @@ sub set_defaults { ##------------------------------------------------------------------- misc sub get_attributes{ my ($values,$defaults,$parstack,$safeeval,$tag) = @_; - foreach my $attr (keys %{$defaults}) { + foreach my $attr (keys(%{$defaults})) { $values->{$attr} = &Apache::lonxml::get_param($attr,$parstack,$safeeval); if ($values->{$attr} eq '' | !defined($values->{$attr})) { @@ -795,7 +784,7 @@ sub check_inputs { sub edit_attributes { my ($target,$token,$defaults) = @_; my $result; - foreach my $attr (%$defaults) { + foreach my $attr (sort keys(%$defaults)) { if ($defaults->{$attr}->{'edit_type'} eq 'entry') { $result .= &Apache::edit::text_arg( $defaults->{$attr}->{'description'}, @@ -808,6 +797,7 @@ sub edit_attributes { $defaults->{$attr}->{'choices'}, $token); } + $result .= '
'; } return $result; } @@ -825,7 +815,7 @@ sub insert_plot { # plot attributes $result .= '{'default'}. + $result .= ' '.$attr.'="'.$plot_defaults{$attr}->{'default'}. "\"\n"; } $result .= ">\n"; @@ -848,7 +838,7 @@ sub insert_key { my $result; $result .= ' {'default'}. + $result .= ' '.$attr.'="'.$key_defaults{$attr}->{'default'}. "\"\n"; } $result .= " />\n"; @@ -859,18 +849,22 @@ sub insert_axis{ my $result; $result .= ' {'default'}. + $result .= ' '.$attr.'="'.$axis_defaults{$attr}->{'default'}. "\"\n"; } $result .= " />\n"; return $result; } +sub insert_title { return " \n"; } +sub insert_title { return " \n"; } +sub insert_title { return " \n"; } + sub insert_label { my $result; $result .= '