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.