Author: solomax
Date: Sat Apr  1 11:19:21 2017
New Revision: 1789787

URL: http://svn.apache.org/viewvc?rev=1789787&view=rev
Log:
[OPENMEETINGS-551] slide change is implemented

Modified:
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java?rev=1789787&r1=1789786&r2=1789787&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
 Sat Apr  1 11:19:21 2017
@@ -40,6 +40,7 @@ public class Whiteboard {
        private Boolean fullFit = true;
        private Map<String, JSONObject> roomItems = new ConcurrentHashMap<>();
        private Date created = new Date();
+       private int slide = 0;
        private int zIndex = 1;
        private String name;
 
@@ -130,4 +131,12 @@ public class Whiteboard {
        public void setName(String name) {
                this.name = name;
        }
+
+       public int getSlide() {
+               return slide;
+       }
+
+       public void setSlide(int slide) {
+               this.slide = slide;
+       }
 }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java?rev=1789787&r1=1789786&r2=1789787&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 Sat Apr  1 11:19:21 2017
@@ -83,6 +83,7 @@ public class WbPanel extends Panel {
                createWb
                , removeWb
                , activeWb
+               , setSlide
                , createObj
                , modifyObj
                , deleteObj
@@ -135,6 +136,13 @@ public class WbPanel extends Panel {
                                                        }
                                                }
                                                        break;
+                                               case setSlide:
+                                               {
+                                                       Whiteboard wb = 
getBean(WhiteboardCache.class).get(roomId).get(obj.getLong("wbId"));
+                                                       
wb.setSlide(obj.optInt("slide", 0));
+                                                       
sendWbOthers(String.format("WbArea.%s", a.name()), obj);
+                                               }
+                                                       break;
                                                case createObj:
                                                {
                                                        Whiteboard wb = 
getBean(WhiteboardCache.class).get(roomId).get(obj.getLong("wbId"));
@@ -362,11 +370,8 @@ public class WbPanel extends Panel {
                                        .put("top", UPLOAD_WB_TOP)
                                        .put("width", fi.getWidth() == null ? 
DEFAULT_WIDTH : fi.getWidth())
                                        .put("height", fi.getHeight() == null ? 
DEFAULT_HEIGHT : fi.getHeight())
-                                       //,"angle":32.86
-                                       //,"crossOrigin":""
                                        .put("uid", wuid)
-                                       //,"filters":[]
-                                       //,"resizeFilters":[]
+                                       .put("slide", wb.getSlide())
                                        ;
                        wb.put(wuid, file);
                        final String ruid = wbs.getUid();

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js?rev=1789787&r1=1789786&r2=1789787&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/fabric.js
 Sat Apr  1 11:19:21 2017
@@ -1,5 +1,6 @@
 /* build: `node build.js modules=ALL exclude=json,gestures minifier=uglifyjs` 
*/
  /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */
+/* version 1.7.8 */
 /* Licensed MIT https://github.com/kangax/fabric.js/blob/master/LICENSE */
 var fabric = fabric || { version: "1.7.8" };
 if (typeof exports !== 'undefined') {

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js?rev=1789787&r1=1789786&r2=1789787&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
 Sat Apr  1 11:19:21 2017
@@ -482,7 +482,9 @@ var Clipart = function(wb, btn) {
 }
 var Wb = function() {
        const ACTIVE = 'active';
-       var wb = {id: -1}, a, t, s, canvases = [], mode, slide = 0, resizable = 
true;
+       const BUMPER = 100;
+       var wb = {id: -1}, a, t, s, canvases = [], mode, slide = 0, width = 0, 
height = 0
+                       , minWidth = 0, minHeight = 0;
 
        function getBtn(m) {
                return t.find(".om-icon." + (m || mode));
@@ -664,22 +666,18 @@ var Wb = function() {
                                break;
                        case 'Presentation':
                        {
-                               if (resizable && !_o.deleted) {
-                                       resizable = false;
-                               }
+                               minWidth = Math.max(minWidth, _o.width);
+                               minHeight = Math.max(minHeight, _o.height);
+                               width = Math.max(minWidth, width);
+                               height = Math.max(minHeight, height);
                                var count = _o.deleted ? 1 : _o.count;
                                for (var i = 0; i < count; ++i) {
                                        if (canvases.length < i + 1) {
                                                addCanvas();
                                        }
                                        var canvas = canvases[i];
-                                       /*
-                                        * TODO block resizing
-                                       */
-                                       canvas.setBackgroundImage(_o._src + 
"&slide=" + i, canvas.renderAll.bind(canvas), {
-                                               /*backgroundImageOpacity: 0.5
-                                               , */backgroundImageStretch: 
false
-                                       }).setWidth(Math.max(canvas.width, 
_o.width)).setHeight(Math.max(canvas.height, _o.height));
+                                       canvas.setBackgroundImage(_o._src + 
"&slide=" + i, canvas.renderAll.bind(canvas), {})
+                                                       
.setWidth(width).setHeight(height);
                                }
                        }
                                break;
@@ -792,6 +790,21 @@ var Wb = function() {
                t = a.find('.tools'), s = a.find(".wb-settings");
                addCanvas();
                internalInit(t);
+               a.find('.scroll-container').on('scroll', function(e) {
+                       $(this).find('.canvas-container').each(function(idx) {
+                               var h = $(this).height(), pos = 
$(this).position();
+                               if (slide != idx &&pos.top > BUMPER - h && 
pos.top < BUMPER) {
+                                       //TODO FIXME might be done without 
iterating
+                                       //console.log("Found:", idx);
+                                       slide = idx;
+                                       wbAction('setSlide', JSON.stringify({
+                                               wbId: wb.id
+                                               , slide: idx
+                                       }));
+                                       return false;
+                               }
+                       });
+               });
        };
        wb.resize = function(w, h) {
                if (t.position().left + t.width() > a.width()) {
@@ -802,16 +815,19 @@ var Wb = function() {
                                , collision: "fit"
                        });
                }
-               if (resizable) {
-                       //TODO FIXME need to be checked
-                       wb.eachCanvas(function(canvas) {
-                               canvas.setWidth(w).setHeight(h);
-                       });
-               }
+               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);
        };
+       wb.setSlide = function(_sl) {
+               slide = _sl;
+               a.find('.scroll-container 
.canvas-container')[slide].scrollIntoView();
+       };
        wb.createObj = function(o) {
                switch(o.type) {
                        case 'pointer':
@@ -925,6 +941,17 @@ var WbArea = (function() {
                        }
                });
        }
+       function _resizeWbs() {
+               var w = area.width(), hh = area.height();
+               var wbTabs = area.find(".tabs.ui-tabs");
+               var tabPanels = wbTabs.find(".ui-tabs-panel");
+               var wbah = hh - 5 - wbTabs.find("ul.ui-tabs-nav").height();
+               tabPanels.height(wbah);
+               tabPanels.each(function(idx) {
+                       $(this).data().resize(w - 25, wbah - 20);
+               });
+               wbTabs.find(".ui-tabs-panel .scroll-container").height(wbah);
+       }
        self.getWbTabId = function(id) {
                return "wb-tab-" + id;
        };
@@ -979,6 +1006,7 @@ var WbArea = (function() {
                var wbo = Wb();
                wb.data(wbo);
                wbo.init(obj.id, tid);
+               _resizeWbs();
        }
        self.add = function(obj) {
                self.create(obj);
@@ -990,6 +1018,9 @@ var WbArea = (function() {
        self.load = function(json) {
                self.getWb(json.wbId).load(json.obj);
        };
+       self.setSlide = function(json) {
+               self.getWb(json.wbId).setSlide(json.slide);
+       };
        self.createObj = function(json) {
                self.getWb(json.wbId).createObj(json.obj);
        };
@@ -1013,13 +1044,7 @@ var WbArea = (function() {
 
                var wbTabs = area.find(".tabs.ui-tabs");
                wbTabs.height(hh);
-               var tabPanels = wbTabs.find(".ui-tabs-panel");
-               var wbah = hh - 5 - wbTabs.find("ul.ui-tabs-nav").height();
-               tabPanels.height(wbah);
-               tabPanels.each(function(idx) {
-                       $(this).data('resize')(w - 20, wbah);
-               });
-               wbTabs.find(".ui-tabs-panel .scroll-container").height(wbah);
+               _resizeWbs();
        }
        return self;
 })();


Reply via email to