SVG: Write .gplot File ignoriert vorgegebenen Dateinamen

Begonnen von Dr. Boris Neubert, 19 September 2015, 21:28:05

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

ich habe ein SVG-Device, das e.ext.tank.weblink heißt und aus einer .gplot-Datei namens e.ext.tank.gplot gesteuert werden soll - Definition in der Konfigurationsdatei:

define e.ext.tank.weblink SVG e.ext.tank.log:e.ext.tank:CURRENT

Wenn ich im SVG-Editor den Plot designe und auf "Write .gplot File" drücke, wird die .gplot-Datei als e.ext.tank.weblink.gplot geschrieben und die Definition des SVG-Device eigenmächtig auf

e.ext.tank.log:e.ext.tank.weblink:CURRENT

geändert.

Das ist ein bisschen zu viel Eigenleben für meinen Geschmack, zumal das bei mir nicht funktioniert, weil ich die geänderte Definition ja nicht in meine Konfiguration zurück schreiben lasse.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Das Erzeugen der individuellen .gplot Datei war eine Weile optional, mit einem prominent platzierten Knopf (set copyGplotFile), und Warnung in der Doku von Nebeneffekten bei Nichtbenutzung. Leider wurde der Knopf nicht verwendet, stattdessen gab etliche Beschwerden ueber die dokumentierten Nebeneffekte (nach Save funktionieren die andern Plots nicht mehr richtig). Deswegen wird seit April bei jedem Schreiben der .gplot Datei mit dem Editor ein bestimmter Name geprueft/erzwungen.

Dr. Boris Neubert

Hallo Rudi,

die alte Variante war sicher yu undurchsichtig. Die neue Variante funktioniert aber nur für diejenigen, die die Konfigurationsdatei von FHEM aktualisieren lassen wollen. Und das auch tun - das ist nämlich nicht offensichtlich.

Ich sehe zwei Use Cases:
- Neues SVG-Device anlegen: dann bestimmt der SVG-Editor auch gleich den Namen der .gplot-Datei mit und es ist natürlich, dass die .gplot-Datei so heißt, wie das Device.
- Bestehendes SVG-Device ändern: es wird der Name der .gplot-Datei übernommen, der beim Eintritt in den Editor vorgefunden wird.

Ich werde jetzt meine Definitionen einfach ändern. Es ist ja auch viel natürlicher, die .gplot-Dateien so zu nennen wie die Devices. Die historischen Namen kommen jetzt weg.

Viele Grüße
Boris

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Aaaaaargh, doch nicht.

Meine Nomenklatur ist:

Device: x.room.device
Log: x.room.device.log
SVG: x.room.device.weblink
.gplot: x.room.device

Und es sind 40 Geräte und 40 .gplot-Dateien umzubenennen.

...Lieber schicke ich einen Patch, wenn Du das akzeptierst.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Zitat- Neues SVG-Device anlegen: dann bestimmt der SVG-Editor auch gleich den Namen der .gplot-Datei mit und es ist natürlich, dass die .gplot-Datei so heißt, wie das Device.
Am Anfang wird der Name durch Autocreate bestimmt, und der kann (noch?) nicht kopieren noch nicht.

Zitat- Bestehendes SVG-Device ändern: es wird der Name der .gplot-Datei übernommen, der beim Eintritt in den Editor vorgefunden wird.
Damit hatte ich ja die Probleme in der Vergangenheit. Selbst wenn ich autocreate modifizieren wuerde, wuerden die Leute, die bereits ein SVG vom autocreate angelegt bekommen haben, aber es noch nicht per Editor geaendert haben, nach dem update beim naechsten Editieren auf die Nase fallen. Wenn du auf sowas bestehst, dann lieber ein Attribut, um copyGplotFile beim Schreiben abzuschalten.


ZitatUnd es sind 40 Geräte und 40 .gplot-Dateien umzubenennen.
Ich kenne moderne Editoren, die koennen sowas wie Regexp-Replace. :)

