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