Repository: openmeetings
Updated Branches:
  refs/heads/master 1a4c48368 -> 057719dec


[OPENMEETINGS-1641] more controls are added


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

Branch: refs/heads/master
Commit: 057719decc4120bebee5a18836398bebfc3f6639
Parents: 1a4c483
Author: Maxim Solodovnik <solomax...@gmail.com>
Authored: Sat Sep 9 15:15:27 2017 +0700
Committer: Maxim Solodovnik <solomax...@gmail.com>
Committed: Sat Sep 9 15:15:27 2017 +0700

----------------------------------------------------------------------
 .../org/apache/openmeetings/web/room/wb/wb.js   | 88 ++++++++++++++------
 1 file changed, 61 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/057719de/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 7ba5504..f33c81d 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
@@ -52,19 +52,13 @@ var Player = (function() {
        player.create = function(canvas, _o) {
                let vid = $('<video>').hide().attr('class', 'wb-video slide-' + 
canvas.slide).attr('id', 'wb-video-' + _o.uid)
                        .attr("width", _o.width).attr("height", _o.height)
-                       .append($('<source>').attr('type', 
'video/mp4').attr('src', _o._src))
-               $('#wb-tab-' + canvas.wbId).append(vid);
+                       .append($('<source>').attr('type', 
'video/mp4').attr('src', _o._src));
+               $('body').append(vid);
                new fabric.Image.fromURL(_o._poster, function(poster) {
                        new fabric.Image(vid[0], {}, function (video) {
                                video.visible = false;
                                poster.width = _o.width;
                                poster.height = _o.height;
-                               let opts = $.extend({
-                                       subTargetCheck: true
-                                       , objectCaching: false
-                                       , omType: 'Video'
-                               }, filter(_o, ['fileId', 'fileType', 'slide', 
'uid', '_poster', '_src', 'width', 'height']));
-                               let group = new fabric.Group([video, poster], 
opts);
                                let paused = true;
                                let trg = new fabric.Triangle({
                                        left: 2.7 * rad
@@ -106,11 +100,12 @@ var Player = (function() {
                                                , trg, rectPause1, rectPause2]
                                        , {
                                                objectCaching: false
+                                               , visible: false
                                        });
                                let cProgress = new fabric.Rect({
                                        left: 3.5 * rad
                                        , top: _o.height - 1.5 * rad
-                                       , visible: !paused
+                                       , visible: false
                                        , width: _o.width - 5 * rad
                                        , height: rad / 2
                                        , stroke: mainColor
@@ -118,10 +113,33 @@ var Player = (function() {
                                        , rx: 5
                                        , ry: 5
                                });
+                               let isDone = function() {
+                                       return video.getElement().currentTime 
== video.getElement().duration;
+                               };
+                               let updateProgress = function() {
+                                       progress.set('width', 
(video.getElement().currentTime * cProgress.width) / 
video.getElement().duration);
+                                       canvas.renderAll();
+                               };
+                               let updateControls = function() {
+                                       video.visible = true;
+                                       poster.visible = false;
+
+                                       trg.visible = paused;
+                                       rectPause1.visible = !paused;
+                                       rectPause2.visible = !paused;
+                                       canvas.renderAll();
+                               };
+                               cProgress.on({
+                                       'mousedown': function (evt) {
+                                               video.getElement().currentTime 
= (evt.e.offsetX - evt.target.aCoords.bl.x - cProgress.aCoords.bl.x)
+                                                               * 
video.getElement().duration / cProgress.width;
+                                               updateProgress();
+                                       }
+                               });
                                let progress = new fabric.Rect({
                                        left: 3.5 * rad
                                        , top: _o.height - 1.5 * rad
-                                       , visible: !paused
+                                       , visible: false
                                        , width: 0
                                        , height: rad / 2
                                        , stroke: mainColor
@@ -131,8 +149,11 @@ var Player = (function() {
                                });
                                let request;
                                let render = function () {
-                                       progress.set('width', 
(video.getElement().currentTime * cProgress.width) / 
video.getElement().duration);
-                                       canvas.renderAll();
+                                       if (isDone()) {
+                                               paused = true;
+                                               updateControls();
+                                       }
+                                       updateProgress();
                                        if (paused) {
                                                cancelAnimationFrame(request);
                                        } else {
@@ -168,28 +189,41 @@ var Player = (function() {
                                                        , top: pos.top
                                                });
                                                if (paused) {
-                                                       video.visible = true;
-                                                       poster.visible = false;
-                                                       progress.visible = true;
-                                                       cProgress.visible = 
true;
+                                                       if (isDone()) {
+                                                               
video.getElement().currentTime = 0;
+                                                       }
                                                        
video.getElement().play();
                                                        
fabric.util.requestAnimFrame(render);
                                                } else {
                                                        
video.getElement().pause();
                                                }
                                                paused = !paused;
-                                               trg.visible = paused;
-                                               rectPause1.visible = !paused;
-                                               rectPause2.visible = !paused;
-                                               canvas.renderAll();
+                                               updateControls();
                                        }
                                });
-       
-                               group.addWithUpdate(play);
-                               group.addWithUpdate(progress);
-                               group.addWithUpdate(cProgress);
-                               group.selectable = canvas.selection;
 
+                               let opts = $.extend({
+                                       subTargetCheck: true
+                                       , objectCaching: false
+                                       , omType: 'Video'
+                                       , selectable: canvas.selection
+                               }, filter(_o, ['fileId', 'fileType', 'slide', 
'uid', '_poster', '_src', 'width', 'height']));
+                               let group = new fabric.Group([video, poster, 
play, progress, cProgress], opts);
+
+                               group.on({
+                                       'mouseover': function() {
+                                               play.visible = true;
+                                               cProgress.visible = true;
+                                               progress.visible = true;
+                                               canvas.renderAll();
+                                       }
+                                       , 'mouseout': function() {
+                                               play.visible = false;
+                                               cProgress.visible = false;
+                                               progress.visible = false;
+                                               canvas.renderAll();
+                                       }
+                               });
                                canvas.add(group);
                                canvas.renderAll();
                                player.modify(group, _o);
@@ -197,7 +231,7 @@ var Player = (function() {
                                let pos = {left: play.left, top: play.top};
                        });
                });
-       }
+       };
        player.modify = function(g, _o) {
                let opts = $.extend({
                        angle: 0
@@ -208,7 +242,7 @@ var Player = (function() {
                }, filter(_o, ['angle', 'left', 'scaleX', 'scaleY', 'top']));
                g.set(opts);
                g.canvas.renderAll();
-       }
+       };
        return player;
 })();
 var Base = function() {

Reply via email to