From 28c9cdff60ebc60fd28540f03625d3a1d4760d2a Mon Sep 17 00:00:00 2001
From: rudolfkoenig <>
Date: Thu, 26 Mar 2015 16:15:51 +0000
Subject: [PATCH] 98_SVG.pm: add endPotNow/endPlotToday as SVG attribute, some
endPlotNow fixes (Forum #35352)
git-svn-id: https://svn.fhem.de/fhem/trunk@8292 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/98_SVG.pm | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm
index ea8842c59..a0e762a99 100755
--- a/fhem/FHEM/98_SVG.pm
+++ b/fhem/FHEM/98_SVG.pm
@@ -57,6 +57,7 @@ SVG_Initialize($)
$hash->{DefFn} = "SVG_Define";
$hash->{AttrList} = "fixedoffset fixedrange startDate plotsize nrAxis ".
+ "endPlotNow endPlotToday ".
"label title plotfunction captionLeft:1,0";
$hash->{SetFn} = "SVG_Set";
$hash->{FW_summaryFn} = "SVG_FwFn";
@@ -114,6 +115,15 @@ SVG_Set($@)
return $err;
}
+sub
+SVG_Attr($$$$)
+{
+ my ($parent, $dev, $attr, $default) = @_;
+ my $val = AttrVal($dev, $attr, undef);
+ return $val if(defined($val));
+ return AttrVal($parent, $attr, $default);
+}
+
##################
sub
SVG_FwDetail($@)
@@ -170,7 +180,8 @@ SVG_FwFn($$$$)
}
# plots navigation buttons
- if (AttrVal($d,"plotmode",$FW_plotmode) ne "gnuplot") {
+ my $pm = AttrVal($d,"plotmode",$FW_plotmode);
+ if($pm ne "gnuplot") {
if((!$pageHash || !$pageHash->{buttons}) &&
AttrVal($d, "fixedrange", "x") !~ m/^[ 0-9:-]*$/) {
@@ -184,7 +195,7 @@ SVG_FwFn($$$$)
}
- if(AttrVal($FW_wname, "plotmode", "SVG") eq "jsSVG") {
+ if($pm eq "jsSVG") {
my @d=split(":",$defs{$d}{DEF});
my ($err, @svgplotfile) = FileRead("$FW_gplotdir/$d[1].gplot");
($err, @svgplotfile) = FileRead("$FW_gplotdir/template.gplot") if($err);
@@ -218,7 +229,7 @@ SVG_FwFn($$$$)
"&logfile=$hash->{LOGFILE}".
"&pos=" . join(";", map {"$_=$FW_pos{$_}"} keys %FW_pos);
- if(AttrVal($d,"plotmode",$FW_plotmode) eq "SVG") {
+ if($pm eq "SVG") {
$ret .= "
";
if(SVG_isEmbed($FW_wname)) {
@@ -849,7 +860,7 @@ SVG_calcOffsets($$)
my @zrange = split(" ", $zoom); #fixedrange with offset
if(defined($zrange[1])) { $off += $zrange[1]; $zoom=$zrange[0]; } #fixedrange with offset
- my $endPlotNow = (AttrVal($FW_wname, "endPlotNow", undef) && !$st);
+ my $endPlotNow = (SVG_Attr($FW_wname, $d, "endPlotNow", undef) && !$st);
if($zoom eq "hour") {
if($endPlotNow) {
my $t = int(($now + $off*3600 - 3600)/300.0)*300 + 300;
@@ -900,7 +911,7 @@ SVG_calcOffsets($$)
} elsif($zoom eq "week") {
my @l = localtime($now);
- my $start = (AttrVal($FW_wname, "endPlotToday", undef) ? 6 : $l[6]);
+ my $start = (SVG_Attr($FW_wname, $d, "endPlotToday", undef) ? 6 : $l[6]);
my $t = $now - ($start*86400) + ($off*86400)*7;
@l = localtime($t);
$SVG_devs{$d}{from} = SVG_tspec(3,0,@l);
@@ -909,7 +920,7 @@ SVG_calcOffsets($$)
} elsif($zoom eq "month") {
my ($endDay, @l);
- if(AttrVal($FW_wname, "endPlotToday", undef)) {
+ if(SVG_Attr($FW_wname, $d, "endPlotToday", undef)) {
@l = localtime($now+86400);
$endDay = $l[3];
$off--;
@@ -1249,9 +1260,8 @@ SVG_render($$$$$$$$$$)
$SVG_RET="";
my $SVG_ss = AttrVal($parent_name, "smallscreen", 0);
- my $nr_axis = AttrVal($parent_name,"nrAxis","1,1");
my ($nr_left_axis,$nr_right_axis,$use_left_axis,$use_right_axis) =
- split(",", AttrVal($name,"nrAxis",$nr_axis));
+ split(",", SVG_Attr($parent_name, $name,"nrAxis","1,1"));
$use_left_axis = $nr_left_axis if( !defined($use_left_axis) );
$use_right_axis = $nr_right_axis if( !defined($use_right_axis) );
@@ -1520,7 +1530,7 @@ SVG_render($$$$$$$$$$)
if(!$conf{xrange});
$initoffset = $step;
- if(AttrVal($FW_wname, "endPlotNow", undef) && $ddur>1.1 && $ddur<7.1) {
+ if(SVG_Attr($parent_name,$name,"endPlotNow",undef) && $ddur>1.1 && $ddur<6.9){
my $now = time();
$initoffset -= ($now+fhemTzOffset($now))%86400; # Forum #25768
}
@@ -2503,6 +2513,8 @@ plotAsPng(@)
plotsize
plotmode
+
endPlotNow
+
endPlotToday
label