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/04 16:54:19 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2165] hidden user-count should be fixed

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 47fe95a  [OPENMEETINGS-2165] hidden user-count should be fixed
47fe95a is described below

commit 47fe95a7aa50dd3b558aa0dd812cb68231d0e1f4
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Apr 4 23:54:02 2020 +0700

    [OPENMEETINGS-2165] hidden user-count should be fixed
---
 .../openmeetings/db/entity/basic/Client.java       |  1 +
 .../apache/openmeetings/web/room/RoomPanel.java    | 65 ++++++++++++++--------
 .../org/apache/openmeetings/web/room/raw-room.js   | 19 +++++--
 .../apache/openmeetings/web/room/raw-video-util.js | 19 +------
 .../org/apache/openmeetings/web/room/raw-video.js  |  2 +
 .../openmeetings/web/room/sidebar/RoomSidebar.html |  2 +-
 openmeetings-web/src/main/webapp/css/raw-room.css  |  3 +
 7 files changed, 66 insertions(+), 45 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 bd52e33..6ce340b 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
@@ -553,6 +553,7 @@ 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/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index a8477a4..ffd9ca3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.web.room;
 
 import static java.time.Duration.ZERO;
-import static java.util.Comparator.naturalOrder;
 import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -30,7 +29,6 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Calendar;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -152,23 +150,7 @@ public class RoomPanel extends BasePanel {
 			StringBuilder sb = new StringBuilder("Room.init(").append(options.toString(new NullStringer())).append(");")
 					.append(wb.getInitScript())
 					.append(getQuickPollJs());
-			if (c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
-				List<Client> list = cm.listByRoom(r.getId());
-				list.sort(Comparator.<Client, Integer>comparing(cl -> {
-					if (cl.hasRight(Room.Right.MODERATOR)) {
-						return 0;
-					}
-					if (cl.hasRight(Room.Right.PRESENTER)) {
-						return 1;
-					}
-					return 5;
-				}, naturalOrder())
-						.thenComparing(cl -> cl.getUser().getDisplayName(), String::compareToIgnoreCase));
-				sb.append("Room.addClient([");
-				list.stream().forEach(cl -> sb.append(cl.toJson(false).toString(new NullStringer())).append(","));
-				sb.deleteCharAt(sb.length() - 1).append("]);");
-
-			}
+			sb.append(sendClientsOnInit());
 			target.appendJavaScript(sb);
 
 			WebSocketHelper.sendRoom(new TextRoomMessage(r.getId(), c, RoomMessage.Type.ROOM_ENTER, c.getUid()));
@@ -473,8 +455,11 @@ public class RoomPanel extends BasePanel {
 								return;
 							}
 							boolean self = _c.getUid().equals(c.getUid());
-							handler.appendJavaScript(String.format("Room.updateClient(%s);"
-									, c.toJson(self).toString(new NullStringer())));
+							StringBuilder sb = new StringBuilder("Room.updateClient(")
+									.append(c.toJson(self).toString(new NullStringer()))
+									.append(");")
+									.append(sendClientsOnUpdate());
+							handler.appendJavaScript(sb);
 							sidebar.update(handler);
 							menu.update(handler);
 							wb.update(handler);
@@ -491,8 +476,8 @@ public class RoomPanel extends BasePanel {
 								log.error("Not existing user in rightUpdated {} !!!!", uid);
 								return;
 							}
-							if (c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
-								boolean self = _c.getUid().equals(c.getUid());
+							boolean self = _c.getUid().equals(c.getUid());
+							if (self || _c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
 								handler.appendJavaScript(String.format("Room.addClient([%s]);"
 										, c.toJson(self).toString(new NullStringer())));
 							}
@@ -856,9 +841,43 @@ public class RoomPanel extends BasePanel {
 	private void showIdeaAlert(IPartialPageRequestHandler handler, String msg) {
 		showAlert(handler, "info", msg, "far fa-lightbulb");
 	}
+
 	private void showAlert(IPartialPageRequestHandler handler, String type, String msg, String icon) {
 		handler.appendJavaScript("OmUtil.alert('" + type + "', '<i class=\"" + icon + "\"></i>&nbsp;"
 				+ StringEscapeUtils.escapeEcmaScript(msg)
 				+ "', 10000)");
 	}
+
+	private CharSequence createAddClientJs(Client c) {
+		JSONArray arr = new JSONArray();
+		cm.listByRoom(r.getId()).stream().forEach(cl -> {
+			arr.put(cl.toJson(c.getUid().equals(cl.getUid())));
+		});
+		return new StringBuilder()
+				.append("Room.addClient(")
+				.append(arr.toString(new NullStringer()))
+				.append(");");
+	}
+
+	private CharSequence sendClientsOnInit() {
+		Client c = getClient();
+		StringBuilder res = new StringBuilder();
+		if (c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
+			res.append(createAddClientJs(c));
+		}
+		return res;
+	}
+
+	private CharSequence sendClientsOnUpdate() {
+		Client c = getClient();
+		StringBuilder res = new StringBuilder();
+		if (r.isHidden(RoomElement.USER_COUNT)) {
+			if (c.hasRight(Room.Right.MODERATOR)) {
+				res.append(createAddClientJs(c));
+			} else {
+				res.append("Room.removeOthers();");
+			}
+		}
+		return res;
+	}
 }
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 6f64354..dc58aad 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
@@ -430,10 +430,6 @@ var Room = (function() {
 		}
 		VideoManager.update(c)
 	}
-	function _removeClient(uid) {
-		Room.getClient(uid).remove();
-		__updateCount();
-	}
 
 	self.init = _init;
 	self.getMenuHeight = function() { return menuHeight; };
@@ -448,7 +444,20 @@ var Room = (function() {
 	};
 	self.addClient = _addClient;
 	self.updateClient = _updateClient;
-	self.removeClient = _removeClient;
+	self.removeClient = function(uid) {
+		Room.getClient(uid).remove();
+		__updateCount();
+	};
+	self.removeOthers = function() {
+		const selfUid = Room.getOptions().uid;
+		$('.user-list .user.entry').each(function() {
+			const c = $(this);
+			if (c.data('uid') !== selfUid) {
+				c.remove();
+			}
+		});
+		__updateCount();
+	};
 	self.getClient = function(uid) {
 		return $('#user' + uid);
 	};
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 f500fa9..2d971b9 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
@@ -160,23 +160,10 @@ var VideoUtil = (function() {
 		function __getDialog(_v) {
 			return $(_v).find('.video-container.ui-dialog-content');
 		}
-		function __getClient(_v) {
-			return Room.getClient(__getDialog(_v).data('clientUid'));
-		}
-		function __getClient(_v) {
-			return Room.getClient(__getDialog(_v).data('clientUid'));
-		}
-		function __getMod(c) {
-			return c.find('.user-status').hasClass('mod') ? 1 : 0;
-		}
 		$(VIDWIN_SEL).toArray().sort((v1, v2) => {
-			const c1 = __getClient(v1)
-				, c2 = __getClient(v2)
-				, m1 = __getMod(c1)
-				, m2 = __getMod(c2)
-				, name1 = c1.attr('title')
-				, name2 = c2.attr('title');
-			return m1 - m2 || name1.localeCompare(name2);
+			const c1 = __getDialog(v1).data().stream()
+				, c2 = __getDialog(v2).data().stream();
+			return c1.level - c2.level || c1.user.displayName.localeCompare(c2.user.displayName);
 		}).forEach(_v => {
 			const v = $(_v);
 			__getDialog(v)
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 0a04646..4ffd497 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -379,8 +379,10 @@ var Video = (function() {
 	function _update(_c) {
 		const prevA = sd.activities;
 		sd.activities = _c.activities.sort();
+		sd.level = _c.level;
 		sd.user.firstName = _c.user.firstName;
 		sd.user.lastName = _c.user.lastName;
+		sd.user.displayName = _c.user.displayName;
 		const name = sd.user.displayName
 			, hasVideo = VideoUtil.hasVideo(sd);
 		if (hasVideo) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
index 0988a8f..ea936d8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
@@ -26,7 +26,7 @@
 			<li class="nav-item">
 				<a href="#room-sidebar-tab-users" class="nav-link active om-icon big tab user" id="room-sidebar-users-tab" data-toggle="tab" role="tab" aria-controls="room-sidebar-tab-users" wicket:message="title:398">
 					<i class="fas fa-users"></i>
-					<span class="label"><wicket:message key="398"/>&nbsp;</span><span class="badge badge-info user-count">42</span>
+					<span class="label"><wicket:message key="398"/>&nbsp;</span><span class="badge badge-info user-count"></span>
 				</a>
 			</li>
 			<li class="nav-item" wicket:enclosure="file-tab">
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css b/openmeetings-web/src/main/webapp/css/raw-room.css
index 92f1a94..cd24fc1 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -316,6 +316,9 @@ html[dir="rtl"] .room-block .sidebar {
 	content: '\f03d';
 	color: var(--success);
 }
+.activity.cam.om-icon, .activity.mic.om-icon {
+	display: none;
+}
 .activity.cam.om-icon::before {
 	content: '\f4e2';
 	color: var(--warning);