--- loncom/xml/lonplot.pm 2014/06/19 17:23:50 1.175 +++ loncom/xml/lonplot.pm 2018/10/24 13:37:43 1.181 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.175 2014/06/19 17:23:50 raeburn Exp $ +# $Id: lonplot.pm,v 1.181 2018/10/24 13:37:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,7 +42,7 @@ use Apache::lonnet; use LONCAPA; -use vars qw/$weboutputformat $version/; +use vars qw/$weboutputformat $version $colorprefix/; @@ -56,7 +56,10 @@ BEGIN { if ($version >= 4) { $weboutputformat = 'png'; } - + $colorprefix = 'x'; + if ($version > 4.6) { + $colorprefix = '#'; + } } @@ -186,17 +189,17 @@ my %gnuplot_defaults = size => '10' }, bgcolor => { - default => 'xffffff', - test => $color_test, - description => 'Background color of image (xffffff)', + default => $colorprefix.'ffffff', + test => $color_test, + description => 'Background color of image ('.$colorprefix.'ffffff)', edit_type => 'entry', size => '10', class => 'colorchooser' }, fgcolor => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Foreground color of image (x000000)', + description => 'Foreground color of image ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -258,7 +261,7 @@ my %gnuplot_defaults = test => sub {$_[0]=~/^(left|right|middle|center)$/}, description => 'Alignment for image in HTML', edit_type => 'choice', - choices => ['left','right','middle'] + choices => ['left','right','middle','center'] }, texwidth => { default => '93', @@ -367,6 +370,7 @@ my %gnuplot_defaults = }, ); + my %key_defaults = ( title => { @@ -488,9 +492,9 @@ my @axis_edit_order = ('color','xmin','x my %axis_defaults = ( color => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Color of grid lines (x000000)', + description => 'Color of grid lines ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -525,14 +529,14 @@ my %axis_defaults = }, xformat => { default => 'on', - test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*\Q\0317\0200\E)))$/}, description => 'X-axis number formatting', edit_type => 'choice', choices => ['on', 'off', '2e', '2f'], }, yformat => { default => 'on', - test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*\Q\0317\0200\E)))$/}, description => 'Y-axis number formatting', edit_type => 'choice', choices => ['on', 'off', '2e', '2f'], @@ -564,9 +568,9 @@ my @curve_edit_order = ('color','name',' my %curve_defaults = ( color => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Color of curve (x000000)', + description => 'Color of curve ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -697,13 +701,13 @@ sub start_gnuplot { if ($constructtag) { # - # The color chooser does not prepent x to the color values + # Color chooser does not prepend x (or #) to the color values # Do that here: # foreach my $attribute ('bgcolor', 'fgcolor') { my $value = $token->[2]{$attribute}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{$attribute} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{$attribute} = $colorprefix . $value; } } $result = &Apache::edit::rebuild_tag($token); @@ -739,13 +743,19 @@ sub end_gnuplot { $filename = &escape($filename); ## return image tag for the plot if ($target eq 'web') { - $result .= <<"ENDIMAGE"; -$Apache::lonplot::plot{'alttag'} -ENDIMAGE + my $srcatt = "src=\"/cgi-bin/plot.$weboutputformat?file=$filename.data\""; + my $widthatt = "width=\"$Apache::lonplot::plot{'width'}\""; + my $heightatt = "height=\"$Apache::lonplot::plot{'height'}\""; + my $alignatt = "align=\"$Apache::lonplot::plot{'align'}\""; + my $altatt = "alt=\"$Apache::lonplot::plot{'alttag'}\""; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '
'. + "". + "
\n"; + + } else { + $result .= ""; + } } elsif ($target eq 'tex') { &Apache::lonxml::debug(" gnuplot wid = $Apache::lonplot::plot{'width'}"); &Apache::lonxml::debug(" gnuplot ht = $Apache::lonplot::plot{'height'}"); @@ -753,7 +763,13 @@ ENDIMAGE &Apache::lonxml::register_ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps"); $result = "%DYNAMICIMAGE:$Apache::lonplot::plot{'width'}:$Apache::lonplot::plot{'height'}:$Apache::lonplot::plot{'texwidth'}\n"; $result .= '\graphicspath{{'.$tmpdir.'}}'."\n"; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '\begin{center}'; + } $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&unescape($filename).'.eps}'; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '\end{center}'; + } } } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_end($target,$token); @@ -1485,11 +1501,12 @@ sub start_curve { ($token,$parstack,$safeeval,keys(%curve_defaults)); if ($constructtag) { # - # Fix up the color attribute as jcolor does not prepend an x + # Fix up the color attribute as jcolor does not prepend an x + # (or #) # my $value = $token->[2]{'color'}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{'color'} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{'color'} = $colorprefix . $value; } $result = &Apache::edit::rebuild_tag($token); } @@ -1643,11 +1660,11 @@ sub start_axis { if ($constructtag) { # # Fix up the color attribute since jchooser does not - # prepend an x to the color: + # prepend an x (or #) to the color: # my $value = $token->[2]{'color'}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{'color'} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{'color'} = $colorprefix . $value; } $result = &Apache::edit::rebuild_tag($token);