FHEM Forum

FHEM => Frontends => SVG / Plots / logProxy => Thema gestartet von: rapster am 30 August 2020, 12:33:11

Titel: [SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: rapster am 30 August 2020, 12:33:11
Nach langer Abwesenheit :'( zwei Verbesserungsvorschläge für 98_SVG
Rudolf, hoffe du kannst es so oder ähnlich ggf. allgemein implementieren?


attr FHEMWEB userattr svgOffDay svgOffQDay svgOffHour
attr FHEMWEB svgOffDay 0.1
attr FHEMWEB svgOffHour 0.1
attr FHEMWEB svgOffQDay 0.1


diff --git a/tmp/FHEM_current_98_SVG.PM b/opt/fhem/FHEM/98_SVG.pm
index 7bc0422..80c8ddc 100644
--- a/tmp/FHEM_current_98_SVG.PM
+++ b/opt/fhem/FHEM/98_SVG.pm
@@ -1,5 +1,5 @@
##############################################
-# $Id$
+# $Id: 98_SVG.pm 22457 2020-07-24 07:22:09Z rudolfkoenig $
package main;

use strict;
@@ -494,7 +494,7 @@ SVG_PEdit($$$$)
       $lw =~ s/.*stroke-width://g;
       $lw =~ s/"//g;
     }
-    $o .= SVG_sel("width_$idx", "0.2,0.5,1,1.5,2,3,4,8,12,16,24",($lw ? $lw:1));
+    $o .= SVG_sel("width_$idx", "0.2,0.5,1,1.5,2,2.5,3,4,8,12,16,24",($lw ? $lw:1));
     $o .= "</td></tr>";
     $output[$idx] = $o;
   }
@@ -964,8 +964,10 @@ SVG_calcOffsets($$)
   if($zoom =~ m/^(\d+)?hour/) {
     my $nHours = $1 ? ($1-1) : 0;
     if($endPlotNow) {
+      $off = !$off ? AttrVal($FW_wname, 'svgOffHour', 0) : $off;
       my $t = int(($now + ($off-$nHours-1)*3600)/300.0)*300 + 300;
-      my @l = localtime($t);
+      my $_t = $off && $off == AttrVal($FW_wname, 'svgOffHour', 0) ? int(($now + (0-$nHours-1)*3600)/300.0)*300 + 300 : $t;
+      my @l = localtime($_t);
       $SVG_devs{$d}{from} = SVG_tspec(@l);
       @l = localtime($t+$nHours*3600+3599);
       $SVG_devs{$d}{to}   = SVG_tspec(@l);
@@ -979,8 +981,10 @@ SVG_calcOffsets($$)

   } elsif($zoom eq "qday") {
     if($endPlotNow) {
+      $off = !$off ? AttrVal($FW_wname, 'svgOffQDay', 0) : $off;
       my $t = int($now/300)*300+300 + ($off-1)*21600;
-      my @l = localtime($t);
+      my $_t = $off && $off == AttrVal($FW_wname, 'svgOffQDay', 0) ? int($now/300)*300+300 + (0-1)*21600 : $t;
+      my @l = localtime($_t);
       $SVG_devs{$d}{from} = SVG_tspec( 0,$l[1],$l[2],$l[3],$l[4],$l[5]);
       @l = localtime($t+21600-1);
       $SVG_devs{$d}{to}   = SVG_tspec(59,$l[1],$l[2],$l[3],$l[4],$l[5]);
@@ -996,8 +1000,10 @@ SVG_calcOffsets($$)
   } elsif($zoom =~ m/^(\d+)?day/) {
     my $nDays = $1 ? ($1-1) : 0;
     if($endPlotNow) {
+      $off = !$off ? AttrVal($FW_wname, 'svgOffDay', 0) : $off;
       my $t = int($now/300)*300+300 + ($off-$nDays-1)*86400;
-      my @l = localtime($t);
+      my $_t = $off && $off == AttrVal($FW_wname, 'svgOffDay', 0) ? int($now/300)*300+300 + (0-$nDays-1)*86400 : $t;
+      my @l = localtime($_t);
       $SVG_devs{$d}{from} = SVG_tspec(0,$l[1],$l[2],$l[3],$l[4],$l[5]);
       @l = localtime($t+(1+$nDays)*86400-1);
       $SVG_devs{$d}{to}   = SVG_tspec(59,$l[1],$l[2],$l[3],$l[4],$l[5]);


Hat bisschen Seiteneffekte auf das angezeigte Datum des Day-SVG, aber direkt den get-parameter 'off' modifizieren hat das Datum mMn noch blöder verändert (auch wenn dadurch offsets wie 0.101 möglich wären welche gerade nicht funktionieren, bei dem diff schaut nur 0.1 0.2 usw. gut aus bzgl. der timeline) - Evtl. hast du da ja noch eine Idee, habe das Modul nur fix überflogen für diese Änderung

Grüße  8)
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: xenos1984 am 30 August 2020, 17:16:05
Geringfügig off-topic, aber da ich es gerade bei den Beispiel-Grafiken sehe: Wie hast du denn die Symbole neben den Labels eingebaut?
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: rapster am 30 August 2020, 19:24:17
Zitat von: xenos1984 am 30 August 2020, 17:16:05
Geringfügig off-topic, aber da ich es gerade bei den Beispiel-Grafiken sehe: Wie hast du denn die Symbole neben den Labels eingebaut?

Mit dem Unicode Variation Selector (https://en.wikipedia.org/wiki/Variant_form_(Unicode)#Variation_Selectors_block) kannst du die meisten Unicode Emojis als Text behandeln lassen, dadurch werden se in der richtigen Farbe vom Label dargestellt.

Also einfach das Unicode Smiley irgendwo in den Label Text rein und direkt dahinter, da ich hier keine Smileys Posten kann Beispiel als Bild

Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: xenos1984 am 31 August 2020, 01:12:38
Ah, nicht schlecht, danke für die Info! Das scheint hier sogar zu funktionieren, nur im Plot macht er die Farbe noch nicht richtig... Da muss ich wohl noch etwas basteln ;)
🖳︎🛏︎🛋︎
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: rapster am 31 August 2020, 03:59:41
 :)
Dass die Farben bei dir im plot nicht gehen ist komisch, hab deine icons mal bei mir getestet und funzt 1A :) (bild)
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: xenos1984 am 31 August 2020, 12:40:06
Bei mir klappt es jetzt auch. Das Problem war, dass Firefox scheinbar seinen eigenen, farbigen Emoji-Font benutzen wollte (auf http://en.wikipedia.org/wiki/Transport_and_Map_Symbols ebenfalls). Mit einem anderen Font (Noto Sans) klappt es bei mir.
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: rapster am 31 August 2020, 14:30:42
Gut zu wissen für andere Browser, benutze selber ja Chrome :)
Titel: Antw:[SVG] [Improvement] [Diff] Offset für bessere Lesbarkeit bei endPlotNow
Beitrag von: rudolfkoenig am 31 August 2020, 18:29:40
#1 ist kein Problem, habe eingecheckt.

#2 ist aus mehreren Gruenden ein Problem:
- es muesste fuer alle Zoomstufen implementiert werden (wir haben 8, und nicht 3)
- es ist kein userAttr, sonder "echtes" Attribut und muss dokumentiert werden.
- ich sehe die Seiteneffekte, und bin nicht begeistert.

Die bessere Lesbarkeit koennte man mAn mit JavaScript-Code / Mausposition besser loesen, allerdings waeren dann die Touchscreen-Leute raus. Habe keine gute Idee, bin aber von dem aktuellen Vorschlag noch nicht ueberzeugt. :)