NEWS
[Gelöst] - Vis 1 Editor Skript: setzen eines Objekt-Wertes?
-
Hallo ioBroker-Forum!
Ein Skript im vis-editor liest die Auflösung des Fensters aus, indem die vis läuft und bei Änderung der Auflösung, reagiert das Skript. Frage: kann man per Vis-Skript die Werte eines Buttons (oder eins beliebigen anderen Widgets) oder noch besser eines Objekt-Wertes per Editor-Skript ändern?
Ziel: Ändern der Auflösung (zB durch Drehen eines iPads) soll automatisch die View ändern.
Anmerkung: Ein Wechsel auf Vis 2 ist erst einmal nicht vorgesehen.Aufbau:
View_1 (1024x768)
View_2 (z.B.: 768x1024)// SKRIPT IM VIS EDITOR const mq = window.matchMedia('(min-width: 1024px)'); function updateView(mq) { if (mq.matches) { console.log('Große Auflösung'); // kann man jetzt einen Widget/Button/Objekt-Wert ändern lassen? return true; } else { console.log('Kleine Auflösung'); // kann man jetzt einen Widget/Button/Objekt-Wert ändern lassen? return false; } } updateView(mq); mq.addEventListener('change', updateView);
Objekte/Datenpunkt: 0_userdata.0.isHighResolution
JavaScript im Adapter:
on('0_userdata.0.isHighResolution', function(obj) { var state = getState('0_userdata.0.isHighResolution').val; const smallView = 'View_2'; const largeView = 'View_1'; const instance = 'XXXXXXX' if (state) { setState('vis.0.control.instance', instance); setState('vis.0.control.data', largeView); setState('vis.0.control.command', 'changeView'); } else { setState('vis.0.control.instance', instance); setState('vis.0.control.data', smallView); setState('vis.0.control.command', 'changeView'); } });
Aktueller Workaround:
In der vis befindet sich ein Button, der den Objektwert beim Drücken zwischen true/false wechselt.
Das Wechseln des Objektwertes triggert das Javascript, welches die View für die spezielle Instanz ändert. -
@iobit sagte in Vis 1 Editor Skript: setzen eines Objekt-Wertes?:
eines Objekt-Wertes per Editor-Skript ändern?
meinst du einen datenpunkt ändern ?
dann:
vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.ATESTBildUpload.uplaodBase64',myvalue);
-
@liv-in-sky sagte in Vis 1 Editor Skript: setzen eines Objekt-Wertes?:
@iobit sagte in Vis 1 Editor Skript: setzen eines Objekt-Wertes?:
eines Objekt-Wertes per Editor-Skript ändern?
meinst du einen datenpunkt ändern ?
dann:
vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.ATESTBildUpload.uplaodBase64',myvalue);
Vielen Dank für die rasche und korrekte Antwort!
Es hat funktioniert. Mit "vis.setValue" kann ich den Datenpunkt setzen und die Änderung triggert mein Skript. -
@iobit
Hi,
ich möchte in einer User-Variablen festhalten, wenn z.B. vom Startbildschirm abgesprungen wird.
Dazu habe ich einen Datenpunkt angelegt, den ich nun mit diesem Vorgehen ansprechen wollte. Offenbar geht das nicht so, wie ich es gedacht hatte.
Ich habe versucht den Code beim Widget in Skripte einzubetten. Das setzt aber nicht den Datenpunkt.vis.setValue('0_userdata.0.Variablen.VIS.Absprung_aus_Start',true);
-
@andreas-s sagte in [Gelöst] - Vis 1 Editor Skript: setzen eines Objekt-Wertes?:
vom Startbildschirm abgesprungen wird
das ist wohl dein trigger - kommt aber nicht in deinem script vor - was genau bedeutet abgesprungen vom startbildschirm
dein script wird einmal ausgeführt, wenn du die seite (bzw vis-project) aufrufst - bzw wenn du einen seiten-reload machst - mehr passiert da nicht
-
nebenbei - je nachdem, wie deine vis aufgebaut ist, sieht man auch in den dp, welche seite geöffnet ist
-
@liv-in-sky
Vielen Dank.
Ich habe erst jetzt gesehen, dass das Skript an der gesamten View hängt.
Ich bin fälschlicher Weise davon ausgegangen, dass es am Widget-Objekt (z.B. dem Navigations-Widget) hängt und durch das getriggert wird. -
@liv-in-sky
Gibt es da auch eine Möglichkeit zu sehen auf welchem Gerät die VIS Seite geöffnet wurde?Beispiel: Ich habe ein Tablet im Flur mit Kiosk-Browser. Wenn jemand im Vorbeigehen sich etwas ansieht, möchte ich das nachher wieder zurückstellen. Nicht so, wenn ich das VIS auf dem PC nutze.
-
@andreas-s in den daten punten oben gibt es instance dp - der sagt das aus
du kannst das da ablesen und sogar setzen und die tablets wechsel die seite
mach die vis editor seite auf, auf dem tablet, dass du nutzt und gehe im viseditor unter tools - dort kannst du die instanz setzen
einziges problem - wenn du den cache des browser löscht, ist die instanz auch weg und muss neu gesetzt werden