GPLOT-Link fehlt, wenn SVG-Devicename und gplot-Dateiname unterschiedlich sind

Begonnen von Flachzange, 11 Oktober 2026, 19:27:09

Vorheriges Thema - Nächstes Thema

Flachzange

Mir ist ein kleiner Fehler mit SVGs aufgefallen, wenn man den verlinkten GPLOT-Editor nutzen möchte.

Ausgangssituation

Ein SVG-Device verwendet eine gplot-Datei, deren Name vom SVG-Devicenamen abweicht (fragt mich nicht, warum die so heißen, historisch entstanden...):

define SVG_Wetter_Luftdruck SVG logdb:SVG_SVG_SVG_Wetter_Luftdruck:HISTORY

Die Internals lauten entsprechend:

NAME       SVG_Wetter_Luftdruck
GPLOTFILE  SVG_SVG_SVG_Wetter_Luftdruck

Problem

In der Detailansicht wird das Internal GPLOTFILE nur als Text angezeigt, nicht als anklickbarer Link zum Bearbeiten der gplot-Datei, wie sonst üblich.

Ursache

In SVG_PEdit() wird der Link per JavaScript eingefügt. Der verwendete Selektor lautet:

$("table.internals div[informid=$gpfEsc-GPLOTFILE]")
  .html("<a href='$link'>$gpf</a>");

Hier wird $gpfEsc (der gplot-Dateiname) verwendet. FHEMWEB erzeugt das informid-Attribut jedoch mit dem SVG-Devicenamen als Präfix. Wenn sich beide Namen unterscheiden, findet der Selektor das Element nicht.

Lösungsvorschlag

Ja, ich könnte die Dateinamen entsprechend der Devices benennen, aber schöner wäre, wenn es auch so funktioniert. Daher:

Den Selektor auf $d (SVG-Devicename) ändern:

Bisher:
$("table.internals div[informid=$gpfEsc-GPLOTFILE]")

Korrigiert:
$("table.internals div[informid=$d-GPLOTFILE]")

Ergebnis

Die Änderung habe ich getestet. Der GPLOTFILE-Link wird anschließend korrekt angezeigt und lässt sich anklicken.

Es handelt sich um einen Interface-Fehler in FHEMWEB. Die eigentliche Plot-Funktion ist nicht betroffen.

Hope that makes sense.

rudolfkoenig

ZitatEin SVG-Device verwendet eine gplot-Datei, deren Name vom SVG-Devicenamen abweicht (fragt mich nicht, warum die so heißen, historisch entstanden...):
Von FHEM generierte SVGs gabs erst, nachdem ich gplot nicht ohne Weiteres auf dem FritzBox 7270 zum Laufen gekriegt habe.
Davor wurden die Grafiken mit gplot berechnet, das SVG Modul startete als gplot Ersatz.


ZitatIn der Detailansicht wird das Internal GPLOTFILE nur als Text angezeigt, nicht als anklickbarer Link zum Bearbeiten der gplot-Datei, wie sonst üblich.
Ich vermute, dass das Absicht war.
Es gibt auch mit FHEM ausgelieferte .gplots, die per autocreate einem Geraet zugeordnet werden.
Wenn man diese Datei aendert, dann wird die Aenderung beim naechsten update entfernt.
Loesung ist ein "set <svgName> copyGplotFile", was die .gplot Datei kopiert mit dem Namen der SVG-Instanz.

Flachzange

Zitat von: rudolfkoenig am 12 Oktober 2026, 10:08:24Ich vermute, dass das Absicht war.
Es gibt auch mit FHEM ausgelieferte .gplots, die per autocreate einem Geraet zugeordnet werden.
Wenn man diese Datei aendert, dann wird die Aenderung beim naechsten update entfernt.
Loesung ist ein "set <svgName> copyGplotFile", was die .gplot Datei kopiert mit dem Namen der SVG-Instanz.

Ja, aber an der Stelle ist das Kind schon in den Brunnen gefallen. Auf der SVG-Detailseite kann ich ja bereits Änderungen am Plot vornehmen, die auch diese Template-Datei überschreiben würde. Der Klick auf die Datei ist ja nur dann notwendig, wenn man direkt in der gplot-Datei arbeiten möchte. Aus meiner Sicht ist es daher weiterhin sauberer wenn dort auch in Dateien kommt, die nicht dem Device-Namen entsprechen.

Aber die Nutzung von "set <svgName> copyGplotFile" ist trotzdem ein akzeptabler workaround, um diese "Altlasten" in eine neue Datei zu kopieren, die dann dem Device-Namen entspricht.


betateilchen

Zitat von: Flachzange am 14 Oktober 2026, 19:31:49Ja, aber an der Stelle ist das Kind schon in den Brunnen gefallen. Auf der SVG-Detailseite kann ich ja bereits Änderungen am Plot vornehmen, die auch diese Template-Datei überschreiben würde.

Die von FHEM mitgelieferten gplot Dateien sind "readonly" gekennzeichnet und können nicht ohne weiteres im gplot-Editor geändert werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!