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
commit 8bd0bd003418d5fb344dd25111d58334d525181e Author: Maxim Solodovnik <[email protected]> AuthorDate: Fri Mar 23 12:59:47 2018 +0700 [OPENMEETINGS-1854] js improvements --- .../web/common/OmAjaxClientInfoBehavior.java | 9 ++ .../org/apache/openmeetings/web/common/main.js | 40 +++++- .../openmeetings/web/room/VideoSettings.java | 5 +- .../apache/openmeetings/web/room/settings-base.js | 134 ++++++++++----------- .../apache/openmeetings/web/room/video-manager.js | 22 ++-- .../java/org/apache/openmeetings/web/room/video.js | 14 +-- .../apache/openmeetings/web/room/wb/wb-board.js | 4 +- 7 files changed, 131 insertions(+), 97 deletions(-) diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java index d087a11..0c81c78 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java @@ -18,8 +18,11 @@ */ package org.apache.openmeetings.web.common; +import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT; + import java.util.List; +import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxClientInfoBehavior; @@ -32,6 +35,8 @@ import org.apache.wicket.protocol.http.request.WebClientInfo; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.resource.JavaScriptResourceReference; +import com.github.openjson.JSONObject; + public class OmAjaxClientInfoBehavior extends AjaxClientInfoBehavior { private static final long serialVersionUID = 1L; private static final JavaScriptResourceReference MAIN_JS = new JavaScriptResourceReference(MainPanel.class, "main.js") { @@ -49,6 +54,10 @@ public class OmAjaxClientInfoBehavior extends AjaxClientInfoBehavior { public void renderHead(Component component, IHeaderResponse response) { super.renderHead(component, response); response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(MAIN_JS))); + response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript( + String.format("OmUtil.init(%s)", new JSONObject() + .put("debug", DEVELOPMENT == Application.get().getConfigurationType())) + , "om-util-init"))); } @Override diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js index 1745c0c..2e1b975 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js @@ -23,7 +23,12 @@ var Settings = (function() { }; })(); var OmUtil = (function() { + let options, errs const self = {}; + + function _init(_options) { + options = _options; + } function _confirmDlg(_id, okHandler) { const confirm = $('#' + _id); confirm.dialog({ @@ -49,13 +54,44 @@ var OmUtil = (function() { function _tmpl(tmplId, newId) { return $(tmplId).clone().attr('id', newId || ''); } + function _error(msg) { + if (typeof(msg) === 'object') { + msg = msg.name + ": " + msg.message; + } + if (!!errs && errs.length > 0) { + errs.data("kendoNotification").show(msg, "error"); + } + return console.error(msg); + } + function _debugEnabled() { + return !!options && !!options.debug; + } + function _info() { + if (_debugEnabled()) { + console.info.apply(this, arguments); + } + } + function _log() { + if (_debugEnabled()) { + console.log.apply(this, arguments); + } + } + self.init = _init; self.confirmDlg = _confirmDlg; self.tmpl = _tmpl; - self.sendMessage = function(m) { - const msg = JSON.stringify(m || {}); + self.debugEnabled = _debugEnabled; + self.enableDebug = function() { if (!!options) { options.debug = true; } }; + self.sendMessage = function(_m, _base) { + const base = _base || {} + , m = _m || {} + , msg = JSON.stringify($.extend({}, base, m)); Wicket.WebSocket.send(msg); }; + self.initErrs = function(_e) { errs = _e; }; + self.error = _error; + self.info = _info; + self.log = _log; return self; })(); Wicket.BrowserInfo.collectExtraInfo = function(info) { diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java index fb9bcab..b6e0c38 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.java @@ -19,9 +19,7 @@ package org.apache.openmeetings.web.room; import static org.apache.openmeetings.util.OpenmeetingsVariables.getRoomSettings; -import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT; -import org.apache.openmeetings.web.app.Application; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.head.PriorityHeaderItem; @@ -51,7 +49,6 @@ public class VideoSettings extends Panel { public static JSONObject getInitJson(String sid) { return new JSONObject(getRoomSettings().toString()) - .put("sid", sid) - .put("debug", DEVELOPMENT == Application.get().getConfigurationType()); + .put("sid", sid); } } diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings-base.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings-base.js index 13c90ee..eb4b9c1 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings-base.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings-base.js @@ -53,7 +53,8 @@ var MicLevel = (function() { var VideoSettings = (function() { let vs, lm, s, cam, mic, res, o, rtcPeer, offerSdp, timer , vidScroll, vid, recBtn, playBtn, recAllowed = false - , errs, level; + , level; + const MsgBase = {type: 'kurento', mode: 'test'}; function _load() { s = Settings.load(); if (!s.video) { @@ -98,19 +99,17 @@ var VideoSettings = (function() { Wicket.Event.unsubscribe("/websocket/message", _onWsMessage); } function _onIceCandidate(candidate) { - console.log('Local candidate' + JSON.stringify(candidate)); + OmUtil.log('Local candidate' + JSON.stringify(candidate)); OmUtil.sendMessage({ id : 'iceCandidate' - , type: 'kurento' - , mode: 'test' , candidate: candidate - }); + }, MsgBase); } function _init(options) { o = JSON.parse(JSON.stringify(options)); - errs = $('#jsNotifications').kendoNotification({ + OmUtil.initErrs($('#jsNotifications').kendoNotification({ autoHideAfter: 20000 - }).data("kendoNotification"); + })); vs = $('#video-settings'); lm = vs.find('.level-meter'); cam = vs.find('select.cam'); @@ -119,58 +118,58 @@ var VideoSettings = (function() { vidScroll = vs.find('.vid-block .video-conainer'); timer = vs.find('.timer'); vid = vidScroll.find('video'); - recBtn = vs.find('.rec-start').click(function() { - recBtn.prop('disabled', true).button('refresh'); - playBtn.prop('disabled', true).button('refresh'); - cam.prop('disabled', true); - mic.prop('disabled', true); - res.prop('disabled', true); + recBtn = vs.find('.rec-start') + .button({icon: "ui-icon-bullet"}) + .click(function() { + recBtn.prop('disabled', true).button('refresh'); + playBtn.prop('disabled', true).button('refresh'); + cam.prop('disabled', true); + mic.prop('disabled', true); + res.prop('disabled', true); - console.info('Invoking SDP offer callback function'); - const cnts = _constraints(); - OmUtil.sendMessage({ - id : 'start' - , type: 'kurento' - , mode: 'test' - , sdpOffer: offerSdp - , video: cnts.video !== false - , audio: cnts.audio !== false + OmUtil.info('Invoking SDP offer callback function'); + const cnts = _constraints(); + OmUtil.sendMessage({ + id : 'start' + , sdpOffer: offerSdp + , video: cnts.video !== false + , audio: cnts.audio !== false + }, MsgBase); + rtcPeer.on('icecandidate', _onIceCandidate); }); - rtcPeer.on('icecandidate', _onIceCandidate); - }); - playBtn = vs.find('.play').click(function() { - recBtn.prop('disabled', true).button('refresh'); - playBtn.prop('disabled', true).button('refresh'); - cam.prop('disabled', true); - mic.prop('disabled', true); - res.prop('disabled', true); - _clear(); - rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly( - { - remoteVideo: vid[0] - , mediaConstraints: { - audio: true - , video: true - } - , onicecandidate: _onIceCandidate - } - , function(error) { - if (error) { - return _error(error); + playBtn = vs.find('.play') + .button({icon: "ui-icon-play"}) + .click(function() { + recBtn.prop('disabled', true).button('refresh'); + playBtn.prop('disabled', true).button('refresh'); + cam.prop('disabled', true); + mic.prop('disabled', true); + res.prop('disabled', true); + _clear(); + rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly( + { + remoteVideo: vid[0] + , mediaConstraints: { + audio: true + , video: true + } + , onicecandidate: _onIceCandidate } - rtcPeer.generateOffer(function(error, offerSdp) { + , function(error) { if (error) { - return _error('Error generating the offer'); + return OmUtil.error(error); } - OmUtil.sendMessage({ - id : 'play' - , type: 'kurento' - , mode: 'test' - , sdpOffer: offerSdp + rtcPeer.generateOffer(function(error, offerSdp) { + if (error) { + return OmUtil.error('Error generating the offer'); + } + OmUtil.sendMessage({ + id : 'play' + , sdpOffer: offerSdp + }, MsgBase); }); }); - }); - }); + }); vs.dialog({ classes: { 'ui-dialog': 'ui-corner-all video' @@ -208,7 +207,6 @@ var VideoSettings = (function() { o.rights = (o.rights || []).join(); delete o.keycode; vs.find('input, button').prop('disabled', true); - vs.find('button').button(); const rr = vs.find('.cam-resolution').parents('.sett-row'); if (!o.interview) { rr.show(); @@ -267,13 +265,13 @@ var VideoSettings = (function() { localVideo: vid[0], mediaConstraints: cnts }, function(error) { if (error) { - return _error(error); + return OmUtil.error(error); } level = MicLevel(); - level.meter(rtcPeer, _micActivity, _error); + level.meter(rtcPeer, _micActivity, OmUtil.error); rtcPeer.generateOffer(function(error, _offerSdp) { if (error) { - return _error('Error generating the offer'); + return OmUtil.error('Error generating the offer'); } offerSdp = _offerSdp; _allowRec(true); @@ -294,16 +292,9 @@ var VideoSettings = (function() { function _micActivity(level) { lm.progressbar("value", Math.max(0, level)); } - function _error(msg) { - if (typeof(msg) === 'object') { - msg = msg.name + ": " + msg.message; - } - errs.show(msg, "error"); - return console.error(msg); - } function _initDevices() { if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { - _error("enumerateDevices() not supported."); + OmUtil.error("enumerateDevices() not supported."); return; } cam.find('option[value!="-1"]').remove(); @@ -358,7 +349,7 @@ var VideoSettings = (function() { _readValues(); }) .catch(function(err) { - _error(err); + OmUtil.error(err); }); } function _open() { @@ -366,6 +357,7 @@ var VideoSettings = (function() { recAllowed = false; timer.hide(); _micActivity(0); + playBtn.prop('disabled', true).button('refresh'); vs.dialog('open'); _load(); _initDevices(); @@ -378,22 +370,22 @@ var VideoSettings = (function() { } const m = jQuery.parseJSON(msg); if (m && 'kurento' === m.type && 'test' === m.mode) { - console.info('Received message: ', m); + OmUtil.info('Received message: ', m); switch (m.id) { case 'playResponse': case 'startResponse': - console.log('SDP answer received from server. Processing ...'); + OmUtil.log('SDP answer received from server. Processing ...'); rtcPeer.processAnswer(m.sdpAnswer, function(error) { if (error) { - return _error(error); + return OmUtil.error(error); } }); break; case 'iceCandidate': rtcPeer.addIceCandidate(m.candidate, function(error) { if (error) { - return _error('Error adding candidate: ' + error); + return OmUtil.error('Error adding candidate: ' + error); } }); break; @@ -410,12 +402,12 @@ var VideoSettings = (function() { res.prop('disabled', false); break; default: - _error('Unrecognized message: ' + msg); + OmUtil.error('Unrecognized message: ' + msg); } } } catch (err) { //no-op - _error(err); + OmUtil.error(err); } } return { diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js index 7da3866..548e619 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video-manager.js @@ -10,7 +10,7 @@ var VideoManager = (function() { v.getPeer().processAnswer(m.sdpAnswer, function (error) { if (error) { - return console.error(error); + return OmUtil.error(error); } }); } @@ -20,7 +20,7 @@ var VideoManager = (function() { const w = $('#' + VideoUtil.getVid(uid)) , v = w.data() , cl = v.client(); - console.log(uid + " registered in room"); + OmUtil.log(uid + " registered in room"); v.setPeer(new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly( { @@ -41,7 +41,7 @@ var VideoManager = (function() { } , function (error) { if (error) { - return console.error(error); + return OmUtil.error(error); } this.generateOffer(v.offerToReceiveVideo); })); @@ -58,7 +58,7 @@ var VideoManager = (function() { } , function (error) { if(error) { - return console.error(error); + return OmUtil.error(error); } this.generateOffer(v.offerToReceiveVideo); } @@ -73,7 +73,7 @@ var VideoManager = (function() { } const m = jQuery.parseJSON(msg); if (m && 'kurento' === m.type && 'test' !== m.mode) { - console.info('Received message: ' + m); + OmUtil.info('Received message: ' + m); switch (m.id) { case 'broadcast': @@ -89,19 +89,19 @@ var VideoManager = (function() { v.getPeer().addIceCandidate(m.candidate, function (error) { if (error) { - console.error("Error adding candidate: " + error); + OmUtil.error("Error adding candidate: " + error); return; } }); } break; default: - console.error('Unrecognized message', m); + OmUtil.error('Unrecognized message ' + msg); } } } catch (err) { //no-op - console.error(err); + OmUtil.error(err); } } @@ -126,9 +126,8 @@ var VideoManager = (function() { , av = VideoUtil.hasAudio(cl) || VideoUtil.hasVideo(cl) , v = $('#' + _id); if (av && v.length !== 1 && !!cl.self) { - OmUtil.sendMessage({ + VideoManager.sendMessage({ id: 'joinRoom' //TODO stream uid - , type: 'kurento' }); Video().init(cl, VideoUtil.getPos(VideoUtil.getRects(VID_SEL), cl.width, cl.height + 25)); @@ -270,6 +269,9 @@ var VideoManager = (function() { self.mute = _mute; self.clickExclusive = _clickExclusive; self.exclusive = _exclusive; + self.sendMessage = function(_m) { + OmUtil.sendMessage(_m, {type: 'kurento'}); + } self.destroy = function() { Wicket.Event.unsubscribe("/websocket/message", _onWsMessage); } diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video.js index af41d52..a012e25 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/video.js @@ -172,7 +172,7 @@ var Video = (function() { } } v.on("remove", function () { - console.log('Disposing participant ' + c.uid); + OmUtil.log('Disposing participant ' + c.uid); if (!!rtcPeer) { rtcPeer.dispose(); } @@ -280,22 +280,20 @@ var Video = (function() { self.setPeer = function(p) { rtcPeer = p; }; self.getPeer = function() { return rtcPeer; }; self.onIceCandidate = function(candidate, wp) { - console.log("Local candidate" + JSON.stringify(candidate)); - OmUtil.sendMessage({ + OmUtil.log("Local candidate" + JSON.stringify(candidate)); + VideoManager.sendMessage({ id: 'onIceCandidate' - , type: 'kurento' , candidate: candidate , uid: c.uid }); }; self.offerToReceiveVideo = function(error, offerSdp, wp) { if (error) { - return console.error("sdp offer error"); + return OmUtil.error("sdp offer error"); } - console.log('Invoking SDP offer callback function'); - OmUtil.sendMessage({ + OmUtil.log('Invoking SDP offer callback function'); + VideoManager.sendMessage({ id : "receiveVideoFrom" - , type: 'kurento' , sender: c.uid , sdpOffer: offerSdp }); diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js index fa5a0c0..48d9a2c 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js @@ -513,11 +513,11 @@ var Wb = function() { /*TODO interactive text change var textEditedHandler = function (e) { var obj = e.target; - console.log('Text Edit Exit', obj); + OmUtil.log('Text Edit Exit', obj); }; var textChangedHandler = function (e) { var obj = e.target; - console.log('Text Changed', obj); + OmUtil.log('Text Changed', obj); };*/ function setHandlers(canvas) { // off everything first to prevent duplicates -- To stop receiving notification emails like this one, please contact [email protected].
