Ankündigung

Einklappen
Keine Ankündigung bisher.

Modifikationen Ajax.js

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #76
    Jetzt laufe ich exakt seit dem 31.12.2008 den Firmen Gira und Dacom hinterher, um eine saubere Grundlage für Modifikationen der Ajax.js für AV und PV zu bekommen. Jetzt habe ich die endlich, aber statt Begeisterung über zukünftige Möglichkeiten wird über Vergangenes gemäkelt. Unverständlich.

    Wenn Nils noch Lust hat, werde ich mal einen Bereich einrichten, der sich mit den Ajax-Anpassungen beschäftigt. Wer mithelfen möchte- auch bei der Dokumentation - bitte bei mir melden!
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #77
      Danke Matthias,

      selbstverständlich hat das keine Auswirkung auf die Entwicklung von dem uns vorenthaltendem

      Ich habe bereits eine Version mit verkleinerter Codebase und Doku erstellt,
      die als Trennzeichen den "*" verwendet. Ich hätte Sie evtl. auch schon veröffentlicht aber es ist irgendwo der Wurm drin. Das umstellen des Trennzeichen lässt die Linktexte bei XXLINK und XXHTTP verschwinden.

      Ich denke das ich fürs erste eine ziemlich simple(hässliche) Demo Visu als Musterprojekt hinzufüge.

      Mithilfe egal welcher Art ist immer Willkommen.
      Auch Betatester oder Gastzugänge mit Funktionen sind prima.

      Wenn jemand Probleme beim testen hat einfach hier posten,
      wenns bei einem geht muss es beim anderen auch gehen.
      Nils

      aktuelle Bausteine:
      BusAufsicht - ServiceCheck - Pushover - HS-Insight

      Kommentar


        #78
        Ich persönlich finde es toll wie NilsS in diesem Thema aufblüht, gepaart
        von Forscherdrang und tollen Ideen.

        Sicherlich wird es irgendwann auch eine Doku und eine "fertige" Ajax.js für AV und PV geben.
        Für meinen Teil bestaune ich immer wieder, wie NilsS so schnell neue "Selbsttest´s " einbringt und auf Anfragen reagiert!

        Meinen Respekt.
        Gruß Jörg.


        "Wir sind nicht die ersten, die dieses Feature einbauen, aber wir werden es am besten umsetzen."
        (Steve Jobs)

        Kommentar


          #79
          So ist hochgeladen.

          Im Downloadbereich unter Musterprojekte

          Downloadpaket enthällt
          Die hsupload Dateien:
          hsav/js/ajax.js
          hsav/js/diff2009-04-21.diff
          hsav/js/gpl-3.0.txt
          redirect.htm
          und ein Demo Projekt das alles enthällt,
          inklusive Projektbezogenem hsupload Ordner

          so hier noch mal das Diff mit bisserl Doku drin
          Code:
          --- ajax-orig.js Wed Jun 11 11:59:34 2008
          +++ ajax.js Tue Apr 21 21:52:01 2009
          @@ -40,6 +40,15 @@
           isBusy=0;
           xmlhttp = null;
           
          +// XX Functions Variablen
          +XXLINKURL = "";
          +XXINACTIVDELAY = 0;
          +XXINACTIVOBJ = null;
          +XXINACTIVTIMER = null;
          +XXKEYOBJ = null;
          +XXKEYSHIFT = false;
          +
          +
           // Markierung
           markImg = null
           markLen1=30;
          @@ -1065,6 +1074,72 @@
           
           mouseClickItem = null;
           
          +
          +// XX Function Mods
          +
          +// Function zum abfangen der Inactivaet
          +function baseMouseMove(_event)
          +{
          +  if(XXINACTIVOBJ != null) {
          +    if(XXINACTIVTIMER != null) {
          +      window.clearTimeout(XXINACTIVTIMER);
          +    }
          +    XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
          +  }
          +
          +}
          +
          +// Function zum abfangen der shift taste XXKEY
          +function baseKeyDown(_event)
          +{
          +  if(window.event) {
          +    keynum = window.event.keyCode;
          +  } else {
          +    keynum = _event.which;
          +  }
          +  if(keynum == 16) {
          +    XXKEYSHIFT = true;
          +  }
          +  return false;
          +
          +}
          +
          +// Function zum abfangen der Tastatur eingaben fuer XXKEY
          +function baseKeyUp(_event)
          +{
          +  if(XXKEYOBJ != null) {
          +    if(window.event) {
          +      keynum = window.event.keyCode;
          +    } else {
          +      keynum = _event.which;
          +    }
          +    if(keynum == 16) {
          +      XXKEYSHIFT = false;
          +    }
          +    if(keynum == 20) {
          +      if(XXKEYSHIFT) {
          +        XXKEYSHIFT = false;
          +      } else {
          +        XXKEYSHIFT = true;
          +      }
          +    }
          +    if((keynum > 31) && (keynum < 127)) {
          +      if((keynum >64) && (keynum <95) && (XXKEYSHIFT == false)) {
          +          keynum = keynum + 32;
          +      } else {
          +        if((keynum < 65) && (XXKEYSHIFT == true)) {
          +          keynum = keynum - 16;
          +        }
          +      }
          +      var sUrl = "id=" + String(XXKEYOBJ.id) + "&val=" + String(keynum);
          +      doSetzeWert(sUrl);
          +    } 
          +    
          +    return false;
          +  } 
          +}
          +
          +
           // Klick auf Hintergrund abfangen
           function bgClick(_event)
           {
          @@ -1250,6 +1325,137 @@
           }
           
           
          +// -----------------------------------------------------
          +// XX Functions
          +// -----------------------------------------------------
          +
          +function checkXXfunctions(item) {
          +
          +      // ***********************************************************************************
          +      //      XXHTTP*KNX-USER_FORUM*https://knx-user-forum.de:
          +      //      öffnet einen Link im neuen Fenster
          +      //      Die URL kann auch in der Form HSLIST:archivname erfolgen 
          +      //      um ein Archiv anzuzeigen
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXHTTP*") == 0) 
          +      {
          +        item.txt=item.txt.substr(7,item.txt.length);
          +        XXHTTPURL = item.txt.substr(item.txt.indexOf("*")+1,item.txt.length);
          +        // Wenn URL mit HSLIST: beginnt öffne Archiv
          +        if(XXHTTPURL.indexOf("HSLIST:") == 0)
          +        {
          +          XXHTTPURL = "/hslist?lst=" + XXHTTPURL.substr(7,XXHTTPURL.length) + "&user=" + loginData.user + "&pw=" + loginData.pw;
          +        }
          +        item.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXHTTPWin=window.open('/opt/redirect.htm?" + XXHTTPURL + "','XXHTTP');\">" +item.txt.substr(0,item.txt.indexOf("*")) + "</div>";
          +      }
          +      // ***********************************************************************************
          +      //      XXLINK*KNX-USER_FORUM*https://knx-user-forum.de
          +      //      öffnet einen Link in einem vorher definierten XXIFRAME
          +      //      Die URL kann auch in der Form HSLIST:archivname erfolgen 
          +      //      um ein Archiv anzuzeigen
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXLINK*") == 0) 
          +      {
          +        item.txt=item.txt.substr(7,item.txt.length);
          +        XXHTTPURL = item.txt.substr(item.txt.indexOf("*")+1,item.txt.length);
          +        // Wenn URL mit HSLIST: beginnt öffne Archiv
          +        if(XXHTTPURL.indexOf("HSLIST:") == 0)
          +        {
          +          XXHTTPURL = "/hslist?lst=" + XXHTTPURL.substr(7,XXHTTPURL.length) + "&user=" + loginData.user + "&pw=" + loginData.pw;
          +        }
          +        item.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXLINKURL='/opt/redirect.htm?" +XXHTTPURL + "';\">" +item.txt.substr(0,item.txt.indexOf("*")) + "</div>";
          +      }
          +      
          +
          +      // ***********************************************************************************
          +      //      XXKEY*
          +      //      Ein Textelement mit Statischem Text und Aktion: Werteingabe öffnen
          +      //      als Kommunikationsobjekt für die Werteingabe ein 8-Bit (0..255)EIS 2,6)
          +      //      Jetzt werden die Keycodes der Tastatureingaben an dieses Objekt
          +      //      gesendet. 
          +      // ***********************************************************************************
          +      if((item.txt.indexOf("XXKEY*") == 0) && (item.typ == 9)){
          +          XXKEYOBJ = item;
          +      }
          +
          +
          +      // ***********************************************************************************
          +      //      XXIMG*url
          +      //      Zeigt ein beliebiges Bild in der Grösse des Textfeldes dar.
          +      //      kann auch dynamisch sein
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXIMG*") == 0) {
          +        item.txt="<img src=\"" + item.txt.substr(6,item.txt.length) + "\" alt=\"IMAGE\" width=" + item.w + " height=" + item.h + " >";
          +      }
          +
          +
          +      // ***********************************************************************************
          +      //      XXHTML*<span style="color: red;">some red Text</span>
          +      //      Darstellung von beliebigem HTML Code
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXHTML*") == 0) {
          +        item.txt=item.txt.substr(7,item.txt.length);
          +        item.txt=item.txt.replace(/\[/g, "<");
          +        item.txt=item.txt.replace(/=\?/g, "=\"");
          +        item.txt=item.txt.replace(/\? /g, "\" ");
          +        item.txt=item.txt.replace(/\?\]/g, "\">");
          +        item.txt=item.txt.replace(/\]/g, ">");
          +      }
          +
          +
          +      // ***********************************************************************************
          +      //      XXIFRAME*
          +      //      Ein Textelement dessen Grösse als iframe für den XXLINK genutzt wird.
          +      //      Optional kann ein Link angegben werden.
          +      //      XXIFRAME*http://somewhere/maybe/an/activexapl...n/an/html/page
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXIFRAME*") == 0) {
          +        item.txt=item.txt.substr(9,item.txt.length);
          +        XXIFRAMEURL=item.txt.substr(item.txt.indexOf("*")+1,item.txt.length);
          +        if(XXIFRAMEURL == "") {
          +          item.txt="<iframe src=\"" + XXLINKURL + "\" width=" + item.w + " height=" + item.h + " >";
          +        } else {
          +          item.txt="<iframe src=\"/opt/redirect.htm?" + XXIFRAMEURL + "\" width=" + item.w + " height=" + item.h + " >";
          +        }
          +      }
          +      
          +      
          +      // ***********************************************************************************
          +      //      XXTRIGGER*
          +      //      löst automatisch beim aufbau der seite aus.
          +      //      Ideal als Counter für Seiten ;-) einfach als Befehl iko schritt+
          +      //      und das TEXTobjekt irgendwo auf der seite plazieren.(Wird nicht angezeigt)        
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXTRIGGER*") == 0) {
          +        delay = parseInt(item.txt.substr(10,item.txt.length)) * 1000;
          +        item.txt="";
          +        if(delay > 0) {
          +          window.setTimeout("doCmd(item)", delay);
          +        } else {
          +          doCmd(item);
          +        }
          +      }      
          +
          +
          +      // ***********************************************************************************
          +      //      XXINACTIVE*120
          +      //      führt die Aktion(z.B.: Seite aufrufen) nach 120sec inaktivität aus
          +      // ***********************************************************************************
          +      if(item.txt.indexOf("XXINACTIV*") == 0) {
          +        XXINACTIVDELAY = parseInt(item.txt.substr(10,item.txt.length)) * 1000;
          +        item.txt="";
          +        XXINACTIVOBJ = item;
          +        XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
          +      }
          +      return item;
          +}
          +
          +
          +
          +
          +
          +
          +
           // ----------------------------------------------------------------------------
           // Visu
           // ----------------------------------------------------------------------------
          @@ -1268,6 +1474,8 @@
                     var item=aVisu[npos];
                     item.txt=getXmlAttr(aRes[0],"txt");
                     if (item.handle!=null) {
          +              // CHECK for XX Functions
          +              item=checkXXfunctions(item);
                       item.handle.innerHTML=item.txt;
                     }
                   }
          @@ -1834,6 +2042,10 @@
                 aVisuItem.txt=getXmlAttr(aRes[0],"txt");
                 aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
                 aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
          +      
          +      //check for XX Functions
          +      aVisuItem=checkXXfunctions(aVisuItem);
          +      
                 aItems.push(aVisuItem);
               }
               else if (aRes[0].substr(0,3)=="BOX")
          @@ -2007,9 +2224,33 @@
           
             // XML-Request initialisieren
             initXmlHttp();
          +  // XX Functions
          +  // Key Events abfangen
          +  var ua = navigator.userAgent;
          +  if(ua.indexOf("MSIE") >=0)
          +  {
          +    document.getElementsByTagName("body")[0].onkeyup=baseKeyUp;
          +    document.getElementsByTagName("body")[0].onkeydown=baseKeyDown;
          +  }
          +  else
          +  {
          +    if (window.addEventListener)
          +    {
          +      window.addEventListener("keyup", baseKeyUp ,false);
          +      window.addEventListener("keydown", baseKeyDown ,false);
          +    }
          +    else if (document.attachEvent)
          +    {
          +      document.attachEvent("onkeyup",baseKeyUp);
          +      document.attachEvent("onkeydown",baseKeyDown);
          +    }
          +  }
          +  
           
             // HTML-Framework
             base = document.getElementById("xbase");
          +  // XX Function INACTIVITY
          +  base.onmousemove = baseMouseMove;
             mark = document.getElementById("xmark");
             reconnect = document.getElementById("xreconnect");  
             reconnect.onclick = clickReconnect;
          viel Spass

          FEEDBACK erwünscht
          Nils

          aktuelle Bausteine:
          BusAufsicht - ServiceCheck - Pushover - HS-Insight

          Kommentar


            #80
            Auto Update

            Mir ist gerade die Idee gekommen diese ganzen Funktionen als ein 14Byte Text iko zu Speichern.

            Idee wäre:

            Der Teil des Javascripts der die Funktionen enthällt liegt auf einem Webserver in base64 encodiert(damit Sonderzeichen wie " und <,> nicht verändert werden) bereitzustellen. Dort könnte der Code Zentral aktuell gehalten werden.
            Der codierte Code wird mit einer Webabfrage in ein iKO geladen.
            Die StartVisuSeite würde ein XXFUNCTIONS* Textfeld enthalten.
            Das ajax.js würde den Base64 codierten Teil decodieren und ein script element mit den Funktionen bereitstellen.

            Vorteil:
            Kein HS neustarten mehr um die neueste Version zu haben.
            Eine Zentral verwaltete XXFunctions.js.
            Nils

            aktuelle Bausteine:
            BusAufsicht - ServiceCheck - Pushover - HS-Insight

            Kommentar


              #81
              Zitat von NilsS Beitrag anzeigen
              Mithilfe egal welcher Art ist immer Willkommen.
              Auch Betatester oder Gastzugänge mit Funktionen sind prima.
              Erste Bilder meiner neuen News-Seite. Es kann auch getestet werden. Der Zugang ist offen.

              für Deine Arbeit

              Kommentar


                #82
                Hallo Zusammen

                welchen Browser benutzt Ihr für die modifizierte Ajax.


                Gruss
                Tschappli
                Gruss
                Tschappli

                Kommentar


                  #83
                  @Michel38

                  Hallo,

                  absolut . Wie hast Du denn das so umgesetzt??? Ich verstehe nur Bahnhof...

                  Gruss Jan
                  Installation:
                  HS2, BIQ+RTR, DALI-GW GE141, Visu über 19" u. 15" Touch, Gira MT701CT, Russound CAV6.6, Dreambox 7020S, iPhone, iPad, Nomos

                  Kommentar


                    #84
                    @ Surfikus

                    Warte noch ein wenig ich bin gerade dabei Die einzelnen Dateien von NilsS in ein Musterprojekt zu importieren, welches Du dann importieren kannst.
                    Dort sollten dann auch die geänderten Ajax Dateien mit dabei sein.
                    Vielleicht wird es dann verständlicher.

                    Kommentar


                      #85
                      Das Musterprojekt von Nils habe ich auch schon benutzt und kapiert, nur wie Michel38 das umgesetzt hat mit den ganzen Links und Bildern - einfach klasse.

                      Gruss Jan


                      P.S. Für Demovisus bin ich aber immer offen, ist zum besseren Verstehen manchmal Gold wert :-)
                      Installation:
                      HS2, BIQ+RTR, DALI-GW GE141, Visu über 19" u. 15" Touch, Gira MT701CT, Russound CAV6.6, Dreambox 7020S, iPhone, iPad, Nomos

                      Kommentar


                        #86
                        @Micha

                        Nette Visu, besonders die im Quad-Design. 3-Tage-Wettervorhersage für Wien ist auch ganz praktisch, bin am Wochenende dort :-)

                        Die XX-Geschichten funktionieren bei mir aus der Ferne leider nicht.
                        Gruß Matthias
                        EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                        - PN nur für PERSÖNLICHES!

                        Kommentar


                          #87
                          Zitat von MatthiasS Beitrag anzeigen
                          Die XX-Geschichten funktionieren bei mir aus der Ferne leider nicht.
                          Das funzt gleich bestimmt
                          Er hat nur noch das "alte" Trennzeichen mit der neuen ajax.js
                          Nils

                          aktuelle Bausteine:
                          BusAufsicht - ServiceCheck - Pushover - HS-Insight

                          Kommentar


                            #88
                            Wenn man diese nachgebauten Quad-Visus sieht, dann fragt man sich schon, was GIRA geritten hat, das zweifelsohne attraktive Design nicht in die bestehende Visu-Struktur zu integrieren, sondern diesen unsaglichen Quad-Client in Auftrag zu geben.

                            Offensichtlich findet das Design ja großen Anklang, nur ist es eben im QC nicht nutzbar, weil der als Visu einfach untauglich ist: Haarstraubende usability-Fehler (Rot-Grün-Thematik), funktionale Schwachen (Statuszeile, Player) und designgeschuldete VerSchmitzungen (bitte mal versuchen, das Wort "Außentemperatur" in der Wetterstation anzulegen).

                            Stellt euch mal vor, man hatte einen integrierten Generator für diese Visuelemente im HS-Experte und die Möglichkeit, Frames einzurichten!

                            DAS ware ein Fortschritt gewesen. Was wir jetzt haben ist jahrelanger Stillstand für Mannervisus und nach Gira-Politik zusatzlich einen Ersatz für das Menü (also für etwas, was man und Mann ohnehin nie brauchte).
                            Gruß Matthias
                            EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                            - PN nur für PERSÖNLICHES!

                            Kommentar


                              #89
                              Zitat von MatthiasS Beitrag anzeigen
                              HS-Experte und die Möglichkeit, Frames einzurichten!
                              Das ist eine meiner Haupt Prioritäten ist bereits im Versuch (XXMODUL)
                              klappt aber leider nicht so wie gedacht.

                              Es arbeitet ähnlich wie XXPOPUP indem es eine neue Seite aufruft ohne die alte zu löschen. Jedoch kann ich dann nur noch die Schaltflächen der darauf projezierten Seite klicken. Alternative Lösung die Bereits jetzt ginge
                              XXIFRAME*http://meinhs/opt/hsav/wetterstation.htm einbinden. Die eine Weitere HSAV visu mit XXPAGE begrenzter Grösse und einem User mit anderer Startseite einbindet.
                              Nils

                              aktuelle Bausteine:
                              BusAufsicht - ServiceCheck - Pushover - HS-Insight

                              Kommentar


                                #90
                                Zitat von MatthiasS Beitrag anzeigen
                                @Micha

                                Nette Visu, besonders die im Quad-Design. 3-Tage-Wettervorhersage für Wien ist auch ganz praktisch, bin am Wochenende dort :-)
                                Na dann wünsche ich Dir viel Spass in Wien!

                                Ich glaube fast das wir Deutschen fast halb Wien in Besitz haben.... :-))


                                @ NilsS

                                Ja wie recht du hast. Habe die Trennzeichen schon geandert.....

                                Kommentar

                                Lädt...
                                X