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">&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) {

Reply via email to