From 07ba74d5106242e9f0f712b1f94f2660fb681635 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 14 Mar 2015 19:41:21 +0000 Subject: [PATCH] 98_SVG.pm: fix bars (Forum #35028) git-svn-id: https://svn.fhem.de/fhem/trunk@8214 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_SVG.pm | 59 +++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index 4d7bf8ab1..72249863e 100755 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -129,15 +129,16 @@ SVG_FwDetail($@) return $ret; } + sub -jsSVG_getAttrs($) +jsSVG_getAttrs($;$) { - my ($d) = @_; + my ($d , $flt) = @_; return join("", map { #00 arrives as 65533 in JS my $v=$attr{$d}{$_}; $v =~ s/'/'/g; "$_=$v"; - } keys %{$attr{$d}}); + } grep { $flt ? $flt->{$_} : 1 } keys %{$attr{$d}}); } sub @@ -168,26 +169,6 @@ SVG_FwFn($$$$) $pageHash->{jsLoaded} = 1 if($pageHash); } - 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}) && @@ -202,6 +183,32 @@ SVG_FwFn($$$$) } } + + if(AttrVal($FW_wname, "plotmode", "SVG") 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); + my $gplot = join("", @svgplotfile); + $gplot =~ s/'/'/g; + my %webattrflt = ( endPlotNow=>1, endPlotToday=>1, plotmode=>1, + plotsize=>1, nrAxis=>1, stylesheetPrefix=>1 ); + if(!$pageHash || !$pageHash->{jssvgLoaded}) { + $ret .= + ""; + $pageHash->{jssvgLoaded} = 1 if($pageHash); + } + + SVG_calcOffsets($d[0], $d); + $ret .= "
". + "
"; + return $ret; + } + my $arg="$FW_ME/SVG_showLog?dev=$d". "&logdev=$hash->{LOGDEVICE}". "&gplotfile=$hash->{GPLOTFILE}". @@ -1800,13 +1807,13 @@ SVG_render($$$$$$$$$$) $ret .= sprintf(" %d,%d %d,%d %d,%d %d,%d", $x,$y+$h, $x,$y1, $x+$w,$y1, $x+$w,$y+$h); } else { - $barwidth = $barwidth*$tmul; + my $bw = $barwidth*$tmul; # bars are all of equal width (see far above !), # position rounded to integer multiples of bar width foreach my $i (0..int(@{$dxp})-1) { - my ($x1, $y1) = ( $x +4 + $dxp->[$i] - $barwidth, + my ($x1, $y1) = ( $x +4 + $dxp->[$i] - $bw, $y +$h-($dyp->[$i]-$min)*$hmul); - my ($x2, $y2) = ($barwidth, ($dyp->[$i]-$min)*$hmul); + my ($x2, $y2) = ($bw, ($dyp->[$i]-$min)*$hmul); SVG_pO ""; }