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 2017/08/04 08:48:36 UTC

openmeetings git commit: [OPENMEETINGS-1642] more work on zoom panel

Repository: openmeetings
Updated Branches:
  refs/heads/master 666b05587 -> 2b96f6c14


[OPENMEETINGS-1642] more work on zoom panel


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/2b96f6c1
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/2b96f6c1
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/2b96f6c1

Branch: refs/heads/master
Commit: 2b96f6c14e9918db9874c3db0e008abb2ea9d892
Parents: 666b055
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Aug 4 15:48:28 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Aug 4 15:48:28 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/db/dto/room/Whiteboard.java    |  6 ++++-
 .../openmeetings/web/room/wb/WbPanel.html       | 14 +++++------
 .../openmeetings/web/room/wb/WbPanel.java       | 11 +++++++--
 .../web/room/wb/WbWebSocketHelper.java          |  6 ++++-
 .../org/apache/openmeetings/web/room/wb/wb.js   | 25 ++++++++++++++------
 5 files changed, 44 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b96f6c1/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index 81a4534..5c3e818 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -34,6 +34,7 @@ import com.github.openjson.JSONObject;
 
 public class Whiteboard implements Serializable {
 	private static final long serialVersionUID = 1L;
+	public static final String ITEMS_KEY = "roomItems";
 	private long id;
 	private Integer x = 0;
 	private Integer y = 0;
@@ -162,7 +163,10 @@ public class Whiteboard implements Serializable {
 		//deep-copy
 		JSONObject json = new JSONObject(new JSONObject(this).toString(new NullStringer()));
 		json.remove("id"); //filtering
-		JSONObject items = json.getJSONObject("roomItems");
+		if (!json.has(ITEMS_KEY)) {
+			json.put(ITEMS_KEY, new JSONObject());
+		}
+		JSONObject items = json.getJSONObject(ITEMS_KEY);
 		for (String uid : items.keySet()) {
 			JSONObject o = items.getJSONObject(uid);
 			o.remove("_src");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b96f6c1/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index 143e2f9..bf0b1a9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -58,18 +58,18 @@
 		</div>
 		<div id="wb-zoom" class="wb-zoom">
 			<div class="doc-group btn-group btn-group-xs block" role="group" aria-label="...">
-				<button type="button" class="btn btn-default up">&nbsp;</button>
-				<button type="button" class="btn btn-default down">&nbsp;</button>
+				<button type="button" class="btn btn-default up" wicket:message="title:256">&nbsp;</button>
+				<button type="button" class="btn btn-default down" wicket:message="title:256">&nbsp;</button>
 			</div>
 			<div class="doc-group input-group input-group-xs block">
-				<input type="number" />
-				<span class="input-group-addon">of</span>
-				<span class="input-group-addon">14</span>
+				<input class="curr-slide" type="number" min="1" max="1"/>
+				<span class="input-group-addon"><wicket:message key="254"/></span>
+				<span class="last-page input-group-addon">1</span>
 			</div>
 			&nbsp;&nbsp;&nbsp;&nbsp;
 			<div class="btn-group btn-group-xs block" role="group" aria-label="...">
-				<button type="button" class="btn btn-default"><span class="ui-icon ui-icon-minusthick"></span></button>
-				<button type="button" class="btn btn-default"><span class="ui-icon ui-icon-plusthick"></span></button>
+				<button type="button" class="btn btn-default" wicket:message="title:259"><span class="ui-icon ui-icon-minusthick"></span></button>
+				<button type="button" class="btn btn-default" wicket:message="title:260"><span class="ui-icon ui-icon-plusthick"></span></button>
 			</div>
 			<select>
 				<option value="auto">Automatic Zoom</option>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b96f6c1/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index afeca53..9c655ed 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -18,10 +18,12 @@
  */
 package org.apache.openmeetings.web.room.wb;
 
+import static org.apache.openmeetings.db.dto.room.Whiteboard.ITEMS_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.PARAM_OBJ;
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getObjWbJson;
+import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getWbJson;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.wicket.AttributeModifier.append;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
@@ -311,7 +313,12 @@ public class WbPanel extends Panel {
 				}
 				sb.append("WbArea.load(").append(getObjWbJson(entry.getKey(), arr).toString(new NullStringer())).append(");");
 			}
-			sb.append("WbArea.activateWb({wbId: ").append(wbs.getActiveWb()).append("});");
+			JSONObject wbj = getWbJson(wbs.getActiveWb());
+			sb.append("WbArea.activateWb(").append(wbj).append(");");
+			Whiteboard wb = wbs.get(wbs.getActiveWb());
+			if (wb != null) {
+				sb.append("WbArea.setSlide(").append(wbj.put("slide", wb.getSlide())).append(");");
+			}
 			target.appendJavaScript(sb);
 			inited = true;
 		}
@@ -383,7 +390,7 @@ public class WbPanel extends Panel {
 	}
 
 	private static JSONArray getArray(JSONObject wb, Function<JSONObject, JSONObject> postprocess) {
-		JSONObject items = wb.getJSONObject("roomItems");
+		JSONObject items = wb.getJSONObject(ITEMS_KEY);
 		JSONArray arr = new JSONArray();
 		for (String uid : items.keySet()) {
 			JSONObject o = items.getJSONObject(uid);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b96f6c1/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index a96081f..d65e626 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -76,8 +76,12 @@ public class WbWebSocketHelper extends WebSocketHelper {
 		sendWb(roomId, meth, obj, c -> !uid.equals(c.getUid()));
 	}
 
+	public static JSONObject getWbJson(Long wbId) {
+		return new JSONObject().put("wbId", wbId);
+	}
+
 	public static JSONObject getObjWbJson(Long wbId, Object o) {
-		return new JSONObject().put("wbId", wbId).put(PARAM_OBJ, o);
+		return getWbJson(wbId).put(PARAM_OBJ, o);
 	}
 
 	private static CharSequence urlFor(final ResourceReference resourceReference, PageParameters parameters) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/2b96f6c1/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
index 3a17086..de236fe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
@@ -581,6 +581,16 @@ var Wb = function() {
 		});
 		return confirm;
 	}
+	function _updateZoom() {
+		var ccount = canvases.length;
+		if (ccount > 1 && role === PRESENTER) {
+			z.find('.doc-group').show();
+			z.find('.doc-group .curr-slide').val(slide).attr('max', ccount);
+			z.find('.doc-group .last-page').text(ccount);
+		} else {
+			z.find('.doc-group').hide();
+		}
+	}
 	function internalInit() {
 		t.draggable({
 			snap: "parent"
@@ -608,6 +618,7 @@ var Wb = function() {
 					confirmDlg('clear-all-confirm', function() { wbAction('clearAll', JSON.stringify({wbId: wb.id})); });
 				}).removeClass('disabled');
 			case WHITEBOARD:
+				_updateZoom();
 				if (role === WHITEBOARD) {
 					clearAll.addClass('disabled');
 				}
@@ -775,6 +786,7 @@ var Wb = function() {
 					canvas.setBackgroundImage(_o._src + "&slide=" + i, canvas.renderAll.bind(canvas), {})
 							.setWidth(width).setHeight(height);
 				}
+				_updateZoom();
 				if (ccount != canvases.length) {
 					var b = getBtn();
 					if (b.length && b.hasClass(ACTIVE)) {
@@ -894,14 +906,16 @@ var Wb = function() {
 					wbId: wb.id
 					, slide: idx
 				}));
+				_updateZoom();
 				return false;
 			}
 		});
 	}
