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 <solomax...@gmail.com> Authored: Fri Aug 4 15:48:28 2017 +0700 Committer: Maxim Solodovnik <solomax...@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"> </button> - <button type="button" class="btn btn-default down"> </button> + <button type="button" class="btn btn-default up" wicket:message="title:256"> </button> + <button type="button" class="btn btn-default down" wicket:message="title:256"> </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> <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) {