Repository: openmeetings
Updated Branches:
  refs/heads/master 601ebd278 -> c70d82e93


[OPENMEETINGS-1642] basic local zoom seems to work


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

Branch: refs/heads/master
Commit: c70d82e9358a0fce15539e0513cff664c1c5ba6a
Parents: 601ebd2
Author: Maxim Solodovnik <solomax...@gmail.com>
Authored: Mon Aug 7 00:32:44 2017 +0700
Committer: Maxim Solodovnik <solomax...@gmail.com>
Committed: Mon Aug 7 00:32:44 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/db/dto/room/Whiteboard.java    |  2 +-
 .../openmeetings/web/room/wb/WbPanel.html       | 27 ++++----
 .../openmeetings/web/room/wb/WbPanel.java       | 18 +++---
 .../org/apache/openmeetings/web/room/wb/wb.js   | 65 ++++++++++++++------
 4 files changed, 71 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c70d82e9/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 9919d44..5fc4e8f 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
@@ -78,7 +78,7 @@ public class Whiteboard implements Serializable {
                this.zoom = zoom;
        }
 
-       public boolean getFullFit() {
+       public boolean isFullFit() {
                return fullFit;
        }
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c70d82e9/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 bf0b1a9..77bca40 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
@@ -68,26 +68,23 @@
                        </div>
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <div class="btn-group btn-group-xs block" role="group" 
aria-label="...">
-                               <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>
+                               <button type="button" class="btn btn-default 
zoom-out" wicket:message="title:259"><span class="ui-icon 
ui-icon-minusthick"></span></button>
+                               <button type="button" class="btn btn-default 
zoom-in" wicket:message="title:260"><span class="ui-icon 
ui-icon-plusthick"></span></button>
                        </div>
-                       <select>
-                               <option value="auto">Automatic Zoom</option>
-                               <option value="page-actual">Actual Size</option>
-                               <option value="page-fit">Page Fit</option>
-                               <option value="page-width">Page Width</option>
-                               <option value="custom" 
disabled="disabled">120%</option>
-                               <option value="0.5">50%</option>
+                       <select class="zoom">
+                               <option value="full-fit"><wicket:message 
key="847"/></option>
+                               <option value="custom">120%</option>
+                               <option value="0.50">50%</option>
                                <option value="0.75">75%</option>
-                               <option value="1">100%</option>
+                               <option value="1.00">100%</option>
                                <option value="1.25">125%</option>
-                               <option value="1.5">150%</option>
-                               <option value="2">200%</option>
-                               <option value="3">300%</option>
-                               <option value="4">400%</option>
+                               <option value="1.50">150%</option>
+                               <option value="2.00">200%</option>
+                               <option value="3.00">300%</option>
+                               <option value="4.00">400%</option>
                        </select>
                </div>
-               <div id="wb-tools" class="tools ui-state-active vertical clear" 
style="position: absolute; top: 20px; right: 0px;">
+               <div id="wb-tools" class="tools ui-state-active vertical clear" 
style="position: absolute; top: 20px; right: 20px;">
                        <div class="bumper"></div>
                        <div wicket:message="title:62" class="ui-widget-header 
clickable om-icon big clear-all"></div>
                        <div wicket:message="title:1005" 
class="ui-widget-header clickable om-icon big clear-slide"></div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c70d82e9/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 93af4a6..675f1e2 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
@@ -130,7 +130,7 @@ public class WbPanel extends Panel {
                                                case createWb:
                                                {
                                                        Whiteboard wb = 
WhiteboardCache.add(roomId, c.getUser().getLanguageId());
-                                                       
sendWbAll(WbAction.createWb, getAddWbJson(wb.getId(), wb.getName()));
+                                                       
sendWbAll(WbAction.createWb, getAddWbJson(wb));
                                                }
                                                        break;
                                                case removeWb:
@@ -326,11 +326,10 @@ public class WbPanel extends Panel {
                        StringBuilder sb = new StringBuilder("WbArea.init();");
                        Whiteboards wbs = WhiteboardCache.get(roomId);
                        for (Entry<Long, Whiteboard> entry : 
WhiteboardCache.list(roomId, rp.getClient().getUser().getLanguageId())) {
-                               sb.append(new StringBuilder("WbArea.create(")
-                                               
.append(getAddWbJson(entry.getKey(), entry.getValue().getName()).toString())
-                                               .append(");"));
+                               Whiteboard wb = entry.getValue();
+                               sb.append(new 
StringBuilder("WbArea.create(").append(getAddWbJson(wb)).append(");"));
                                JSONArray arr = new JSONArray();
-                               for (JSONObject o : entry.getValue().list()) {
+                               for (JSONObject o : wb.list()) {
                                        arr.put(addFileUrl(wbs.getUid(), o));
                                }
                                
sb.append("WbArea.load(").append(getObjWbJson(entry.getKey(), arr).toString(new 
NullStringer())).append(");");
@@ -377,8 +376,13 @@ public class WbPanel extends Panel {
                
response.render(OnDomReadyHeaderItem.forScript(wbLoad.getCallbackScript()));
        }
 
-       private static JSONObject getAddWbJson(Long id, String name) {
-               return new JSONObject().put("wbId", id).put("name", name);
+       private static JSONObject getAddWbJson(Whiteboard wb) {
+               return new JSONObject().put("wbId", wb.getId())
+                               .put("name", wb.getName())
+                               .put("width", wb.getWidth())
+                               .put("height", wb.getHeight())
+                               .put("zoom", wb.getZoom())
+                               .put("fullFit", wb.isFullFit());
        }
 
        public WbPanel update(IPartialPageRequestHandler handler) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c70d82e9/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 9db3655..add05d2 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
@@ -513,8 +513,7 @@ var Wb = function() {
        const ACTIVE = 'active';
        const BUMPER = 100;
        var wb = {id: -1, name: ''}, a, t, z, s, canvases = [], mode, slide = 
0, width = 0, height = 0
-                       , wbWidth = 0, wbHeight = 0, role = null, extraProps = 
['uid', 'fileId', 'fileType', 'count', 'slide'];
-       var minWidth = 0, minHeight = 0; //TODO TEMP
+                       , zoom = 1., fullFit = true, role = null, extraProps = 
['uid', 'fileId', 'fileType', 'count', 'slide'];
 
        function getBtn(m) {
                return !!t ? t.find(".om-icon." + (m || mode)) : null;
@@ -582,7 +581,7 @@ var Wb = function() {
                });
                return confirm;
        }
-       function _updateZoom() {
+       function _updateZoomPanel() {
                var ccount = canvases.length;
                if (ccount > 1 && role === PRESENTER) {
                        z.find('.doc-group').show();
@@ -601,7 +600,7 @@ var Wb = function() {
                        wbId: wb.id
                        , slide: _sld
                }));
-               _updateZoom();
+               _updateZoomPanel();
        }
        function internalInit() {
                t.draggable({
@@ -642,7 +641,6 @@ var Wb = function() {
                                        showCurrentSlide();
                                });
                        case WHITEBOARD:
-                               _updateZoom();
                                if (role === WHITEBOARD) {
                                        clearAll.addClass('disabled');
                                }
@@ -748,6 +746,28 @@ var Wb = function() {
                                        }
                                });
                        case NONE:
+                               _updateZoomPanel();
+                               z.find('.zoom-out').click(function() {
+                                       wb.zoom -= .2;
+                                       _setSize();
+                               });
+                               z.find('.zoom-in').click(function() {
+                                       wb.zoom += .2;
+                                       _setSize();
+                               });
+                               z.find('.zoom').change(function() {
+                                       var zzz = $(this).val();
+                                       if (isNaN(zzz)) {
+                                               if ('custom' === zzz) {
+                                                       wb.zoom = 
$(this).data('val');
+                                               }
+                                               //TODO handle custom, full-fit
+                                       } else {
+                                               wb.zoom = 1. * zzz;
+                                       }
+                                       _setSize();
+                               });
+                               _setSize();
                                initToolBtn('apointer', _firstToolItem, 
APointer(wb));
                }
        }
@@ -797,10 +817,6 @@ var Wb = function() {
                        case 'Presentation':
                        {
                                var ccount = canvases.length;
-                               minWidth = Math.max(minWidth, _o.width); //TODO 
TEMP
-                               minHeight = Math.max(minHeight, _o.height); 
//TODO TEMP
-                               width = Math.max(minWidth, width); //TODO TEMP
-                               height = Math.max(minHeight, height); //TODO 
TEMP
                                var count = _o.deleted ? 1 : _o.count;
                                for (var i = 0; i < count; ++i) {
                                        if (canvases.length < i + 1) {
@@ -810,7 +826,7 @@ var Wb = function() {
                                        canvas.setBackgroundImage(_o._src + 
"&slide=" + i, canvas.renderAll.bind(canvas), {})
                                                        
.setWidth(width).setHeight(height);
                                }
-                               _updateZoom();
+                               _updateZoomPanel();
                                if (ccount != canvases.length) {
                                        var b = getBtn();
                                        if (b.length && b.hasClass(ACTIVE)) {
@@ -999,6 +1015,21 @@ var Wb = function() {
                }
                setHandlers(canvas);
        }
+       function _setSize() {
+               //TODO fullFit
+               var oo = z.find('.zoom').find('option[value="' + 
wb.zoom.toFixed(2) + '"]');
+               if (oo.length == 1) {
+                       oo.prop('selected', true);
+               } else {
+                       z.find('.zoom').find('option[value=custom]')
+                               .text(100. * wb.zoom.toFixed(2) + '%')
+                               .data('val', wb.zoom)
+                               .prop('selected', true);
+               }
+               wb.eachCanvas(function(canvas) {
+                       canvas.setWidth(wb.zoom * wb.width).setHeight(wb.zoom * 
wb.height).setZoom(wb.zoom);
+               });
+       }
        wb.setRole = function(_role) {
                if (role != _role) {
                        var btn = getBtn();
@@ -1038,6 +1069,10 @@ var Wb = function() {
        wb.init = function(wbo, tid, _role) {
                wb.id = wbo.wbId;
                wb.name = wbo.name;
+               wb.width = wbo.width;
+               wb.height = wbo.height;
+               wb.zoom = wbo.zoom;
+               wb.fullFit = wbo.fullFit;
                a = $('#' + tid);
                addCanvas();
                wb.setRole(_role);
@@ -1046,16 +1081,11 @@ var Wb = function() {
                if (t.position().left + t.width() > a.width()) {
                        t.position({
                                my: "right"
-                               , at: "right"
+                               , at: "right-10"
                                , of: a.selector
                                , collision: "fit"
                        });
                }
-               width = Math.max(minWidth, w);
-               height = Math.max(minHeight, h);
-               wb.eachCanvas(function(canvas) {
-                       canvas.setWidth(width).setHeight(height);
-               });
        };
        wb.load = function(arr) {
                _createObject(arr, _createHandler);
@@ -1121,8 +1151,7 @@ var Wb = function() {
                }
                canvases.splice(1);
                canvases[0].clear();
-               minWidth = minHeight = 0;
-               _updateZoom();
+               _updateZoomPanel();
        };
        wb.clearSlide = function(_sl) {
                if (canvases.length > _sl) {

Reply via email to