--- loncom/xml/lonplot.pm 2012/09/10 09:51:15 1.166
+++ loncom/xml/lonplot.pm 2019/05/08 12:24:27 1.182
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Dynamic plot
#
-# $Id: lonplot.pm,v 1.166 2012/09/10 09:51:15 foxr Exp $
+# $Id: lonplot.pm,v 1.182 2019/05/08 12:24:27 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 = '#';
+ }
}
@@ -78,7 +81,7 @@ BEGIN {
## align
##
## @labels: $labels[$i] = \%label
-## %label: text, xpos, ypos, justify
+## %label: text, xpos, ypos, justify, rotate, zlayer
##
## @curves: $curves[$i] = \%curve
## %curve: name, linestyle, ( function | data )
@@ -105,7 +108,7 @@ my %linetypes = # For png use these li
);
my %ps_linetypes = # For ps the line types are different!
(
- solid => 0,
+ solid => 1,
dashed => 7
);
@@ -132,7 +135,12 @@ 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-fA-F]{6}$/};
+my $color_test;
+if ($version < 4.6) {
+ $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^\#/x/;$_[0]=~/^x[\da-fA-F]{6}$/};
+} else {
+ $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^x/#/;$_[0]=~/^\#[\da-fA-F]{6}$/};
+}
my $onoff_test = sub {$_[0]=~/^(on|off)$/};
my $key_pos_test = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/};
my $sml_test = sub {$_[0]=~/^(\d+|small|medium|large)$/};
@@ -181,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'
@@ -253,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',
@@ -362,6 +370,7 @@ my %gnuplot_defaults =
},
);
+
my %key_defaults =
(
title => {
@@ -416,7 +425,14 @@ my %label_defaults =
description => 'Rotation of label (degrees)',
edit_type => 'entry',
size => '10',
- }
+ },
+ zlayer => {
+ default => '',
+ test => sub {$_[0]=~/^(front|back)$/},
+ description => 'Z position of label',
+ edit_type => 'choice',
+ choices => ['front','back'],
+ },
);
my @tic_edit_order = ('location','mirror','start','increment','end',
@@ -476,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'
@@ -513,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'],
@@ -552,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'
@@ -685,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);
@@ -727,13 +743,19 @@ sub end_gnuplot {
$filename = &escape($filename);
## return image tag for the plot
if ($target eq 'web') {
- $result .= <<"ENDIMAGE";
-
-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 .= '