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 <[email protected]>
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);

Reply via email to