src/widgets/JwpPlayer.js
changeset 1072 ac1eacb3aa33
parent 1013 392ddcd212d7
equal deleted inserted replaced
1071:02c04d2c8fd8 1072:ac1eacb3aa33
     1 IriSP.Widgets.JwpPlayer = function(player, config) {
     1 // JwpPlayer
     2     IriSP.Widgets.Widget.call(this, player, config);
       
     3 };
       
     4 
     2 
     5 IriSP.Widgets.JwpPlayer.prototype = new IriSP.Widgets.Widget();
     3 import { Player } from "jwplayer";
     6 
     4 
     7 IriSP.Widgets.JwpPlayer.prototype.defaults = {
     5 const JwpPlayerWidget = function (ns) {
     8 };
     6   return class extends ns.Widgets.Widget {
       
     7     constructor(player, config) {
       
     8       super(player, config);
       
     9     }
     9 
    10 
    10 IriSP.Widgets.JwpPlayer.prototype.draw = function() {
    11     static defaults = {};
    11     
    12 
    12     var _opts = {},
    13     draw() {
    13         _player = jwplayer(this.$[0]),
    14       var _opts = {},
       
    15         _player = Player(this.$[0]),
    14         _seekPause = false,
    16         _seekPause = false,
    15         _pauseState = true;
    17         _pauseState = true;
    16     
    18 
    17     if (typeof this.video === "undefined") {
    19       if (typeof this.video === "undefined") {
    18         this.video = this.media.video;
    20         this.video = this.media.video;
    19     }
    21       }
    20         
    22 
    21     _opts.file = this.video;
    23       _opts.file = this.video;
    22     _opts.flashplayer = IriSP.getLib("jwPlayerSWF");
    24       _opts.primary = "flash";
    23     _opts.primary = "flash";
    25       _opts.fallback = false;
    24     _opts.fallback = false;
    26       _opts.controls = false;
    25     _opts.controls = false;
    27       _opts.width = this.width;
    26     _opts.width = this.width;
    28       if (this.height) {
    27     if (this.height) {
       
    28         _opts.height = this.height;
    29         _opts.height = this.height;
    29     }
    30       }
    30     
    31 
    31     if (this.autostart) { // There seems to be an autostart bug
    32       if (this.autostart) {
       
    33         // There seems to be an autostart bug
    32         //_opts.autostart = true;
    34         //_opts.autostart = true;
    33         //_pauseState = false;
    35         //_pauseState = false;
    34         //this.media.trigger("play");
    36         //this.media.trigger("play");
    35     }
    37       }
    36     
    38 
    37     if (this.url_transform) {
    39       if (this.url_transform) {
    38         _opts.file = this.url_transform(_opts.file);
    40         _opts.file = this.url_transform(_opts.file);
    39     }
    41       }
    40 
    42 
    41     // Binding functions to jwplayer
    43       // Binding functions to jwplayer
    42 
    44 
    43     var _media = this.media;
    45       var _media = this.media;
    44     
    46 
    45     _media.on("setcurrenttime", function(_milliseconds) {
    47       _media.on("setcurrenttime", function (_milliseconds) {
    46         _seekPause = _pauseState;
    48         _seekPause = _pauseState;
    47         _player.seek(_milliseconds / 1000);
    49         _player.seek(_milliseconds / 1000);
    48     });
    50       });
    49     
    51 
    50     _media.on("setvolume", function(_vol) {
    52       _media.on("setvolume", function (_vol) {
    51         _player.setVolume(Math.floor(_vol*100));
    53         _player.setVolume(Math.floor(_vol * 100));
    52         _media.volume = _vol;
    54         _media.volume = _vol;
    53     });
    55       });
    54     
    56 
    55     _media.on("setmuted", function(_muted) {
    57       _media.on("setmuted", function (_muted) {
    56         _player.setMute(_muted);
    58         _player.setMute(_muted);
    57         _media.muted = _muted;
    59         _media.muted = _muted;
    58     });
    60       });
    59     
    61 
    60     _media.on("setplay", function() {
    62       _media.on("setplay", function () {
    61         _player.play(true);
    63         _player.play(true);
    62         _media.paused = false;
    64         _media.paused = false;
    63     });
    65       });
    64     
    66 
    65     _media.on("setpause", function() {
    67       _media.on("setpause", function () {
    66         _player.pause(true);
    68         _player.pause(true);
    67         _media.paused = true;
    69         _media.paused = true;
    68     });
    70       });
    69     
    71 
    70     // Binding jwplater events to media
    72       // Binding jwplater events to media
    71     
    73 
    72     function getVolume() {
    74       function getVolume() {
    73         _media.muted = _player.getMute();
    75         _media.muted = _player.getMute();
    74         _media.volume = _player.getVolume() / 100;
    76         _media.volume = _player.getVolume() / 100;
       
    77       }
       
    78 
       
    79       _opts.events = {
       
    80         onReady: function () {
       
    81           getVolume();
       
    82           _media.currentTime = new ns.Model.Time(
       
    83             1000 * _player.getPosition() || 0
       
    84           );
       
    85           _media.trigger("loadedmetadata");
       
    86         },
       
    87         onTime: function (_progress) {
       
    88           if (_seekPause) {
       
    89             _player.pause(true);
       
    90             _seekPause = false;
       
    91           } else {
       
    92             if (_pauseState && _player.getState() === "PLAYING") {
       
    93               _pauseState = false;
       
    94               _media.trigger("play");
       
    95             }
       
    96           }
       
    97           _media.trigger(
       
    98             "timeupdate",
       
    99             new ns.Model.Time(_progress.position * 1000)
       
   100           );
       
   101         },
       
   102         onPlay: function () {
       
   103           if (!_seekPause) {
       
   104             _pauseState = false;
       
   105             _media.trigger("play");
       
   106           }
       
   107         },
       
   108         onPause: function () {
       
   109           _pauseState = true;
       
   110           _media.trigger("pause");
       
   111         },
       
   112         onSeek: function () {
       
   113           _media.trigger("seeked");
       
   114         },
       
   115         onMute: function (_event) {
       
   116           _media.muted = _event.mute;
       
   117           _media.trigger("volumechange");
       
   118         },
       
   119         onVolume: function (_event) {
       
   120           _media.volume = _event.volume / 100;
       
   121           _media.trigger("volumechange");
       
   122         },
       
   123       };
       
   124 
       
   125       _player = _player.setup(_opts);
       
   126 
       
   127       this.jwplayer = _player;
    75     }
   128     }
    76     
   129   };
    77     _opts.events = {
       
    78         onReady: function() {
       
    79             getVolume();
       
    80             _media.currentTime = new IriSP.Model.Time(1000*_player.getPosition() || 0);
       
    81             _media.trigger("loadedmetadata");
       
    82         },
       
    83         onTime: function(_progress) {
       
    84             if (_seekPause) {
       
    85                 _player.pause(true);
       
    86                 _seekPause = false;
       
    87             } else {
       
    88                 if (_pauseState && _player.getState() === "PLAYING") {
       
    89                     _pauseState = false;
       
    90                     _media.trigger("play");
       
    91                 }
       
    92             }
       
    93             _media.trigger("timeupdate", new IriSP.Model.Time(_progress.position * 1000));
       
    94         },
       
    95         onPlay: function() {
       
    96             if (!_seekPause) {
       
    97                 _pauseState = false;
       
    98                 _media.trigger("play");
       
    99             }
       
   100         },
       
   101         onPause: function() {
       
   102             _pauseState = true;
       
   103             _media.trigger("pause");
       
   104         },
       
   105         onSeek: function() {
       
   106             _media.trigger("seeked");
       
   107         },
       
   108         onMute: function(_event) {
       
   109             _media.muted = _event.mute;
       
   110             _media.trigger("volumechange");
       
   111         },
       
   112         onVolume: function(_event) {
       
   113             _media.volume = _event.volume / 100;
       
   114             _media.trigger("volumechange");
       
   115         }
       
   116     };
       
   117     
       
   118     _player = _player.setup(_opts);
       
   119     
       
   120     this.jwplayer = _player;
       
   121     
       
   122 };
   130 };
       
   131 
       
   132 export { JwpPlayerWidget as JwpPlayer };