Dr. Boris Neubert

Hallo,

wenn ich die Logik richtig verstehe, soll es pro SVG-Device genau eine gplot-Datei geben und keine zwei SVG-Devices teilen sich eine gplot-Datei.

Nehmen wir mal für einen Moment an, dass der Name der Datei dem Anwender schnurzegal ist. Dann gibt es niemals Bedarf, die gplot-Datei umzubennen, sobald sie einmal angelegt ist. Oder kennst Du einen Fall?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Falls man auf dem SVG-Editor verzichtet, dann kann man mit einer .glot Datei mehrere Plots generieren, und diese mit label/title personalisieren. Falls man den SVG-Editor nutzt, dann ist das nicht mehr moeglich, und es wird eine individuelle Kopie der .gplot Datei angelegt. Weiterhin legt autocreate die SVG's mit bekannten .gplot Dateien an, anstatt eine Kopie zu erstellen.

Der Weg geht vermutlich zu individuelle Kopie, ich bin aber noch nicht soweit, die alten Moeglichkeiten auszubauen.

Dr. Boris Neubert

Meiner Auffassung nach sollte das SVG-Device künftig die label/title-Platzhalter noch heimlich unterstützen, um bestehende Installationen nicht kaputtzumachen.

Autocreate sollte die passende gplot-Vorlage kopieren statt verwenden.

Der Name der Kopie sollte dabei aber nicht wie der Name des SVG-Device sondern wie der Name des zugrundeliegenden Device lauten (geringe Priorität).

Der SVG-Editor soll nicht die Geräte-Definition ändern. Ist das nicht bereits jetzt kontraintuitiv? Der Anwender muss ja derzeit zusätzlich den Save-Knopf drücken. Woher weiß er das? Und ich als Save-Knopf-Verweiger habe ja nicht einmal so einen Knopf.

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Ok, ueberzeugt.

Verloren haben die, die vor dem Update ueber Autocreate SVGs angelegt bekommen haben, aber erst nach dem Update auf die Idee kommen, diese per Editor zu bearbeiten.

Gegenstimmen bzw. Verbesserungsvorschlaege?

Dr. Boris Neubert

Zitat von: rudolfkoenig am 04 Oktober 2015, 17:43:43
Verloren haben die, die vor dem Update ueber Autocreate SVGs angelegt bekommen haben, aber erst nach dem Update auf die Idee kommen, diese per Editor zu bearbeiten.

Verloren haben alle, bei denen sich mehrere SVG-Devices einunddieselbe .gplot-Datei teilen.

Verbesserungsvorschlag: unter den Knöpfen im Editor wird eine Zeile eingefügt, falls noch ein anderes SVG-Device dieselbe .gplot-Datei verwendet:

You are editing the .gplot file <foo> which is shared between several plots.

Luxus: es gibt dann einen Knopf "Fix it!", der das macht, was wohl copy .gplot file früher schon tat und jetzt automatisch geschieht (.gplot-Datei unter neuen Namen kopieren und Definition vom SVG-Device ändern) und zusätzlich ein Dialogfenster aufmacht: You need to save the current configuration or change the device definition manually to "define <bar> SVG <baz>"

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Habe folgende Aenderungen eingebaut:
- autocreate fuehrt das copyGplotFile aus
- copyGplotFile meldet sich structuralChanges (rotes Fragezeichen neben dem save button)
- Der SVG Editor warnt (Meldung neben dem write .gplot file Knopf), falls mehrere SVG's die gleiche Datei verwenden
- write .gplot file aendert den Dateinamen nicht.

Beim Implementieren sind mir weitere Probleme aufgefallen:
- Falls copyGplotFile im autocreate schiefgeht, dann steht das nur im Fhem-Log
- es gibt keine einfache Moeglichkeit, das Kopieren zu wiederholen
Bin nicht ganz zufrieden: relativ tiefe Aenderungen, deren Gesamtnutzen (meiner Ansicht nach) fraglich ist.