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 2018/03/23 05:59:58 UTC
[openmeetings] 02/02: [OPENMEETINGS-1854] js improvements
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 <so...@gmail.com>
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
solomax@apache.org.