You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/02/02 05:06:55 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1825] chat scroll is improved

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new dcbd375  [OPENMEETINGS-1825] chat scroll is improved
dcbd375 is described below

commit dcbd3752bf4c79b092959ca25ab864c3b577711f
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Feb 2 12:06:30 2018 +0700

    [OPENMEETINGS-1825] chat scroll is improved
---
 .../apache/openmeetings/web/user/chat/chat-base.js    | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
index 1678661..e6fe6d3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
@@ -127,7 +127,9 @@ var Chat = function() {
 		initToolbar();
 		tabs = $("#chatTabs").tabs({
 			activate: function(event, ui) {
-				$('#activeChatTab').val(ui.newPanel[0].id).trigger('change');
+				const ct = ui.newPanel[0].id;
+				_scrollDown($('#' + ct));
+				$('#activeChatTab').val(ct).trigger('change');
 			}
 		});
 		// close icon: removing the tab on click
@@ -246,16 +248,14 @@ var Chat = function() {
 				if (m.mode === "accept") {
 					$('#chat-msg-id-' + cm.id).remove();
 				}
-				const btm = area.scrollTop() + area.innerHeight() >= area[0].scrollHeight;
+				const btm = area[0].scrollHeight - (area.scrollTop() + area.innerHeight()) < 3; //approximately equal
 				if (area.data('lastDate') !== cm.date) {
 					area.append(OmUtil.tmpl('#chat-date-template').html(cm.date));
 					area.data('lastDate', cm.date);
 				}
 				area.append(msg);
 				if (btm) {
-					area.animate({
-						scrollTop: area[0].scrollHeight
-					}, 300);
+					_scrollDown(area);
 				}
 			}
 		}
@@ -293,7 +293,6 @@ var Chat = function() {
 			p.removeClass('closed');
 			pp.animate(opts, 1000, function() {
 				p.removeClass('closed');
-				_setAreaHeight();
 				if (typeof(handler) === 'function') {
 					handler();
 				}
@@ -303,6 +302,7 @@ var Chat = function() {
 					_setOpened();
 					Room.setSize();
 				}
+				_setAreaHeight();
 			});
 		}
 	}
@@ -349,10 +349,15 @@ var Chat = function() {
 		roomMode = _mode;
 		_reinit(allPrefix, roomPrefix);
 	}
+	function _scrollDown(area) {
+		area.animate({
+			scrollTop: area[0].scrollHeight
+		}, 300);
+	}
 	function _setAreaHeight() {
 		$('#chat .ui-tabs .ui-tabs-panel.messageArea').height(p.height() - closedSize - $('#chat .ui-tabs-nav').height() - $('#chat form').height() - 5);
 		$('#chat .messageArea').each(function() {
-			$(this).scrollTop($(this)[0].scrollHeight);
+			_scrollDown($(this));
 		});
 	}
 	function _setHeight(h) {

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.