///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 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.
*/
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
}
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;
}
* 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
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