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 2020/04/14 15:57:30 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2240] user list is sorted

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 96d9435  [OPENMEETINGS-2240] user list is sorted
96d9435 is described below

commit 96d9435fc96ba60107656502d87eb0e2037350a3
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Apr 14 22:57:12 2020 +0700

    [OPENMEETINGS-2240] user list is sorted
---
 .../openmeetings/db/entity/basic/Client.java       |  4 ++--
 .../org/apache/openmeetings/web/room/raw-room.js   | 26 ++++++++++++++--------
 .../apache/openmeetings/web/room/raw-video-util.js |  2 +-
 openmeetings-web/src/main/webapp/css/raw-room.css  |  2 +-
 4 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index 6ce340b..1b4d8dc 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -360,7 +360,8 @@ public class Client implements IDataProviderEntity, IWsClient {
 				a.put("country", user.getAddress().getCountry());
 			}
 		}
-		return o.put("user", u);
+		return o.put("user", u)
+				.put("level", hasRight(Right.MODERATOR) ? 5 : (hasRight(Right.WHITEBOARD) ? 3 : 1));
 	}
 
 	public JSONObject toJson(boolean self) {
@@ -553,7 +554,6 @@ public class Client implements IDataProviderEntity, IWsClient {
 					.put("width", swidth)
 					.put("height", sheight)
 					.put("activities", new JSONArray(sactivities))
-					.put("level", hasRight(Right.MODERATOR) ? 5 : (hasRight(Right.WHITEBOARD) ? 3 : 1))
 					.put("cuid", uid));
 		}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
index 214982c..7866fe2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
@@ -341,19 +341,23 @@ var Room = (function() {
 		__rightIcon(c, elem, ['MODERATOR'], '.right.moderator', () => true);
 	}
 	function __setStatus(c, le) {
-		const status = le.find('.user-status');
+		const status = le.find('.user-status')
+			, mode = c.level == 5 ? 'mod' : (c.level == 3 ? 'wb' : 'user');
 		status.removeClass('mod wb user');
-		if (_hasRight('MODERATOR', c.rights)) {
-			status.attr('title', status.data('mod')).addClass('mod');;
-		} else if (_hasRight('WHITEBOARD', c.rights)) {
-			status.attr('title', status.data('wb')).addClass('wb');;
-		} else {
-			status.attr('title', status.data('user')).addClass('user');;
-		}
+		status.attr('title', status.data(mode)).addClass(mode);
+		le.data('level', c.level);
 	}
 	function __updateCount() {
 		$('#room-sidebar-users-tab .user-count').text($('#room-sidebar-tab-users .user-list .users .user.entry').length);
 	}
+	function __sortUserList() {
+		const container = $('#room-sidebar-tab-users .user-list .users');
+		container.find('.user.entry').sort((_u1, _u2) => {
+			const u1 = $(_u1)
+				, u2 = $(_u2);
+			return u2.data('level') - u1.data('level') || u1.attr('title').localeCompare(u2.attr('title'));
+		}).appendTo(container);
+	}
 	function _addClient(_clients) {
 		const clients = Array.isArray(_clients) ? _clients : [_clients];
 		clients.forEach(c => {
@@ -373,6 +377,7 @@ var Room = (function() {
 			_updateClient(c);
 		});
 		__updateCount();
+		__sortUserList();
 	}
 	function _updateClient(c) {
 		const self = c.uid === options.uid
@@ -451,7 +456,10 @@ var Room = (function() {
 		($('.main.room')[0]).style.setProperty(key, val);
 	};
 	self.addClient = _addClient;
-	self.updateClient = _updateClient;
+	self.updateClient = function(c) {
+		_updateClient(c);
+		__sortUserList();
+	};
 	self.removeClient = function(uid) {
 		Room.getClient(uid).remove();
 		__updateCount();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
index 2d971b9..f041211 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
@@ -163,7 +163,7 @@ var VideoUtil = (function() {
 		$(VIDWIN_SEL).toArray().sort((v1, v2) => {
 			const c1 = __getDialog(v1).data().stream()
 				, c2 = __getDialog(v2).data().stream();
-			return c1.level - c2.level || c1.user.displayName.localeCompare(c2.user.displayName);
+			return c2.level - c1.level || c1.user.displayName.localeCompare(c2.user.displayName);
 		}).forEach(_v => {
 			const v = $(_v);
 			__getDialog(v)
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css b/openmeetings-web/src/main/webapp/css/raw-room.css
index dcdc81b..0928127 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -383,7 +383,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 	right: 2px;
 }
 .room-block .sb-wb .sidebar .tab.om-icon.big .label {
-	max-width: 50px;
+	max-width: 45px;
 	display: inline-block;
 	text-overflow: ellipsis;
 	overflow: hidden;