From f2eb4c4ec53b164804c0c7441830372358ce74e6 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Sat, 26 Jul 2008 13:22:07 +0000 Subject: [PATCH] =?utf8?q?MOD=20am=C3=A9lioration=20de=20la=20mise=20en=20?= =?utf8?q?=C3=A9vidence=20des=20messages=20FIX#32?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/graphiques/maquette_1.svg | 88 +++++++++++++++++++++++++-- doc/protocole3.txt | 6 +- js/pageMinichat/conversation.js | 13 +++- js/pageMinichat/conversations.js | 9 ++- js/pageMinichat/message.js | 31 +++++----- styles/1/img/fleche_proprietaire.png | Bin 302 -> 301 bytes styles/1/img/fleche_reponse.png | Bin 302 -> 303 bytes styles/1/pageMinichat.css | 4 +- 8 files changed, 120 insertions(+), 31 deletions(-) diff --git a/doc/graphiques/maquette_1.svg b/doc/graphiques/maquette_1.svg index 082335c..b6784c9 100644 --- a/doc/graphiques/maquette_1.svg +++ b/doc/graphiques/maquette_1.svg @@ -29,9 +29,9 @@ objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="2.0000001" - inkscape:cx="261.23852" - inkscape:cy="972.02611" + inkscape:zoom="7.5822789" + inkscape:cx="580.48394" + inkscape:cy="905.17554" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -420,11 +420,11 @@ + style="fill:#846c19;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> + normal + ses messages + + messages quinous répondent + messages auquelsont a répondu + + + + this.nbMessageMax) { delete this.messagesParId[this.messages.shift().id]; } + + // met à jour le membre 'estReponduPar' des messages de la conversation + for (var i = 0; i < this.messages.length - 1; i++) { + var autreMess = this.messages[i]; + if (autreMess.id in message.repondA) { + autreMess.estReponduPar[message.id] = true; + } + } }; /** diff --git a/js/pageMinichat/conversations.js b/js/pageMinichat/conversations.js index 277726d..b0eea99 100644 --- a/js/pageMinichat/conversations.js +++ b/js/pageMinichat/conversations.js @@ -232,9 +232,8 @@ euphorik.Conversations.prototype.ajouterMessages = function(elements, numConvers * @return true si une nouvelle conversation a été créée sinon false */ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversation) { - var thisMessages = this; - - // pas d'utilisation de jquery pour des raisons de performance + var thisConversations = this; + var message = new euphorik.Message( this.client, @@ -249,12 +248,12 @@ euphorik.Conversations.prototype.ajouterMessage = function(element, numConversat this.nouvelleConversation( numConversation, function(num) { // fermeture de la conversation - thisMessages.supprimerConversation(num); + thisConversations.supprimerConversation(num); }, function(num) { // insertion du lien vers la conversation thisPage.util.replaceSelection( $("form#posterMessage input.message")[0], - "{" + thisMessages.client.conversations[num-1].root.toString(36) + "}" + "{" + thisConversations.client.conversations[num-1].root.toString(36) + "}" ); } ); diff --git a/js/pageMinichat/message.js b/js/pageMinichat/message.js index 9664064..c77ac58 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; @@ -81,27 +85,24 @@ euphorik.Message.prototype.getConversation = function(messages) { 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é + // parcours en profondeur + var f = function(m, premierNiveau, ensemble, evidence) { + objectEach(m[ensemble], function(id) { if (!messagesEnEvidence[id] || premierNiveau) { var message = messages.messagesParId[id]; - if (message) { - messagesEnEvidence[id] = premierNiveau ? 3 : (message.auteurId === thisMessage.auteurId ? 1 : 0); - f(message.repondA, false); + if (message) { + messagesEnEvidence[id] = premierNiveau ? evidence : (message.auteurId === thisMessage.auteurId ? 1 : 0); + f(message, false, ensemble, evidence); } } }); }; - f(this.repondA, true); + + // remonte le temps + f(this, true, "estReponduPar", 2); + + // descent le temps + f(this, true, "repondA", 3); return messagesEnEvidence; }; diff --git a/styles/1/img/fleche_proprietaire.png b/styles/1/img/fleche_proprietaire.png index d852d2572400c9b4ab51b0d46a9b13386c14df75..38845e2249dc18619c155157dc2cdb1bcc9080dd 100644 GIT binary patch delta 199 zcmV;&0671y0<8j&ZhxvtL_t(2k#*6b3Iah8#__)w1cTh-Z8jQ>X0uVbWHN|piphsC z-DLqv$S6;$ZyLRU# z9P6Qp7hv7otnm(%Uc&nqU%<>uc>JXoRlZC;`vdvzN3qqf^9%q0002ovPDHLkV1hwh BT7Cck delta 200 zcmV;(05|`w0MGB zAvS8XX!J4c%f5oaAou{HVJ#jUIx{d~_zipmLs8|6loC>Bz}`ADM5qkt0B7q=S3-aR zaL^E-w9c$G1n}0Gk%sMWeosPxK5(+mv?K(W09y?K#u{FMxj}?aU>baUNVp0<2I<;e z@bOp=O}qe`=4OpIpbS2~fAIy(f{*vV^rFg_+Ot0nJxC5MtjvS}0000caAxb4c2RJz~T@3*S zz&?fmnG+*11lT$;qZqco`8^E*`oPhNX=w;B0X8uN7{~Am%tAGM0#ob5L&KHz;i6qz zS|1Me(8M#aZf@3i12XHw`xjrp%=&QuOE2(p(^rOj1jFfVCResP$~mDz{wfuY6#E= z_9+A?osne<0XELaFoo@JzGw*01CGu}OGAJWuudU>P2m-oYC-q}#@2_2h70S%MZ0!u zeK^!Z6VJe^xmn{4D6J3gUwi=*>%;voy(;o~>e(M+=172(DXLfi0000