diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index 659137d5e..ea8842c59 100755 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -207,6 +207,8 @@ SVG_FwFn($$$$) "data-to='" .$SVG_devs{$d[0]}{to} ."' ". "data-gplotFile='$gplot' source='$d[0]'>". ""; + $ret .= (SVG_PEdit($FW_wname,$d,$room,$pageHash) . "
") + if(!$pageHash); return $ret; } @@ -420,7 +422,7 @@ SVG_PEdit($$$$) $o .= SVG_sel("axes_${idx}", "left,right", ($v && $v eq "x1y1") ? "left" : "right"); $o .= SVG_sel("type_${idx}", - "lines,points,steps,fsteps,histeps,bars,". + "lines,points,steps,fsteps,histeps,bars,ibars,". "cubic,quadratic,quadraticSmooth", $conf{lType}[$idx]); my $ls = $conf{lStyle}[$idx]; @@ -1821,7 +1823,27 @@ SVG_render($$$$$$$$$$) "width=\"$x2\" height=\"$y2\"/>"; } } + } elsif( $lType eq "ibars" ) { # Forum #35268 + if(@{$dxp} == 1) { + my $y1 = $y+$h-($dyp->[0]-$min)*$hmul; + $ret .= sprintf(" %d,%d %d,%d %d,%d %d,%d", + $x,$y+$h, $x,$y1, $x+$w,$y1, $x+$w,$y+$h); + } else { + # interconnected bars (ibars): + # these bars will connect all datapoints. so the width of the bars + # might vary depending on the distance between data points + foreach my $i (1..int(@{$dxp})-1) { + my $x1 = $x + $dxp->[$i-1]; + my $y1 = $y +$h-($dyp->[$i]-$min)*$hmul; + my $x2 = $x + $dxp->[$i]; # used to calculate bar width later + + my $height = ($dyp->[$i]-$min)*$hmul; + my $bw = $x2 - $x1; + SVG_pO ""; + } + } } else { # lines and everything else my ($ymin, $ymax) = (99999999, -99999999); my %lt =(cubic=>"C",quadratic=>"Q",quadraticSmooth=>"T");