--- loncom/xml/lonplot.pm 2002/01/08 21:41:20 1.34 +++ loncom/xml/lonplot.pm 2002/01/09 16:51:51 1.35 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.34 2002/01/08 21:41:20 matthew Exp $ +# $Id: lonplot.pm,v 1.35 2002/01/09 16:51:51 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,7 +28,14 @@ # 12/15/01 Matthew # 12/17 12/18 12/19 12/20 12/21 12/27 12/28 12/30 12/31 Matthew # 01/01/02 Matthew -# 01/02 01/03 01/04 Matthew +# 01/02 01/03 01/04 01/07 01/08 01/09 Matthew + +# Current issues +# 1. Gnuplot is unable to vary the color or linestyle of plots. +# The key does not know this so it is misleading for the user. +# Multiple s can be plotted with varying line styles and +# colors. +# package Apache::lonplot; use strict; @@ -87,13 +94,13 @@ my %linestyles = errorbars => 3, xerrorbars => [3,4], yerrorbars => [3,4], - xyerrorbars => [4,6,7], + xyerrorbars => [4,6], boxes => 3, - boxerrorbars => [3,4,5], - boxxyerrorbars => [4,6,7], - financebars => 5, - candlesticks => 5, - vector => 2 +# boxerrorbars => [3,4,5], +# boxxyerrorbars => [4,6,7], +# financebars => 5, +# candlesticks => 5, + vector => 4 ); my $int_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^\d+$/}; @@ -271,7 +278,7 @@ my %curve_defaults = linestyle => { default => 'lines', test => $linestyle_test, - description => 'Style of the axis lines', + description => 'Line style', edit_type => 'choice', choices => ['lines','linespoints','dots','points','steps', 'fsteps','histeps','errorbars','xerrorbars', @@ -531,7 +538,7 @@ sub start_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(%curve_defaults)); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); $result.= &Apache::edit::handle_insert(); @@ -603,7 +610,7 @@ sub start_data { # make sure it's all numbers and make sure each array # is of the same length. my @data; - if ($datatext =~ /,/) { + if ($datatext =~ /,/) { # comma deliminated @data = split /,/,$datatext; } else { # Assume it's space seperated. @data = split / /,$datatext; @@ -624,6 +631,13 @@ sub start_data { $data[$i] = 1.15572734979092; } } + # complain if the number of data points is not the same as + # in previous sets of data. + if (($curves[-1]->{'data'}) && ($#data != $#{$curves[-1]->{'data'}})){ + &Apache::lonxml::warning + ('Number of data points is not consistent with previous '. + 'number of data points'); + } push @{$curves[-1]->{'data'}},\@data; } elsif ($target eq 'edit') { $result .= &Apache::edit::tag_start($target,$token,'Curve Data'); @@ -829,23 +843,18 @@ sub edit_attributes { @keys = sort(keys(%$defaults)); } foreach my $attr (@keys) { + # append a ' ' to the description if it doesn't have one already. + my $description = $defaults->{$attr}->{'description'}; + $description .= ' ' if ($description !~ / $/); if ($defaults->{$attr}->{'edit_type'} eq 'entry') { - $result .= &Apache::edit::text_arg( - $defaults->{$attr}->{'description'}, - $attr, - $token); + $result .= &Apache::edit::text_arg + ($description,$attr,$token); } elsif ($defaults->{$attr}->{'edit_type'} eq 'choice') { - $result .= &Apache::edit::select_arg( - $defaults->{$attr}->{'description'}, - $attr, - $defaults->{$attr}->{'choices'}, - $token); + $result .= &Apache::edit::select_arg + ($description,$attr,$defaults->{$attr}->{'choices'},$token); } elsif ($defaults->{$attr}->{'edit_type'} eq 'on_off') { - $result .= &Apache::edit::select_arg( - $defaults->{$attr}->{'description'}, - $attr, - ['on','off'], - $token); + $result .= &Apache::edit::select_arg + ($description,$attr,['on','off'],$token); } $result .= '
'; }