From 5e6e8d4d1aecf4e7522592dc9876818851c99c9c Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Tue, 11 Mar 2008 15:49:02 +0000 Subject: [PATCH] --- js/pageMinichat.js | 65 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 5c36577..60c3a64 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -305,6 +305,29 @@ Message.prototype.afficherConversation = function(messages) /////////////////////////////////////////////////////////////////////////////////////////////////// +/** + * Représente une conversation. + */ +function Conversation() +{ + this.messages = new Array() + this.messagesParId = new Object() + + this.idDernierMesssage = null // la racine de la conversation (string), null = conversation principale + + this.page = 1 // par défaut on se trouve sur la première page +} + +Conversation.prototype.ajouterMessage = function(message) +{ + this.messages.push(message) + this.messagesParId[message.id] = message + if (this.messages.length > this.nbMessageMax) + delete this.messagesParId[this.messages.shift().id] +} + +/////////////////////////////////////////////////////////////////////////////////////////////////// + /** * Représente l'ensemble des messages affichés. */ @@ -313,13 +336,11 @@ function Messages(client, formateur, util) this.client = client this.formateur = formateur this.util = util + + this.conversations = new Array() // les conversations, la première représente la conversation principale + this.conversations[0] = new Conversation() - this.nbMessageMax = conf.nbMessageAffiche // Le nombre de message affiché par page this.idDernierMesssage = null // l'id du dernier message connu - this.page = 1 // par défaut on se trouve sur la première page - - this.messages = new Array() - this.messagesParId = new Object() // l'objet XMLHttpRequest représentant la connexion d'attente this.attenteCourante = null @@ -352,13 +373,28 @@ Messages.prototype.getXMLrafraichirMessages = function() } var nodeNombreMessage = XMLDocument.createElement("nombreMessage") - nodeNombreMessage.appendChild(XMLDocument.createTextNode(this.nbMessageMax)) + nodeNombreMessage.appendChild(XMLDocument.createTextNode(conf.nbMessageAffiche)) XMLDocument.documentElement.appendChild(nodeNombreMessage) var nodePage = XMLDocument.createElement("page") - nodePage.appendChild(XMLDocument.createTextNode(this.page)) + nodePage.appendChild(XMLDocument.createTextNode(this.conversation[0].page)) XMLDocument.documentElement.appendChild(nodePage) + // les conversations + for (var i = 1; i < this.conversations.length; i++) + { + var nodeConversation = XMLDocument.createElement("conversation") + XMLDocument.documentElement.appendChild(nodeConversation) + + var nodeRacine = XMLDocument.createElement("racine") + nodeRacine.appendChild(XMLDocument.createTextNode(this.conversation.racine)) + nodeConversation.appendChild(nodeRacine) + + var nodePageConv = XMLDocument.createElement("page") + nodePageConv.appendChild(XMLDocument.createTextNode(this.conversation.page)) + nodeConversation.appendChild(nodePageConv) + } + return XMLDocument; } @@ -367,9 +403,10 @@ Messages.prototype.getXMLrafraichirMessages = function() * Les message sont données dans l'ordre de leur id. * Met directement à jour l'affichage. * @param element un element xml représentant le message + * @param numConversation le numéro de la conversation, 0 = principale * @param autoFlush si oui alors le message est directement ajouté à la vue */ -Messages.prototype.ajouterMessage = function(element, autoFlush) +Messages.prototype.ajouterMessage = function(element, numConversation, autoFlush) { if (autoFlush == undefined) autoFlush = true // valeur par défaut @@ -389,15 +426,19 @@ Messages.prototype.ajouterMessage = function(element, autoFlush) message.systeme = jQuery("systeme", element).text() == "true" message.setRepondA(jQuery("repondA", element)) - this.messages.push(message) - this.messagesParId[message.id] = message - if (this.messages.length > this.nbMessageMax) - delete this.messagesParId[this.messages.shift().id] + if (this.conversations[numConversation] == null) + this.conversations[numConversation] = new Conversation() + + this.conversations[numConversation].ajouterMessage(message) if (autoFlush) this.flush() } + +// <<< TODO <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + Messages.prototype.flush = function() { var thisMessages = this -- 2.45.2