-	function showCurentSlide() {
+	function showCurrentSlide() {
 		a.find('.scroll-container .canvas-container').each(function(idx) {
 			if (role === PRESENTER) {
 				$(this).show();
+				a.find('.scroll-container .canvas-container')[slide].scrollIntoView();
 			} else {
 				if (idx == slide) {
 					$(this).show();
@@ -994,7 +1008,7 @@ var Wb = function() {
 				, of: '#'+a[0].id
 				, collision: "fit"
 			});
-			showCurentSlide();
+			showCurrentSlide();
 			t = a.find('.tools'), s = a.find(".wb-settings");
 			wb.eachCanvas(function(canvas) {
 				setHandlers(canvas);
@@ -1029,11 +1043,7 @@ var Wb = function() {
 	};
 	wb.setSlide = function(_sl) {
 		slide = _sl;
-		if (role === NONE) {
-			showCurentSlide();
-		} else {
-			a.find('.scroll-container .canvas-container')[slide].scrollIntoView();
-		}
+		showCurrentSlide();
 	};
 	wb.createObj = function(o) {
 		var arr = [];
@@ -1093,6 +1103,7 @@ var Wb = function() {
 		canvases.splice(1);
 		canvases[0].clear();
 		minWidth = minHeight = 0;
+		_updateZoom();
 	};
 	wb.clearSlide = function(_sl) {
 		if (canvases.length > _sl) {