X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Feuphorik.js;h=4b76b93a5fff367cc39989334bcf9d5fe123fa2d;hp=8487f776b7a483a387839202d146d193ce2c9a63;hb=42445687d95289c3c3f70e1e8d76278107a8b125;hpb=2a5789043322637604619c0b400499aa8c67fcaf diff --git a/js/euphorik.js b/js/euphorik.js index 8487f77..4b76b93 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -53,11 +53,12 @@ String.prototype.rtrim = function() return this.replace(/\s+$/, ""); } -String.prototype.dump = function() -{ +String.prototype.dump = function(titre) +{ + titre = titre == undefined ? "" : titre if (typeof dump != "undefined") { - dump("\n--- EUPHORIK.CH ---\n") + dump("\n--- EUPHORIK.CH : " + titre + " ---\n") dump(this) dump("\n------\n") } @@ -123,25 +124,29 @@ Util.prototype.serializeXML = function(documentXML) return documentXML.xml } +var documentXMLBase = undefined // singleton Util.prototype.creerDocumentXMLAction = function() -{ - if (document.implementation && document.implementation.createDocument) - { - // var doc = document.implementation.createDocument("", "action", null) - var parser = new DOMParser(); - var doc = parser.parseFromString("\n", "text/xml") - //alert(this.serializeXML(doc)) - return doc - } - else if (window.ActiveXObject) +{ + // FIXME : essayer de garder le doc de base en cache (singleton) et d'en retourner une copie + if (true)//documentXMLBase == undefined) { - var doc = new ActiveXObject("MSXML2.DOMDocument") //("Microsoft.XMLDOM") - doc.appendChild(doc.createElement("action")); - //doc.loadXML("") - //alert(doc.documentElement) - //doc.createElement("action") - return doc - } + if (document.implementation && document.implementation.createDocument) + { + // var doc = document.implementation.createDocument("", "action", null) + var parser = new DOMParser(); + documentXMLBase = parser.parseFromString("\n", "text/xml") + //alert(this.serializeXML(doc)) + } + else if (window.ActiveXObject) + { + documentXMLBase = new ActiveXObject("MSXML2.DOMDocument") //("Microsoft.XMLDOM") + documentXMLBase.appendChild(doc.createElement("action")); + //doc.loadXML("") + //alert(doc.documentElement) + //doc.createElement("action") + } + } + return documentXMLBase } Util.prototype.xmlVersAction = function(xml) @@ -298,7 +303,7 @@ Formateur.prototype.traitementComplet = function(M, pseudo) } /** - * FIXME : Cette méthode est attrocement lourde !! + * FIXME : Cette méthode est attrocement lourde ! A optimiser. */ Formateur.prototype.traiterSmiles = function(M) { @@ -434,21 +439,43 @@ Client.prototype.setCss = function(css) } Client.prototype.pageSuivante = function(numConv) +{ + if (numConv < 0 && this.pagePrincipale > 1) + this.pagePrincipale -= 1 + else if (this.conversations[numConv].page > 1) + this.conversations[numConv].page -= 1 + this.flush(false) +} + +Client.prototype.pagePrecedente = function(numConv) { if (numConv < 0) this.pagePrincipale += 1 - else + else this.conversations[numConv].page += 1 this.flush(false) } -Client.prototype.pagePrecedente = function(numConv) +/** + * Définit la première page pour la conversation donnée. + * @return true si la page a changé sinon false + */ +Client.prototype.goPremierePage = function(numConv) { if (numConv < 0) - this.pagePrincipale -= 1 - else - this.conversations[numConv].page -= 1 + { + if (this.pagePrincipale == 1) + return false + this.pagePrincipale = 1 + } + else + { + if (this.conversations[numConv].page == 1) + return false + this.conversations[numConv].page = 1 + } this.flush(false) + return true } /** @@ -551,6 +578,10 @@ Client.prototype.getXMLEnregistrement = function(login, password) return XMLDocument } +/** + * Sérialize le profile en XML. + * TODO : méthode assez lourde, 3.25ms de moyenne + */ Client.prototype.getXMLProfile = function() { var XMLDocument = this.util.creerDocumentXMLAction() @@ -581,7 +612,7 @@ Client.prototype.getXMLProfile = function() XMLDocument.documentElement.appendChild(nodeCSS) var nodePagePrincipale = XMLDocument.createElement("pagePrincipale") - nodePagePrincipale.appendChild(XMLDocument.createTextNode(this.pagePrincipale)) + nodePagePrincipale.appendChild(XMLDocument.createTextNode(this.pagePrincipale < 1 ? 1 : this.pagePrincipale)) XMLDocument.documentElement.appendChild(nodePagePrincipale) // mémorise les conversations affichées @@ -729,7 +760,7 @@ Client.prototype.connexion = function(action) success: function(data) { - //thisClient.util.serializer.serializeToString(data).dump() + //thisClient.util.serializer.serializeToString(data).dump("Charger client") thisClient.chargerDonnees(data) } } @@ -762,7 +793,7 @@ Client.prototype.chargerDonnees = function(data) // la page de la conversation principale var tmp = jQuery("pagePrincipale", data.documentElement) - this.pagePrincipale = tmp.length < 1 ? 1 : tmp.text() + this.pagePrincipale = tmp.length < 1 ? 1 : parseInt(tmp.text()) // met à jour la css if (this.css != "") @@ -792,7 +823,7 @@ Client.prototype.flush = function(async) async = true thisClient = this - //thisClient.util.log(this.util.xmlVersAction(this.getXMLProfile()).action) + //this.util.xmlVersAction(this.getXMLProfile()).action.dump("Flush client") jQuery.ajax( { async: async,