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.