X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2FpageMinichat.js;h=9e042e43e8389e396f5998b25941ea3fca669704;hp=a6ba5a6b5704533bffed710ea1f581fb025289e4;hb=5f49b7e6af9be3e2415136013370af4ac99d59da;hpb=6fab12088e85e62ef34a312c3f3a33f9636bbc97 diff --git a/js/pageMinichat.js b/js/pageMinichat.js index a6ba5a6..9e042e4 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -296,6 +296,7 @@ function Conversation(num, util, formateur, client) this.util = util this.formateur = formateur this.client = client + this.idDernierMessageAffiche = 0 this.messages = new Array() this.messagesParId = new Object() @@ -403,6 +404,7 @@ Conversation.prototype.ajouterMessage = function(message) Conversation.prototype.viderMessages = function() { this.messages = new Array() + this.idDernierMessageAffiche = 0 jQuery("#conversations #" + this.getId() + " .message").remove() } @@ -415,18 +417,15 @@ Conversation.prototype.flush = function(funClickExtract, funClickLienConv) { var thisConversation = this - var idDernierMessageAffiche = jQuery("#conversations #" + this.getId() + " div:first").attr("id") - idDernierMessageAffiche = (idDernierMessageAffiche == undefined ? 0 : parseInt(idDernierMessageAffiche, 36)) - // est-ce que le prochain message est pair ? (permet d'alterner le style des messages) - var messagePair = (idDernierMessageAffiche == 0 ? true : + var messagePair = (this.idDernierMessageAffiche == 0 ? true : (jQuery("#conversations #" + this.getId() + " div:first").attr("class").search("messagePair") == -1) ) // construction de l'XHTML des messages var XHTML = "" for (var i = this.messages.length - 1; i >= 0; i--) - if (this.messages[i].id > idDernierMessageAffiche) + if (this.messages[i].id > this.idDernierMessageAffiche) { var message = this.messages[i] @@ -470,7 +469,7 @@ Conversation.prototype.flush = function(funClickExtract, funClickLienConv) jQuery("#conversations #" + this.getId() + " .message").slice(this.nbMessageMax, nbMessagesAffiche).empty() // Ajoute les événements liés à chaque message - jQuery("#conversations #" + this.getId() + " .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > idDernierMessageAffiche}).each( + jQuery("#conversations #" + this.getId() + " .message").filter(function(){return parseInt(jQuery(this).attr("id"), 36) > thisConversation.idDernierMessageAffiche}).each( function() { jQuery(".lienConv", this).click( @@ -520,6 +519,9 @@ Conversation.prototype.flush = function(funClickExtract, funClickLienConv) ) } ) + + this.idDernierMessageAffiche = jQuery("#conversations #" + this.getId() + " div:first").attr("id") + this.idDernierMessageAffiche = (this.idDernierMessageAffiche == undefined ? 0 : parseInt(this.idDernierMessageAffiche, 36)) } /** @@ -574,7 +576,8 @@ function Messages(client, formateur, util) this.conversations = new Array() // les conversations, la première représente la conversation principale this.nouvelleConversation(0) - this.idDernierMessage = null // l'id du dernier message connu +// Obsolète + //this.idDernierMessage = null // l'id du dernier message connu // l'objet JSONHttpRequest représentant la connexion d'attente this.attenteCourante = null @@ -590,15 +593,28 @@ Messages.prototype.getJSONrafraichirMessages = function() "page" : "chat", "message_count" : conf.nbMessageAffiche, "main_page" : this.client.pagePrincipale, - "conversations" : this.client.getJSONConversations() + "conversations" : this.getJSONConversations() } if (this.client.cookie != null) mess["cookie"] = this.client.cookie; - if (this.idDernierMessage != null) mess["last_message_id"] = this.idDernierMessage + mess["last_message_id"] = this.conversations[0].idDernierMessageAffiche + + // obsolète + //if (this.idDernierMessage != null) mess["last_message_id"] = this.idDernierMessage return mess } +Messages.prototype.getJSONConversations = function() +{ + var clientConv = this.client.getJSONConversations() + for (var i = 1; i < this.conversations.length; i++) + { + clientConv[i-1]["last_message_id"] = this.conversations[i].idDernierMessageAffiche + } + return clientConv +} + /** * Ajoute un ensemble de messages puis les affiches. * @param elements un tableau d'éléments JSON représentant les messages, voir protocole.txt @@ -624,8 +640,9 @@ Messages.prototype.ajouterMessage = function(element, numConversation) // pas d'utilisation de jquery pour des raisons de performance var id = element["id"] - if (this.idDernierMessage == null || id > this.idDernierMessage) - this.idDernierMessage = id + // Obsolète + /*if (this.idDernierMessage == null || id > this.idDernierMessage) + this.idDernierMessage = id*/ var message = new Message( id, @@ -756,7 +773,8 @@ Messages.prototype.flush = function(numConv) Messages.prototype.viderMessages = function() { - this.idDernierMessage = null + // Obsolète + //this.idDernierMessage = null for (var i = 0; i < this.conversations.length; i++) this.conversations[i].viderMessages() @@ -785,8 +803,11 @@ Messages.prototype.rafraichirMessages = function(vider) this.stopAttenteCourante() + /*if (vider) + this.idDernierMessage = null*/ if (vider) - this.idDernierMessage = null + for (var i = 0; i < this.conversations.length; i++) + this.conversations[i].idDernierMessageAffiche = 0 dumpObj(this.getJSONrafraichirMessages()) this.attenteCourante = jQuery.ajax({ @@ -802,7 +823,7 @@ Messages.prototype.rafraichirMessages = function(vider) if (vider) thisMessages.viderMessages() - // ajoute les messages reçu à leur conversation respective + // ajoute les messages reçus à leur conversation respective for (var numConv = 0; numConv < data["conversations"].length; numConv++) { // ya pas de nouveaux message -> on passe à la prochaine conversation