Ankündigung

Einklappen
Keine Ankündigung bisher.

Modifikationen Ajax.js

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

  • michel38
    antwortet
    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

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    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.

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    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

    Einen Kommentar schreiben:


  • Dundi
    antwortet
    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.

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    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.

    Einen Kommentar schreiben:


  • MatthiasS
    antwortet
    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!

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Zitat von HartmutB Beitrag anzeigen
    Es läuft uns ja nichts weg, wäre es nicht sinnvoller, wenn wir uns erst einmal (gemeinsam !) Gedanken machen würden, was wir überhaupt brauchen bzw. gerne hätten, wie wir das vielleicht strukturieren (also Namen der Tags, Trennzeichen, usw.), was welche Priorität haben sollte (weils halt mehr brennt) und wer ggf. was macht.
    Ich weiß ja nicht wie das mit deiner Zeit ist aber ich hab da nur jetzt ein bisschen Luft.

    Ich habe zu diesen Zweck "Gedanken machen" diesen Thread vor 4 Monaten eröffnet und es ist nicht viel gekommen, oder??

    Auch zu Trennzeichen ist keine große Beteiligung zu spüren gewesen ausser von makki.

    wer was mach ?? was fällt dir denn jetzt noch ein was dir fehlt??

    Dann beim Programmieren vielleicht erst mal machen, eine Nacht reifen lassen, erneut drüberschauen, jemand anderen drüber schauen lassen und dann hier zur Diskussion stellen. Dann wird es automatisch ausgereifter und man muss nicht öffentlich nachbessern oder der Early-Bird gar wieder "patchen". Ich habe z.B. schon aufgegeben, Deine immer neuen Erweiterungen nachzuvollziehen.
    Ich habe das, da ja keine Beteiligung kam, für mich gemacht und nur die anderen daran teilhaben lassen.



    Ich will Dich bestimmt nicht abwürgen, aber das Vorgehen wie oben beschrieben wäre meiner Meinung nach sinnvoller, sonst bleibt es wieder nur ein "Spezi-Kram" und nur die Wenigsten werden folgen. Und eine Dokumentation (zumindest eine verfünftige Liste aller Befehle mit Optionen) sollte absolute Pflicht sein.
    Ich sagte ja das "DAS" für mich gemacht habe. Wenn DU dazu Lust hast,
    kannst Du ja ne Doku schreiben (ich habe übrigens bereits eine mit mini Doku hier aus dem Thread. Aber auch das nur zum Spass)

    Nicht falsch verstehen oder ärgern, aber ich hoffe, so entwickelt Ihr sonst keine Software ...
    Ich entwickel sonst keine Software, ausserdem ist das hier keine Software sondern allenfalls ein HACK. Software kann von Dacom kommen, die da Cash für kiregen. Ich hab nur die Sachen nachgerüstet die ICH und Andere brauchten. Nach dem Motto "..kannst du mal kurz..."

    auch nicht falsch verstehen aber wenn erst solche Fragen kommen wenns eigentlich fertig ist, dann kann man es sich auch sparen

    Einen Kommentar schreiben:


  • HartmutB
    antwortet
    Hallo Nils,

    ich weiß ehrlicherweise nicht mehr so ganz, ob ich Angst wegen Deinen monentan (offensichtlich) hohen Adrenalinpegels und Tatendrangs haben muss oder die Begeisterung überwiegt .

    Dein Entwicklerdrang ist echt phanomenal, aber ehlicherweise ist es im Moment IMHO auch ein wenig "chaotisch". Es lauft uns ja nichts weg, ware es nicht sinnvoller, wenn wir uns erst einmal (gemeinsam !) Gedanken machen würden, was wir überhaupt brauchen bzw. gerne hatten, wie wir das vielleicht strukturieren (also Namen der Tags, Trennzeichen, usw.), was welche Prioritat haben sollte (weils halt mehr brennt) und wer ggf. was macht.
    Dann beim Programmieren vielleicht erst mal machen, eine Nacht reifen lassen, erneut drüberschauen, jemand anderen drüber schauen lassen und dann hier zur Diskussion stellen. Dann wird es automatisch ausgereifter und man muss nicht öffentlich nachbessern oder der Early-Bird gar wieder "patchen". Ich habe z.B. schon aufgegeben, Deine immer neuen Erweiterungen nachzuvollziehen.


    Ich will Dich bestimmt nicht abwürgen, aber das Vorgehen wie oben beschrieben ware meiner Meinung nach sinnvoller, sonst bleibt es wieder nur ein "Spezi-Kram" und nur die Wenigsten werden folgen. Und eine Dokumentation (zumindest eine verfünftige Liste aller Befehle mit Optionen) sollte absolute Pflicht sein.

    Nicht falsch verstehen oder argern, aber ich hoffe, so entwickelt Ihr sonst keine Software ...


    Gruß
    Hartmut

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Vielleicht gehts gleich los

    Vielleicht gibts ja gleich schon Downloads

    DACOM Database Computing GmbH - HomeAutomation - Bordcomputer fr Gebude

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Zitat von makki Beitrag anzeigen
    Stimmt, ~ ist zwar selten aber wohl erlaubt. ich hab mir jetzt mal die RFC3986 als morgenlektüre zurechtgelegt, brauchbare Ideen sind bei mir wohl für heute erschöpft
    So ich hab dann auch mal bischen da drin gelesen
    also "*" ist als reserviert gelistet kann ja auch keiner ne Datei mit dem Namen erstellen , löschen der Diesiegen geht zwar , aber nicht mit dem gewünschten Erfolg.

    Also ich denke der * ist auch für die Linknamen nicht wirklich wichtig .

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Ich hab mal den Logikbaustein ChrToASCII von Dacom in
    ASCIIToChr geändert und als 12231_ASCIItoChr.hsl erstellt.

    Vielleicht kann mal einer von den Logik Profi's drüberschauen.

    Code:
    ###   ASCIIToChr   ###
    #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
    #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
    #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
    #5003|Speicher|Initwert|Remanent
    #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
    #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
    5000|"Wandler\ASCIIToChr"|1|1|"E1 ASCII"|1|"A1 Chr"
    5001|1|1|0|0|0      
    5002|1|0|0     # Eingang  1, ASCII-Code 
    5004|1|""|0|1|1      # Ausgang 1,  Chr
     
    #######################  Definition der Funktion   ############################# 
    5012|1|"EC[1]"|"chr(EN[1])"|""|1|0|0|0

    UPDATE:
    XXKEY;
    läuft jetzt eigentlich ganz OK hab mir auf der Visu nur mal einen Buchstaben angeschaut. Die Geschwindigkeit ist lahm aber mindest genauso schnell wie die Bildschirmtastatur. Bis jetzt fehlt noch eine Sperre fürs zu schnelle tippen damit die Visu nicht abschmiert

    Code:
    --- ajax-orig.js Wed Jun 11 11:59:34 2008
    +++ ajax.js Tue Apr 21 14:29:15 2009
    @@ -39,6 +39,12 @@
     hs_connected = 0;
     isBusy=0;
     xmlhttp = null;
    +XXLINKURL = "";
    +XXINACTIVDELAY = 0;
    +XXINACTIVOBJ = null;
    +XXINACTIVTIMER = null;
    +XXKEYOBJ = null;
    +XXKEYSHIFT = false;
     
     // Markierung
     markImg = null
    @@ -1065,6 +1071,64 @@
     
     mouseClickItem = null;
     
    +function baseMouseMove(_event)
    +{
    +  if(XXINACTIVOBJ != null) {
    +    if(XXINACTIVTIMER != null) {
    +      window.clearTimeout(XXINACTIVTIMER);
    +    }
    +    XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
    +  }
    +
    +}
    +function baseKeyDown(_event)
    +{
    +  if(window.event) {
    +    keynum = window.event.keyCode;
    +  } else {
    +    keynum = _event.which;
    +  }
    +  if(keynum == 16) {
    +    XXKEYSHIFT = true;
    +  }
    +  return false;
    +
    +}
    +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)
     {
    @@ -1268,6 +1332,48 @@
               var item=aVisu[npos];
               item.txt=getXmlAttr(aRes[0],"txt");
               if (item.handle!=null) {
    +              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>";
    +              } 
    +              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>";
    +              }
    +              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 + " >";
    +                }
    +              }
    +              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);
    +                }
    +              }      
    +            
    +              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 + " >";
    +              }  
    +
    +
                 item.handle.innerHTML=item.txt;
               }
             }
    @@ -1834,6 +1940,69 @@
           aVisuItem.txt=getXmlAttr(aRes[0],"txt");
           aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
           aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
    +      if(aVisuItem.txt.indexOf("XXHTTP;") == 0) 
    +      {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        XXHTTPURL = aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.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;
    +        }
    +        aVisuItem.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXHTTPWin=window.open('/opt/redirect.htm?" + XXHTTPURL + "','XXHTTP');\">" +aVisuItem.txt.substr(0,aVisuItem.txt.indexOf(";")) + "</div>";
    +      }
    +      if(aVisuItem.txt.indexOf("XXLINK;") == 0) 
    +      {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        XXHTTPURL = aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.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;
    +        }
    +        aVisuItem.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXLINKURL='/opt/redirect.htm?" +XXHTTPURL + "';\">" +aVisuItem.txt.substr(0,aVisuItem.txt.indexOf(";")) + "</div>";
    +      }
    +      if((aVisuItem.txt.indexOf("XXKEY;") == 0) && (aVisuItem.typ == 9)){
    +          XXKEYOBJ = aVisuItem;
    +      }
    +      if(aVisuItem.txt.indexOf("XXIMG;") == 0) {
    +        aVisuItem.txt="<img src=\"" + aVisuItem.txt.substr(6,aVisuItem.txt.length) + "\" alt=\"IMAGE\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +      }  
    +      if(aVisuItem.txt.indexOf("XXHTML;") == 0) {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        aVisuItem.txt=aVisuItem.txt.replace(/\[/g, "<");
    +        aVisuItem.txt=aVisuItem.txt.replace(/=\?/g, "=\"");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\? /g, "\" ");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\?\]/g, "\">");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\]/g, ">");
    +      }  
    +      if(aVisuItem.txt.indexOf("XXIFRAME;") == 0) {
    +        aVisuItem.txt=aVisuItem.txt.substr(9,aVisuItem.txt.length);
    +        XXIFRAMEURL=aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.txt.length);
    +        if(XXIFRAMEURL == "") {
    +          aVisuItem.txt="<iframe src=\"" + XXLINKURL + "\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +        } else {
    +          aVisuItem.txt="<iframe src=\"/opt/redirect.htm?" + XXIFRAMEURL + "\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +        }
    +      }  
    +      if(aVisuItem.txt.indexOf("XXTRIGGER;") == 0) {
    +        delay = parseInt(aVisuItem.txt.substr(10,aVisuItem.txt.length)) * 1000;
    +        aVisuItem.txt="";
    +        if(delay > 0) {
    +          window.setTimeout("doCmd(aVisuItem)", delay);
    +        } else {
    +          doCmd(aVisuItem);
    +        }
    +      }      
    +      
    +      if(aVisuItem.txt.indexOf("XXINACTIV;") == 0) {
    +        XXINACTIVDELAY = parseInt(aVisuItem.txt.substr(10,aVisuItem.txt.length)) * 1000;
    +        aVisuItem.txt="";
    +        XXINACTIVOBJ = aVisuItem;
    +        XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
    +      }
    +
    +
           aItems.push(aVisuItem);
         }
         else if (aRes[0].substr(0,3)=="BOX")
    @@ -2008,8 +2182,29 @@
       // XML-Request initialisieren
       initXmlHttp();
       
    +  // Grab Keys
    +  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");
    +  base.onmousemove = baseMouseMove;
       mark = document.getElementById("xmark");
       reconnect = document.getElementById("xreconnect");  
       reconnect.onclick = clickReconnect;

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Solange noch keine GPL Version da ist,
    weiterhin Diffs

    Neue Funktion (beta):
    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.




    Code:
    --- ajax-orig.js Wed Jun 11 11:59:34 2008
    +++ ajax.js Tue Apr 21 11:50:33 2009
    @@ -39,6 +39,11 @@
     hs_connected = 0;
     isBusy=0;
     xmlhttp = null;
    +XXLINKURL = "";
    +XXINACTIVDELAY = 0;
    +XXINACTIVOBJ = null;
    +XXINACTIVTIMER = null;
    +XXKEYOBJ = null;
     
     // Markierung
     markImg = null
    @@ -1065,6 +1070,31 @@
     
     mouseClickItem = null;
     
    +function baseMouseMove(_event)
    +{
    +  if(XXINACTIVOBJ != null) {
    +    if(XXINACTIVTIMER != null) {
    +      window.clearTimeout(XXINACTIVTIMER);
    +    }
    +    XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
    +  }
    +
    +}
    +function baseKeyDown(_event)
    +{
    +  if(XXKEYOBJ != null) {
    +    if(window.event) {
    +      keynum = _event.keyCode;
    +    } else {
    +      keynum = _event.which;
    +    }
    +    var sUrl = "id=" + String(XXKEYOBJ.id) + "&val=" + String(keynum);
    +    doSetzeWert(sUrl);
    +    return false;
    +  } 
    +}
    +
    +
     // Klick auf Hintergrund abfangen
     function bgClick(_event)
     {
    @@ -1268,6 +1298,48 @@
               var item=aVisu[npos];
               item.txt=getXmlAttr(aRes[0],"txt");
               if (item.handle!=null) {
    +              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>";
    +              } 
    +              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>";
    +              }
    +              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 + " >";
    +                }
    +              }
    +              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);
    +                }
    +              }      
    +            
    +              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 + " >";
    +              }  
    +
    +
                 item.handle.innerHTML=item.txt;
               }
             }
    @@ -1834,6 +1906,69 @@
           aVisuItem.txt=getXmlAttr(aRes[0],"txt");
           aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
           aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
    +      if(aVisuItem.txt.indexOf("XXHTTP;") == 0) 
    +      {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        XXHTTPURL = aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.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;
    +        }
    +        aVisuItem.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXHTTPWin=window.open('/opt/redirect.htm?" + XXHTTPURL + "','XXHTTP');\">" +aVisuItem.txt.substr(0,aVisuItem.txt.indexOf(";")) + "</div>";
    +      }
    +      if(aVisuItem.txt.indexOf("XXLINK;") == 0) 
    +      {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        XXHTTPURL = aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.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;
    +        }
    +        aVisuItem.txt="<div style=\"width: 100%;height: 100%;cursor: hand;\" onclick=\"XXLINKURL='/opt/redirect.htm?" +XXHTTPURL + "';\">" +aVisuItem.txt.substr(0,aVisuItem.txt.indexOf(";")) + "</div>";
    +      }
    +      if((aVisuItem.txt.indexOf("XXKEY;") == 0) && (aVisuItem.typ == 9)){
    +          XXKEYOBJ = aVisuItem;
    +      }
    +      if(aVisuItem.txt.indexOf("XXIMG;") == 0) {
    +        aVisuItem.txt="<img src=\"" + aVisuItem.txt.substr(6,aVisuItem.txt.length) + "\" alt=\"IMAGE\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +      }  
    +      if(aVisuItem.txt.indexOf("XXHTML;") == 0) {
    +        aVisuItem.txt=aVisuItem.txt.substr(7,aVisuItem.txt.length);
    +        aVisuItem.txt=aVisuItem.txt.replace(/\[/g, "<");
    +        aVisuItem.txt=aVisuItem.txt.replace(/=\?/g, "=\"");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\? /g, "\" ");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\?\]/g, "\">");
    +        aVisuItem.txt=aVisuItem.txt.replace(/\]/g, ">");
    +      }  
    +      if(aVisuItem.txt.indexOf("XXIFRAME;") == 0) {
    +        aVisuItem.txt=aVisuItem.txt.substr(9,aVisuItem.txt.length);
    +        XXIFRAMEURL=aVisuItem.txt.substr(aVisuItem.txt.indexOf(";")+1,aVisuItem.txt.length);
    +        if(XXIFRAMEURL == "") {
    +          aVisuItem.txt="<iframe src=\"" + XXLINKURL + "\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +        } else {
    +          aVisuItem.txt="<iframe src=\"/opt/redirect.htm?" + XXIFRAMEURL + "\" width=" + aVisuItem.w + " height=" + aVisuItem.h + " >";
    +        }
    +      }  
    +      if(aVisuItem.txt.indexOf("XXTRIGGER;") == 0) {
    +        delay = parseInt(aVisuItem.txt.substr(10,aVisuItem.txt.length)) * 1000;
    +        aVisuItem.txt="";
    +        if(delay > 0) {
    +          window.setTimeout("doCmd(aVisuItem)", delay);
    +        } else {
    +          doCmd(aVisuItem);
    +        }
    +      }      
    +      
    +      if(aVisuItem.txt.indexOf("XXINACTIV;") == 0) {
    +        XXINACTIVDELAY = parseInt(aVisuItem.txt.substr(10,aVisuItem.txt.length)) * 1000;
    +        aVisuItem.txt="";
    +        XXINACTIVOBJ = aVisuItem;
    +        XXINACTIVTIMER = window.setTimeout("doCmd(XXINACTIVOBJ)", XXINACTIVDELAY);
    +      }
    +
    +
           aItems.push(aVisuItem);
         }
         else if (aRes[0].substr(0,3)=="BOX")
    @@ -2008,8 +2148,26 @@
       // XML-Request initialisieren
       initXmlHttp();
       
    +  // Grab Keys
    +  var ua = navigator.userAgent;
    +  if(ua.indexOf("MSIE") >=0)
    +  {
    +    document.getElementsByTagName("body")[0].onkeydown=baseKeyDown;
    +  }
    +  else
    +  {
    +    if (window.addEventListener)
    +    {
    +      window.addEventListener("keydown", baseKeyDown ,false);
    +    }
    +    else if (document.attachEvent)
    +    {
    +      document.attachEvent("onkeydown",baseKeyDown);
    +    }
    +  }
       // HTML-Framework
       base = document.getElementById("xbase");
    +  base.onmousemove = baseMouseMove;
       mark = document.getElementById("xmark");
       reconnect = document.getElementById("xreconnect");  
       reconnect.onclick = clickReconnect;

    Einen Kommentar schreiben:


  • NilsS
    antwortet
    Klasse.

    Dann gibts ja auch bald was in unserem Downloadbereich.

    Einen Kommentar schreiben:


  • MatthiasS
    antwortet
    Information von Dacom

    Wir werden alle js-Dateien als open source unter die GPL V3 stellen.

    Es bezieht sich auf die AV (HSAjaxVisu), PV (PocketVisu) und RV (RemoteVisu) von uns, sowie die PV von Gira.

    Dazu haben wir im Header der Dateien eine Erganzung vorgenommen.

    Neben den o.g. Setups werden wir alle js-Dateien in einer Zip-Datei zusammenfassen und auf unserer Homepage zur Verfügung stellen.
    Die Gira-PV wird bei Gira gehostet.

    Nur diese zip-Datei und die Setups werden von uns gepflegt und supported.

    Wir werden jede Änderung in den js-Dateien in einer History zu der zip-Datei mitführen.

    Bei jeder Änderung können wir Dir einen Hinweis geben.

    Umfang des Open Source sind nicht die Grafiken etc., die Umfang der Setups sind.

    Wir planen die Version diese Woche noch bei uns zu hosten.

    Einen Kommentar schreiben:


  • makki
    antwortet
    Stimmt, ~ ist zwar selten aber wohl erlaubt. ich hab mir jetzt mal die RFC3986 als morgenlektüre zurechtgelegt, brauchbare Ideen sind bei mir wohl für heute erschöpft

    Makki

    Einen Kommentar schreiben:

Lädt...
X