Grafiken über DOJO/Ajax austauschen

Hallo,
habe folgendes Problem ich möchte je nach Variableninhalt verschiedene Grafiken in der Webseite bzw. Variableninhalte aktualiseren ohne das die Seite neu geladen werden muss

Im Moment benutze ich ein normales Refresh (somit blinkt die Seite und das Zoom der Seite welches man über das MousWheel einstellen kann wird wieder zu 100% Skalierung)

Ich mache das im Moment so, funktioniert auch super
… über GetValue fülle ich mir ein „verdecktes Textfeld“

<INPUT type="hidden" name="Maschine1"     value="<? echo GetValue(24893  /*[S7\PALETTENNUMMERN\PALETTE_MASCHINE_1]*/);?>"/>

… das Grafikelement lade ich mir als „Defaultgrafik“

<!-- Palette -->
<img id="Stat120_Palette" border="0" class="Link" height="120" src="http://www.ip-symcon.de/forum/images/Palette_101_x.gif"
style="z-index: 400; left: 48px; top: 113px; position: absolute" width="60"/>

… am Schluss einer Seite rufe ich dann das Java - REFRESH - Script auf

<script language="JScript" type="text/jscript">
    refresh_grafik();
</script>

… das REFRESH-Script tauscht mir dann die Grafiken entsprechend aus

function refresh_grafik()
{
document.getElementById("Stat120_Palette").src   = "http://www.ip-symcon.de/forum/images/Palette_101_8__" + document.all.Maschine1.value +".gif";
}

Nun meine Fragen an die Spezialisten,

  1. es gibt doch sicher eine Möglichkeit IPS-Variablen direkt von IPS in den JAVA-Script zu lesen um nicht immer den Umweg über HIDDEN-Textfelder gehen zu müssen

  2. Wie geht man das am besten an, um Variablen über DOJO/AJAX zu aktualsieren und eben ein austauschen der Grafik erhalten

  3. Kann vieleicht mir einer einen DOJO - PRESENTER/BASIC-VIEW - Script posten wo explizit ausgewaehlte Variablen upgedated werden

Vielen Dank für eure Mühe
tgusi74

JavaScript läuft direkt in Deinem Browser, da kommt IP-Symcon nicht ran. Du kannst per JS aber Daten nachladen (Stichwort AJAX). Ein simples Presenter-Beispiel dazu gibt es unter WebFront - IP-Symcon :: Automatisierungssoftware. Was dann eine View dazu macht ist dem Programmierer überlassen. Als komplettes Beispiel kannst Du Dir die ganzen DWD-Sourcecodes ansehen.

Hallo Horst,
danke für deine Antwort

Habe mich schon Stunden mit deinen „WEBFRONT“ - Scripten auseinandergesetzt, jedoch sind diese für einen DOJO/AJAX/JAVA-Script Anfänger wie mich einfach zu komplex

Auch die Beispiele im Entwicklerbereich werfen für mich im Moment mehr Fragen als Antworten auf

Kannst Du vielleicht mal ein simples Beispiel posten, wie man da zwei IPS-Variablen (mit ID) registiert und diese dann in einer Seite anzeigt welche sich dann nach einem Ändern in IPS wieder automatisch aktualisieren
(am besten ohne das ganze Webfront-Framework)

Vielen Dank in vorhinein, bin mir sicher das auch andere Forenleser auf ein ähnliches Beispiel warten

tgusi74

Registrieren läuft über IPS-Sessions. IPS-Sessions erfordern Kenntnisse in Sachen IP-Symcon-SDK (in Delphi geschrieben), damit man die definierten internen IDs kennt und überhaupt deren Verhalten. Dann musst Du noch ein PHP-Keep-Alive haben, da Du per JS nur Requests absetzen kannst. Soll alles in allem heißen: Ich kann leider kein einfaches Beispiel geben.

Hallo tgusi 74,

wenn Du nicht an den Webserver von IPS gebunden bist, kannst Du das ganze mit Kool-Ajax realisieren. Beispiele dazu gibt es hier im Forum. Einfach mal Kool Ajax eingeben.

Hallo Rainer,
das mit dem KoolAjax ist eine gute Idee

Ich komme somit auch schon gut an die Variablen ran, jedoch habe ich ein Problem mit dem Update das nicht arbeiten will

Habe da den Script von RATZEFUMM benutzt http://www.ip-symcon.de/forum/f53/soap-ajax-eigenen-webapplikationen-php-6930/#post57086 jedoch will dieser nicht die Updatefunktion ausführen, den Firefox-Firebug bringt immer die Meldung „KoolUpdatePanel is not defined“

… blende ich die Zeile „GetKernelVersion.update();“ aus und setzte eine „alert(„UPDATE RUN …“);“ dann wird dieses je nach Updateinterval durchlaufen

… ich benutze dazu „KoolAjax version 1.7.0.0 - www.koolphp.net

Hat jemand da eine Idee bzw. ein laufendes Script ??

Danke
tgusi74

Hast Du hier schon nachgesehen. http://www.ip-symcon.de/forum/f56/videoueberwachung-6653/index4.html#post57436

Das ganze funktioniert aber nur in einer eigenen Webumgebung, nicht mit dem Webserver von IPS. Warum weiss ich auch nicht.

Jetzt funktioniert es eben über den APACHE :slight_smile: … beim IPS-Webserver klappt einfach das Update nicht :confused:

Als Basis habe ich die Scripts von RATZEFUMM bzw. RWN genommen und ein wenig abgeändert …

    <?php

    function SOAPReadVariableInteger($VarID)
    {
        // Serverseitiger Code SOAP Call to IPS
        $IIPSVariableManager = new SoapClient("http://localhost:3773/wsdl/IIPSVariableManager");
        $res= $IIPSVariableManager->ReadVariableInteger($VarID);
        return $res;
    }


    $koolajax->enableFunction("SOAPReadVariableInteger");
    ?>


    <?php echo $koolajax->Render();?>
    <?php echo KoolScripting::Start();?>

    <updatepanel id="Variable">
       <content>
          <INPUT type="hidden" name="Maschine1"  value="<?php echo SOAPReadVariableInteger("29753  /*[S7\PALETTENNUMMERN\PALETTE_MASCHINE_1]*/");?>"/>
          <INPUT type="hidden" name="Maschine2"  value="<?php echo SOAPReadVariableInteger("14267  /*[S7\PALETTENNUMMERN\PALETTE_MASCHINE_2]*/");?>"/>
          <!-- Hier noch die restlichen Hiddenfelder mit Variablenzuordnung anlegen -->
       </content>
    </updatepanel>


    <?php echo KoolScripting::End();?>

… am Ende wird wieder das UPDATE und GRAFIK-Refresh durchgeführt

          function Update()
          {
            Variable.update();
            refresh_grafik();
            setTimeout("Update()",5000);        // Ajax Call alle 5 Sekunde
          }

Was jetzt noch Genial währe, eine Lösung welche den Client nur bei Variablenänderung informiert :wink: