NEWS
Widgets mit javascript erzeugen
-
Hallo,
gibt es Möglichkeiten Widgets per Javascript zu erzeugen, duplizieren oder zu verändern?
Hintergrund: wenn ich z.B. 15 Heizkörperthermostate habe, dann würde ich gerne die Darstellung und das Verhalten komplett identisch halten wollen und nur an einer Stelle ändern. Letztlich ändert sich dort nur die Position, Beschriftung und die Object.id
Viele Grüße Gerd.
-
Wenn du ein Widget gestaltet hast, brauchst du nur oben auf kopieren flicken. Dann wird es exakt kopiert. Dann nur noch verschieben und ID tauschen. Du kannst auch mehrere auf einmal kopieren.
-
> Wenn du ein Widget gestaltet hast, brauchst du nur oben auf kopieren flicken. Dann wird es exakt kopiert. Dann nur noch verschieben und ID tauschen. Du kannst auch mehrere auf einmal kopieren.
so mache ich es bisher auch, wenn danach aber eine Änderung durhgeführt werden muss, dann mache ich das x-mal, da wäre es mit einem Programm einfacher, vor Allem wenn z.B. die Darstellung eines einzelnen Heizkörperthermostates aus mehreren Widgets besteht. -
Nehmen wir an du willst bei allen Widgets dieselbe Änderung durchführen. Du kannst dann mittels "Gummiband" (mit gedrückter Maustaste einen Rahmen herumziehen) alle gleichzeitig markieren. Jede Änderung die du dann machst wirkt sich auf alle markierten aus.
Lg
Günther
-
Und wenn die Widgets nicht in einer Gruppe liegen, dann mit STRG-Klick statt Gummiband
So machen ich es immer, wenn ich bei mehreren Widgets ein einheitliches aussehen anlege / verändere.
Gruß
Rainer
-
Hallo,
Danke für die vielen Hinweise. Eure Empfehlungen sind alle korrekt und so mache ich es bisher auch.
Nehmen wir an ich möchte für die 15 Thermostate jeweils 2 weitere Widgets hinzufügen um weitere Infos anzuzeigen, dann muss ich diese einmalig erzeugen und anpassen, diese danach x-mal kopieren, korrekt ausrichten und anschließend die obj.id ändern.
Alles kein Hexenwerk, aber meine Frage war ja nicht, wie gehe ich mit Bordmitteln auf der edit-Oberfläche vor, sondern gibt es Möglichkeiten Dinge per Javascript-Programm im Javascript-Adapter zu ändern.
Viele Grüße Gerd.
-
Hallo,
Danke für die vielen Hinweise. Eure Empfehlungen sind alle korrekt und so mache ich es bisher auch.
Nehmen wir an ich möchte für die 15 Thermostate jeweils 2 weitere Widgets hinzufügen um weitere Infos anzuzeigen, dann muss ich diese einmalig erzeugen und anpassen, diese danach x-mal kopieren, korrekt ausrichten und anschließend die obj.id ändern.
Alles kein Hexenwerk, aber meine Frage war ja nicht, wie gehe ich mit Bordmitteln auf der edit-Oberfläche vor, sondern gibt es Möglichkeiten Dinge per Javascript-Programm im Javascript-Adapter zu ändern.
Viele Grüße Gerd. `
Das vis projekt liegt unter …/iobroker-dta/files/vis.0/main/vis-views.jsonWenn du von json was verstehst, dann kannst du diese Datei modifizieren und es wird gehen.
Mann kann im javascirpt adapter die Datei so schreiben und lesen:
https://github.com/ioBroker/ioBroker.ja ... t#readfile
https://github.com/ioBroker/ioBroker.ja ... #writefile
readFile('vis.0', 'main/vis-views.json', function (error, data) { var view = JSON.parse(data); });
-
Hallo Bluefox,
nicht ganz was ich gesucht habe aber ist sicherlich eine Möglichkeit. Danke.
Viele Grüße Gerd.
-
Hallo,
habe es jetzt ausprobiert und prinzipiell führt der Weg zum gewünschten Ergebnis. Allerdings muss ich teilweise Dinge sehr "komplex" lösen und sehr noch Optimierungsmöglichkeiten, finde aber nicht den Weg um dies zu machen.
Folgendes festgestellt:
-
doku in vis nicht korrekt, da wird auf https://github.com/iobroker/iobroker.vi … /README.md bei dem Link "Online Demos" auf ccu.io verwiesen, das nicht mehr verwendet werden soll
-
writeFile nicht korrekt beschrieben. Bei mir funktioniert der folgende Aufruf: writeFile('/../vis.0/main/vis-views.json', JSON.stringify(view), function (error) {}), dies passt aber nicht mit der Beschreibung: writeFile (adapter, fileName, bytes, function (error) {}) überein
Folgende Fragen sind bei mir in diesem Zusammenhang aufgetaucht:
-
Gibt es eine Möglichkeit die Werte direkt in vis zu ändern? Über die JSON-Datei funktioniert bei mir nur, in dem ich iobroker neu starte, da ansonsten das JSON nicht neu gelesen wird. Der Vis-Editor schafft es ja auch irgendwie und da muss nur die Runtime neu geladen werden
-
Gibt es bei der objectId eine Möglichkeit die ID selbst zu manipulieren für das Binding? Hintergrund: Ich habe jetzt die objectId in einem generischen Format in einer Variablen stehen und möchte bei verschiedenen Widgets diese objectId mit z.B ":4.SET_TEMPERATURE" oder ":4.AUTO_MODE" usw. ergänzen. Ich habe gesehen, dass es geht die Werte zu manipulieren/formatieren aber ich möchte die objectId selbst manipulieren. Aktuell subscribe ich auf die ergänzte objectId und speichere den objectId-Wert in einer Variablen, die an ein Widget gebunden ist
-
Gibt es die Möglichkeit die objectId als Wert aus einer Variablen an ein Widget zu binden? Also wenn ich in javascript eine Variable anlege und diese hat als Wert eine objectId und diese möchte ich jetzt an ein Widget binden, damit dort die Werte der objectId angezeigt werden. Aktuell subscribe ich auf die objectId und speichere den objectId-Wert in einer Variablen, die an ein Widget gebunden ist
Viele Grüße Gerd.
-
-
Hallo,
habe es jetzt ausprobiert und prinzipiell führt der Weg zum gewünschten Ergebnis. Allerdings muss ich teilweise Dinge sehr "komplex" lösen und sehr noch Optimierungsmöglichkeiten, finde aber nicht den Weg um dies zu machen.
Folgendes festgestellt:
-
doku in vis nicht korrekt, da wird auf https://github.com/iobroker/iobroker.vi … /README.md bei dem Link "Online Demos" auf ccu.io verwiesen, das nicht mehr verwendet werden soll
-
writeFile nicht korrekt beschrieben. Bei mir funktioniert der folgende Aufruf: writeFile('/../vis.0/main/vis-views.json', JSON.stringify(view), function (error) {}), dies passt aber nicht mit der Beschreibung: writeFile (adapter, fileName, bytes, function (error) {}) überein
Folgende Fragen sind bei mir in diesem Zusammenhang aufgetaucht:
-
Gibt es eine Möglichkeit die Werte direkt in vis zu ändern? Über die JSON-Datei funktioniert bei mir nur, in dem ich iobroker neu starte, da ansonsten das JSON nicht neu gelesen wird. Der Vis-Editor schafft es ja auch irgendwie und da muss nur die Runtime neu geladen werden
-
Gibt es bei der objectId eine Möglichkeit die ID selbst zu manipulieren für das Binding? Hintergrund: Ich habe jetzt die objectId in einem generischen Format in einer Variablen stehen und möchte bei verschiedenen Widgets diese objectId mit z.B ":4.SET_TEMPERATURE" oder ":4.AUTO_MODE" usw. ergänzen. Ich habe gesehen, dass es geht die Werte zu manipulieren/formatieren aber ich möchte die objectId selbst manipulieren. Aktuell subscribe ich auf die ergänzte objectId und speichere den objectId-Wert in einer Variablen, die an ein Widget gebunden ist
-
Gibt es die Möglichkeit die objectId als Wert aus einer Variablen an ein Widget zu binden? Also wenn ich in javascript eine Variable anlege und diese hat als Wert eine objectId und diese möchte ich jetzt an ein Widget binden, damit dort die Werte der objectId angezeigt werden. Aktuell subscribe ich auf die objectId und speichere den objectId-Wert in einer Variablen, die an ein Widget gebunden ist
Viele Grüße Gerd. `
Die erste 2 Punkte habe ich ergänzt. Für weiter Punkte sage ich, dass der Benutzungsfall sehr spezifisch ist, und es geht nicht.Keine sagt, dass es nicht implementiert werden konnte. :lol:
-