[OPENMEETINGS-1616] chat is fixed to add messages  to the bottom

Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1f274d12
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1f274d12
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1f274d12

Branch: refs/heads/3.2.x
Commit: 1f274d123b6866abf1eebffead4b59eb4567fad4
Parents: e6940fa
Author: Maxim Solodovnik <[email protected]>
Authored: Thu Mar 30 05:13:05 2017 +0000
Committer: Maxim Solodovnik <[email protected]>
Committed: Thu Mar 30 05:13:05 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/web/user/chat/ChatPanel.html   |  8 ++---
 .../apache/openmeetings/web/user/chat/chat.js   | 33 ++++++++++++--------
 openmeetings-web/src/main/webapp/css/chat.css   | 10 +++---
 3 files changed, 29 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
index 6ed210f..af7edeb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
@@ -7,20 +7,20 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div id="chat" class="ui-state-default">
+       <div id="chatPopup" class="ui-state-default">
                <div onclick="Chat.toggle();" class="control block clickable 
ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n 
sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
                <div wicket:id="chat"></div>
        </div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index 0ffeac6..ef43843 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -19,13 +19,12 @@
 var Chat = function() {
        var chatTabs
                , tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
-               , msgTemplate = "<div id='chat-msg-id-#{id}'><img 
class='profile' src='#{imgSrc}'/><span class='from' 
data-user-id='#{userId}'>#{from}</span><span class='date 
align-right'>#{sent}</span>#{msg}</div>"
+               , msgTemplate = "<div class='clear' id='chat-msg-id-#{id}'><img 
class='profile' src='#{imgSrc}'/><span class='from' 
data-user-id='#{userId}'>#{from}</span><span class='date 
align-right'>#{sent}</span>#{msg}</div>"
                , acceptTemplate = "<div class='tick om-icon align-right 
clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var 
e=$(this);chatActivity('accept',e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>"
                , infoTemplate = "<div class='user om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);showUserInfo(e.data(\"userId\"));'></div>"
                , addTemplate = "<div class='add om-icon align-right clickable' 
data-user-id='#{userId}' onclick='var 
e=$(this);addContact(e.data(\"userId\"));'></div>"
                , messageTemplate = "<div class='new-email om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);privateMessage(e.data(\"userId\"));'></div>"
                , inviteTemplate = "<div class='invite om-icon align-right 
clickable' data-user-id='#{userId}' onclick='var 
e=$(this);inviteUser(e.data(\"userId\"));'></div>"
-               , clearBlock = "<div class='clear'></div>"
                , closeBlock = "<span class='ui-icon ui-icon-close' 
role='presentation'></span>"
                , closedHeight = "20px"
                , openedHeight = "345px"
@@ -90,7 +89,7 @@ var Chat = function() {
                        $('#chatPanel').resizable({
                                handles: "n, w"
                                , disabled: isClosed()
-                               , alsoResize: "#chat, #chat .ui-tabs 
.ui-tabs-panel.messageArea"
+                               , alsoResize: "#chatPopup, #chat .ui-tabs 
.ui-tabs-panel.messageArea"
                                , minHeight: 195
                                , minWidth: 260
                                , stop: function(event, ui) {
@@ -139,11 +138,12 @@ var Chat = function() {
                , addMessage: function(m) {
                        if ($('#chat').length > 0 && m && m.type == "chat") {
                                if (isClosed()) {
-                                       $('#chat 
.control.block').addClass('ui-state-highlight');
+                                       $('#chatPopup 
.control.block').addClass('ui-state-highlight');
                                        audio.play();
                                }
                                var msg, cm;
                                while (!!(cm = m.msg.pop())) {
+                                       var area = $('#' + cm.scope);
                                        msg = $(msgTemplate.replace(/#\{id\}/g, 
cm.id)
                                                        
.replace(/#\{userId\}/g, cm.from.id)
                                                        
.replace(/#\{imgSrc\}/g, !!cm.from.img ? cm.from.img : './profile/' + 
cm.from.id + '?anticache=' + Date.now())
@@ -160,30 +160,37 @@ var Chat = function() {
                                        if (cm.needModeration) {
                                                
msg.append(acceptTemplate.replace(/#\{msgid\}/g, cm.id).replace(/#\{roomid\}/g, 
cm.scope.substring(9)));
                                        }
-                                       if (!$('#' + cm.scope).length) {
+                                       if (!area.length) {
                                                this.addTab(cm.scope, 
cm.scopeName);
                                        }
                                        if (m.mode == "accept") {
                                                $('#chat-msg-id-' + 
cm.id).remove();
                                        }
-                                       msg.append(clearBlock);
-                                       $('#' + cm.scope).prepend(msg);
+                                       var btm = area.scrollTop() + 
area.innerHeight() >= area[0].scrollHeight;
+                                       area.append(msg);
+                                       if (btm) {
+                                               area.animate({
+                                                       scrollTop: 
area[0].scrollHeight
+                                               }, 300);
+                                       }
                                }
                        }
                }
                , open: function() {
                        if (isClosed()) {
-                               $('#chat .control.block 
.ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
-                               $('#chat 
.control.block').removeClass('ui-state-highlight');
-                               $('#chatPanel, #chat').animate({height: 
openedHeight}, 1000);
+                               $('#chatPopup .control.block 
.ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+                               $('#chatPopup 
.control.block').removeClass('ui-state-highlight');
+                               $('#chatPanel, #chatPopup').animate({height: 
openedHeight}, 1000);
                                $('#chatPanel').resizable("option", "disabled", 
false);
+                               $('#chat .messageArea').each(function(idx) {
+                                       
$(this).scrollTop($(this)[0].scrollHeight);
+                               });
                        }
                }
                , close: function() {
                        if (!isClosed()) {
-                               $('#chat .control.block 
.ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
-                               $('#chatPanel').animate({height: closedHeight}, 
1000);
-                               $('#chatPanel, #chat').animate({height: 
closedHeight}, 1000);
+                               $('#chatPopup .control.block 
.ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+                               $('#chatPanel, #chatPopup').animate({height: 
closedHeight}, 1000);
                                $('#chatPanel').resizable("option", "disabled", 
true);
                        }
                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/webapp/css/chat.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/chat.css 
b/openmeetings-web/src/main/webapp/css/chat.css
index a07700f4..a837b31 100644
--- a/openmeetings-web/src/main/webapp/css/chat.css
+++ b/openmeetings-web/src/main/webapp/css/chat.css
@@ -24,10 +24,10 @@
        width: 600px;
        height: 20px;
 }
-#chatPanel #chat {
+#chatPanel #chatPopup {
        height: 20px;
 }
-##chat .btn-toolbar {
+#chat .btn-toolbar {
        margin-top: 2px;
        margin-bottom: 0;
        margin-left: 5px;
@@ -48,10 +48,10 @@
        padding: 2px .5em;
        float: left;
 }
-#chat .control.block .ui-icon {
+#chatPopup .control.block .ui-icon {
        text-align: center;
 }
-#chat .control.block .label {
+#chatPopup .control.block .label {
        display: inline-block;
        padding-left: 20px;
 }
@@ -73,7 +73,7 @@
 .ui-tabs .ui-tabs-panel.messageArea {
        height: 165px;
        overflow-y: auto;
-       padding: 5px;
+       padding: 0 5px;
 }
 #chatMessage .wysiwyg-editor {
        height: 70px;

Reply via email to