diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index b275f1313..6770fd999 100644 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -942,8 +942,9 @@ SVG_calcOffsets($$) $fr = AttrVal($wl, "fixedrange", undef); if($fr) { if($fr =~ "^(hour|qday|day|week|month|year)" || - $fr =~ m/^\d+days$/ || #fixedrange with offset - $fr =~ m/^\d+years$/ ) { #fixedrange with offset + $fr =~ m/^\d+hour/ || #fixedrange with offset + $fr =~ m/^\d+day/ || + $fr =~ m/^\d+year/ ) { $frx=$fr; #fixedrange with offset } else { @@ -979,18 +980,19 @@ SVG_calcOffsets($$) if(defined($zrange[1])) { $off += $zrange[1]; $zoom=$zrange[0]; } #fixedrange with offset my $endPlotNow = (SVG_Attr($FW_wname, $wl, "endPlotNow", undef) && !$st); - if($zoom eq "hour") { + if($zoom =~ m/^(\d+)?hour/) { + my $nHours = $1 ? ($1-1) : 0; if($endPlotNow) { - my $t = int(($now + $off*3600 - 3600)/300.0)*300 + 300; + my $t = int(($now + ($off-$nHours-1)*3600)/300.0)*300 + 300; my @l = localtime($t); $SVG_devs{$d}{from} = SVG_tspec(@l); - @l = localtime($t+3599); + @l = localtime($t+$nHours*3600+3599); $SVG_devs{$d}{to} = SVG_tspec(@l); } else { - my $t = int($now/3600)*3600 + $off*3600; + my $t = int($now/3600)*3600 + ($off-$nHours)*3600; my @l = localtime($t); $SVG_devs{$d}{from} = SVG_tspec(@l); - @l = localtime($t+3600-1); + @l = localtime($t+($nHours+1)*3600-1); $SVG_devs{$d}{to} = SVG_tspec(@l); } @@ -1627,9 +1629,12 @@ SVG_render($$$$$$$$$$) my $ddur = ($tosec-$fromsec)/86400; my ($first_tag, $tag, $step, $tstep, $aligntext, $aligntics); - if($ddur <= 0.1) { + if($ddur <= 0.05) { $first_tag=". 2 1"; $tag=": 3 4"; $step = 300; $tstep = 60; + } elsif($ddur <= 0.2) { + $first_tag=". 2 1"; $tag=": 3 4"; $step = 1200; $tstep = 300; + } elsif($ddur <= 0.5) { $first_tag=". 2 1"; $tag=": 3 4"; $step = 3600; $tstep = 900; @@ -2566,11 +2571,12 @@ plotAsPng(@) In plotmode gnuplot-scroll(-svg) or SVG the given time-range will be used, and no scrolling for this SVG will be possible. Needed e.g. for looking at last-years data without scrolling.

If the value is - one of hour, day, <N>days, week, month, year, <N>years then - set the zoom level for this SVG independently of the user specified - 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.
+ one of hour, <N>hours, day, <N>days, week, month, year, + <N>years then set the zoom level for this SVG independently of + the user specified 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 @@ -2797,15 +2803,16 @@ plotAsPng(@) Jahre auf eine Seite anzusehen.

Zweite Alternative:
- Wenn der Wert entweder hour, day, <N>days, week, month, year oder - <N>years lautet, kann der Zoom-Level für dieses SVG - unabhängig vom User-spezifischen Zoom eingestellt werden. Diese - Einstellung ist nützlich für mehrere Plots auf einer Seite: - Eine Grafik ist mit dem Standard-Zoom am aussagekräftigsten, die - anderen mit einem Zoom über eine Woche. Der optionale ganzzahlige - Parameter [offset] setzt ein anderes Zeitintervall (z.B. letztes Jahr: - fixedrange year -1, vorgestern: - fixedrange day -2). + Wenn der Wert entweder hour, <N>hours, day, <N>days, week, + month, year oder <N>years lautet, kann der Zoom-Level für + dieses SVG unabhängig vom User-spezifischen Zoom eingestellt werden. + Diese Einstellung ist nützlich für mehrere Plots auf einer + Seite: Eine Grafik ist mit dem Standard-Zoom am aussagekräftigsten, + die anderen mit einem Zoom über eine Woche. Der optionale + ganzzahlige Parameter [offset] setzt ein anderes Zeitintervall (z.B. + letztes Jahr: fixedrange year -1, vorgestern: + fixedrange day -2). +