Repository: openmeetings Updated Branches: refs/heads/master a86a6551b -> b87120624
[OPENMEETINGS-1644] arrange video windows is implemented Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b8712062 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b8712062 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b8712062 Branch: refs/heads/master Commit: b871206243bcedca2986d2783382bd892cb89a39 Parents: a86a655 Author: Maxim Solodovnik <[email protected]> Authored: Sun Aug 20 15:11:33 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Sun Aug 20 15:11:33 2017 +0700 ---------------------------------------------------------------------- openmeetings-server/src/site/xdoc/HotKeys.xml | 9 +++---- .../org/apache/openmeetings/web/room/room.js | 28 +++++++++++++++----- 2 files changed, 25 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8712062/openmeetings-server/src/site/xdoc/HotKeys.xml ---------------------------------------------------------------------- diff --git a/openmeetings-server/src/site/xdoc/HotKeys.xml b/openmeetings-server/src/site/xdoc/HotKeys.xml index e4d5d30..71705b1 100644 --- a/openmeetings-server/src/site/xdoc/HotKeys.xml +++ b/openmeetings-server/src/site/xdoc/HotKeys.xml @@ -13,8 +13,8 @@ limitations under the License. --> <document xmlns="http://maven.apache.org/XDOC/2.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> <properties> <title>Hot Keys</title> <author email="[email protected]">Apache OpenMeetings Team</author> @@ -35,9 +35,8 @@ <td>exclusive.audio.keycode</td> </tr> <tr> - <td>F8 (code 119)</td> - <td>If 1 or 2 video windows are present in the room they will be - "rearranged" to take all the place available</td> + <td>Shift+F8 (code 119)</td> + <td>Room video windows will be "rearranged" using masonry layout</td> <td>No</td> <td> </td> http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8712062/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js index a1c5d0f..aad4161 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js @@ -16,7 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -const WBA_SELECTOR = '.room.wb.area .ui-tabs-panel.ui-corner-bottom.ui-widget-content:visible'; +const WBA_SEL = '.room.wb.area .ui-tabs-panel.ui-corner-bottom.ui-widget-content:visible'; +const VID_SEL = '.video.user-video'; var VideoUtil = (function() { var self = {}; function _getVid(uid) { @@ -57,7 +58,7 @@ var VideoUtil = (function() { return [0, 0]; } */ - var wba = $(WBA_SELECTOR); + var wba = $(WBA_SEL); var woffset = wba.offset(); const offsetX = 40, offsetY = 10 , area = {left: woffset.left, top: woffset.top, right: woffset.left + wba.width(), bottom: woffset.top + wba.height()}; @@ -111,6 +112,16 @@ var VideoUtil = (function() { } while (!posFound); return {left: rectNew.left, top: rectNew.top}; } + function _arrange(e) { + if (e.which === 119 && e.shiftKey) { // Shift+F8 + let list = [], elems = $(VID_SEL); + for (let i = 0; i < elems.length; ++i) { + let v = $(elems[i]); + v.css(_getPos(list, v.width(), v.height())); + list.push(_getRect(v)); + } + } + } self.getVid = _getVid; self.isSharing = _isSharing; @@ -118,6 +129,7 @@ var VideoUtil = (function() { self.hasVideo = _hasVideo; self.getRects = _getRects; self.getPos = _getPos; + self.arrange = _arrange; return self; })(); var Video = (function() { @@ -130,13 +142,13 @@ var Video = (function() { if (on) { //TODO buttons v.dialog({ - position: {my: "center", at: "center", of: WBA_SELECTOR} + position: {my: "center", at: "center", of: WBA_SEL} }); } else { let h = size.height + t.height() + 2; v.dialog("option", "width", size.width) .dialog("option", "height", h); - v.dialog("widget").css(VideoUtil.getPos(VideoUtil.getRects('.video.user-video', VideoUtil.getVid(c.uid)), c.width, h)); + v.dialog("widget").css(VideoUtil.getPos(VideoUtil.getRects(VID_SEL, VideoUtil.getVid(c.uid)), c.width, h)); _setSize(size.width, size.height); } } @@ -263,7 +275,7 @@ var VideoManager = (function() { , av = VideoUtil.hasAudio(c) || VideoUtil.hasVideo(c) , v = $('#' + _id); if (av && v.length != 1 && !!c.self) { - Video().init(box, options.uid, c, VideoUtil.getPos(VideoUtil.getRects('.video.user-video'), c.width, c.height + 25)); + Video().init(box, options.uid, c, VideoUtil.getPos(VideoUtil.getRects(VID_SEL), c.width, c.height + 25)); } else if (av && v.length == 1) { v.data().update(c); } else if (!av && v.length == 1) { @@ -285,13 +297,13 @@ var VideoManager = (function() { share.tooltip().off('click').click(function() { var v = $('#' + VideoUtil.getVid(c.uid)) if (v.length != 1) { - Video().init(box, options.uid, c, $(WBA_SELECTOR).offset()); + Video().init(box, options.uid, c, $(WBA_SEL).offset()); } else { v.dialog('open'); } }); } else if ('sharing' !== c.type) { - Video().init(box, options.uid, c, VideoUtil.getPos(VideoUtil.getRects('.video.user-video'), c.width, c.height + 25)); + Video().init(box, options.uid, c, VideoUtil.getPos(VideoUtil.getRects(VID_SEL), c.width, c.height + 25)); } } function _close(uid) { @@ -378,6 +390,7 @@ function roomLoad() { }); Wicket.Event.subscribe("/websocket/closed", roomClosed); Wicket.Event.subscribe("/websocket/error", roomClosed); + $(window).keyup(VideoUtil.arrange); } function roomUnload() { $(window).off('resize.openmeetings'); @@ -388,6 +401,7 @@ function roomUnload() { } VideoSettings.close(); $('.ui-dialog.user-video').remove(); + $(window).off('keyup', VideoUtil.arrange); } function startPrivateChat(el) { Chat.addTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());
