From 16808a9f3dce4d7efec165e8cf937755a33b8189 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 19 Jan 2014 11:45:23 +0000 Subject: [PATCH] SVG: fixedrange parameter by Klaus, first jsSVG functions git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@4689 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_SVG.pm | 48 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index d9af60fa1..8b94e6ddf 100755 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -124,6 +124,17 @@ SVG_FwDetail($@) return $ret; } +sub +jsSVG_getAttrs($) +{ + my ($d) = @_; + return join("", map { #00 arrives as 65533 in JS + my $v=$attr{$d}{$_}; + $v =~ s/'/'/g; + "$_=$v"; + } keys %{$attr{$d}}); +} + ################## sub SVG_FwFn($$$$) @@ -133,6 +144,26 @@ SVG_FwFn($$$$) my $ld = $defs{$hash->{LOGDEVICE}}; my $ret = ""; + if(AttrVal($FW_wname, "plotmode", "SVG") eq "jsSVG") { + + my @d=split(":",$defs{$d}{DEF}); + my $gplot; + if(open(FH, "$FW_gplotdir/$d[1].gplot")) { + $gplot = join("",); + $gplot =~ s/'/'/g; + $gplot =~ s/\n//g; + } + close(FH); + + $ret .= "
". + "
"; + return $ret; + } + + # plots navigation buttons if (AttrVal($d,"plotmode",$FW_plotmode) ne "gnuplot") { if((!$pageHash || !$pageHash->{buttons}) && @@ -575,12 +606,13 @@ SVG_calcOffsets($$) return if($pm eq "gnuplot"); my ($fr, $fo); + my $frx; #fixedrange with offset if($defs{$wl}) { $fr = AttrVal($wl, "fixedrange", undef); if($fr) { - if($fr eq "day" || $fr eq "week" || $fr eq "month" || $fr eq "year" || - $fr =~ m/^\d+days$/ ) { - + if($fr =~ "^day" || $fr =~ "^week" || $fr =~ "^month" || $fr =~ "^year" || + $fr =~ m/^\d+days$/ ) { #fixedrange with offset + $frx=$fr; #fixedrange with offset } else { my @range = split(" ", $fr); my @t = localtime; @@ -609,7 +641,9 @@ SVG_calcOffsets($$) my $zoom = $FW_pos{zoom}; $zoom = "day" if(!$zoom); $zoom = $fr if(defined($fr)); - + $zoom = $frx if ($frx); #fixedrange with offset + 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); if($zoom eq "hour") { @@ -976,8 +1010,6 @@ SVG_render($$$$$$$$$) } ###################### - # Draw the background - SVG_pO ""; # Rectangle SVG_pO ""; @@ -1639,7 +1671,7 @@ plotAsPng(@) Attributes
    -
  • fixedrange
    +
  • fixedrange [offset]
    Contains two time specs in the form YYYY-MM-DD separated by a space. In plotmode gnuplot-scroll or SVG the given time-range will be used, and no scrolling for this SVG will be possible. Needed e.g. for @@ -1649,6 +1681,8 @@ plotAsPng(@) zoom-level. This is useful for pages with multiple plots: one of the plots is best viewed in with the default (day) zoom, the other one with a week zoom. + If given, the optional integer parameter offset refers to a different period + (e.g. last year: fixedrange year -1, 2 days ago: fixedrange day -2).