X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat%2Fmessage.js;h=a3d4d32c4d275d779c80091d126cdfdbed488f52;hp=a4b8808364cdd6eef64a2b7d4731f53ebdb66c86;hb=11fe8f6d268a9b1c0a773294cc7d70ffdb6afb30;hpb=9fe75dcc30306cb1dc9b5b1aa438094c2f6175f3 diff --git a/js/pageMinichat/message.js b/js/pageMinichat/message.js index a4b8808..a3d4d32 100644 --- a/js/pageMinichat/message.js +++ b/js/pageMinichat/message.js @@ -39,6 +39,10 @@ euphorik.Message = function(client, formateur, element) { this.login = element.login; this.contenu = element.content; + // l'ensemble des id des messages qui reponde à ce message, exemple : {45:true, 32:true} (le 'true' ne sert à rien ^_^) + // mis à jour au fur à mesure que des messages sont ajoutés aux conversations + this.estReponduPar = {}; + this.appartientAuClient = element.owner; this.clientARepondu = element.answered; this.estUneReponse = element.is_a_reply; @@ -63,7 +67,7 @@ euphorik.Message.prototype.setRepondA = function(repondAJSON) { this.repondA = {}; repondAJSON.each(function(i, reponse) { - thisMessage.repondA[reponse.id] = new Reponse(reponse.id, reponse.nick, reponse.login); + thisMessage.repondA[reponse.id] = new euphorik.Reponse(reponse.id, reponse.nick, reponse.login); }); }; @@ -78,32 +82,26 @@ euphorik.Message.prototype.getConversation = function(messages) { // les messages faisant partie de la conversation var messagesEnEvidence = {}; - messagesEnEvidence[this.id] = 1; - // recherche les réponses (O(n)) - messages.messages.each(function(i, mess) { - if (mess.repondA.hasOwnProperty(thisMessage.id)) { - messagesEnEvidence[mess.id] = 2; - } - }); - - // parcours en largeur - var f = function(tabIds, premierNiveau) { - objectEach(tabIds, function(id) { - // si le message (id) a déjà été traité - if (!messagesEnEvidence[id] && !premierNiveau) { - continue; - } - - var message = messages.messagesParId[id]; - if (!message) { - messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId == thisMessage.auteurId ? 1 : 0); - f (message.repondA, false); + // parcours en profondeur + var f = function(ids, premierNiveau, ensemble, evidence) { + objectEach(ids, function(id) { + if (!messagesEnEvidence[id] || premierNiveau) { + var message = messages.messagesParId[id]; + if (message) { + messagesEnEvidence[id] = premierNiveau ? evidence : (message.auteurId === thisMessage.auteurId ? 1 : 0); + f(message[ensemble], false, ensemble, evidence); + } } }); }; - f(this.repondA, true); + + // remonte le temps + f(this.estReponduPar, true, "estReponduPar", 2); + + // descent le temps + f(this.repondA, true, "repondA", 3); return messagesEnEvidence; }; @@ -113,20 +111,22 @@ euphorik.Message.prototype.getConversation = function(messages) { * Aucun callback n'est affecté. */ euphorik.Message.prototype.XHTML = function(messagePair, pre) { - messagePair = messagePair || true; + if (messagePair === undefined) { + messagePair = true; + } pre = pre || ""; thisMessage = this; // construit l'identifiant de la personne var identifiant = - this.client.nickFormat == "nick" || this.login === "" ? this.formateur.traitementComplet(this.pseudo) : - (this.client.nickFormat == "login" ? this.formateur.traitementComplet(this.login) : + this.client.nickFormat === "nick" || this.login === "" ? this.formateur.traitementComplet(this.pseudo) : + (this.client.nickFormat === "login" ? this.formateur.traitementComplet(this.login) : this.formateur.traitementComplet(this.pseudo) + "(" + this.formateur.traitementComplet(this.login) +")" ); var XHTMLrepondA = ""; var debut = true; - objectEach(function(id, rep) { + objectEach(this.repondA, function(id, rep) { if (!debut) { XHTMLrepondA += ", "; }