(no commit message)
authorGreg Burri <greg.burri@gmail.com>
Tue, 11 Mar 2008 15:49:02 +0000 (15:49 +0000)
committerGreg Burri <greg.burri@gmail.com>
Tue, 11 Mar 2008 15:49:02 +0000 (15:49 +0000)
js/pageMinichat.js

index 5c36577..60c3a64 100755 (executable)
@@ -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