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/04/01 11:19:21 UTC
svn commit: r1789787 - in /openmeetings/application/trunk:
openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/
openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/
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;
})();