ich möchte gerne auf einer eigenen Webfront-Seite meinen Grundriss inklusive Status Grafiken (Licht An / Aus) darstellen.
Wie ich „getvalue(12345)“ einbinde, habe ich hinbekommen. Ich möchte statt String oder Float gerne Grafiken anzeigen lassen. Je nach Zustand, Licht an, Licht aus. Ähnlich dem Button True / False bei den Aktoren, nur halt mit eigenen Grafiken. Die aktuelle Grafik wird ja in der Konsole durch triggern eingestellt, nur wie bekomme ich die Ausgabe ins Webfront ? Gibt es hier einen ähnlichen „get“ Befehl ?
Würde z.B. für eine Boolean-Variable an.png oder aus.png anzeigen.
Da Du bestimmt automatisch aktualisierte Bilder haben willst solltest Du Dir http://www.ip-symcon.de/forum/f3/problem-sajax-3422/index2.html#post61594 mal ansehen. Wenn Du die Datei, die die Werte holt, so umbaust, dass sie HTML-Code für ein Bild wie im Beispiel oben zurückgibt, hast Du Deine Lösung.
@Horst,
ist es gewollt wenn man im Webfront eine „externe Seite“ mit deinem „AJAX-Ersatz“ (Link zu „Problem mit Sajax“) einbindet und diese dann wieder verlässt das diese immer noch im Hintergrund weiter Daten nachladen
Gibst dazu eine Möglichkeit das externe Seiten beim verlassen, quasi geschlossen werden ??
tgusi74
P.S.: es werden bei Widget die konfigurierten ICONs nicht in Webfront angezeigt !!
Auf Icon wird nur zurückgegriffen, wenn keine Variable zugewiesen worden ist. Ansonsten wird das Icon aus dem Variablenprofil geholt.
Die Seiten bleiben geladen, damit sie nicht neu geladen werden müssen, wenn man durch die Tabs wechselt. Laden dauert schließlich und führt zu einem weißen Aufflackern des iFrames. Zudem ist so z.B. auch die Einbindung eines Applets zum Musik abspielen am Client möglich. Falls Du auf Experimente mit JavaScript Lust hast, solltest Du mit window.parent.webfront.controller.getApplication().currentPage.getName() die ID der aktuellen Seite herausfinden können. Per Timer alle paar Sekunden solltest Du dann herausfinden können, ob die Seite noch angewählt ist.
Es laufen jetzt 2 Timer, der erste ist für das „Refresh der Elemente“ (alle 750ms) zuständig und der zweite Timer schaut ob die „Seite noch aktiv im Webfront“ angewählt ist (alle 2 Sekunden), wird nur die Seite verlassen stoppen die Timer und das nachladen im Hintergrund hat ein Ende ==> wird die Seite wieder angeklickt starten die Timer wieder !!
<script type="text/javascript">
var TIMER_PERIODICALLY = window.setInterval("PERIODICALLY_TIMEREVENT()" , 750); //Pollinginterval !!
var TIMER_IS_PAGE_ACTIV = window.setInterval("CheckIsActivPage('USERSEITE')", 2000); //hier SeitenName eintragen !!
var WriteValueToIPS = function (url) { dojo.xhrGet({ url: url, timeout:5000 }) };
var ReadValueFromIPS = function (node, url) { dojo.addOnLoad( function () { var req = function () { dojo.xhrGet( { url: url, node: dojo.byId(node), load: function (data, xhr) { if (xhr.args.node) { xhr.args.node.innerHTML = data; } } } ); }; req(); }); };
function PERIODICALLY_TIMEREVENT()
{
ReadValueFromIPS("Rauchmelder1", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL1&style=grafik&file0=png/rauchmelder.png&file1=gif/LED_red_blink.gif");
ReadValueFromIPS("Beleuchtung1", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL3&style=grafik&file0=gif/lamp_off.gif&file1=gif/lamp_on.gif");
ReadValueFromIPS("text51", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL1&style=light");
}
function CheckIsActivPage(pagename)
{
if (window.parent.webfront.controller.getApplication().currentPage.getName() != pagename)
{
window.clearInterval(TIMER_PERIODICALLY);
window.clearInterval(TIMER_IS_PAGE_ACTIV);
}
}
</script>
Gibt es zusätzlich eine Möglichkeit, mit „getvalue“ auch einzelnen „String-Werten“ ein .png zuzuordnen ?
Hintergrund: Je nach Rolladen-Zustand (und String-Variable) 0%, 50%, Sonnenstellung und 100%, soll die jeweilige Balkengrafik mit (grün mit zunehmenden rot für geschlossen) geladen werden.
0% = Grafik komplett grün
50% = Grafik grün / rot
100% = Grafik komplett rot etc.